Skip to content

feat: require Ruby 3.3 or newer - #322

Merged
jbeckwith-oai merged 1 commit into
mainfrom
codex/drop-ruby-3-2
Jul 31, 2026
Merged

feat: require Ruby 3.3 or newer#322
jbeckwith-oai merged 1 commit into
mainfrom
codex/drop-ruby-3-2

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

  • require Ruby 3.3 or newer and remove Ruby 3.2 from the supported CI matrix
  • add a repository versioning policy covering breaking changes, Ruby support, dependencies, and release maintenance
  • retain Ruby 4.0.6 as the contributor default and Ruby 4.0 for routine lint, package, and release jobs
  • include the versioning policy in the built gem documentation

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/test on Ruby 3.3.12, 3.4.10, and 4.0.6: 468 tests / 1,514 assertions on each runtime
  • ./scripts/lint on Ruby 4.0.6
  • bundle exec rake build:gem on Ruby 4.0.6
  • verified the built gem contains README.md and VERSIONING.md
  • verified Ruby 3.2.11 rejects the built gem and Ruby 3.3.12 installs it
  • verified published v0.75.0 still installs on Ruby 3.2.11

Copilot AI review requested due to automatic review settings July 31, 2026 17:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 TargetRubyVersion to 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 HAYDEN-OAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread VERSIONING.md
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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

@jbeckwith-oai jbeckwith-oai added the generator Touches generated SDK files label Jul 31, 2026
@jbeckwith-oai
jbeckwith-oai marked this pull request as ready for review July 31, 2026 19:39
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner July 31, 2026 19:39
@jbeckwith-oai
jbeckwith-oai merged commit f40aef1 into main Jul 31, 2026
13 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the codex/drop-ruby-3-2 branch July 31, 2026 19:39
@openai-sdks

openai-sdks Bot commented Jul 31, 2026

Copy link
Copy Markdown

OkTest Summary

237/237 SDK tests passed in 10.522s for Ruby SDK PR #322.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 303ms
tests/chat-completions-create.test.ts ✅ Passed 315ms
tests/chat-completions-stream.test.ts ✅ Passed 145ms
tests/files-content-binary.test.ts ✅ Passed 259ms
tests/files-create-multipart.test.ts ✅ Passed 305ms
tests/files-list-pagination.test.ts ✅ Passed 172ms
tests/initialize-config.test.ts ✅ Passed 214ms
tests/instance-isolation.test.ts ✅ Passed 240ms
tests/models-list.test.ts ✅ Passed 287ms
tests/responses-background-lifecycle.test.ts ✅ Passed 268ms
tests/responses-body-method-errors.test.ts ✅ Passed 610ms
tests/responses-cancel-timeout.test.ts ✅ Passed 314ms
tests/responses-cancel.test.ts ✅ Passed 309ms
tests/responses-compact-retries.test.ts ✅ Passed 412ms
tests/responses-compact.test.ts ✅ Passed 332ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 228ms
tests/responses-create-advanced.test.ts ✅ Passed 325ms
tests/responses-create-disconnect.test.ts ✅ Passed 171ms
tests/responses-create-errors.test.ts ✅ Passed 405ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 181ms
tests/responses-create-retries.test.ts ✅ Passed 273ms
tests/responses-create-stream-failures.test.ts ✅ Passed 172ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 234ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.221s
tests/responses-create-stream.test.ts ✅ Passed 140ms
tests/responses-create-terminal-states.test.ts ✅ Passed 458ms
tests/responses-create-timeout.test.ts ✅ Passed 309ms
tests/responses-create.test.ts ✅ Passed 323ms
tests/responses-delete.test.ts ✅ Passed 355ms
tests/responses-input-items-errors.test.ts ✅ Passed 196ms
tests/responses-input-items-list.test.ts ✅ Passed 189ms
tests/responses-input-items-options.test.ts ✅ Passed 185ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 353ms
tests/responses-input-tokens-count.test.ts ✅ Passed 275ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.44s
tests/responses-not-found-errors.test.ts ✅ Passed 449ms
tests/responses-parse.test.ts ✅ Passed 267ms
tests/responses-retrieve-retries.test.ts ✅ Passed 351ms
tests/responses-retrieve.test.ts ✅ Passed 343ms
tests/responses-stored-method-errors.test.ts ✅ Passed 1.093s
tests/retry-behavior.test.ts ✅ Passed 1.959s
tests/sdk-error-shape.test.ts ✅ Passed 585ms

View OkTest run #30659960473

SDK merge (f40aef1892a4) · head (e6098236ac65) · base (405d70961fb3) · OkTest (91635c6a2723)

@stainless-app stainless-app Bot mentioned this pull request Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

generator Touches generated SDK files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants