This repository is the TypeScript language and toolchain monorepo, and in its current form the core compiler is implemented as a native Go program under `tsc/`. It provides the `tsc` command-line compiler (`tsc/cmd/tsc/main.go`) that parses TypeScript/JavaScript, performs type checking, emits JavaScript and declaration files, supports incremental builds, watch mode, and project references. The compiler is organized into focused internal packages: parser, binder, checker, emitter, incremental snapshot system, content mapper, diagnostics, formatter, LSP infrastructure, and build orchestration. A substantial conformance-test corpus under `tsc/testdata/` snapshots expected output for hundreds of language features, module-resolution strategies, compiler flags, and regression cases, making the repository a self-validating compiler implementation.
Bun is an all-in-one JavaScript/TypeScript toolkit shipped as a single native executable: a JavaScriptCore-powered runtime, an npm-compatible package manager, a bundler/transpiler, and a Jest-compatible test runner. The code confirms this: src/bun_bin is the CLI entry point; src/install is a full package manager with its own binary lockfile format, workspaces, and isolated/hoisted installers; src/bundler, src/css, and src/js_parser implement JS/TS/JSX/CSS/HTML bundling and transpilation; src/jsc and src/runtime implement the runtime with Web platform APIs, an HTTP server (Bun.serve), WebSocket support, SQL clients, and a Node.js compatibility layer (src/js/node, src/js/internal). It also embeds a React Compiler port for automatic memoization and a shell interpreter (Bun.shell). The repo is fundamentally an application, not a data/research project; the only research-flavored content is compiler-semantics fixture corpus and benchmark scripts.
Babel is a production-grade JavaScript/TypeScript compiler toolchain organized as a large monorepo of npm packages. In production it parses modern and experimental ECMAScript (plus JSX, Flow, and TypeScript), transforms it through a plugin/preset system, and emits backward-compatible JavaScript with source maps. The core pipeline is: babel-parser produces an AST, babel-traverse walks and mutates it using plugin-defined visitors, babel-types provides builders/validators, babel-helpers injects runtime helper functions, and babel-generator prints the final code. Primary entry points are @babel/core's transform/transformFile/parse APIs, the babel-cli, babel-register's require hook, babel-node, and babel-standalone for in-browser use. Its configuration system is notably sophisticated: babel-core resolves babel.config.*, .babelrc, and package.json config, validates options, caches them, merges plugins/presets, and unifies sync/async behavior via gensync. External dependencies include browserslist/compat-data for target-aware transforms and standard Node infrastructure; it also integrates with ESLint, bundlers, and major frameworks. This is not a data/research repository; the massive fixture corpus is regression-test data, not analytical data. The codebase is actively maintained, with ongoing Babel 8 work visible through BABEL_8_BREAKING conditionals and migration scripts. Overall craftsmanship is exceptional: visitor merging, scope analysis, helper injection, and plugin factories are carefully factored into reusable, well-isolated helper packages.
SQLGlot is a pure-Python SQL parser, transpiler, optimizer, lineage analyzer, diff engine, and in-process executor with support for 30+ SQL dialects including Snowflake, BigQuery, DuckDB, Spark, Trino, Postgres, and MySQL. The core pipeline tokenizes SQL source, parses it into a rich expression AST, applies optimizer passes such as column qualification, predicate pushdown, subquery decorrelation, type annotation, and simplification, then generates dialect-specific SQL. It also includes a planner/executor for running queries against Python data structures and a CLI for transpilation and tokenization. Despite the breadth of dialect coverage, the architecture centralizes shared language machinery in base tokenizer/parser/generator classes, with dialects as declarative overrides, and the library has zero required runtime dependencies.
Civet is a full-featured compiler and language server for a CoffeeScript-like language that transpiles to TypeScript/JavaScript. It provides a CLI, bundler plugins (Vite, Webpack, esbuild, Rollup, etc.), Babel plugin, ESLint plugin, ESM loader, and browser script runner. The core compiler implements advanced features like pattern matching, pipe operators, JSX enhancements, and compile-time evaluation. The language server (LSP) delivers IDE features including diagnostics, completions, go-to-definition, hover, and rename across VS Code, Sublime Text, Zed, and Monaco. The repository is structured as a monorepo with the compiler in `source/`, a standalone LSP server in `lsp/server/`, editor extensions, tree-sitter grammars, and a documentation site at civet.dev. Notable architecture includes a PEG grammar parser (Hera), source map composition utilities, an in-memory TypeScript service host, and a worker pool for parallel compilation. The test suite enforces 100% coverage gates, ensuring high reliability. Civet demonstrates strong engineering practices: self-hosting compiler, comprehensive golden tests, CI/CD pipelines, and a modular plugin system for bundlers. While complexity arises from supporting many editor integrations and bundler adapters, the core compiler and LSP are cleanly separated. The project is actively maintained with frequent releases and community contributions.
hcc is a compiler for the HolyC language, a derivative of TempleOS HolyC. It supports both ahead-of-time (AOT) compilation to x86_64 and AArch64 assembly and just-in-time (JIT) compilation for in-memory execution. The system includes a full front-end (lexer, parser, AST, SSA-based IR), optimization passes, register allocation, and backends for x86_64 and AArch64. Additionally, it provides a REPL, a Language Server Protocol (LSP) server, an inline assembler (TempleOS-style), a disassembler, and a control-flow graph visualizer. The standard library is written in HolyC and offers data structures (lists, vectors, hash maps, red-black trees), JSON/CSV parsers, SQLite bindings, networking, threading, coroutines, and system call wrappers. The project is a self-contained, well-structured compiler toolchain with extensive tests and active development.
babel-loader is a webpack loader that integrates Babel transpilation into webpack and Rspack build pipelines. It takes JavaScript source files, resolves Babel configuration (via babel.config.js, .babelrc, or inline options), transforms the code using @babel/core, and returns the compiled output along with source maps. The loader supports caching to disk (with optional gzip compression), external dependency tracking for cache invalidation, and a customization API that allows users to override Babel config, options, and results per file. It also injects caller metadata (webpack target, ESM support) into Babel's config resolution. The architecture is a single async loader function with a modular internal structure: `src/index.js` orchestrates the flow, `src/transform.js` wraps Babel's transform, `src/cache.js` handles filesystem caching with fallback to tmpdir, `src/serialize.js` provides a deterministic serializer for cache keys, `src/injectCaller.js` enriches Babel options, and `src/Error.js` formats Babel errors for webpack. The loader is designed to be extensible via the `.custom()` builder or the `customize` option, enabling advanced use cases like per-file plugin injection or result post-processing. Key entry points are the default export (the loader function) and the `.custom()` export for creating customized loaders. The primary data flow is: source code + loader options → Babel config resolution (via `loadPartialConfigAsync`) → transform (with caching) → return [code, map]. External dependencies include @babel/core (peer), webpack or @rspack/core (peer), and empathic for find-up logic. The codebase is well-tested with node:test, runs CI across multiple Node versions and both webpack/Rspack, and follows modern JavaScript practices with TypeScript type annotations.
Fusion Transpiler (fut) is a self-hosting, multi-target transpiler that translates code written in the Fusion language into C, C++, C#, D, Java, JavaScript, Python, Swift, TypeScript, and OpenCL C. The repository contains the complete compiler implementation written in Fusion itself, including a lexer, parser, semantic analyzer, and a family of code generators organized via a visitor pattern. It also includes a comprehensive test suite, command-line interfaces for multiple host languages (C++, C#, Java, Node.js), editor integrations (VS Code, Vim, Sublime, Visual Studio, LSP server), and packaging for Debian, Windows, and RPM. The architecture follows a classic compiler pipeline with a clear separation of concerns, and the self-hosting bootstrap ensures the compiler is exercised on its own code. This is a pure application project with no data processing or research components; it is a production-quality compiler toolchain.
XGo (formerly Go+) is a Go-superset programming language delivered as a complete compiler toolchain. The repository implements the full language pipeline: a custom scanner (scanner/), parser (parser/), extended AST (ast/), semantic compiler (cl/), and code generator that lowers XGo source to standard Go via the gogen code builder. The xgo CLI (cmd/xgo) exposes subcommands for build, run, test, fmt, go, install, mod, pack, serve, watch, and version, wrapping the Go toolchain after transpilation. The language extends Go with command-style calls, keyword arguments, tuples, list/map/select comprehensions, error-wrapping operators (expr!, expr?), overloaded functions and operators, enums, domain-text literals, and classfile frameworks for domain-specific applications (spx games, MCP servers, shell scripts). The architecture follows a classic compiler design: XGo source → scanner → parser → AST → cl semantic analysis/code generation → gogen → Go source → standard Go toolchain. The tool/ package orchestrates module loading, go.mod management, and delegation to go build/run/test. A language server (x/langserver) with a bundled JSON-RPC2 library (x/jsonrpc2) supports editor tooling. Two notable sub-systems ship alongside the compiler: DQL (dql/), a unified query language over HTML/XML/JSON/YAML/Go AST trees, and TPL (tpl/), a grammar-based DSL parser generator used for domain-text literals. Hundreds of golden-test pairs (in.xgo/out.go) validate compiler output across Go versions 1.18-1.27. External dependencies include github.com/goplus/gogen (code builder), github.com/goplus/mod (module handling), github.com/qiniu/x (errors/streams), and cobra for CLI construction. The codebase forks several Go standard library internals (scanner, printer, ast) to support extended syntax, creating ongoing maintenance burden as Go evolves. Some features remain incomplete (panic("TODO") in matrix literal compilation, fully commented-out ast/resolve.go), and legacy naming aliases (gop vs xgo, gop.mod vs gox.mod) coexist throughout.
Jco is a JavaScript toolchain for WebAssembly components. It transpiles WASM components to JavaScript, generates TypeScript types from WIT, bundles components, and provides a standard library (`jco-std`) that ports Node.js built-in modules (fs, http, tls, net, crypto, zlib, etc.) to run inside WebAssembly components via WASI Preview 2/3. The monorepo contains a Rust workspace (bindgen crates, test components) and TypeScript packages (jco CLI, jco-transpile, preview2-shim, preview3-shim, jco-std). The codebase is notable for its differential testing approach: shims are tested against native Node.js behavior, with tests for HTTP/2, TLS, SQLite, streams, and worker threads. A dual-adapter pattern (deny-by-default vs. Node-native) ensures security by default. The project supports multiple WASI versions (0.2.x, 0.3.x) and Node.js versions (24.x, 26.x), with dedicated shims for browser and Node.js runtimes. Maintenance is active (recent commits, CI workflows), but there are drift risks: pinned Node.js versions, many TODO comments, incomplete browser shims (throwing Todo), and experimental features like JSPI and async support.
Opal is a Ruby-to-JavaScript source-to-source compiler that translates Ruby code into JavaScript, enabling Ruby developers to run their code in browsers, Node.js, Deno, and other JavaScript environments. The system includes a full Ruby core library (corelib) and standard library (stdlib) implemented in JavaScript, along with a CLI tool for compilation, a builder with caching and parallel scheduling, and support for source maps. Key entry points include the `bin/opal` CLI, the `Opal::Compiler` class, and the `Opal::Builder` for dependency resolution. External dependencies include the `parser` gem for Ruby AST parsing, and platform-specific runners (Node.js, Chrome, Firefox, etc.) for execution. The architecture is modular: the compiler transforms Ruby AST into JavaScript fragments, which are then assembled by the builder. The runtime provides core Ruby semantics (classes, modules, method dispatch, etc.) on top of JavaScript primitives. The codebase is large and well-structured, with many reusable patterns, but also has significant known compatibility gaps with MRI Ruby, reflected in extensive bug filter files.
C2Rust is a compiler toolchain that translates C99 code into unsafe Rust, then applies static analysis and refactoring to produce safer, more idiomatic Rust. The pipeline consists of four main stages: transpilation (c2rust-transpile) using a Clang-based AST exporter to produce initial Rust code; static analysis (c2rust-analyze) that infers pointer permissions and rewrites raw pointers to safe references using a Polonius-based borrow checker; refactoring (c2rust-refactor) which applies dozens of AST transformations (e.g., ownership splitting, macro collapsing, control flow reconstruction) to improve code quality; and postprocessing (c2rust-postprocess) that leverages large language models to transfer C comments and align definitions. The project also includes a cross-checking framework that instruments both C and Rust code to compare runtime behavior via hashing, a program dependence graph (PDG) builder for memory safety analysis, and dynamic instrumentation for event logging. It is primarily a CLI tool (c2rust) that orchestrates these components, with extensive integration tests on real-world C projects (nginx, curl, sqlite, ruby, python2, libxml2, zstd, lua). The codebase is substantial and actively maintained, but relies heavily on unstable rustc internal APIs and LLVM/Clang, introducing maintenance risk. Several components exhibit high craftsmanship and are reusable in isolation.
Ruby2JS is a Ruby-to-JavaScript transpiler with a modular filter architecture. It converts Ruby source code into JavaScript by parsing Ruby AST (via Parser gem or Prism) and applying a pipeline of filters that transform Ruby idioms into JS equivalents. The project includes a self-hosting capability (transpiles itself to JS), a Rails-like micro-framework called 'juntos' for building full-stack JS apps, and build tool plugins for Vite, esbuild, Rollup, and Webpack. It supports multiple output targets (ESM, CJS, JSX, React, Lit, Stimulus, etc.) and framework-specific filters for Rails, Phlex, Vue, Svelte, Astro, and more. The architecture is well-structured with clear separation between parsing, filtering, conversion, and serialization. The codebase is actively maintained with extensive test coverage and a monorepo structure for npm packages.
Amber is a Rust-based compiler that transpiles a high-level, statically-typed programming language into shell scripts (Bash, Zsh, Ksh). It provides a modern language with features like functions, type inference, generics, optional arguments, failable types, imports, loops, range expressions, array operations, and a standard library for file system, text, HTTP, math, and environment operations. The compiler architecture is modular: a CLI entry point (src/main.rs) dispatches to subcommands (build, run, eval, check, docs, test). The compilation pipeline (src/compiler.rs) orchestrates tokenization via heraclitus-compiler, parsing into a typed AST, type checking with control-flow analysis, translation to an intermediate fragment AST, optimization passes (unused variable removal, ephemeral variable elimination), and final shell code generation with post-processing (e.g., shell syntax checking). The system supports multiple shell targets and generates version-specific code. The codebase is well-structured with procedural macros (meta crate) for keyword registration and context management, and a comprehensive test suite using snapshot testing (insta). While alpha quality, the engineering is serious and the architecture shows thoughtful design patterns.
Shed Skin is a Python-to-C++ transpiler that translates a restricted, implicitly statically typed subset of Python 3 into optimized C++. It employs type inference to resolve types and automatically generates C++ code, which is then compiled into native executables or shared library extensions. The architecture consists of a frontend (parser, type inference, virtual analysis), a C++ code generator, and a comprehensive runtime library (implementing Python built-in types, standard library modules, and bundling Boost headers for portability). The project includes over 80 example programs covering games, simulations, compression, AI, and graphics, serving as both showcases and benchmarks. A pytest unit test suite and a CMake/ctest integration test suite validate compiler correctness. The tool is primarily a command-line application invoked via `shedskin build <script>`, producing binaries that typically achieve 1-100x speedups over CPython.
H5 is a C# to JavaScript/TypeScript transpiler that enables C# developers to target web platforms. The system consists of a compiler service (h5-compiler dotnet tool), a translator core that converts C# AST to JavaScript/TypeScript using visitor patterns and attribute-driven rules, and runtime libraries providing .NET-like functionality in JavaScript. Key features include SDK-style project integration, extensive globalization support through locale definitions, and support for JavaScript interop via attributes like [H5.External] and [H5.Template]. The toolchain processes C# source files through lexical analysis (using NRefactory), semantic analysis, translation to target language syntax, and emits JavaScript/TypeScript output with optional source maps and HTML wrappers.
Dingo is a source-to-source transpiler for a custom language that extends Go with Rust-inspired features like sum types (enums), pattern matching, error propagation (`?`), safe navigation (`?.`), null coalescing (`??`), lambdas, tuples, and functional utilities (Option/Result). The transpiled output is clean, idiomatic Go with zero runtime overhead. The repository includes a full CLI tool (`dingo`) with build, run, fmt, lint, and update commands, as well as a language server (`dingo-lsp`) that wraps gopls as a proxy and uses source maps (`.dmap` binary format) for position translation. Editor integrations cover VS Code, Neovim, and JetBrains. The codebase is organized as a monolith with a modular plugin architecture for AST transformations. While actively developed and containing several well-crafted reusable components (source map binary format, error formatting with carets and suggestions, concurrent type cache, animated terminal mascot), the project shows signs of architectural fragmentation: duplicate parser implementations, a legacy preprocessor coexisting with a newer AST pipeline, multiple skipped tests, and known incomplete features tracked in TODOs. The scope is ambitious — many language features are implemented but the overall coherence suffers from incremental AI-assisted development patterns visible in the extensive ai-docs archive.