roundhouse
Rails as a specification; the deployment target is a build flag
Roundhouse transpiles Rails apps into fast standalone binaries by treating Rails as a spec
The Rust tool reads unmodified Rails source and emits projects in many target languages, with the deployment target selected by a build flag rather than at runtime.
The core idea
Roundhouse reads Ruby source, specifically Rails applications, and produces standalone projects in other target languages. The deployment target becomes a compiler flag rather than a runtime choice, with supported emits including a Rust or Swift binary, a TypeScript bundle, a Crystal or Go service, an Elixir OTP app, a Kotlin or JVM or C sharp or .NET service, a Python project, a browser bundle, or a Spinel compiled Ruby. The name comes from the circular hub in a rail yard where engines rotate and route onto different tracks, which matches the pipeline shape of one Ruby source at the center dispatched to one of N target tracks. The README frames the motivation in a linked WHY document about the constraints that push successful Rails apps off CRuby and the option value of preserving the choice.
Correctness and inference
The emitted projects are said to compile clean and pass their tests, verified by a conformance oracle: the same URL fetched from Rails and from each target must produce the same response, checked three ways through emitted unit tests against fixed expected values, a differential compare gate against live Rails, and end to end browser tests. No type annotations are involved anywhere; Roundhouse recovers Rails' implicit type information by whole program inference from unmodified source without booting the app or touching a database. That inference is also a product on its own, powering an LSP server, an MCP server and an in browser IDE that answer questions like what the type is or whether a value can be nil. A whole application pass over Mastodon, 1,173 files and 337 controllers, takes about 1.5 seconds natively and 2.3 seconds compiled to WebAssembly.
Performance and status
The performance story is partial evaluation: Rails operationally interprets routes, associations, validations and templates on every request, and Roundhouse makes every decision that cannot differ between requests once at transpile time. On a CPU bound microbenchmark of a small fixture, serving the HTML index showed Rails on CRuby plus YJIT at 326 requests per second, Rails on JRuby at 1,066, Roundhouse emit on CRuby plus YJIT at 3,292, and Roundhouse emit on JRuby at 24,172. The README is careful to call these ratios from a small fixture and notes real workloads are I/O bound to varying degrees, with live numbers and caveats published on a bench page. The project carries 87 stars and 2 forks with 49 open issues, the default branch is main, and the license is Apache 2.0.
Editorial conclusion
Roundhouse is an Apache 2.0 Rust transpiler on the main branch with 87 stars that reads unmodified Rails source and emits standalone projects in many languages via a build flag, recovers types by whole program inference without annotations, and reported up to 24,172 requests per second for its JRuby emit against 326 for stock Rails on a small CPU bound fixture.
Community notes