Skip to content

Commit ae9ac6b

Browse files
Merge pull request #631 from bastelfreak/openvox9
document YJIT / ZJIT for openvox 9
2 parents 888e0a5 + 241d80b commit ae9ac6b

1 file changed

Lines changed: 66 additions & 1 deletion

File tree

_posts/2026-02-26-road-to-openvox-9.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,71 @@ Although we still have many outstanding changes, we tackled some milestones. We
2121
* Removed curl from the agent package
2222
* Removed multi_json gem
2323

24-
Besides that, the agent is identical to openvox-agent 8.25.0 right now.
24+
The Ruby build has support for [YJIT](https://docs.ruby-lang.org/en/4.0/jit/yjit_md.html) and [ZJIT](https://docs.ruby-lang.org/en/4.0/jit/zjit_md.html), on some platforms.
25+
The different just in time compilers might provide a performance benefit.
26+
Some of their features are still experimental.
27+
To compile Ruby with it, a modern Rust 1.85.0 is required. We can not build ZJIT on the following platforms:
28+
29+
* debian-11-aarch64
30+
* debian-11-amd64
31+
* debian-12-aarch64
32+
* debian-12-amd64
33+
* debian-13-armhf
34+
* macos-all-arm64
35+
* macos-all-x86_64
36+
* sles-15-x86_64
37+
* sles-16-aarch64
38+
* sles-16-x86_64
39+
* ubuntu-22.04-aarch64
40+
* ubuntu-22.04-amd64
41+
* ubuntu-24.04-aarch64
42+
* ubuntu-24.04-amd64
43+
* ubuntu-24.04-armhf
44+
* ubuntu-25.04-aarch64
45+
* ubuntu-25.04-amd64
46+
* ubuntu-25.04-armhf
47+
* ubuntu-26.04-armhf
48+
* windows-all-x64
49+
50+
For YJIT Rust is still required, but 1.58.0 is sufficient.
51+
We could build YJIT on some platforms where ZJIT doesn't work, but that's not configured right now.
52+
YJIT is available in Ruby 3.2 as well, so we could enable it for openvox 8.
53+
54+
To test ZJIT / YJIT, you can add the commandline option to Ruby:
55+
56+
```diff
57+
--- a/opt/puppetlabs/puppet/bin/puppet
58+
+++ a/opt/puppetlabs/puppet/bin/puppet
59+
@@ -1,4 +1,4 @@
60+
-#!/opt/puppetlabs/puppet/bin/ruby
61+
+#!/opt/puppetlabs/puppet/bin/ruby --zjit
62+
# frozen_string_literal: true
63+
64+
begin
65+
```
66+
67+
or:
68+
69+
```diff
70+
--- a/opt/puppetlabs/puppet/bin/puppet
71+
+++ a/opt/puppetlabs/puppet/bin/puppet
72+
@@ -1,4 +1,4 @@
73+
-#!/opt/puppetlabs/puppet/bin/ruby
74+
+#!/opt/puppetlabs/puppet/bin/ruby --zjit
75+
# frozen_string_literal: true
76+
77+
begin
78+
```
79+
80+
There are a few options, which you can check in `/opt/puppetlabs/puppet/bin/ruby --help` or the documentation for [YJIT](https://docs.ruby-lang.org/en/4.0/jit/yjit_md.html) and [ZJIT](https://docs.ruby-lang.org/en/4.0/jit/zjit_md.html).
81+
A helpful option is also `--zjit-stats` which will print some profiling data to stdout.
82+
83+
**It's not guaranteed that we will ship either JIT implementations in the stable builds.**
84+
85+
We first need to prove that they don't introduce any performance regressions.
86+
87+
---
88+
89+
Beside those changes, the agent is identical to openvox-agent 8.25.0 right now.
2590
Please download the packages from [artifacts.voxpupuli.org](https://artifacts.voxpupuli.org/openvox-agent/8.25.0.9.g086d1fd67/) and give us feedback.
2691
(If you are interested in setting up an actual nightlies/staging rpm/deb repo, that's also highly appreciated).

0 commit comments

Comments
 (0)