[#92070] [Ruby trunk Feature#15667] Introduce malloc_trim(0) in full gc cycles — sam.saffron@...
Issue #15667 has been updated by sam.saffron (Sam Saffron).
3 messages
2019/04/01
[ruby-core:92310] [Ruby trunk Feature#14701] If the object is not frozen, I want to be able to redefine the compound assignment operator.
From:
eregontp@...
Date:
2019-04-16 23:19:06 UTC
List:
ruby-core #92310
Issue #14701 has been updated by Eregon (Benoit Daloze).
I agree with @shyouhei.
I think it breaks fundamental semantics of Ruby.
An explicit `add` or `add!` is I believe a good sign of the danger of mutating numeric values in place,
and with that we can still guarantee `+=` be safe and reasonable in terms of semantics.
----------------------------------------
Feature #14701: If the object is not frozen, I want to be able to redefine the compound assignment operator.
https://bugs.ruby-lang.org/issues/14701#change-77651
* Author: naitoh (Jun NAITOH)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
If the object is not frozen, I want to be able to redefine the compound assignment operator (e.g. +=, -=, *=, /=, ..etc ).
https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html
* Redefinable operator (method)
~~~
| ^ & <=> == === =~ > >= < <= << >>
+ - * / % ** ~ +@ -@ [] []= ` ! != !~
~~~
* use case
~~~
> require 'numo/narray'
> a = Numo::Int32[5, 6]
=> Numo::Int32#shape=[2]
[5, 6]
> a.object_id
=> 70326927544920
> a += 1
=> Numo::Int32#shape=[2]
[6, 7]
> a.object_id
=> 70326927530540
> a.inplace + 1
=> Numo::Int32(view)#shape=[2]
[7, 8]
> a.object_id
=> 70326927530540
~~~
With Numo::NArray, using "inplace" instead of "+=" will update the same object so it will be faster.
I want to write "a += 1" instead of "a.inplace + 1".
However, Ruby can not redefine "+=".
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>