[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119616] [Ruby master Misc#20814] iseq optimizations on constant condition
From:
"nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>
Date:
2024-10-25 14:26:44 UTC
List:
ruby-core #119616
Issue #20814 has been updated by nobu (Nobuyoshi Nakada).
Status changed from Open to Feedback
Because of the dynamic feature of Ruby, the optimization on ISeq is very limited.
For instance, elimination of unreachable branch because of a simple always-true/false condition expression, in your example.
> - is there way to disable such optimizations?
To disable optimizations, see the document of `RubyVM::InstructionSequence.compile_option=`.
https://docs.ruby-lang.org/en/master/RubyVM/InstructionSequence.html#method-c-compile_option-3D
> - are there some specs on things that can be optimized.
We do not provide explicit documentation or specifications regarding optimizations because they are internal features and may change without notice.
----------------------------------------
Misc #20814: iseq optimizations on constant condition
https://bugs.ruby-lang.org/issues/20814#change-110238
* Author: hurricup (Alexandr Evstigneev)
* Status: Feedback
----------------------------------------
ruby 3.4-preview2 seems optimizes out some stuff when building iseq and this may lead to user unexpected behavior when debugging, because some lines just optimized out.
Example:
```
def foo1
if true
nil
else
1
end
end
```
produces:
```
== disasm: #<ISeq:foo1@/test.rb:1 (1,0)-(7,3)>
0000 putnil ( 3)[LiCa]
0001 leave ( 7)[Re]
```
Two questions:
- is there way to disable such optimizations?
- are there some specs on things that can be optimized.
--
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/lists/ruby-core.ml.ruby-lang.org/