From beafa477f1b48204202dfcf5f13b2b0cc216f732 Mon Sep 17 00:00:00 2001 From: kazu Date: Mon, 25 Feb 2013 00:41:07 +0000 Subject: old ChangeLog and NEWS move to doc * doc/NEWS-2.0.0: moved from NEWS * doc/ChangeLog-2.0.0: moved ChangeLog older than created ruby_2_0_0 branch * NEWS: NEWS for 2.1.0 that describes changes since 2.0.0 * ChangeLog: ChangeLog since created ruby_2_0_0 branch git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- doc/NEWS-2.0.0 | 531 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 531 insertions(+) create mode 100644 doc/NEWS-2.0.0 (limited to 'doc/NEWS-2.0.0') diff --git a/doc/NEWS-2.0.0 b/doc/NEWS-2.0.0 new file mode 100644 index 0000000000..f99ba3e882 --- /dev/null +++ b/doc/NEWS-2.0.0 @@ -0,0 +1,531 @@ +# -*- rdoc -*- + += NEWS for Ruby 2.0.0 + +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. + +== Changes since the 1.9.3 release + +=== Language changes + +* Added keyword arguments. + +* Added %i and %I for symbol list creation (similar to %w and %W). + +* Default source encoding is changed to UTF-8. (was US-ASCII) + +* No warning for unused variables starting with '_' + +=== Core classes updates (outstanding ones only) + +* ARGF + * added method: + * added ARGF#codepoints and ARGF#each_codepoint, like the corresponding + methods for IO. + +* Array + * added method: + * added Array#bsearch for binary search. + * incompatible changes: + * random parameter of Array#shuffle! and Array#sample now + will be called with one argument, maximum value. + * when given Range arguments, Array#values_at now returns nil for each + value that is out-of-range. + +* Enumerable + * added method: + * added Enumerable#lazy method for lazy enumeration. + +* Enumerator + * added method: + * added Enumerator#size for lazy size evaluation. + * extended method: + * Enumerator.new accept an argument for lazy size evaluation. + * new class Enumerator::Lazy for lazy enumeration + +* ENV + * aliased method: + * ENV.to_h is a new alias for ENV.to_hash + +* Fiber + * incompatible changes: + * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer". + +* File + * extended method: + * File.fnmatch? now expands braces in the pattern if + File::FNM_EXTGLOB option is given. + +* GC + * improvements: + * introduced the bitmap marking which suppresses to copy a memory page + with Copy-on-Write. + * introduced the non-recursive marking which avoids unexpected stack overflow. + +* GC::Profiler + * added method: + * added GC::Profiler.raw_data which returns raw profile data for GC. + +* Hash + * added method: + * added Hash#to_h as explicit conversion method, like Array#to_a. + * extended method: + * Hash#default_proc= can be passed nil to clear the default proc. + +* IO + * deprecated methods: + * IO#lines, #bytes, #chars and #codepoints are deprecated. + +* Kernel + * added method: + * added Kernel#Hash conversion method like Array() or Float(). + * added Kernel#__dir__ which returns the absolute path of the + directory of the file from which this method is called. + * added Kernel#caller_locations which returns an array of + frame information objects. + * extended method: + * Kernel#warn accepts multiple args in like puts. + * Kernel#caller accepts second optional argument `n' which specify + required caller size. + * Kernel#to_enum and enum_for accept a block for lazy size evaluation. + * incompatible changes: + * system() and exec() closes non-standard file descriptors + (The default of :close_others option is changed to true by default.) + * respond_to? against a protected method now returns false unless + the second argument is true. + * __callee__ has returned to the original behavior, and now + returns the called name but not the original name in an + aliased method. + * Kernel#inspect does not call #to_s anymore + (it used to call redefined #to_s). + +* LoadError + * added method: + * added LoadError#path method to return the file name that could not be + loaded. + +* Module + * added method: + * added Module#prepend which is similar to Module#include, + however a method in the prepended module overrides the + corresponding method in the prepending module. + * added Module.prepended and Module.prepend_features, similar + to included and append_features. + * added Module#refine, which extends a class or module locally. + [experimental] + * extended method: + * Module#define_method accepts a UnboundMethod from a Module. + * Module#const_get accepts a qualified constant string, e.g. + Object.const_get("Foo::Bar::Baz") + +* Mutex + * added method: + * added Mutex#owned? which returns the mutex is held by current + thread or not. [experimental] + * incompatible changes: + * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize + and Mutex#sleep are no longer allowed to be used from trap handler + and raise a ThreadError in such case. + * Mutex#sleep may spurious wakeup. Check after wakeup. + +* NilClass + * added method: + * added nil.to_h which returns {} + +* ObjectSpace::WeakMap + * new low level class to hold weak references to objects. + +* Proc + * incompatible change: + * removed Proc#== and #eql? so two procs are == only when they are + the same object. + +* Process + * added method: + * added getsid for getting session id (unix only). + +* Range + * added method: + * added Range#size for lazy size evaluation. + * added Range#bsearch for binary search. + +* RubyVM (MRI specific) + * added RubyVM::InstructionSequence.of to get the instruction sequence + from a method or a block. + * added RubyVM::InstructionSequence#path, #absolute_path, #label, + #base_label and #first_lineno to retrieve information from where + the instruction sequence was defined. + * added Environment variables to specify stack usage: + * RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation. + default: 128KB (32bit CPU) or 256KB (64bit CPU). + * RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread + creation. default: 512KB or 1024KB. + * RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation. + default: 64KB or 128KB. + * RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber + creation. default: 256KB or 256KB. + These variables are checked only at launched time. + * added constant DEFAULT_PARAMS to get above default parameters. + +* Signal + * added method: + * added Signal.signame which returns signal name + + * incompatible changes: + * Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM + are specified. + +* String + * added method: + * added String#b returning a copied string whose encoding is ASCII-8BIT. + * change return value: + * String#lines now returns an array instead of an enumerator. + * String#chars now returns an array instead of an enumerator. + * String#codepoints now returns an array instead of an enumerator. + * String#bytes now returns an array instead of an enumerator. + +* Struct + * added method: + * added Struct#to_h returning values with keys corresponding to the + instance variable names. + +* 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. + * added Thread.handle_interrupt as well as instance and singleton methods + pending_interrupt? for asynchronous handling of exceptions + * added Thread#backtrace_locations which returns similar information of + Kernel#caller_locations. + * new class Thread::Backtrace::Location to hold backtrace location + information. These are returned by Thread#backtrace_locations and + Kernel#caller_locations. + * incompatible changes: + * Thread#join and Thread#value now raises a ThreadError if target thread + is the current or main thread. + +* Time + * change return value: + * Time#to_s now returns US-ASCII encoding instead of BINARY. + +* TracePoint + * new class. This class is replacement of set_trace_func. + Easy to use and efficient implementation. + +* toplevel + * added method: + * added main.define_method which defines a global function. + * added main.using, which imports refinements into the current file or + eval string. [experimental] + +=== Core classes compatibility issues (excluding feature bug fixes) + +* Array#values_at + + See above. + +* String#lines +* String#chars +* String#codepoints +* String#bytes + + These methods no longer return an Enumerator, although passing a + block is still supported for backwards compatibility. + + Code like str.lines.with_index(1) { |line, lineno| ... } no longer + works because str.lines returns an array. Replace lines with + each_line in such cases. + +* IO#lines +* IO#chars +* IO#codepoints +* IO#bytes +* ARGF#lines +* ARGF#chars +* ARGF#bytes +* StringIO#lines +* StringIO#chars +* StringIO#codepoints +* StringIO#bytes +* Zlib::GzipReader#lines +* Zlib::GzipReader#bytes + + These methods are deprecated in favor of each_line, each_byte, + each_char and each_codepoint. + +* Proc#== +* Proc#eql? + + These methods were removed. Two procs are == only when they are + the same object. + +* Fixnum +* Bignum +* Float + + Fixnums, Bignums and Floats are frozen. + +* Signal.trap + + See above. + +* Merge Onigmo. + https://github.com/k-takata/Onigmo + +* The :close_others option is true by default for system() and exec(). + 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). + +* Kernel#respond_to? against a protected method now returns false + unless the second argument is true. + +* Kernel#respond_to_missing? +* Kernel#initialize_clone +* Kernel#initialize_dup + + These methods are now private. + +* Thread#join, Thread#value + + See above. + +* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize and Mutex#sleep + + See above. + +=== Stdlib updates (outstanding ones only) + +* cgi + * Add HTML5 tag maker. + * CGI#header has been renamed to CGI#http_header and + aliased to CGI#header. + * When HTML5 tagmaker called, overwrite CGI#header, + CGI#header function is to create a
element. + +* CSV + * Removed CSV::dump and CSV::load to protect users from dangerous + serialization vulnerability + +* iconv + * Iconv has been removed. Use String#encode instead. + +* io/console + * new methods: + * added IO#cooked which sets the terminal to cooked mode within the given block. + * added IO#cooked! which sets the terminal to cooked. + * extended method: + * IO#raw, IO#raw!, and IO#getch accept keyword arguments, :min and :time. + +* io/wait + * new features: + * added IO#wait_writable method. + * added IO#wait_readable method as alias of IO#wait. + +* json + * updated to 1.7.7. + +* net/http + * 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. + * SSL sessions are now reused across connections for a single instance. + This speeds up connection by using a previously negotiated session. + * Requests may be created from a URI which sets the request_uri and host + header of the request (but does not change the host connected to). + * Responses contain the URI requested which allows easier implementation of + redirect following. + * 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. + +* 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 + +* objspace + * new method: + * ObjectSpace.reachable_objects_from(obj) + +* 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. + * TLS 1.1 & 1.2 support by setting OpenSSL::SSL::SSLContext#ssl_version to + :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or :TLSv1_1, :TLSv1_1_server + :TLSv1_1_client. The version being effectively used can be queried + with OpenSSL::SSL#ssl_version. Furthermore, it is also possible to + blacklist the new TLS versions with OpenSSL::SSL:OP_NO_TLSv1_1 and + OpenSSL::SSL::OP_NO_TLSv1_2. + * Added OpenSSL::SSL::SSLContext#renegotiation_cb. A user-defined callback + may be set which gets called whenever a new handshake is negotiated. This + also allows to programmatically decline (client) renegotiation attempts. + * Support for "0/n" splitting of records as BEAST mitigation via + OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. + * The default options for OpenSSL::SSL::SSLContext have changed to + OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS + instead of OpenSSL::SSL::OP_ALL only. This enables the countermeasure for + the BEAST attack by default. + * 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. + * SSL/TLS support for the Next Protocol Negotiation extension. Supported + with OpenSSL 1.0.1 and higher. + * OpenSSL::OPENSSL_FIPS allows client applications to detect whether OpenSSL + is FIPS-enabled. OpenSSL.fips_mode= allows turning on and off FIPS mode + manually in order to adapt to situations where FIPS mode would be an + explicit requirement. + * Authenticated Encryption with Associated Data (AEAD) is supported via + Cipher#auth_data= and Cipher#auth_tag/Cipher#auth_tag=. + Currently (OpenSSL 1.0.1c), only GCM mode is supported. + +* ostruct + * new methods: + * OpenStruct#[], []= + * OpenStruct#each_pair + * OpenStruct#eql? + * OpenStruct#hash + * OpenStruct#to_h converts the struct to a hash. + * extended method: + * OpenStruct.new also accepts an OpenStruct / Struct. + +* pathname + * extended method: + * Pathname#find returns an enumerator if no block is given. + +* rake + * rake has been updated to version 0.9.5. + + This version is backwards-compatible with previous rake versions and + contains many bug fixes. + + See + http://rake.rubyforge.org/doc/release_notes/rake-0_9_5_rdoc.html for a list + of changes in rake 0.9.3, 0.9.4 and 0.9.5. + +* RDoc + * RDoc has been updated to version 4.0 + + This version is largely backwards-compatible with previous rdoc versions. + The most notable change is an update to the ri data format (ri data must + be regenerated for gems shared across rdoc versions). Further API changes + are internal and won't affect most users. + + Notable changes include: + + * Page support for ri. Try `ri ruby:` for a list of pages in ruby or + `ri ruby:syntax/literals` for the syntax documentation for literals. + + This also works for gems such as `ri rspec:README` for the rspec gem's + README file. + * Markdown support. See ri RDoc::Markdown for details. + + See https://github.com/rdoc/rdoc/blob/master/History.rdoc for a full list + of changes in rdoc 4.0. + +* resolv + * new methods: + * Resolv::DNS#timeouts= + * Resolv::DNS::Config#timeouts= + +* 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. + +* RubyGems + * Updated to 2.0.0 + + RubyGems 2.0.0 features the following improvements: + + * Improved support for default gems shipping with ruby 2.0.0+ + * A gem can have arbitrary metadata through Gem::Specification#metadata + * `gem search` now defaults to --remote and is anchored like gem list. + * Added --document to replace --rdoc and --ri. Use --no-document to + disable documentation, --document=rdoc to only generate rdoc. + * Only ri-format documentation is generated by default. + * `gem server` uses RDoc::Servlet from RDoc 4.0 to generate HTML + documentation. + + For an expanded list of updates and bug fixes see: + https://github.com/rubygems/rubygems/blob/master/History.txt + +* 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. + +* stringio + * deprecated methods: + * StringIO#lines, #bytes, #chars and #codepoints are deprecated. + +* syslog + * Added Syslog::Logger which provides a Logger API atop Syslog. + * Syslog::Priority, Syslog::Level, Syslog::Option and Syslog::Macros + are introduced for easy detection of available constants on a + running system. + +* tmpdir + * 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. + +* yaml + * Syck has been removed. YAML now completely depends on libyaml being + installed. + * libyaml is now bundled with ruby, for cases where the library is not + installed locally. + +* zlib + * Added streaming support for Zlib::Inflate and Zlib::Deflate. This allows + processing of a stream without the use of large amounts of memory. + * Added support for the new deflate strategies Zlib::RLE and Zlib::FIXED. + * Zlib streams are now processed without the GVL. This allows gzip, zlib and + deflate streams to be processed in parallel. + * deprecated methods: + * Zlib::GzipReader#lines and #bytes are deprecated. + +=== Stdlib compatibility issues (excluding feature bug fixes) + +* OpenStruct new methods can conflict with custom attributes named + "each_pair", "eql?", "hash" or "to_h". + +* Dir.mktmpdir in lib/tmpdir.rb + + See above. + +=== C API updates + +* NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short. + +* rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class. + -- cgit v1.2.3