[#113107] [Ruby master Bug#19576] Backport request: Gemfile.lock resolving is broken with bundler shipped with Ruby 3.1.4 — "jprokop (Jarek Prokop) via ruby-core" <ruby-core@...>

Issue #19576 has been reported by jprokop (Jarek Prokop).

8 messages 2023/04/04

[#113112] [Ruby master Bug#19578] abort() shows stack trace when run within rescue clause — "Dan0042 (Daniel DeLorme) via ruby-core" <ruby-core@...>

Issue #19578 has been reported by Dan0042 (Daniel DeLorme).

8 messages 2023/04/04

[#113180] [Ruby master Feature#19588] Allow Comparable#clamp(min, max) to accept nil as a specification — "kyanagi (Kouhei Yanagita) via ruby-core" <ruby-core@...>

Issue #19588 has been reported by kyanagi (Kouhei Yanagita).

7 messages 2023/04/11

[#113209] [Ruby master Bug#19596] Decreased performance after upgrading from ruby 2.7.2 to ruby 3.2.2 — silva96 via ruby-core <ruby-core@...>

Issue #19596 has been reported by silva96 (Benjam=EDn Silva).

7 messages 2023/04/13

[#113238] [Ruby master Misc#19599] DevMeeting-2023-05-10 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #19599 has been reported by mame (Yusuke Endoh).

14 messages 2023/04/14

[#113285] [Ruby master Bug#19607] Introduce `Hash#symbolize_keys`. — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>

Issue #19607 has been reported by ioquatix (Samuel Williams).

8 messages 2023/04/18

[#113303] [Ruby master Feature#19610] GC.delay_promotion — "peterzhu2118 (Peter Zhu) via ruby-core" <ruby-core@...>

Issue #19610 has been reported by peterzhu2118 (Peter Zhu).

9 messages 2023/04/20

[#113313] [Ruby master Bug#19613] Add version information to all function documentation — "fulldecent (William Entriken) via ruby-core" <ruby-core@...>

Issue #19613 has been reported by fulldecent (William Entriken).

7 messages 2023/04/23

[#113342] [Ruby master Feature#19617] Add Method#binding and UnboundMethod#binding, similar to Proc#binding — "nevans (Nicholas Evans) via ruby-core" <ruby-core@...>

Issue #19617 has been reported by nevans (Nicholas Evans).

9 messages 2023/04/25

[#113381] [Ruby master Bug#19624] Backticks - IO object leakage — pineman via ruby-core <ruby-core@...>

Issue #19624 has been reported by pineman (Jo=E3o Pinheiro).

10 messages 2023/04/30

[ruby-core:113291] [Ruby master Feature#18825] Specialized instruction for "array literal + `.hash`"

From: "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>
Date: 2023-04-18 22:15:31 UTC
List: ruby-core #113291
Issue #18825 has been updated by tenderlovemaking (Aaron Patterson).

Status changed from Open to Rejected

Closing in favor of #18897 

----------------------------------------
Feature #18825: Specialized instruction for "array literal + `.hash`"
https://bugs.ruby-lang.org/issues/18825#change-102849

* Author: tenderlovemaking (Aaron Patterson)
* Status: Rejected
* Priority: Normal
----------------------------------------
Feature #18611 is merged.  That feature encourages people to write hash methods like this:

```
def hash
  [@a, @b, @c].hash
end
```

I would like to add a specialized instruction for this case `opt_newarray_hash`.  It's similar to `opt_newarray_max` and `opt_newarray_min` but for the hash method.

ISeqs before the optimization:

```
== disasm: #<ISeq:hash@test.rb:1 (1,0)-(3,3)> (catch: FALSE)
0000 getinstancevariable          :@a, <is:0>                         (   2)[LiCa]
0003 getinstancevariable          :@b, <is:1>
0006 getinstancevariable          :@c, <is:2>
0009 newarray                     3
0011 opt_send_without_block       <callinfo!mid:hash, argc:0, ARGS_SIMPLE>, <callcache>
0014 leave  
```

ISeqs after the optimization:

```
== disasm: #<ISeq:hash@test.rb:1 (1,0)-(3,3)> (catch: FALSE)
0000 getinstancevariable                    :@a, <is:0>               (   2)[LiCa]
0003 getinstancevariable                    :@b, <is:1>
0006 getinstancevariable                    :@c, <is:2>
0009 opt_newarray_hash                      3
0011 leave  
```

The new instruction allows us to avoid allocating a new array and also avoid pushing a stack frame.

The implementation is [here](https://github.com/ruby/ruby/pull/5980), and I've also attached a patch.

---Files--------------------------------
0001-Emit-special-instruction-for-array-literal-.hash.patch (4.91 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/

In This Thread

Prev Next