Repository navigation
Ruby Language Support #935
Description
Description
This RFC proposes adding Ruby as a supported language for the AWS CDK, via a new jsii target. Ruby-centric organizations (particularly large Rails shops) currently have to adopt a second language ecosystem solely to use the CDK; native bindings let them define infrastructure with standard Ruby tooling — Bundler, RubyGems, RSpec — in idiomatic Ruby (snake_case members, keyword-argument props, modules as interfaces).
Unlike a green-field proposal, this RFC is backed by a working implementation:
- 123/123 jsii standard compliance suite tests pass, reported through the same
tools/jsii-compliancematrix that tracks Java and Go - The full
aws/jsiimonorepo CI passes end-to-end with the Ruby target included (build, cross-platform test matrix, pacmak integration againstaws-cdk-lib) - A production workload deploys through the generated
aws-cdk-libgem today, spanning six service modules (S3, CloudFront, ACM, Route53, Cognito, DynamoDB)
The compiler-side change is an additive targets.ruby schema extension; the .jsii assembly format is unchanged, so existing construct libraries gain Ruby support with no recompilation. Supported runtime: MRI ≥ 3.3.
Implementation status
This RFC is backed by a working implementation across the jsii toolchain and CDK. Per-repo tracking (the upstream-facing PRs are drafts, gated on the Ruby-capable jsii-compiler release):
| Repository | Status | PR / Link |
|---|---|---|
aws/jsii-compiler |
Submitted | aws/jsii-compiler#2663 — Ruby targets.ruby schema validation (issue: #2667) |
aws/jsii (monorepo) |
Submitted (draft) | aws/jsii#5178 — @jsii/ruby-runtime, jsii-pacmak Ruby target, compliance suite (tracking issue: aws/jsii#5129) |
aws/aws-cdk |
Submitted (draft) | aws/aws-cdk#38248 — Ruby target config across aws-cdk-lib (feature request: #38247) |
aws/jsii-rosetta |
Submitted (draft) | aws/jsii-rosetta#3710 — TypeScript→Ruby example translation (issue: #3711) |
cdklabs/jsii-docgen |
Implemented | omarqureshi/jsii-docgen#1 — Ruby API reference docs |
Links
- jsii monorepo tracking issue (jsii-specific discussion): aws/jsii#5129
- Production reference deployment: omarqureshi/blog
- Full RFC text: https://github.com/omarqureshi/aws-cdk-rfcs/blob/112e8691e482c53d9de54ccd499a98d76d5eeb47/text/0935-ruby-language-bindings.md
Roles
| Role | User |
|---|---|
| Proposed by | @omarqureshi |
| Author(s) | @omarqureshi |
| API Bar Raiser | |
| Stakeholders |
See RFC Process for details
Workflow
- Tracking issue created (label:
status/proposed) - API bar raiser assigned (ping us at #aws-cdk-rfcs if needed)
- Kick off meeting
- RFC pull request submitted (label:
status/review) - Community reach out (via Slack and/or Twitter)
- API signed-off (label
status/api-approvedapplied to pull request) - Final comments period (label:
status/final-comments-period) - Approved and merged (label:
status/approved) - Execution plan submitted (label:
status/planning) - Plan approved and merged (label:
status/implementing) - Implementation complete (label:
status/done)
Author is responsible to progress the RFC according to this checklist, and
apply the relevant labels to this issue so that the RFC table in README gets
updated.
Activity
RFC 935: Ruby Language Bindings
omarqureshi commentedon Jun 16, 2026
Bumped the body to include a link to the full RFC text #939 - can we push this to status/review?
mrgrain commentedon Aug 6, 2026
Thanks at @omarqureshi for your efforts on this. It's a really cool and interesting project. We've talked it through in the team, and unfortunately we are not looking to support additional jsii languages at this time. I am sorry our documentation did not make this clear and I will update them to clarify our current stance.
Here is some background on this decision. Usage of languages besides TS/JS and Python is marginal at best [1]. The last language we added was Golang. And while that significant community interest, it still has virtually no users [2]. For Ruby we haven't really seen this interest, plus wider industry trends see Ruby stagnating compared to its competition. Go specifically also caused some challenges over the last year, requiring us to make breaking changes to the Go bindings [4] in order to move the framework forward for the majority of its users. We'd prefer to not have to make these kind of decisions, and adding more languages will always increase the likelihood. This is somewhat frustrating because I personally think Ruby is a much better fit for the CDK than Go...
We would however still like to see your work made available to the community and are open to support a lightweight plugin-system for jsii to more seamlessly enable community supported languages. For example I could see the Open Constructs Foundation (OCF) being interested in hosting such languages. Although they typically require a sustainable maintainer team (i.e. more than just one person) before hosting a project. Either way, if you are still interested in taking this forward (but we understand if you aren't), let's work on an RFC for a lightweight plugin-system that would allow you to publish a Ruby-plugin and self-host the generated language bindings. The plugin RFC is something I can commit to working with you.
[1] CDK Community Survey - 2023; while this is from 2023, our internal data shows no significant change
[2] I can see an argument here that it's due to the non idiomatic bindings, but the reality is that all jsii bindings are making trade-offs. Still some languages have significant more usage.
[3] e.g. https://www.tiobe.com/tiobe-index/ Popularity is stagnating, if not declining
[4] aws/aws-cdk#37041 and aws/aws-cdk#37041
[5] https://the-ocf.org/, https://github.com/open-constructs/, the people behind cdk.dev
Correct the maintainer count, and add the evidence that argues hardest
Draft: lightweight jsii language-plugin system RFC
Correct the maintainer count, and add the evidence that argues hardest