Ruby 3.3
**Placeholder**
Ruby 3.3 has been released: https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/
This epic captures the work required to get us there.
## Notable changes
### 3.2
https://rubyreferences.github.io/rubychanges/3.2.html
- Anonymous method argument passing
- More inspectable refinements
- Data class
- Support for pattern-matching in `Time` and `MatchData`
- Set is a built-in class
- Per-Fiber storage
- `RubyVM::AbstractSyntaxTree:` fault-tolerant and token-level parsing
### 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`
@nao.hashizume
## DRIs
| Area | DRI |
|------|-----|
| Overall coordination | @pjphillips |
| Development | `@stanhu` `@igor.drozdov` `@bmarjanovic` |
| Delivery | `@rpereira2` `@dat.tang.gitlab` |
| Developer Experience | `@nao.hashizume` |
| Distribution | `@balasankarc` |
## 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>
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179255+
</td>
<td>Jan 2025</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>
Allow pipelines to run Ruby 3.3
Make MRs build with Ruby 3.3 by default
Update labels so we can `pipeline:run-as-ruby3.3` or `run-as-ruby32`
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177504
</td>
<td></td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Default devkits to Ruby 3.3</td>
<td>
https://gitlab.com/gitlab-org/gitlab-development-kit/-/issues/2369+
</td>
<td>Jan 2025</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Complete Gem Audit and address outstanding issues found</td>
<td>
https://gitlab.com/groups/gitlab-org/-/epics/18009+
</td>
<td>Q3 2025</td>
<td>Complete for Ruby 3.3 In Progress for Ruby 3.4</td>
</tr>
<tr>
<td>Run GPT to test performance</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/516194+
</td>
<td>Q3 2025</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Distribution updates</td>
<td>
https://gitlab.com/groups/gitlab-org/-/epics/17092+
</td>
<td>GitLab 18.9</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Test Rollout to SaaS</td>
<td>
https://gitlab.com/gitlab-com/gl-infra/production/-/issues/20888#engineer-helping-monitor-the-test-rollout+
</td>
<td>2025-12-01</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Roll out to SaaS</td>
<td>
https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1698+
https://gitlab.com/gitlab-com/gl-infra/production/-/issues/21065
</td>
<td>2026-01-08</td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Update MRs to use Ruby 3.3</td>
<td></td>
<td></td>
<td>
Done :white_check_mark:
</td>
</tr>
<tr>
<td>
Update release post and
release to Self Managed
</td>
<td>
https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1698+
</td>
<td>GitLab 18.9</td>
<td>
https://gitlab.com/gitlab-com/www-gitlab-com/-/merge_requests/142231
Done :white_check_mark:
</td>
</tr>
<tr>
<td>Clean up any Ruby related pipelines</td>
<td></td>
<td>Q1 2026</td>
<td></td>
</tr>
</table>
epic