2010-02-03 09:52:23 -05:00
|
|
|
# -*- rd -*-
|
2008-12-12 04:46:28 -05:00
|
|
|
= NEWS
|
|
|
|
|
|
|
|
This document is a list of user visible feature changes made between
|
|
|
|
releases except for bug fixes.
|
|
|
|
|
|
|
|
Note that each entry is kept so brief that no reason behind or
|
|
|
|
reference information is supplied with. For a full list of changes
|
|
|
|
with all sufficient information, see the ChangeLog file.
|
|
|
|
|
2011-07-10 10:54:03 -04:00
|
|
|
== Changes since the 1.9.3 release
|
2010-09-15 12:14:05 -04:00
|
|
|
|
2010-09-10 04:20:47 -04:00
|
|
|
=== C API updates
|
2011-11-14 11:00:29 -05:00
|
|
|
* NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short.
|
2012-11-02 22:35:36 -04:00
|
|
|
* rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class.
|
2011-11-14 11:00:29 -05:00
|
|
|
|
2010-07-05 03:11:44 -04:00
|
|
|
=== Library updates (outstanding ones only)
|
2011-07-12 10:42:48 -04:00
|
|
|
|
|
|
|
* builtin classes
|
|
|
|
|
2012-10-09 05:01:40 -04:00
|
|
|
* Array
|
|
|
|
* incompatible changes:
|
|
|
|
* random parameter of Array#shuffle! and Array#sample now
|
|
|
|
will be called with one argument, maximum value.
|
|
|
|
|
2012-03-08 10:30:28 -05:00
|
|
|
* Enumerable
|
|
|
|
* added method:
|
|
|
|
* added Enumerable#lazy method for lazy enumeration.
|
|
|
|
|
2012-04-23 23:46:55 -04:00
|
|
|
* ENV
|
|
|
|
* aliased method:
|
|
|
|
* ENV.to_h is a new alias for ENV.to_hash
|
|
|
|
|
2012-11-03 21:19:11 -04:00
|
|
|
* File:
|
|
|
|
* extended method:
|
|
|
|
* File.fnmatch? now expands braces in the pattern if
|
|
|
|
File::FNM_EXTGLOB option is given.
|
|
|
|
|
2012-04-09 00:07:53 -04:00
|
|
|
* Hash
|
2012-04-23 23:46:55 -04:00
|
|
|
* added method:
|
|
|
|
* added Hash#to_h as explicit conversion method, like Array#to_a.
|
2012-04-09 00:07:53 -04:00
|
|
|
* extended method:
|
|
|
|
* Hash#default_proc= can be passed nil to clear the default proc.
|
|
|
|
|
2011-07-19 18:17:13 -04:00
|
|
|
* Kernel
|
2012-02-25 02:08:44 -05:00
|
|
|
* added method:
|
|
|
|
* added Kernel#Hash conversion method like Array() or Float().
|
2012-11-01 03:48:29 -04:00
|
|
|
* added Kernel#using, which imports refinements into the current scope.
|
|
|
|
[experimental]
|
2012-11-02 21:37:50 -04:00
|
|
|
* added Kernel#__dir__ which returns a current dirname.
|
2011-07-19 18:17:13 -04:00
|
|
|
* extended method:
|
|
|
|
* Kernel#warn accepts multiple args in like puts.
|
2012-05-26 00:51:32 -04:00
|
|
|
* Kernel#caller accepts second optional argument `n' which specify
|
2012-05-27 00:47:43 -04:00
|
|
|
required caller size.
|
2011-10-22 05:58:15 -04:00
|
|
|
* incompatible changes:
|
|
|
|
* system() and exec() closes non-standard file descriptors
|
|
|
|
(The default of :close_others option is changed to true by default.)
|
2012-02-13 11:05:00 -05:00
|
|
|
* respond_to? against a protected method now returns false unless
|
|
|
|
the second argument is true.
|
2012-07-04 21:53:30 -04:00
|
|
|
* __callee__ has returned to the original behavior, and now
|
|
|
|
returns the called name but not the original name in an
|
|
|
|
aliased method.
|
2012-08-15 07:50:01 -04:00
|
|
|
* Kernel#inspect does not call #to_s anymore
|
|
|
|
(it used to call redefined #to_s).
|
2011-07-19 18:17:13 -04:00
|
|
|
|
2012-03-06 18:38:33 -05:00
|
|
|
* LoadError
|
|
|
|
* added method:
|
|
|
|
* added LoadError#path method to return the file name that could not be
|
|
|
|
loaded.
|
|
|
|
|
2012-06-25 04:06:43 -04:00
|
|
|
* Module
|
2012-07-04 21:53:30 -04:00
|
|
|
* added method:
|
|
|
|
* added Module#prepend which is similar to Module#include,
|
2012-07-04 22:04:57 -04:00
|
|
|
however a method in the prepended module overrides the
|
2012-07-04 21:53:30 -04:00
|
|
|
corresponding method in the prepending module.
|
2012-11-01 03:48:29 -04:00
|
|
|
* added Module#refine, which extends a class or module locally.
|
|
|
|
[experimental]
|
|
|
|
* added Module#refinements, which returns refinements defined in the
|
|
|
|
receiver. [experimental]
|
|
|
|
* added Module#using, which imports refinements into the receiver.
|
|
|
|
[experimental]
|
2012-06-25 04:06:43 -04:00
|
|
|
* extended method:
|
|
|
|
* Module#define_method accepts a UnboundMethod from a Module.
|
2012-10-26 17:31:23 -04:00
|
|
|
* Module#const_get accepts a qualified constant string, e.g.
|
|
|
|
Object.const_get("Foo::Bar::Baz")
|
2012-06-25 04:06:43 -04:00
|
|
|
|
2012-04-23 23:46:55 -04:00
|
|
|
* NilClass
|
|
|
|
* added method:
|
|
|
|
* added nil.to_h which returns {}
|
|
|
|
|
2011-07-12 10:42:48 -04:00
|
|
|
* Signal
|
|
|
|
* incompatible changes:
|
|
|
|
* Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
|
|
|
|
are specified.
|
|
|
|
|
2012-11-05 19:50:02 -05:00
|
|
|
*String
|
|
|
|
* added method:
|
|
|
|
* added String#b returning a copied string whose encoding is ASCII-8BIT.
|
|
|
|
|
2012-04-23 23:46:55 -04:00
|
|
|
* Struct
|
|
|
|
* added method:
|
|
|
|
* added Struct#to_h returning values with keys corresponding to the
|
|
|
|
instance variable names.
|
|
|
|
|
2012-10-29 13:22:36 -04:00
|
|
|
* Thread
|
|
|
|
* added method:
|
|
|
|
* added Thread#thread_variable_get for getting thread local variables
|
|
|
|
(these are different than Fiber local variables).
|
|
|
|
* added Thread#thread_variable_set for setting thread local variables.
|
|
|
|
* added Thread#thread_variables for getting a list of the thread local
|
|
|
|
variable keys.
|
|
|
|
* added Thread#thread_variable? for testing to see if a particular thread
|
|
|
|
variable has been set.
|
|
|
|
|
2011-08-25 19:24:33 -04:00
|
|
|
* Time
|
|
|
|
* change return value:
|
|
|
|
* Time#to_s returned encoding defaults to US-ASCII but automatically
|
|
|
|
transcodes to Encoding.default_internal if it is set.
|
|
|
|
|
2011-11-08 23:26:39 -05:00
|
|
|
* Fiber
|
|
|
|
* incompatible changes:
|
|
|
|
* Fiber#resume cannot resume a fiber which invokes "Fiber#transfer".
|
|
|
|
|
2012-11-02 22:35:39 -04:00
|
|
|
* GC::Profiler
|
|
|
|
* added method:
|
|
|
|
* added GC::Profiler.raw_data which returns raw profile data for GC.
|
|
|
|
|
2012-11-01 19:24:33 -04:00
|
|
|
* toplevel
|
|
|
|
* added method:
|
|
|
|
* added main.define_method which defines a global function.
|
|
|
|
|
2012-07-11 14:37:18 -04:00
|
|
|
* net/http
|
2012-07-19 22:05:27 -04:00
|
|
|
* new features:
|
|
|
|
* Proxies are now automatically detected from the http_proxy environment
|
|
|
|
variable. See Net::HTTP::new for details.
|
|
|
|
* gzip and deflate compression are now requested for all requests by
|
|
|
|
default. See Net::HTTP for details.
|
2012-07-24 20:05:59 -04:00
|
|
|
* SSL sessions are now reused across connections for a single instance.
|
|
|
|
This speeds up connection by using a previously negotiated session.
|
2012-07-11 14:37:18 -04:00
|
|
|
* new methods:
|
|
|
|
* Net::HTTP#local_host
|
|
|
|
* Net::HTTP#local_host=
|
|
|
|
* Net::HTTP#local_port
|
|
|
|
* Net::HTTP#local_port=
|
|
|
|
* extended method:
|
|
|
|
* Net::HTTP#connect uses local_host and local_port if specified.
|
|
|
|
|
2011-09-09 03:48:00 -04:00
|
|
|
* net/imap
|
|
|
|
* new methods:
|
|
|
|
* Net::IMAP.default_port
|
|
|
|
* Net::IMAP.default_imap_port
|
|
|
|
* Net::IMAP.default_tls_port
|
|
|
|
* Net::IMAP.default_ssl_port
|
|
|
|
* Net::IMAP.default_imaps_port
|
|
|
|
|
2012-04-23 23:46:55 -04:00
|
|
|
* ostruct
|
|
|
|
* new methods:
|
2012-10-28 17:20:10 -04:00
|
|
|
* OpenStruct#[], []=
|
2012-10-28 17:18:53 -04:00
|
|
|
* OpenStruct#each_pair
|
2012-10-28 17:19:15 -04:00
|
|
|
* OpenStruct#eql?
|
|
|
|
* OpenStruct#hash
|
2012-04-23 23:46:55 -04:00
|
|
|
* OpenStruct#to_h converts the struct to a hash.
|
2012-10-28 17:19:50 -04:00
|
|
|
* extended method:
|
|
|
|
* OpenStruct.new also accepts an OpenStruct / Struct.
|
2012-04-23 23:46:55 -04:00
|
|
|
|
2011-11-19 07:52:37 -05:00
|
|
|
* pathname
|
|
|
|
* extended method:
|
|
|
|
* Pathname#find returns an enumerator if no block is given.
|
|
|
|
|
2011-10-22 04:50:50 -04:00
|
|
|
* resolv
|
|
|
|
* new methods:
|
|
|
|
* Resolv::DNS#timeouts=
|
|
|
|
* Resolv::DNS::Config#timeouts=
|
|
|
|
|
2012-01-12 13:49:30 -05:00
|
|
|
* shellwords
|
|
|
|
* Shellwords#shellescape() now stringifies the given object using to_s.
|
|
|
|
* Shellwords#shelljoin() accepts non-string objects in the given
|
|
|
|
array, each of which is stringified using to_s.
|
|
|
|
|
2012-05-17 17:14:24 -04:00
|
|
|
* syslog
|
|
|
|
* Added Syslog::Logger which provides a Logger API atop Syslog.
|
2012-05-21 03:18:49 -04:00
|
|
|
* Syslog::Priority, Syslog::Level, Syslog::Option and Syslog::Macros
|
|
|
|
are introduced for easy detection of available constants on a
|
|
|
|
running system.
|
2012-05-17 17:14:24 -04:00
|
|
|
|
2012-03-16 11:20:03 -04:00
|
|
|
* lib/tmpdir.rb
|
2012-03-11 18:37:04 -04:00
|
|
|
* incompatible changes:
|
|
|
|
* Dir.mktmpdir uses FileUtils.remove_entry instead of
|
|
|
|
FileUtils.remove_entry_secure. This means that applications should not
|
|
|
|
change the permission of the created temporary directory to make
|
|
|
|
accessible from other users.
|
|
|
|
|
2012-02-14 20:28:05 -05:00
|
|
|
* zlib
|
2012-07-10 14:28:40 -04:00
|
|
|
* Added streaming support for Zlib::Inflate and Zlib::Deflate. This allows
|
|
|
|
processing of a stream without the use of large amounts of memory.
|
2012-02-14 20:28:05 -05:00
|
|
|
* Added support for the new deflate strategies Zlib::RLE and Zlib::FIXED.
|
2012-07-02 17:03:15 -04:00
|
|
|
* Zlib streams are now processed without the GVL. This allows gzip, zlib and
|
|
|
|
deflate streams to be processed in parallel.
|
2012-02-14 20:28:05 -05:00
|
|
|
|
2012-03-28 19:28:17 -04:00
|
|
|
* openssl
|
|
|
|
* Consistently raise an error when trying to encode nil values. All instances
|
|
|
|
of OpenSSL::ASN1::Primitive now raise TypeError when calling to_der on an
|
|
|
|
instance whose value is nil. All instances of OpenSSL::ASN1::Constructive
|
|
|
|
raise NoMethodError in the same case. Constructing such values is still
|
|
|
|
permitted.
|
2012-06-09 17:24:40 -04:00
|
|
|
* TLS 1.1 & 1.2 support by setting OpenSSL::SSL::SSLContext#ssl_version to
|
2012-06-09 17:36:05 -04:00
|
|
|
:TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or :TLSv1_1, :TLSv1_1_server
|
2012-06-09 17:24:40 -04:00
|
|
|
:TLSv1_1_client. The version being effectively used can be queried
|
2012-06-09 17:36:05 -04:00
|
|
|
with OpenSSL::SSL#ssl_version. Furthermore, it is also possible to
|
2012-06-09 17:24:40 -04:00
|
|
|
blacklist the new TLS versions with OpenSSL::SSL:OP_NO_TLSv1_1 and
|
2012-06-09 17:36:05 -04:00
|
|
|
OpenSSL::SSL::OP_NO_TLSv1_2.
|
2012-06-30 05:36:36 -04:00
|
|
|
* Added OpenSSL::SSL::SSLContext#renegotiation_cb. A user-defined callback
|
2012-06-09 17:24:40 -04:00
|
|
|
may be set which gets called whenever a new handshake is negotiated. This
|
|
|
|
also allows to programmatically decline (client) renegotiation attempts.
|
2012-06-09 17:36:05 -04:00
|
|
|
* Support for "0/n" splitting of records as BEAST mitigation via
|
2012-06-09 17:24:40 -04:00
|
|
|
OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS.
|
2012-06-09 21:31:06 -04:00
|
|
|
* OpenSSL requires passwords for decrypting PEM-encoded files to be at least
|
|
|
|
four characters long. This led to awkward situations where an export with
|
|
|
|
a password with fewer than four characters was possible, but accessing the
|
|
|
|
file afterwards failed. OpenSSL::PKey::RSA, OpenSSL::PKey::DSA and
|
|
|
|
OpenSSL::PKey::EC therefore now enforce the same check when exporting a
|
|
|
|
private key to PEM with a password - it has to be at least four characters
|
|
|
|
long.
|
2012-09-02 23:22:22 -04:00
|
|
|
* SSL/TLS support for the Next Protocol Negotiation extension. Supported
|
2012-08-31 05:47:36 -04:00
|
|
|
with OpenSSL 1.0.1 and higher.
|
2012-09-02 21:14:26 -04:00
|
|
|
* OpenSSL::OPENSSL_FIPS allows client applications to detect whether OpenSSL
|
|
|
|
is running in FIPS mode and to react to the special requirements this
|
|
|
|
might impy.
|
2012-03-28 19:28:17 -04:00
|
|
|
|
2012-08-22 13:43:16 -04:00
|
|
|
* yaml
|
|
|
|
* Syck has been removed. YAML now completely depends on libyaml being
|
|
|
|
installed.
|
|
|
|
|
2012-11-01 09:29:28 -04:00
|
|
|
* objspace
|
|
|
|
* new method:
|
|
|
|
* ObjectSpace.reachable_objects_from(obj)
|
|
|
|
|
2012-11-03 01:11:00 -04:00
|
|
|
* rexml
|
|
|
|
* REXML::Document#write supports Hash arguments.
|
|
|
|
* REXML::Document#write supports new :encoding option. It changes
|
|
|
|
XML document encoding. Without :encoding option, encoding in
|
|
|
|
XML declaration is used for XML document encoding.
|
|
|
|
|
2012-11-04 19:57:41 -05:00
|
|
|
* cgi
|
|
|
|
* Add HTML5 tag maker.
|
|
|
|
* incompatible changes:
|
|
|
|
* CGI#header has been renamed to CGI#http_header.
|
|
|
|
CGI#header is now used by the HTML5 tag maker to
|
|
|
|
create a <header> element.
|
|
|
|
|
2010-10-28 07:14:05 -04:00
|
|
|
=== Language changes
|
2012-07-24 14:10:35 -04:00
|
|
|
|
|
|
|
* Added %i and %I for symbol list creation (similar to %w and %W).
|
|
|
|
|
2012-11-05 19:49:57 -05:00
|
|
|
* Default source encoding is changed to UTF-8. (was US-ASCII)
|
|
|
|
|
2010-07-05 03:11:44 -04:00
|
|
|
=== Compatibility issues (excluding feature bug fixes)
|
|
|
|
|
2011-07-12 10:42:48 -04:00
|
|
|
* Signal.trap
|
|
|
|
|
|
|
|
See above.
|
2011-10-22 05:58:15 -04:00
|
|
|
|
2012-02-17 02:42:23 -05:00
|
|
|
* Merge Onigmo.
|
|
|
|
https://github.com/k-takata/Onigmo
|
|
|
|
|
2012-03-11 00:53:20 -05:00
|
|
|
* The :close_others option is true by default for system() and exec().
|
2011-10-22 05:58:15 -04:00
|
|
|
Also, the close-on-exec flag is set by default for all new file descriptors.
|
|
|
|
This means file descriptors doesn't inherit to spawned process unless
|
|
|
|
explicitly requested such as system(..., fd=>fd).
|
2012-02-13 11:05:00 -05:00
|
|
|
|
|
|
|
* Kernel#respond_to? against a protected method now returns false
|
|
|
|
unless the second argument is true.
|
2012-03-11 18:37:04 -04:00
|
|
|
|
|
|
|
* Dir.mktmpdir in lib/tmpdir.rb
|
|
|
|
|
|
|
|
See above.
|
2012-10-28 17:19:15 -04:00
|
|
|
|
|
|
|
* OpenStruct new methods can conflict with custom attributes named
|
|
|
|
"each_pair", "eql?", "hash" or "to_h".
|