From f8e2964065acada7fa764586e4a3f8e7c3b7d339 Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 17 Mar 2016 12:49:19 +0000 Subject: * NEWS: add Array#max, #min, and the optimization. [Feature #12172] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 +++++- NEWS | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 916042c960..3eb9ae16b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,12 @@ +Thu Mar 17 21:47:57 2016 Yusuke Endoh + + * NEWS: add Array#max, #min, and the optimization. [Feature #12172] + Thu Mar 17 21:45:02 2016 Yusuke Endoh * 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. diff --git a/NEWS b/NEWS index db4480aa45..0f08b3daf2 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,12 @@ with all sufficient information, see the ChangeLog file or Redmine === 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 ChangeLog file or Redmine === 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)`. -- cgit v1.2.3