Ruby language bindings RFC - #939
Open
omarqureshi wants to merge 19 commits into
Open
omarqureshi wants to merge 19 commits into
omarqureshi wants to merge 19 commits into
Conversation
This was referenced Jun 13, 2026
Closed
|
Excellent. Would love to use that when implemented to migrate from Copilot CLI to CDK. |
omarqureshi
force-pushed
the
ruby-language-bindings
branch
from
July 4, 2026 10:59
a056b73 to
112e869
Compare
- State compliance as a full pass rather than specific counts (and drop the Java/Go percentage comparison). - Point the evidence at the public, credential-free preview channel (source "https://rubygems.omarqureshi.net") instead of the private feed. - Add the full consumer Gemfile to the dependency-management FAQ, with the scoped-source and prerelease-constraint rationale. - Link the live rendered YARD API docs (rubygems.omarqureshi.net/docs), distinguished from the future jsii-docgen Construct Hub renderer. - Note the working Rails-on-Lambda stack deployed via the Ruby CDK.
- The monorepo-CI claim now states explicitly that green requires pinning a pre-release build of jsii-compiler#2663, and that the checks on jsii#5178 stay red by construction until #2663 merges and releases — an ordering constraint, not an implementation gap. - New "Upstreaming sequence" subsection ordering the open PRs (#2663 -> #5178 -> #3710/docgen -> #38248) so a reviewer cannot misread the red CI. - Phase 0 registration list now includes `jsii`, matching the appendix governance list; name availability re-verified 2026-07-22 (all still unregistered). - Visitor description made durable (40+ AST handlers, no line counts); the rosetta narrative now points at the already-open aws/jsii-rosetta#3710. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The interim fallback was scoped to jsii-ruby-runtime only. Squat exposure grows with the RFC's visibility while the preferred AWS-registers path has no execution date, so the fallback now covers every name in the governance list, with its safeguards spelled out: prerelease placeholder versions that resolution never selects, reservation notices pointing at this RFC, an MFA-enforced account, and a standing ownership-transfer commitment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replaces "will be published with the Developer Preview" with the measured 2026-07-22 results (identical mirror stacks, version-disclosed, medians of 5): comparable end-to-end synth (2.40s vs 2.05s), 2.5x faster library load from the lazy autoload architecture, the deferred cost visible in the synth phase, and peak RSS honestly reported as the first optimisation target. The last unevidenced quantitative claim in the RFC is now measured. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds the design case for the newly landed feature: Procs (and the TypeScript-mirror hash form) coerce into single-method interface implementations at generated call sites, putting Ruby alongside TypeScript and Java — and ahead of Python/C#/Go — for callback ergonomics, with the coercion self-limiting and everything downstream riding the compliance-tested callback machinery. Also what makes rosetta-translated callback examples runnable rather than approximate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The previously published 478MB Ruby peak RSS was a WSL2 GNU-time accounting artifact (%M reported 486MB for a process tree whose largest member peaked at 86MB by /proc). Re-measured with /proc-reported VmHWM per process: Ruby's guest process peaks at 86MB vs Python's 128MB — a third smaller, consistent with the lazy-loading design — with comparable Node sidecars (56 vs 47MB). The "peak memory is the first optimisation target" conclusion is withdrawn; the synth-phase hydration cost is the real target. Full post-mortem in the benchmark repository. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every checkable claim in the document was verified against code, live endpoints, upstream PR state and history; this lands the corrections: - Gem name governance now DISCLOSES the executed fallback: the names are held by the author as prerelease placeholders since 2026-07-22, with ownership transfer to AWS being coordinated — the section previously still described them as unregistered and the fallback as hypothetical, which read as stale-or-evasive on the RFC's most trust-sensitive topic. Phase 0 marked partially executed accordingly. - The present-tense "runs green in CI on every push" claim now tells the real story: green full-matrix runs exist (2026-06-04/07), the fork's own CI fails fast by construction since the compiler pin, and ongoing verification lives in the daily preview pipeline's post-publish smoke test. - The rosetta acronym paragraph described a hardcoded CDK acronym list the implementation deliberately no longer has — rewritten to the actual architecture (assembly config authoritative, no built-in list, plain PascalCase for unresolvable references). - "Twelve service modules … IAM" corrected to eleven, with IAM honestly attributed to the grant_* helpers rather than a direct module reference. - Real-output presentation note added (module prefixes trimmed); gemspec excerpt now carries the sig/ glob; fixture counts made current/durable; stale issue-comment count made durable; the Rails/Lamby evidence bullet now states its local-emulator scope. - True-but-under-evidenced claims strengthened: the ~180 MB eager-source figure is cited as measured (exactly 180 MB in the 2026-07-23 gem), and the per-build source manifest endpoint is documented as supply-chain evidence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The maintainer-model section's standing invitation now carries status: a second maintainer has been recruited and begins onboarding in mid-August 2026 — deliberately phrased as a commitment in progress rather than a contribution record, consistent with the document's verifiability standard. This addresses the bus-factor risk the section names as the proposal's honest weakest point. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… CloudFormation validation engine, not kernel hydration Profiled 2026-07-23: a pure-Node control reproduces the entire gap without jsii. The preview build (aws-cdk main) runs the default WASM Rego validation engine on every synth (~1.2s); release 2.261.0 predates it. Net jsii synth overhead is ~0.1s in both languages. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rity Generated Python bindings with pacmak from the identical aws-cdk main build that produced the Ruby preview gem: synth 1.06s vs Ruby's 1.15s (both pay the new CloudFormation validation engine), library load 0.44 vs 0.46s, guest 83 vs 86MB. The 2.261.0 column's advantages were build vintage, not language. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…3 overrun Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nitial goal Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…(Steep, verified) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…andard rbs-collection type-checking flow Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…oercion mirroring in RBS) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lity Upgrades the Rails demo evidence from 'end to end against a local emulator' to a full production deployment on real AWS (Cognito+Google, presigned S3+CloudFront, DynamoDB+GSIs, SQS+DLQ+Lambda event source, X-Ray) shipped through a CI/CD pipeline (test-gated trunk, staging branch, tag-driven prod). Adds a Future Possibilities bullet on ecosystem gems that bridge Ruby libraries with CDK — the Dynamoid-model reflection pattern the demo already uses — as the community counterpart to first-party Rails integration and a concrete argument for native bindings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…erclaim
Previous wording ('packages cleanly into a standalone gem') read as though the gem exists. It doesn't — the pattern lives in the demo app as a module. Reworded to 'a pattern that could be extracted into a standalone Dynamoid-to-CDK gem (none exists yet)'.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a request for comments about Ruby Language Bindings. See #935 for additional details.
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache-2.0 license