зеркало из https://github.com/github/ruby.git
826 строки
15 KiB
Plaintext
826 строки
15 KiB
Plaintext
= command line options
|
|
|
|
: -W option
|
|
|
|
new option to specify warning level. -W0 to shut up warnings, -W1 for normal level,
|
|
-W2 for verbose level. -w equals to -W2.
|
|
|
|
= language syntax
|
|
|
|
: arbitrary delimited string array
|
|
|
|
%W(...) notation, word list literal like %w(...) with the
|
|
exception that #{} interpolation is allowed.
|
|
|
|
: arbitrary delimited symbol literl
|
|
|
|
:"foo", :"foo#{bar}", etc.
|
|
|
|
: expression interpolation in strings
|
|
|
|
Now arbitrary statements are allowed inside #{} interpolation
|
|
without escapes. In other hand, they can no longer access to
|
|
variables defined in eval.
|
|
|
|
: negative number literals
|
|
|
|
Digits preceded minus sign is a literal integer.
|
|
|
|
: array expansion
|
|
|
|
Fixed with the following behavior:
|
|
|
|
a = *[1]
|
|
p a #=> [1]
|
|
|
|
Now 1-element array in rhs is expanded properly.
|
|
|
|
a = *[1]
|
|
p a #=> 1
|
|
|
|
: break and next
|
|
|
|
Extended to take an optional expression, which is used as a value
|
|
for termination.
|
|
|
|
: direct assignment to Foo::Bar is allowed
|
|
|
|
also, you can define "class Foo::Bar; end".
|
|
|
|
= language core
|
|
|
|
: $stdin, $stdout, $stderr
|
|
|
|
can be assignable again. the original stdio are preserved as STDIN,
|
|
STDOUT, STDERR.
|
|
|
|
: $VERBOSE now has 3 levels
|
|
|
|
nil - silence, false - medium (default), true - verbose
|
|
|
|
: allocation framework
|
|
|
|
any instance of class can be allocated by class.allocate,
|
|
(except for a few classes).
|
|
|
|
: comparison of exception classes in a rescue clause
|
|
|
|
changed to use Module#=== for comparing $! with the exception
|
|
class specified in each rescue clause.
|
|
|
|
as the previous behavior was to use kind_of?, the effect is limited
|
|
to the SystemCallError case. SystemCallError.=== has been newly
|
|
defined to return true when the two have the same errno. With this
|
|
change, SystemCallError's with the same errno, such as Errno::EAGAIN
|
|
and Errno::EWOULDBLOCK, can both be rescued by listing just one of
|
|
them.
|
|
|
|
: constants lookup
|
|
|
|
improved at the performance of searching by using an internal hash
|
|
table.
|
|
|
|
calls const_missing method of the class/module, if constant is not
|
|
found in the look up path.
|
|
|
|
: expression parenthesis in the first argument
|
|
|
|
altered to get the following code (note the space after p):
|
|
|
|
p ("xx"*2).to_i
|
|
|
|
Interpreted as:
|
|
|
|
p (("xx"*2).to_i)
|
|
|
|
Instead of:
|
|
|
|
(p("xx"*2)).to_i
|
|
|
|
: implicit comparison in conditional expressions
|
|
|
|
Obsoleted except when it is used in -e.
|
|
|
|
: between Range and $.
|
|
Use explicit comparison instead.
|
|
|
|
: between Regexp and $_
|
|
Use the unary method ~/re/ instead.
|
|
|
|
: to_str
|
|
|
|
added to get objects which define to_str() treated as String's.
|
|
|
|
now almost all the built-in methods try each argument with to_str()
|
|
when they expect it to be a String.
|
|
|
|
foo = Object.new
|
|
class <<foo
|
|
def to_str
|
|
"foo"
|
|
end
|
|
end
|
|
p File.open(foo)
|
|
=> -:7:in `open': wrong argument type Object (expected String) (TypeError)
|
|
ruby 1.6.4 (2001-04-19) [i586-linux]
|
|
=> -:7:in `open': No such file or directory - "foo" (Errno::ENOENT)
|
|
ruby 1.7.0 (2001-05-02) [i586-linux]
|
|
|
|
: multiple assignment behavior
|
|
|
|
Fixed so that "*a = nil" results in "a == []".
|
|
|
|
= changes in core class library
|
|
|
|
: open
|
|
|
|
Extended so that when the third argument is permission flags it
|
|
calls open(2) instead of fopen(3).
|
|
|
|
: sprintf
|
|
|
|
new format specifier "%p" is available.
|
|
|
|
: lambda and proc
|
|
|
|
Proc object returns from these methods has the following attributes:
|
|
|
|
* strict argument number check
|
|
* break and return terminates the proc execution.
|
|
|
|
: warn(message)
|
|
|
|
a method to give warnings.
|
|
|
|
: abort()
|
|
|
|
takes optional terminate message argument.
|
|
|
|
: Object#initialize_copy
|
|
|
|
copy constructor for clone and dup.
|
|
|
|
: Object#instance_variable_set, Object#instance_variable_get
|
|
|
|
added.
|
|
|
|
: Object#singleton_method_removed
|
|
: Object#singleton_method_undefined
|
|
|
|
Added.
|
|
|
|
: Array#transpose
|
|
|
|
added.
|
|
|
|
: Array#fetch(index [, default])
|
|
|
|
Added. If a default value isn't given, raises index error if index
|
|
is out of range.
|
|
|
|
: Array#insert(n, other, ...)
|
|
|
|
Added. [ruby-talk:14289]
|
|
|
|
This is much the same as (({ary[n,0] = [other,...]})) except
|
|
returing self.
|
|
|
|
ary = [0,1,2,3]
|
|
ary[2, 0] = [4, 5, 6]
|
|
p ary
|
|
|
|
ary = [0,1,2,3]
|
|
ary.insert(2, 4, 5, 6)
|
|
p ary
|
|
|
|
: Array#sort!
|
|
|
|
Changed to always return self without checking whether the sequence
|
|
of the elements was modified or not.
|
|
|
|
Beware that this behavior is not guaranteed to continue in the
|
|
future. Do not rely on its return value. [ruby-dev:12506]
|
|
|
|
: Array#filter
|
|
|
|
Previously deprecated, now removed. Use Array#collect!.
|
|
|
|
: Array#pack, String#unpack
|
|
|
|
Allows comment in template strings.
|
|
|
|
: Array#pack, String#unpack
|
|
|
|
New templates 'q' and 'Q' for 64bit integer (signed and unsigned respectively).
|
|
|
|
: Array#new
|
|
|
|
Now takes block to fill initial values. E.g.
|
|
|
|
Array.new(10) { |i| i + 1 }
|
|
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
|
|
|
: Array#fill
|
|
|
|
Takes block to get the values to fill.
|
|
|
|
: Array#fetch
|
|
|
|
Takes block to get the default value.
|
|
|
|
: Array#zip
|
|
|
|
added.
|
|
|
|
: Hash#update
|
|
|
|
Takes block to resolve key conflict.
|
|
|
|
: Hash#merge and Hash#merge!
|
|
|
|
update hash. Hash#merge! is a synonym of Hash#update.
|
|
|
|
: String#split
|
|
|
|
if "sep" argument is a string, regular expression meta characters
|
|
are escaped internally.
|
|
|
|
: String#rstrip
|
|
|
|
chop off NULs at the end of strings.
|
|
|
|
: String#to_i
|
|
|
|
Now accepts optional base argument.
|
|
|
|
"101".to_i(10) => 101
|
|
"101".to_i(2) => 5
|
|
"101".to_i(8) => 65
|
|
"101".to_i(16) => 257
|
|
|
|
A base argument of 0 guesses at the base.
|
|
|
|
"101".to_i(0) => 101
|
|
"0b101".to_i(0) => 5
|
|
"0101".to_i(0) => 65
|
|
"0x101".to_i(0) => 257
|
|
|
|
: String#[regexp, nth]
|
|
|
|
Extended to accepts optional second argument.
|
|
|
|
It tries match between self and REGEXP, then returns the
|
|
content of the NTH regexp register.
|
|
|
|
: String#casecmp
|
|
|
|
Added. This is a case insensitive version of String#<=>.
|
|
|
|
: String#chomp
|
|
|
|
If $/ == "\n", chops off last newlines (any of \n, \r, \r\n).
|
|
|
|
: String#eql?
|
|
|
|
Changed to be always case sensitive.
|
|
|
|
: String#insert(n, other)
|
|
|
|
Added.
|
|
|
|
This is much the same as (({str[n, 0] = other})) except returing
|
|
self.
|
|
|
|
: String#lstrip, rstrip, lstrip!, rstrip!
|
|
|
|
Added. These strip only left or right part of a string.
|
|
|
|
: String#match
|
|
|
|
Added.
|
|
|
|
: String/Array methods
|
|
|
|
Returns an instance of receivers class.
|
|
|
|
: String.new
|
|
|
|
The first argument becomes optional.
|
|
|
|
: Symbol#intern
|
|
|
|
Added.
|
|
|
|
: Symbol.all_symbols
|
|
|
|
Added. [ruby-dev:12921]
|
|
|
|
: IO
|
|
|
|
64bit off_t support by Janathan Baker.
|
|
|
|
: IO#read
|
|
: IO#sysread
|
|
|
|
takes optinal second argument for read buffer.
|
|
|
|
: IO::sysopen
|
|
|
|
New method to get a raw file descriptor.
|
|
|
|
: IO#sysseek
|
|
|
|
Added.
|
|
|
|
: IO#fsync
|
|
|
|
new method that copies all in-memory parts of a file to disk and
|
|
waits until the device reports that all parts are on stable storage.
|
|
Implemented with fsync(2) or equivalent.
|
|
|
|
: IO.open
|
|
|
|
Made public. Can only associate an IO object with a file number
|
|
like IO.new and IO.for_fd, but can take a block.
|
|
|
|
: IO.for_fd
|
|
|
|
Added as a synonym for IO.new.
|
|
|
|
: IO.read
|
|
|
|
Added. Like IO.readlines, except it returns the entire file as a
|
|
string. [ruby-talk:9460]
|
|
|
|
: File#fnmatch, File::Constants::FNM_*
|
|
|
|
Added. Refer to the fnmatch(3) manpage for details.
|
|
|
|
Localism is FNM_DOTMATCH which has the opposite meaning of the
|
|
commonly known FNM_PERIOD, which does not exist in Ruby.
|
|
|
|
e.g.
|
|
|
|
# exclude files matching "*.bak" case-insensitively.
|
|
files.reject! {|fn| File.fnmatch?("*.bak", fn, File::FNM_CASEFOLD) }
|
|
|
|
: File.lchmod
|
|
: File.lchown
|
|
|
|
Added.
|
|
|
|
: File.open, IO.open
|
|
|
|
File mode can be specified by flags like open(2),
|
|
e.g. File::open(path, File::CREAT|File::WRONLY).
|
|
|
|
: Regexp#options
|
|
|
|
Added.
|
|
|
|
: Regexp.last_match(n)
|
|
|
|
Extended to take an optional argument.
|
|
|
|
: MatchData#captures
|
|
|
|
added.
|
|
|
|
: Dir#path
|
|
|
|
Added.
|
|
|
|
: Dir.chdir
|
|
|
|
Extended to take a block.
|
|
|
|
: Dir.glob
|
|
|
|
Made to support meta-character escaping by a backslash. Wildcards
|
|
and spaces may now be escaped using a backslash.
|
|
|
|
: Dir.open
|
|
|
|
Changed to return what the block returns when a block is given, just
|
|
as File.open does. (It always returned (({nil})) in 1.6 and
|
|
prior)
|
|
|
|
: Dir.chdir
|
|
|
|
Changed to warn only when invoked from multiple threads or no block
|
|
is given. [ruby-dev:13823]
|
|
|
|
Dir.chdir('foo') {
|
|
Dir.chdir('bar') { # previously warned
|
|
puts Dir.pwd
|
|
}
|
|
}
|
|
|
|
: Dir#pos=
|
|
|
|
Returns the new position instead of self.
|
|
|
|
: Dir::glob
|
|
|
|
Now accepts optional FNM_* flags via the second argument, whereas
|
|
Dir::[] doesn't.
|
|
|
|
Dir.glob("makefile", File::FNM_CASEFOLD) #=> ['Makefile', 'makefile']
|
|
|
|
: Class#inherited
|
|
|
|
Method is called when Class is inherited by another class.
|
|
|
|
class A; end
|
|
def A.inherited(by)
|
|
puts "A inherited by #{by.inspect}"
|
|
end
|
|
class B < A; end
|
|
|
|
Prints out "A inherited by B"
|
|
|
|
: Module#include?
|
|
|
|
Added. [ruby-dev:13941]
|
|
|
|
: Module#included
|
|
|
|
Added. This is a hook called after Module#append_feature.
|
|
|
|
: Module#method_removed
|
|
: Module#method_undefined
|
|
|
|
Added.
|
|
|
|
: Module.new, Class.new
|
|
|
|
Extended to take block.
|
|
|
|
: Time
|
|
|
|
Extended to accept a negative time_t. (Only when the platform
|
|
supports it)
|
|
|
|
p Time.at(-1)
|
|
=> Thu Jan 01 08:59:59 JST 1970
|
|
|
|
: Time#to_a
|
|
: Time#zone
|
|
|
|
Made to return "UTC" under gmtime. It used to return a platform
|
|
dependent value, typically "GMT", in 1.6 and prior.
|
|
|
|
: Marshal to use marshal_dump and marshal_load
|
|
|
|
if a dumping object responds to 'marshal_dump', Marshal.dump calls
|
|
it, and dumps object returned. Marshal.load allocates a new instance
|
|
using "allocate", then calls its "marshal_load" with dumped data.
|
|
Marshal format version is now 4.8 (was 4.6 in 1.6.8).
|
|
|
|
: Marshal
|
|
|
|
Fixed not to dump anonymous classes/modules.
|
|
|
|
Fixed with loading modules.
|
|
|
|
: Thread#group
|
|
|
|
new method to get belonging ThreadGroup.
|
|
|
|
: Thread#terminate
|
|
|
|
synonym of Thread#exit
|
|
|
|
: Thread#join
|
|
|
|
Optional argument limits maximum time to wait the thread in second.
|
|
And returns nil if timed out.
|
|
|
|
: ThreagGroup#enclose
|
|
|
|
prohibits thread movement from/to enclosed groups.
|
|
|
|
: Range#step([step=1])
|
|
|
|
Added.
|
|
|
|
: SystemCallError
|
|
|
|
SystemCallError's "===" match (used in rescue also) is now based on its errno.
|
|
|
|
: Interrupt
|
|
|
|
Made a subclass of SignalException. (It was a subclass of
|
|
Exception in 1.6 and prior)
|
|
|
|
: NameError and NoMethodError
|
|
|
|
Moved and now NoMethodError < NameError < StandardError.
|
|
|
|
: NoMethodError
|
|
|
|
Added. [ruby-dev:12763]
|
|
|
|
: NotImplementError
|
|
|
|
Finally obsoleted. Use NotImplementedError.
|
|
|
|
: SystemCallError.===
|
|
|
|
Added. (See the "Comparison of exception classes in a rescue clause"
|
|
paragraph above) [ruby-dev:12670]
|
|
|
|
: SystemExit#status
|
|
|
|
Added.
|
|
|
|
: Proc#==
|
|
|
|
Added.
|
|
|
|
: Method#==
|
|
|
|
Added.
|
|
|
|
: UnboundMethod is no longer subclass of Method
|
|
|
|
class hierarchy changed.
|
|
|
|
: Enumerable#all?
|
|
: Enumerable#any?
|
|
: Enumerable#inject
|
|
: Enumerable#sort_by
|
|
|
|
Added.
|
|
|
|
: Math.acos(x)
|
|
: Math.asin(x)
|
|
: Math.atan(x)
|
|
: Math.cosh(x)
|
|
: Math.hypot(x,y)
|
|
: Math.sinh(x)
|
|
: Math.tanh(x)
|
|
|
|
Added.
|
|
|
|
: Process.abort
|
|
: Process.exit
|
|
|
|
synonym of Kernel#abort, and Kernel#exit respectively.
|
|
|
|
: Process::detach(pid)
|
|
|
|
new method to detach child process. child process will be "wait"ed
|
|
automagically.
|
|
|
|
: Process.times
|
|
|
|
Moved from Time.times. (Time.times still remains but emits a
|
|
warning)
|
|
|
|
: Process.waitall
|
|
|
|
Added.
|
|
|
|
: Process::Status
|
|
|
|
Added. (({$?})) is now an instance of this class.
|
|
|
|
: Process::UID, Process::GID, Process::Sys,
|
|
|
|
Added.
|
|
|
|
: Signal
|
|
|
|
Added. This module has module functions Signal.trap and Signal.list.
|
|
|
|
= changes in bundled libraries
|
|
|
|
: lib/cgi.rb
|
|
|
|
cgi[name] returns CGI::QueryExtension::Value that wraps string
|
|
value, no longer array.
|
|
|
|
: lib/timeout
|
|
|
|
timeout "function" wrapped in Timeout module.
|
|
|
|
: TCPServer#accept, UNIXServer#accept, Socket#accept
|
|
|
|
New methods to return an accepted socket fd.
|
|
|
|
: Date and DateTime
|
|
|
|
lib/date.rb now provides both Date and DateTime.
|
|
|
|
Some methods have been renamed. But the old names are still alive.
|
|
|
|
Some new methods have been added (Date::parse, Date#strftime, etc.).
|
|
|
|
Date#mjd now returns the chronological modified Julian day number.
|
|
|
|
All facilities about tjd have been removed.
|
|
|
|
: Curses
|
|
|
|
Updated. New methods and constants for using the mouse, character
|
|
attributes, colors and key codes have been added.
|
|
|
|
: Net::HTTP
|
|
|
|
New version of Net::HTTP has introduced seriously incompatible
|
|
changes. For details, see document embedded in net/http.rb itself.
|
|
|
|
: Socket.pack_sockaddr_in, Socket.unpack_sockaddr_in
|
|
|
|
Added. Utility for direct Socket access.
|
|
|
|
: Socket.pack_sockaddr_un, Socket.unpack_sockaddr_un
|
|
|
|
Added. Utility for direct Socket access.
|
|
|
|
: TCPServer#listen, UNIXServer#listen
|
|
|
|
Added.
|
|
|
|
: TCPSocket.new
|
|
: TCPSocket.open
|
|
|
|
Extended to take an address and a port number for the local side in
|
|
optional 3rd and 4th arguments.
|
|
|
|
= new bundled library
|
|
|
|
: ext/bigdecimal
|
|
|
|
variable precision decimal number
|
|
|
|
: ext/dl
|
|
|
|
an interface to the dynamic linker.
|
|
|
|
: ext/io/wait
|
|
|
|
IO wait methods.
|
|
|
|
: ext/iconv
|
|
|
|
wrapper library of (({iconv})).
|
|
|
|
: ext/openssl
|
|
|
|
OpenSSL for Ruby
|
|
|
|
: ext/racc/cparse
|
|
|
|
Racc runtime library in C. (Racc is a parser generator for ruby)
|
|
|
|
: ext/stringio
|
|
|
|
Pseudo (({IO})) class from/to (({String})).
|
|
|
|
: ext/strscan
|
|
|
|
Fast string scanner library.
|
|
|
|
: ext/syck
|
|
|
|
fast YAML parser.
|
|
|
|
: lib/benchmark
|
|
|
|
Ruby scripts benchmarker
|
|
|
|
: lib/cgi/session/pstore
|
|
|
|
cgi/session back-end using pstore
|
|
|
|
: lib/csv
|
|
|
|
reads/writes CSV files.
|
|
|
|
: lib/date/format
|
|
|
|
strftime for Date class
|
|
|
|
: lib/drb
|
|
|
|
dRuby or distributed Ruby
|
|
|
|
: lib/fileutils
|
|
|
|
file utility library.
|
|
|
|
: lib/gserver
|
|
|
|
generic server used by xmlrpc
|
|
|
|
: lib/ipaddr
|
|
|
|
manipulates IP address.
|
|
|
|
: lib/multi-tk
|
|
|
|
to allow safe Tk, etc.
|
|
|
|
: lib/open-uri
|
|
|
|
easy-to-use wrapper for net/http and net/ftp
|
|
|
|
: lib/optparse
|
|
|
|
command line options utility library
|
|
|
|
: lib/pathname
|
|
|
|
handles pathname in OO manner.
|
|
|
|
: lib/pp
|
|
|
|
prettyprinter for Ruby objects
|
|
|
|
: lib/prettyprint
|
|
|
|
implements prettyprint algorithm.
|
|
|
|
: lib/profiler
|
|
|
|
library to implement -r "profile"
|
|
|
|
: lib/racc/parser
|
|
|
|
RACC parser generator runtime in Ruby.
|
|
|
|
: lib/scanf
|
|
|
|
scan string and retrieve object with format
|
|
|
|
: lib/set
|
|
|
|
Set class
|
|
|
|
: lib/runit
|
|
|
|
RubyUnit compatible layer for test/unit
|
|
|
|
: lib/test/unit
|
|
|
|
unit testing framework for Ruby
|
|
|
|
: lib/tmpdir
|
|
|
|
get temporary directory path.
|
|
|
|
: lib/tsort
|
|
|
|
topological sorting library.
|
|
|
|
: lib/rexml
|
|
|
|
REXML XML library
|
|
|
|
: lib/webrick
|
|
|
|
generic internet server kit
|
|
|
|
: lib/xmlrpc
|
|
|
|
simple RPC via XML
|
|
|
|
: lib/un
|
|
|
|
used like 'ruby -run -e cp -- -p foo bar'. neat, isn't it?
|
|
|
|
: lib/win32/registry
|
|
|
|
win32/registry is registry accessor
|
|
|
|
: lib/yaml
|
|
|
|
YAML Ain't Mark-up Language
|
|
|
|
= removed libraries
|
|
|
|
: lib/ftplib
|
|
|
|
use net/ftp instead.
|
|
|
|
: lib/telnet
|
|
|
|
use net/telnet instead.
|
|
|
|
= new port
|
|
|
|
: WindowsCE port
|
|
: Win32 BCC
|
|
|
|
= interpreter implementation
|
|
|
|
: garbage collector
|
|
|
|
faster, but uses more memory for the worst case.
|
|
|
|
: string concatenation
|
|
|
|
faster by avoiding too frequent realloc(3).
|