Misc #19980
closedIs the Ruby 3.3 ABI frozen?
Description
I'm a co-maintainer of rake-compiler-dock which is used to build precompiled native packages for some gems, including nokogiri, sqlite3, grpc, re2, and ruby-magic.
In the past, precompiled native gems generally released support for a new version of Ruby days or weeks after Ruby's release (for example, Nokogiri v1.14.0 released on 2023-01-12). In some cases, the lack of native gem support has slowed user adoption of the new version of Ruby.
This year, I'd like to see native gems release Ruby 3.3 support before the final version is released. This will encourage testing of Ruby 3.3 previews and allow users to immediately upgrade to Ruby 3.3 final when it is released.
To do that, I would like to cut a release of the rake-compiler-dock gem (and its build containers) that supports Ruby 3.3 as soon as possible (I already have a feature branch mostly working based on 3.3.0_preview1 at https://github.com/rake-compiler/rake-compiler-dock/pull/105).
Is the Ruby 3.3 ABI frozen now? If I build a native gem against Ruby 3.3.0_preview2, is there any reason to believe that it wouldn't work with Ruby 3.3 final when it is released?
Thank you for any guidance you can provide.
Updated by mame (Yusuke Endoh) about 1 year ago
For now, there is no agreement/practice to freeze the ABI before its release. Therefore, it is possible that changes may be made even a day before the official release.
If we were to freeze the ABI, @naruse (Yui NARUSE), the release manager, would need to make a decision to freeze the code under include/
directory at someday before release.
When this ticket was discussed at the dev meeting, @naruse (Yui NARUSE) was not present, so no further discussion was done.
Updated by mdalessio (Mike Dalessio) 12 months ago
I've shipped a pre-release of rake-compiler dock, v1.4.0.rc1, which supports compilation of native gems using Ruby 3.3.0-preview3.
This is only useful for testing purposes right now, see:
- ext: ruby 3.3 support by flavorjones · Pull Request #3038 · sparklemotion/nokogiri
- ext: add experimental support for ruby 3.3 by flavorjones · Pull Request #429 · sparklemotion/sqlite3-ruby
If the Ruby core team and the release manager choose to freeze the ABI, then I would immediately release this as v1.4.0 and gem maintainers could start cutting releases with Ruby 3.3 support.
Updated by naruse (Yui NARUSE) 12 months ago
I think your request sounds reasonable, but I also want to leverage committer's productivity as much as possible.
Therefore I freeze ABI in 3.3 RC1 which will be released soon. But it may be changed in the actual release if an unfortunate thing happens.
We'll track the change and write whether it is changed from RC1 or not in release note.
Updated by mdalessio (Mike Dalessio) 12 months ago
Thank you, @naruse (Yui NARUSE)!
Updated by mdalessio (Mike Dalessio) 12 months ago
@naruse (Yui NARUSE) Thank you for the ABI note in RC1's release announcement. I think this ticket can be closed.
Updated by jeremyevans0 (Jeremy Evans) 12 months ago
- Status changed from Open to Closed
Updated by mdalessio (Mike Dalessio) 11 months ago
I've released rake-compiler-dock v1.4.0.rc2 which will build native gems using Ruby 3.3.0-rc1.
Because @naruse (Yui NARUSE) noted that there is still a small chance the ABI may change, I decided not to do a "final" release until the Ruby 3.3.0 final release.
However, I suggest that gem maintainers with native gems use v1.4.0.rc2 to build and test release candidates of their gems ahead of time (before the 3.3.0 release) so that we may find and fix any problems early.