Skip to content

Ruby language bindings RFC - #939

Open
omarqureshi wants to merge 19 commits into
aws:mainfrom
omarqureshi:ruby-language-bindings
Open

omarqureshi wants to merge 19 commits into
aws:mainfrom
omarqureshi:ruby-language-bindings

Conversation

@omarqureshi

@omarqureshi omarqureshi commented Jun 12, 2026

Copy link
Copy Markdown

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

This was referenced Jun 13, 2026
@thomaswitt

Copy link
Copy Markdown

Excellent. Would love to use that when implemented to migrate from Copilot CLI to CDK.

@omarqureshi
omarqureshi force-pushed the ruby-language-bindings branch from a056b73 to 112e869 Compare July 4, 2026 10:59
omarqureshi and others added 7 commits July 21, 2026 22:55
- 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>
omarqureshi and others added 11 commits July 23, 2026 11:11
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants