feat: require Ruby 3.3 or newer - #322
Conversation
There was a problem hiding this comment.
Pull request overview
This PR raises the OpenAI Ruby SDK’s minimum supported Ruby version to 3.3+, removes Ruby 3.2 from CI, and formalizes/links a versioning policy so runtime-floor and other breaking changes are consistently documented and released.
Changes:
- Require Ruby
>= 3.3.0(gemspec) and update README requirements + messaging for Ruby 3.2 users. - Remove Ruby 3.2 from the CI matrix and update RuboCop’s
TargetRubyVersionto 3.3. - Add
VERSIONING.md, reference it from README/CONTRIBUTING, and include it in generated gem docs metadata.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| VERSIONING.md | Introduces a documented policy for SemVer usage, Ruby support windows, dependency expectations, and breaking-change handling. |
| README.md | Updates minimum Ruby requirement to 3.3+ and links to the new versioning policy; notes the final Ruby 3.2-compatible release line. |
| openai.gemspec | Raises required_ruby_version to >= 3.3.0 and adds VERSIONING.md to extra_rdoc_files. |
| lib/openai/internal/type/base_stream.rb | Updates Ruby API documentation link to the 3.3 docs. |
| examples/advanced_streaming.rb | Updates Ruby API documentation links to 3.3 for streaming-related references. |
| CONTRIBUTING.md | Adds guidance pointing contributors to the versioning policy before making breaking/runtime/dependency changes. |
| .rubocop.yml | Bumps TargetRubyVersion from 3.2 to 3.3 to match the new support floor. |
| .github/workflows/ci-checks.yml | Removes Ruby 3.2 from the test matrix; keeps remaining supported minors as blocking targets. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
HAYDEN-OAI
left a comment
There was a problem hiding this comment.
Approved: Ruby 3.3 minimum, supported-runtime coverage, versioning policy, and gem packaging are consistent. One non-blocking release-note follow-up is noted inline.
| When the minimum Ruby version changes: | ||
|
|
||
| 1. Ship the change in the release category defined above, never in a patch. | ||
| 2. Name the final compatible gem release line in the README and release notes. |
There was a problem hiding this comment.
[P3] Include the final Ruby 3.2-compatible line in generated release notes. This policy requires both the README and release notes to name the final compatible line, but the only release-please input is feat: require Ruby 3.3 or newer, so the generated v0.76.0 changelog/release notes will omit v0.75.x. Include that final compatible line in the releasable commit/PR title or explicitly add it to the release notes so users on Ruby 3.2 know which version to pin.
Summary
Why
Ruby 3.2 reached upstream end of life on April 1, 2026. The SDK should support maintained CRuby releases by default, with post-EOL grace requiring an explicit exception. The published v0.75.x line remains available to Ruby 3.2 users without a separate maintenance promise.
Because the gem is pre-1.0, this runtime-floor change is a minor release. The
feat:classification allows release-please to produce v0.76.0 under the repository's existing configuration.Impact
Ruby 3.2 users remain on v0.75.x. New SDK releases require Ruby 3.3 or newer. Ruby 3.3, 3.4, and 4.0 remain blocking CI targets.
Validation
./scripts/teston Ruby 3.3.12, 3.4.10, and 4.0.6: 468 tests / 1,514 assertions on each runtime./scripts/linton Ruby 4.0.6bundle exec rake build:gemon Ruby 4.0.6README.mdandVERSIONING.md