diff options
Diffstat (limited to 'jni/ruby/NEWS')
-rw-r--r-- | jni/ruby/NEWS | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/jni/ruby/NEWS b/jni/ruby/NEWS new file mode 100644 index 0000000..b4ef080 --- /dev/null +++ b/jni/ruby/NEWS @@ -0,0 +1,356 @@ +# -*- rdoc -*- + += NEWS for Ruby 2.2.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 2.1.0 release + +=== Language changes + +* nil/true/false + * nil/true/false objects are frozen. [Feature #8923] + +* Hash literal + * Symbol key followed by a colon can be quoted. [Feature #4276] + +* default argument + fixed a very longstanding bug that an optional argument was not + accessible in its default value expression. [Bug #9593] + +=== Core classes updates (outstanding ones only) + +* Binding + * New methods: + * Binding#local_variables + * Binding#receiver + +* Dir + * New methods: + * Dir#fileno + +* Enumerable + * New methods: + * Enumerable#slice_after + * Enumerable#slice_when + * Extended methods: + * min, min_by, max and max_by supports optional argument to return + multiple elements. + +* Float + * New methods: + * Float#next_float + * Float#prev_float + +* File + * New methods: + * File.birthtime + * File#birthtime + +* File::Stat + * New methods: + * File::Stat#birthtime + +* GC + * GC.latest_gc_info returns :state to represent current GC status. + * Improvements + * Introduce incremental marking for major GC. [Feature #10137] + +* IO + * Improvements + * IO#nonblock_read and IO#nonblock_write for pipes on Windows are supported. + +* Kernel + * New methods: + * Kernel#itself + * Improvements + * Kernel#throw raises UncaughtThrowError, subclass of ArgumentError when + there is no corresponding catch block, instead of ArgumentError. + +* Process + * Extended method: + * Process execution methods such as Process.spawn opens the file in write + mode for redirect from [:out, :err]. + +* String + * New methods: + * String#unicode_normalize + * String#unicode_normalize! + * String#unicode_normalized? + +* Symbol + * Improvements + * Most symbols which are returned by String#to_sym and + String#intern are GC-able. + +* Method + * New methods: + * Method#curry([arity]) returns a curried Proc. + * Method#super_method returns a Method of superclass, which would be called + when super is used. + +=== Core classes compatibility issues (excluding feature bug fixes) + +* Enumerable + * Enumerable#slice_before's state management deprecated. + * Enumerable#chunk's state management deprecated. + +* GC + * incompatible changes: + * Rename GC.stat entries. [Feature #9924] + See https://docs.google.com/spreadsheets/d/11Ua4uBr6o0k-nORrZLEIIUkHJ9JRzRR0NyZfrhEEnc8/edit?usp=sharing + +* IO + * incompatible changes: + * When flushing file IO with IO#flush, you cannot assume that the metadata + of the file is updated immediately. On some platforms (especially + Windows), it is delayed until the filesystem load is decreased. + Use IO#fsync if you want to guarantee updating metadata. + +* Math + * incompatible changes: + * Math.log now raises Math::DomainError instead of returning NaN if the + base is less than 0, and returns NaN instead of -infinity if both of + two arguments are 0. + * Math.atan2 now returns values like as expected by C99 if both two + arguments are infinity. + +* Proc + * incompatible changes: + * ArgumentError is no longer raised when lambda Proc is passed as a + block, and the number of yielded arguments does not match the formal + arguments of the lambda, if just an array is yielded and its length + matches. + +* Process + * Process execution methods such as Process.spawn opens the file in write + mode for redirect from [:out, :err]. + Before Ruby 2.2, it was opened in read mode. + +=== Stdlib updates (outstanding ones only) + +* Continuation + * callcc is obsolete. use Fiber instead. + +* Digest + + * Digest() should now be thread-safe. If you have a problem with + regard to on-demand loading under a multi-threaded environment, + preload "digest/*" modules on boot or use this method instead of + directly referencing Digest::*. + * Digest::HMAC has been removed just as previously noticed. + +* DL + * DL has been removed from stdlib. Please use Fiddle instead! + +* Etc + * New methods: + * Etc.uname + * Etc.sysconf + * Etc.confstr + * IO#pathconf + * Etc.nprocessors + +* Find, Pathname + * Extended methods: + * find method accepts "ignore_error" keyword argument. + +* Matrix + * New methods: + * Matrix#first_minor(row, column) returns the submatrix obtained + by deleting the specified row and column. + * Matrix#cofactor(row, column) returns the (row, column) cofactor + which is obtained by multiplying the first minor by (-1)**(row + column). + * Matrix#adjugate returns the adjugate of the matrix. + * hstack and vstack are new instance and class methods to stack matrices + horizontally and vertically. + * Matrix#laplace_expansion(row_or_column: num) returns the laplace_expansion + along the +num+ -th row or column. + * Vector.basis(size:, index:) returns the specified basis vector. + * Unary - and + added for Vector and Matrix. + * Vector#cross_product generalized to arbitrary dimensions. + * Vector#dot and #cross are aliases for #inner_product and #cross_product. + * Vector#angle_with returns the angle with its argument + * New instance and class method independent? to test linear independence. + +* Pathname + * Pathname#/ is aliased to Pathname#+. + * New methods: + * Pathname#birthtime + +* Rake + * Updated to Rake 10.4.0. For full release notes see: + + http://docs.seattlerb.org/rake/History_rdoc.html#label-10.4.0 + +* RubyGems + * Updated to RubyGems 2.4.2. For full release notes see: + + http://docs.seattlerb.org/rubygems/History_txt.html#label-2.4.2+%2F+2014-10-01 + +* TSort + * TSort.tsort_each, TSort.each_strongly_connected_component and + TSort.each_strongly_connected_component_from returns an enumerator if + no block given. + +* XMLRPC + * Added new parser class named LibXMLStreamParser. + +=== Stdlib compatibility issues (excluding feature bug fixes) + +* lib/mathn.rb + * Show deprecated warning [Feature #10169] + +* ext/date/lib/date/format.rb + * Removed because it's empty file. + +* Digest + * Digest::HMAC has finally ceased to exist. Use OpenSSL::HMAC or an external gem instead. + +* time.rb + * Time.parse, Time.strptime, Time.rfc2822, Time.xmlschema may produce + fixed-offset Time objects. + It is happen when usual localtime doesn't preserve the offset from UTC. + * Time.httpdate produces always UTC Time object. + * Time.strptime raises ArgumentError when no date information. + +* lib/rational.rb + * Removed because it is deprecated from 2009. + +* lib/complex.rb + * Removed because it is deprecated from 2009. + +* lib/prettyprint.rb + * Removed PrettyPrint#first? + +* lib/minitest/*.rb + * Removed because it conflicts to minitest 5. [Feature #9711] + +* lib/test/**/*.rb + * Removed because it conflicts to minitest 5, and it was just an wrapper + of minitest 4. [Feature #9711] + +* lib/uri + * support RFC 3986. [Feature #2542] + +* GServer + * GServer is extracted to gserver gem. It's unmaintain code. + +* Logger + * Logger::Application is extracted to logger-application gem. It's unmaintain code. + +* ObjectSpace (after requiring "objspace") + * ObjectSpace.memsize_of(obj) returns a size includes sizeof(RVALUE). + [Bug #8984] + +* Prime + * incompatible changes: + * Prime.prime? now returns false for negative numbers. This method + should not be used to know the number is composite or not. [Bug #7395] + +* Psych + * Removed Psych::EngineManager [Bug #8344] + +=== Built-in global variables compatibility issues + +=== C API updates + +* Deprecated APIs removed. [Feature #9502] + + Check_SafeStr -> SafeStringValue + rb_check_safe_str -> SafeStringValue + rb_quad_pack -> rb_integer_pack + rb_quad_unpack -> rb_integer_unpack + rb_read_check : access struct FILE internal. no replacement. + rb_struct_iv_get : internal function. no replacement. + struct rb_blocking_region_buffer : internal type. no replacement. + rb_thread_blocking_region_begin -> rb_thread_call_without_gvl family + rb_thread_blocking_region_end -> rb_thread_call_without_gvl family + TRAP_BEG -> rb_thread_call_without_gvl family + TRAP_END -> rb_thread_call_without_gvl family + rb_thread_select -> rb_thread_fd_select + struct rb_exec_arg : internal type. no replacement. + rb_exec : internal function. no replacement. + rb_exec_arg_addopt : internal function. no replacement. + rb_exec_arg_fixup : internal function. no replacement. + rb_exec_arg_init : internal function. no replacement. + rb_exec_err : internal function. no replacement. + rb_fork : internal function. no replacement. + rb_fork_err : internal function. no replacement. + rb_proc_exec_n : internal function. no replacement. + rb_run_exec_options : internal function. no replacement. + rb_run_exec_options_err : internal function. no replacement. + rb_thread_blocking_region -> rb_thread_call_without_gvl family + rb_thread_polling -> rb_thread_wait_for + rb_big2str0 : internal function. no replacement. + rb_big2ulong_pack -> rb_integer_pack + rb_gc_set_params : internal function. no replacement. + rb_io_mode_flags -> rb_io_modestr_fmode + rb_io_modenum_flags -> rb_io_oflags_fmode + +* struct RBignum is hidden. [Feature #6083] + Use rb_integer_pack and rb_integer_unpack instead. + +* struct RRational is hidden. [Feature #9513] + Use rb_rational_num and rb_rational_den instead. + +* rb_big_new and rb_big_resize takes a size_t instead of long. + +* rb_num2long returns a long instead of SIGNED_VALUE. + +* rb_num2ulong returns an unsigned long instead of VALUE. + +* st hash table uses power-of-two sizes for speed [Feature #9425]. + Lookups are 10-25% faster if using appropriate hash functions. + However, weaknesses in hash distribution can no longer be masked + by prime number-sized tables, so extensions may need to tweak + hash functions to ensure good distribution. + +* rb_sym2str() added. This is almost same as `rb_id2str(SYM2ID(sym))` + but not pinning a dynamic symbol. + +* rb_str_cat_cstr() added. This is same as `rb_str_cat2()`. + +* `rb_str_substr()` and `rb_str_subseq()` will share middle of a string, + but not only the end of a string, in the future. Therefore, result + strings may not be NUL-terminated, `StringValueCStr()` is needed + calling to obtain a NUL-terminated C string. + +* rb_tracepoint_new() supports new internal events accessible only from C: + * RUBY_INTERNAL_EVENT_GC_ENTER + * RUBY_INTERNAL_EVENT_GC_EXIT + r47528 + +* rb_hash_delete() now does not call the block given to the current method. + +* rb_extract_keywords() and rb_get_kwargs() exported. See README.EXT + for details. + +=== Build system updates + +* jemalloc is optionally supported via `./configure --with-jemalloc` + jemalloc may be suitable when system malloc is slow or prone + to fragmentation. [Feature #9113] + +=== Implementation changes + +* GC + * Most symbols which are returned by String#to_sym and + String#intern are GC-able [Feature #9634] + * Introduce incremental marking for major GC. [Feature #10137] + * Enable lazy sweep on GC caused by malloc(). + +* VM + * Use frozen string literals for Hash#[] and Hash#[]= + * Fast keyword arguments passing [Feature #10440] + * Allow to receive huge splatted array by a rest argument + [Feature #10440] + +* Process + * Process creation methods, such as spawn(), uses vfork() system call. + vfork() is faster than fork() when the parent process uses huge memory. |