Ruby 3.4
Ruby 3.4 has been released: https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/
This epic captures the work required to get us there.
## Notable changes
### 3.3
https://rubyreferences.github.io/rubychanges/3.3.html
- `it` will become anonymous block argument in 3.4
- `Module#set_temporary_name`
- `ObjectSpace::WeakKeyMap`
- `Range#overlap?`
- `Fiber#kill`
### 3.4
https://rubyreferences.github.io/rubychanges/3.4.html
- `it` anonymous block argument
- `**nil` unpacking
- `String` literals would be frozen in Ruby 3.5
- `Range#step` iteration for any class via `+`
- Backtrace improvements
- Ractor improvements
- Serious implementation updates
## Plan
<table>
<tr>
<th>Item</th>
<th>Issue/Epic</th>
<th>Target Date</th>
<th>Status</th>
</tr>
<tr>
<td>Make sure the topic-branch MR pipeline is green</td>
<td></td>
<td>Jan 2026</td>
<td> </td>
</tr>
<tr>
<td>Allow pipelines to run Ruby 3.4</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>
Update labels so we can `pipeline:run-as-ruby3.4` or `run-as-ruby33` since that was very useful to have last time, and so that we have scheduled builds on master again for 3.4
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Default devkits to Ruby 3.4</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Address outstanding gem issues from audit</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Run GPT to test performance</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Make MRs build with Ruby 3.4 by default</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>If necessary, do some manual testing.</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Distribution updates</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Roll out to SaaS</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Update CI to use Ruby 3.4</td>
<td>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>
Update release post and
release to Self Managed
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Clean up any Ruby related pipelines </td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
epic