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