<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/tool/zjit_bisect.rb, branch v4.0.3</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>ZJIT: Support make in zjit_bisect.rb (#14584)</title>
<updated>2025-10-22T17:56:02+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-10-22T17:56:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=87fdd6d53b51f2d5eb944c7f97aebf728b1ab439'/>
<id>87fdd6d53b51f2d5eb944c7f97aebf728b1ab439</id>
<content type='text'>
Find ZJIT options in RUN_OPTS/SPECOPTS and put new ones from the bisection script
there too.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Find ZJIT options in RUN_OPTS/SPECOPTS and put new ones from the bisection script
there too.</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Improve `zjit_bisect.rb` (#14592)</title>
<updated>2025-09-22T16:30:00+00:00</updated>
<author>
<name>Stan Lo</name>
<email>stan.lo@shopify.com</email>
</author>
<published>2025-09-22T16:30:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ccb82041548f871a0185eead619ce62e1df5957d'/>
<id>ccb82041548f871a0185eead619ce62e1df5957d</id>
<content type='text'>
ZJIT: Improve zjit_bisect.rb

1. The command name in the help message is outdated.
2. When the command failed by itself, the message can be clearer.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ZJIT: Improve zjit_bisect.rb

1. The command name in the help message is outdated.
2. When the command failed by itself, the message can be clearer.</pre>
</div>
</content>
</entry>
<entry>
<title>zjit_bisect.rb: Fix pipe deadlock; log when timed out [ci skip]</title>
<updated>2025-08-15T20:57:57+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-08-15T20:57:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e4093711f9e4f25064cda39625df225943c73f81'/>
<id>e4093711f9e4f25064cda39625df225943c73f81</id>
<content type='text'>
I spent a long time bisecting some largish program before realizing
that failure was in fact coming from the child timing out due to
zjit_bisect.rb not clearing the stdout and stderr pipe.

Fix the pipe deadlock by redirecting to /dev/null. This sacrifices
the debug output during boot, but for that we also get to remove
a lot of code and the dependency on Open3.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I spent a long time bisecting some largish program before realizing
that failure was in fact coming from the child timing out due to
zjit_bisect.rb not clearing the stdout and stderr pipe.

Fix the pipe deadlock by redirecting to /dev/null. This sacrifices
the debug output during boot, but for that we also get to remove
a lot of code and the dependency on Open3.</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Add flag to disable the HIR optimizer (#14181)</title>
<updated>2025-08-12T17:00:22+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-08-12T17:00:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=998be6b3a4b078cfd09aa5b4a4a628c31c395451'/>
<id>998be6b3a4b078cfd09aa5b4a4a628c31c395451</id>
<content type='text'>
Also add a check in the bisect script that can assign blame to the HIR
optimizer.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also add a check in the bisect script that can assign blame to the HIR
optimizer.</pre>
</div>
</content>
</entry>
<entry>
<title>ZJII: Address review feedback</title>
<updated>2025-08-08T15:15:18+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-08-08T14:40:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c6a27a02533fb28888a49a78ef3ffb9b0be4a4d4'/>
<id>c6a27a02533fb28888a49a78ef3ffb9b0be4a4d4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Actually kill timed-out process in bisect</title>
<updated>2025-08-08T15:15:18+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-08-07T19:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=180469a3a78793d0bd128c11e08f14f38d751095'/>
<id>180469a3a78793d0bd128c11e08f14f38d751095</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use OptionParser in bisect script</title>
<updated>2025-08-08T15:15:18+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-08-07T19:33:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0782bd2826eccd1b0d831dfa171bc45fa7687168'/>
<id>0782bd2826eccd1b0d831dfa171bc45fa7687168</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use shellwords in bisect script</title>
<updated>2025-08-08T15:15:18+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-08-07T19:31:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fd6d6a45cd3d1d27224c6f02b37884c14edab2c4'/>
<id>fd6d6a45cd3d1d27224c6f02b37884c14edab2c4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Print out command to repro in bisect script</title>
<updated>2025-08-08T15:15:18+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-08-07T19:13:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0b30cf3b40a363576e11d52ae56e5345f77a761f'/>
<id>0b30cf3b40a363576e11d52ae56e5345f77a761f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Create delta debugging script to narrow JIT failures (#14041)</title>
<updated>2025-07-29T19:43:14+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>tekknolagi@gmail.com</email>
</author>
<published>2025-07-29T19:43:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=039f4139f89347cacbca106a6034e4ea8e04fbc2'/>
<id>039f4139f89347cacbca106a6034e4ea8e04fbc2</id>
<content type='text'>
Add support for `--zjit-allowed-iseqs=SomeFile` and
`--zjit-log-compiled-iseqs=SomeFile` so we can restrict and inspect
which ISEQs get compiled.

Then add `jit_bisect.rb` which we can run to try and narrow a failing
script. For example:

    plum% ../tool/zjit_bisect.rb ../build-dev/miniruby "test.rb"
    I, [2025-07-29T12:41:18.657177 #96899]  INFO -- : Starting with JIT list of 4 items.
    I, [2025-07-29T12:41:18.657229 #96899]  INFO -- : Verifying items
    I, [2025-07-29T12:41:18.726213 #96899]  INFO -- : step fixed[0] and items[4]
    I, [2025-07-29T12:41:18.726246 #96899]  INFO -- : 4 candidates
    I, [2025-07-29T12:41:18.797212 #96899]  INFO -- : 2 candidates
    Reduced JIT list:
    bar@test.rb:8
    plum%

We start with 4 compiled functions and shrink to just one.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add support for `--zjit-allowed-iseqs=SomeFile` and
`--zjit-log-compiled-iseqs=SomeFile` so we can restrict and inspect
which ISEQs get compiled.

Then add `jit_bisect.rb` which we can run to try and narrow a failing
script. For example:

    plum% ../tool/zjit_bisect.rb ../build-dev/miniruby "test.rb"
    I, [2025-07-29T12:41:18.657177 #96899]  INFO -- : Starting with JIT list of 4 items.
    I, [2025-07-29T12:41:18.657229 #96899]  INFO -- : Verifying items
    I, [2025-07-29T12:41:18.726213 #96899]  INFO -- : step fixed[0] and items[4]
    I, [2025-07-29T12:41:18.726246 #96899]  INFO -- : 4 candidates
    I, [2025-07-29T12:41:18.797212 #96899]  INFO -- : 2 candidates
    Reduced JIT list:
    bar@test.rb:8
    plum%

We start with 4 compiled functions and shrink to just one.</pre>
</div>
</content>
</entry>
</feed>
