summaryrefslogtreecommitdiff
path: root/doc/NEWS-1.9.1
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-12 15:04:41 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-12 15:04:41 +0000
commit385b6a15ff7bb0c2bbc6fdcc958d382769948e10 (patch)
treeab3fe9373e0fb8abbae70a003ef58fb6759d759d /doc/NEWS-1.9.1
parent643b8cb4b4622eefd94d28da857f14d0582e07e1 (diff)
Update with branches/ruby_1_9_1/NEWS.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'doc/NEWS-1.9.1')
-rw-r--r--doc/NEWS-1.9.1380
1 files changed, 298 insertions, 82 deletions
diff --git a/doc/NEWS-1.9.1 b/doc/NEWS-1.9.1
index bfc9ed1..0575233 100644
--- a/doc/NEWS-1.9.1
+++ b/doc/NEWS-1.9.1
@@ -8,6 +8,7 @@ reference information is supplied with. For a full list of changes
with all sufficient information, see the ChangeLog file.
== Changes since the 1.8.7 release
+See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
=== Compatibility issues
@@ -15,144 +16,273 @@ with all sufficient information, see the ChangeLog file.
* New syntax and semantics
o Block arguments are always local
- o Block arguments
o New semantics for block arguments
- o Block local variables
- o Method used for splat arguments: #to_splat
o defined? and local variables
+ o Parser expects that your source code has only valid byte
+ sequence in some character encoding. Use magic comments
+ to tell the parser which encoding you use.
+ o New semantics for constant definition in instance_eval
+ or in module_eval.
+
+ * Deprecated syntax
+ o colon (:) instead of "then" in if/unless or case expression.
+ o retry in a loop or an iterator.
* builtin classes and objects
* Kernel and Object
- o Kernel#require
+ o Kernel#methods and #singleton_methods used to return an
+ array of strings but now they return an array of symbols.
* Class and Module
- o Class variables behavior
- o Module#attr is an alias of attr_reader
- o Module#instance_methods, #private_instance_methods, #public_instance_methods
+ o Module#attr works as Module#attr_reader by default.
+ Optional boolean argument is obsolete.
+ o Module#instance_methods, #private_instance_methods and
+ #public_instance_methods used to return an array of
+ strings but now they return an array of symbols.
o Extra subclassing check when binding UnboundMethods
+
* Exceptions
- o Equality of exceptions
- o SystemStackError
- o SecurityError
+ o Exceptions are equal to each other if they belong to
+ the same class and have the same message and backtrace.
+ o SystemStackError used to be a subclass of StandardError
+ but not it is a direct subclass of Exception.
+ o SecurityError: ditto
o Removed Exception#to_str [Ruby2]
+ * Enumerable and Enumerator
+ o Enumerable::Enumerator, compatibility alias of Enumerator,
+ is removed.
+ o Enumerable#{map,collect} called without a block returns
+ an enumerator.
+ o Even more builtin and bundled libraries have been made to
+ return an enumerator when called without a block.
* Array
o Array#nitems was removed (use count {|i| !i.nil?})
o Array#choice was removed (use sample)
o Array#[m,n] = nil places nil in the array.
- * Enumerable and Enumerator
- o Enumerable#map,collect called without a block returns
- an enumerator.
- * File and Dir operations
- o #to_path in File.path, File.chmod, File.lchmod, File.chown, File.lchown, File.utime, File.unlink... [Ruby2]
- o Dir.[], Dir.glob
- o Dir.exist?
- * String
- o No longer an Enumerable
- o ?c semantics
- o "One-char-wide" semantics for String#[] and String#[]= [Ruby2]
- o Encoding-awareness
* Hash
o Hash#to_s is equivalent to Hash#inspect
o Semantics for Hash#each and Hash#each_pair
o Hash#select returns a hash
- o Hash#key is the new name for #index which has been deprecated.
- o Most of the changes in Hash apply to hash like interfaces such as
- ENV and *DBM.
- * Integer
- o Integer(nil) raises TypeError
+ o Hash#key is the new name for #index which has been
+ deprecated.
+ o Hash preserves order. It enumerates its elements in the
+ order in which the keys are inserted.
+ o Most of the changes in Hash apply to hash like interfaces
+ such as ENV and *DBM.
* IO operations
+ o Many methods used to act byte-wise but now some of those act
+ character-wise. You can use alternate byte-wise methods.
o IO#getc
o Non-blocking IO
o Kernel#open takes "t" for newline conversion
o Kernel#open takes encoding specified
- o IO#initialize now accepts an IO argument
+ o IO automatically converts byte sequence from a character
+ encodings into another if specified.
o StringIO#readpartial
o IO.try_convert
- o Limit input in IO#gets, IO#readline, IO#readlines, IO#each_line, IO#lines, IO.foreach, IO.readlines, StringIO#gets, StringIO#readline, StringIO#each, StringIO#readlines
+ o IO.binread
+ o IO.copy_stream
+ o IO#binmode?
+ o IO#close_on_exec= and IO#close_on_exec?
+ o Limit input in IO#gets, IO#readline, IO#readlines,
+ IO#each_line, IO#lines, IO.foreach, IO.readlines,
+ StringIO#gets, StringIO#readline, StringIO#each,
+ StringIO#readlines
o IO#ungetc, StringIO#ungetc
- o IO#internal_encoding, IO#external_encoding, IO#set_encoding
- o IO.pipe takes encoding option
+ o IO#ungetbyte, StringIO#ungetbyte
+ o IO#internal_encoding, IO#external_encoding,
+ IO#set_encoding
+ o IO.pipe takes encoding option
+ o Directive %u behaves like %d for negative values in
+ printf-style formatting.
+ * File and Dir operations
+ o #to_path is called as necessary in File.path, File.chmod,
+ File.lchmod, File.chown, File.lchown, File.utime,
+ File.unlink, etc..
+ o File.world_readable?
+ o File.world_writable?
+ o Dir.[], Dir.glob
+ o Dir.exist?
+ o Dir.exists?
+ * File::Stat
+ o File::Stat#world_readable?
+ o File::Stat#world_writable?
+ * String
+ o No longer an Enumerable: use each_line/lines for line
+ oriented operation
+ o Encoding-awareness
+ o Character-wise semantics in many methods instead of
+ byte-wise.
+ o String#[]: Indexing a String with an integer returns a
+ single character String instead of an integer.
+ o String#[]=: No longer takes an integer as right
+ side value. Note that "str[i] = ?c" because of
+ the following change.
+ o ?c is evaluated to a single character string
+ instead of an integer.
+ * Regexp
+ o Encoding-awareness
+ o Regexp matches only with strings which is encoded in a
+ compatible character encoding to the regexp's.
+ o Regexp#kcode is removed. use Regexp#encoding.
+ * Symbols: restriction on literal symbols
+ * Numeric
+ o Numeric#div always rounds as Integer#div has done.
+ o Numeric#fdiv: ditto.
+ * Integer
+ o Integer(nil) raises TypeError
+ * Fixnum
+ o Fixnum#id2name removed
+ o Fixnum#to_sym removed
+ * Struct
+ o Struct#inspect
* Time
o New format in Time#to_s
o Timezone information preserved on Marshal.dump/load
- * Struct
- o Struct#inspect
- * Symbols: restriction on literal symbols
* $SAFE and bound methods
+ o New trusted/untrusted model in addition to
+ tainted/untainted model.
+
* Deprecation
- o VERSION and friends
- o Kernel.to_a
- o Kernel#getc
+ o $= (global flag for case-sensitiveness on string matching)
+ o Kernel#to_a
+ o Kernel#getc, #gsub, #sub
+ o Kernel#callcc and Continuation now become 'continuation'
+ bundled library.
o Object#type
+ o Removed Array and Hash #indices, #indexes
o Hash#index
o ENV.index
- o Symbol#to_int
- o Removed Array and Hash #indices, #indexes
- o libraries: base64, mailread, getopts, parsearg, soap, wsdl
+ o Process::Status#to_int
+ o Numeric#rdiv
+ o Precision is removed. Don't cry, it will be redesigned
+ and come back in future version.
+ o Symbol#to_int and Symbol#to_i
+ o $KCODE is no longer effective. Use Encoding related
+ features of each class.
+ o VERSION and friends
* bundled libraries
+ * Pathname
+ o No longer has #to_str nor #=~.
+ * time and date
+ o Time.parse and Date.parse interprets slashed numerical dates
+ as "dd/mm/yyyy".
* Readline
- o If Readline uses libedit, Readline::HISTORY[0] returns the first of the history.
+ o If Readline uses libedit, Readline::HISTORY[0] returns the
+ first of the history.
+ * Continuation
+ o as above
+
+ * Deprecation
+ o Complex#image: use Complex#imag
+ o All SSL-related class methods in Net::SMTP
+ o Prime#cache, Prime#primes, Prime#primes_so_far
+ o mailread library: use tmail gem.
+ o cgi-lib library: use cgi.
+ o date2 library: use date.
+ o eregex library
+ o finalize library: use ObjectSpace.define_finalizer if you
+ really need a finalizer. really?
+ o ftools library: use fileutils.
+ o generator library: use Enumerator.
+ o importenv library and Env library
+ o jcode library: use multilingualization support of String
+ o parsedate library
+ o ping library
+ o readbytes library
+ o getopts library and parsearg library: use optparse or
+ getoptlong.
+ o soap, wsdl and xsd libraries: use soap4r gem.
+ o Win32API library: use dl.
+ o dl library: Reimplemented and API changed. use the new
+ version of dl or ffi gem.
+ o rubyunit library and runit library: use minitest or
+ test/unit. Or use anything you love through RubyGems.
+ o test/unit is reimplemented on top of minitest. This is
+ not fully compatible with the original.
=== Language core changes
* New syntax and semantics
- o New literal hash syntax
+ o Magic comments to declare in which encoding your source
+ code is written
+ o New literal hash syntax and new syntax for hash style
+ arguments
o New syntax for lambdas
o .() and calling Procs without #call/#[]
+ o Block in block arguments
+ o Block local variables
o Mandatory arguments after optional arguments allowed
o Multiple splats allowed
- o Arguments to #[]
- o printf-style formatted strings (%)
- o Newlines allowed before ternary colon
+ o #[] can take splatted arguments, hash style arguments
+ and a block.
+ o New directives in printf-style formatted strings (%).
+ o Newlines allowed before ternary colon operator (:) and
+ method call dot operator (.)
+ o Negative operators such as !, != and !~ are now
+ overloadable
+ o Encoding.default_external and default_internal
+ o __ENCODING__: New pseudo variable to hold the current
+ script's encoding
=== Library updates
+* builtin classes and objects
* Kernel and Object
o BasicObject
- o Object#=~
- o Kernel#instance_variable_defined?
+ o Object#=~ returns nil instead of false by default.
o Kernel#define_singleton_method
- o Kernel#singleton_methods, Kernel#methods
+ o Kernel#load can load a library from the highest versions
+ of gems by default.
* Class and Module
o Module#const_defined?, #const_get and #method_defined?
- o Module#class_variable_defined?
- o #class_variable_{set,get}
+ take an optional parameter.
+ o #class_variable_{set,get} are public.
o Class of singleton classes
+
+ * Errno::EXXX
+ o All of those are always defined. Errno::EXXX will be
+ defined as an alias to Errno::NOERROR if your platform
+ does not have one.
+
* Binding#eval
* Blocks and Procs
o Arity of blocks without arguments
o proc is now a synonym of Proc.new
- * Blocks and Procs
o Proc#yield
o Passing blocks to #[]
o Proc#lambda?
+ o Proc#curry
+ * Fiber: coroutines/micro-threads
+ * Thread
+ o Thread.critical and Thread.critical= removed
+ o Thread#exit!, Thread#kill! and Thread#terminate! removed.
+
* Enumerable and Enumerator
- o Enumerable#each_with_object [experimental]
+ o Enumerator#enum_cons and Enumerator#enum_slice are
+ removed. Use #each_cons and #each_slice without a block.
+ o Enumerable#each_with_index can take optional arguments
+ and passes them to #each.
+ o Enumerable#each_with_object
o Enumerator#with_object
o Enumerator.new { ... }
- * Regexp#match, String#match
- o Regexp#match, String#match
- * Encoding
- * Encoding::Converter
- * Fiber: coroutines/micro-threads
* Array
o Array#delete returns a deleted element rather than a given
object
o Array#to_s is equivalent to Array#inspect
o Array.try_convert
+ o Array#pack('m0') complies with RFC 4648.
* Hash
o preserving item insertion order
o Hash#default_proc=
o Hash#_compare_by_identity and Hash#compare_by_identity?
o Hash.try_convert
- * Numeric
- o Numeric#upto, #downto, #times, #step
- o Numeric#real?, Complex#real?
- o Numeric#div
- o Numeric#fdiv
+ o Hash#assoc
+ o Hash#rassoc
+ o Hash#flatten
* Range
o Range#cover?
o Range#include? iterates over elements and compares the
@@ -160,45 +290,131 @@ with all sufficient information, see the ChangeLog file.
Use Range#cover? for the old behavior, i.e. comparison
with boundary values.
o Range#min, Range#max
- * Regexp
- o Regexp#=== matches symbols
- o Regexp.try_convert
+
+ * File and Dir operations
+ o New methods
+ * Process
+ o Process.spawn
+ o Process.daemon
* String
o String#clear
o String#ord
o String#getbyte, String#setbyte
- o String#encoding
- o String#force_encoding
+ o String#chars and String#each_char act as character-wise.
+ o String#codepoints, String#each_codepoint
o String#unpack with a block
o String#hash
o String.try_convert
- o String.encoding, String#force_encoding, String#encode
+ o String#encoding
+ o String#force_encoding, String#encode and String#encode!
+ o String#ascii_only?
+ o String#valid_encoding?
+ o String#match
* Symbol
o Zero-length symbols allowed
- o Symbol#=== matches strings
o Symbol#intern
o Symbol#encoding
o Symbol methods similar to those in String
+ * Regexp
+ o Regexp#=== matches symbols
+ o Regexp.try_convert
+ o Regexp#match
+ o Regexp#fixed_encoding?
+ o Regexp#encoding
+ o Regexp#named_captures
+ o Regexp#names
+ * MatchData
+ o MatchData#names
+ o MatchData#regexp
+ * Encoding
+ * Encoding::Converter
+ o supports conversion between many encodings
+ * Numeric
+ o Numeric#upto, #downto, #times, #step
+ o Numeric#real?, Complex#real?
+ o Numeric#magnitude
+ * Rational / Complex
+ o They are in the core library now
* Math
- o Math#log and Math#log2
- * File and Dir operations
- o New methods
- * Process
- o Process.daemon
- * Readline
- o Readline.vi_editing_mode?
- o Readline.emacs_editing_mode?
- o Readline::HISTORY.clear
+ o Math#log takes an optional argument.
+ o Math#log2
+ o Math#cbrt, Math#lgamma, Math#gamma
+ * Time
+ o Time.times removed. Use Process.times.
+ o Time#sunday?
+ o Time#monday?
+ o Time#tuesday?
+ o Time#wednesday?
+ o Time#thursday?
+ o Time#friday?
+ o Time#saturday?
+ o Time#tv_nsec and Time#nsec
* Misc. new methods
+ o RUBY_ENGINE to distinguish between Ruby processor implementation
+ o public_method
o public_send
o GC.count
o ObjectSpace.count_objects
o Method#hash, Proc#hash
+ o Method#source_location, UnboundMethod#source_location and
+ Proc#source_location
o __callee__
+ o Elements in $LOAD_PATH and $LOADED_FEATURES are expanded
+
+* bundled libraries
+ * RubyGems
+ o Package management system for Ruby.
+ o Integrated with Ruby's library loader.
+ * Rake
+ o Ruby make. A simple ruby build program with capabilities
+ similar to make.
+ * minitest
+ o Our new testing library which is faster, cleaner and easier
+ to read than the old test/unit.
+ o You can introduce the old test/unit as testunit gem through
+ RubyGems if you want.
+ * CMath
+ o Complex number version of Math
+ * Prime
+ o Extracted from Mathn and improved. You can easily enumerate
+ prime numbers.
+ o Prime.new is obsolete. Use its class methods.
+ * ripper
+ o Ruby script parser
+ * Readline
+ o Readline.vi_editing_mode?
+ o Readline.emacs_editing_mode?
+ o Readline::HISTORY.clear
+ * Tk
+ o TkXXX widget classes are removed and redefined as aliases of
+ Tk::XXX classes.
+ * RDoc
+ o Updated to version 2.2.2. See:
+ http://rubyforge.org/frs/shownotes.php?group_id=627&release_id=26434
+
+* commandline options
+ * -E, --encoding
+ * -U
+ * --enable-gems, --disable-gems
+ * --enable-rubyopt, --disable-rubyopt
+ * long options are allowed in RUBYOPT environment variable.
=== Implementation changes
- * Memory Diet
- * Object Compaction - Object, Array, String, Hash, Struct, Class, Module
- * st_table compaction (inlining small tables)
- * YARV
+* Memory Diet
+ * Object Compaction - Object, Array, String, Hash, Struct, Class,
+ Module
+ * st_table compaction (inlining small tables)
+* YARV
+ * Ruby codes are compiled into opcodes before executed.
+ * Native thread
+
+* Platform supports
+ * Support levels
+ (0) Supported
+ (1) Best effort
+ (2) Perhaps
+ (3) Not supported
+ * Dropped
+ o No longer supports djgpp, bcc32, human68k, MacOS 9 or earlier,
+ VMS nor Windows CE.