Skip to content

Ruby Language Support #935

Closed as not planned
Closed as not planned

Description

@omarqureshi

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-compliance matrix that tracks Java and Go
  • The full aws/jsii monorepo CI passes end-to-end with the Ruby target included (build, cross-platform test matrix, pacmak integration against aws-cdk-lib)
  • A production workload deploys through the generated aws-cdk-lib gem 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

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-approved applied 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

  1. added a commit that references this issue on Jun 12, 2026
  2. omarqureshi commented on Jun 16, 2026

    @omarqureshi
    Author

    Bumped the body to include a link to the full RFC text #939 - can we push this to status/review?

  3. mrgrain commented on Aug 6, 2026

    @mrgrain
    Contributor

    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

  4. added a commit that references this issue on Aug 14, 2026
    a06168f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions