ruby-changes:42080
From: mame <ko1@a...>
Date: Thu, 17 Mar 2016 21:49:23 +0900 (JST)
Subject: [ruby-changes:42080] mame:r54154 (trunk): * NEWS: add Array#max, #min, and the optimization. [Feature #12172]
mame 2016-03-17 21:49:19 +0900 (Thu, 17 Mar 2016) New Revision: 54154 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=54154 Log: * NEWS: add Array#max, #min, and the optimization. [Feature #12172] Modified files: trunk/ChangeLog trunk/NEWS Index: NEWS =================================================================== --- NEWS (revision 54153) +++ NEWS (revision 54154) @@ -16,6 +16,12 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L16 === Core classes updates (outstanding ones only) +* Array + * Array#max and Array#min. [Feature #12172] + This may cause a tiny incompatibility: if you redefine + Enumerable#max and call max to an Array, your redefinition will be + now ignored. You should also redefine Array#max. + * Dir * Dir.empty?. [Feature #10121] @@ -53,3 +59,11 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L59 === Supported platform changes === Implementation improvements + +* In some condition, `[x, y].max` and `[x, y].min` are optimized + so that a temporal array is not created. The concrete condition is + an implementation detail: currently, the array literal must have no + splat, must have at least one expression but literal, the length must + be <= 0x100, and Array#max and min must not be redefined. It will work + in most casual and real-life use case where it is written with intent + to `Math.max(x, y)`. Index: ChangeLog =================================================================== --- ChangeLog (revision 54153) +++ ChangeLog (revision 54154) @@ -1,8 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Mar 17 21:47:57 2016 Yusuke Endoh <mame@r...> + + * NEWS: add Array#max, #min, and the optimization. [Feature #12172] + Thu Mar 17 21:45:02 2016 Yusuke Endoh <mame@r...> * compile.c (NODE_CALL): add optimization shortcut for Array#max/min. Now `[x, y].max` is optimized so that a temporal array object is not - created in some condition. + created in some condition. [Feature #12172] * insns.def (opt_newarray_max, opt_newarray_min): added. -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/