finds.dev← search

// the find

kovidgoyal/rapydscript-ng

★ 206 · C · BSD-2-Clause · updated Jul 2026

A transpiler for a Python like language to JavaScript

RapydScript-NG is a Python-to-JavaScript transpiler that compiles Python-like syntax down to readable, performant JavaScript — no runtime overhead, direct interop with any JS library. It's the maintained fork of the original RapydScript by Kovid Goyal (the calibre author), actively developed and self-hosting. For developers who think in Python but ship to the browser, this is the pragmatic option over Pyodide or Brython.

The generated JavaScript is actually readable and close to idiomatic — you can inspect the output and understand it, which matters when debugging production issues. It's self-hosting, so the compiler itself is written in RapydScript and compiled to JS, which is a meaningful dogfooding signal. The feature set is genuinely complete: decorators, generators, async/await, comprehensions, tuple unpacking, scoped flags for dict semantics — these aren't half-baked. The tree-sitter grammar and LSP support mean you get real editor tooling, not just a syntax file.

The Python compatibility is intentionally shallow — dicts use JS objects by default, strings are UTF-16, `is` maps to `===`, and type checking diverges from CPython in ways that will surprise you at runtime if you're porting existing Python code. The test suite runs in a custom RapydScript test runner rather than a standard JS test framework, which makes it harder to integrate into a normal CI pipeline. At 206 stars this has a tiny community, so if you hit a bug in an edge case of the parser or a stdlib module, you're likely fixing it yourself. There's no TypeScript interop story — no way to consume `.d.ts` files or generate type declarations, so large JS codebases with TypeScript are effectively off limits.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →