Ruby 3.2
Ruby 3.2 has been released: https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/
This epic captures the work required to get us there.
## Notable changes
### 3.1
https://rubyreferences.github.io/rubychanges/3.1.html
- Hash literal value omission
- Anonymous block argument
- Pattern-matching: pinning of expressions
- Time: better support for timezones in construction
- Low-level IO::Buffer
- More methods become async with fiber scheduler
### 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
## Plan
Work in progress:
<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/109742
</td>
<td>December 2023</td>
<td>
:white_check_mark:
</td>
</tr>
<tr>
<td>Allow pipelines to run Ruby 3.2</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139214
</td>
<td>December 2023</td>
<td>
:white_check_mark:
</td>
</tr>
<tr>
<td>
Update labels so we can `pipeline:run-as-ruby32` or `run-as-ruby31` since that was very useful to have last time, and so that we have scheduled builds on master again for 3.2
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139214
</td>
<td>Jan 2024</td>
<td>
:white_check_mark:
</td>
</tr>
<tr>
<td>Default devkits to 3.2</td>
<td>
https://gitlab.com/gitlab-org/gitlab-development-kit/-/issues/1731
</td>
<td>Jan 2024</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>Address outstanding gem issues from audit</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/404750
</td>
<td>End of February</td>
<td>
~"workflow::complete" Issues can be found [here](https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_date&state=opened&label_name%5B%5D=Ruby3_2-Blocker&first_page_size=20)
</td>
</tr>
<tr>
<td>Run GPT to test performance</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/438816+
</td>
<td>End of February 2024</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>Make MRs build with 3.2 by default</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/460002+
</td>
<td>May 2024</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>If absolutely necessary, do some manual testing.</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Distribution updates</td>
<td>
https://gitlab.com/groups/gitlab-org/-/epics/12219+
</td>
<td>2024-10-09</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>Roll out to SaaS</td>
<td>
https://gitlab.com/gitlab-com/gl-infra/production/-/issues/18519
</td>
<td>2024-10-02</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>Update CI to use Ruby 3.2</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168129+
https://gitlab.com/gitlab-org/quality/pipeline-common/-/merge_requests/464+
</td>
<td></td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>
Update release post and
release to Self Managed
</td>
<td>
https://gitlab.com/gitlab-com/www-gitlab-com/-/merge_requests/136509+
</td>
<td>October 2024 (17.5)</td>
<td>
~"workflow::complete"
</td>
</tr>
<tr>
<td>Clean up Ruby 3.2 pipelines</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/498470+
</td>
<td>Jan 2025</td>
<td>
~"workflow::complete"
</td>
</tr>
</table>
epic