An opinionated list of awesome compiler frameworks, libraries, software and resources.
C/C++ · Golang · Javascript · Lisp · Python · Rust · Solidity · Typescript
Inspired by Awesome C++, organised and assembled from the Compiler section, for more details visit their project homepage. MIT license
List of C or C++ compilers
- 8cc - A Small C Compiler, It's intended to support all C11 language features while keeping the code as small and simple as possible.
- c - Compile and execute C "scripts" in one go!
- chibicc - chibicc is yet another small C compiler that implements most C11 features.
- Clang - A C compiler for LLVM. Supports C++11/14/1z C11. Developed by LLVM Team.
- GCC - GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP.
- PCC - A very old C compiler. Supports C99.
- AMD C++ Compiler - Developed by AMD.
- Intel C++ Compiler - Developed by Intel.
- Intel SPMD - Compiler for a variant of the C language, for single program, multiple data programming.
- lcc - The lcc retargetable ANSI C compiler.
- LLVM - Collection of modular and reusable compiler and toolchain technologies.
- Microsoft Visual C++ - MSVC, developed by Microsoft.
- Open WatCom - Watcom C, C++, and Fortran cross compilers and tools.
- Oracle Solaris Studio - C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris.
- TCC - A small C compiler written by Fabrice Bellard.
List of online C or C++ compilers
- CodeChef - Online compiler supports multiple programming languages like Python, C++, C, JavaScript, Rust, Go, Kotlin, and many more.
- Coliru - Online compiler/shell with support for various C++ compilers.
- Compiler Explorer - An interactive compiler with assembly output available.
- CompileOnline - Compile and Execute C++ online on Linux.
- Ideone - An online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages.
- OneCompiler - An online compiler supporting over 70 programming languages and database systems.
- Programiz - An online compiler for learners and developers.
- repl.it - A powerful yet simple tools and platforms for educators, learners, and developers.
- Rextester - Online compiler which provides several compilers(Clang, GCC, MSVC) and several editors.
- Try It Online - TIO is a family of online interpreters for an evergrowing list of practical and recreational programming languages.
- Wandbox - An online Clang/GCC compiler with Boost available.
- paiza.io - An online C/C++ compiler with multiple files supporting feature, GitHub(gist) integration and collaborative editing.
- InterviewBit - A simple and easy to use online C++ compiler.
List of C or C++ debuggers
- Comparison of debuggers - A list of Debuggers from Wikipedia.
- GDB - GNU Debugger.
- LLDB - The LLDB Debugger.
- Metashell - An interactive template metaprogramming shell which includes the MDB metadebugger.
- Valgrind - A tool for memory debugging, memory leak detection, and profiling.
- x64dbg - An open-source x64/x32 debugger for windows.
List of Golang compilers
- Go Compiler - The official Go compiler, supports AOT compilation, based on Plan 9 assembly and partially on LLVM.
- llgo - An older LLVM-based compiler for Go, now discontinued, but of historical value.
- TinyGo - A lightweight Go compiler based on LLVM, suitable for embedded systems and WebAssembly.
Tools for parsing Go code and generating the abstract syntax tree (AST)
- antlr4-go - The Go runtime for ANTLR, can be used to parse various languages, including Go.
- go/ast - Go's standard library for AST parsing, often used in conjunction with
go/parser
. - go/parser - The official Go parsing library, parses Go code and generates an AST.
- golangci-lint - A linter that uses multiple Go parsers to perform static analysis and code formatting checks.
- gocc - A Go-written LALR(1) parser generator, similar to YACC/Bison.
- goyacc - YACC Implementation in Go. Standard LALR(1) parser generator.
- Peg - A PEG parser generator for Go, supports grammar rule definitions.
- tuqqu/go-parser - Golang parser written in PHP.
Tools for converting Go code to other languages
- c4go - Transpile C code to Go code.
- esp32 - Transpile Go into Arduino code.
- f4go - Transpile FORTRAN 77 code to Go code.
- Gno - A smart contract language developed in the Cosmos ecosystem, based on Go syntax, supporting persistent computation.
- go2hx - Compiler from Go to Haxe to Javascript/C++/Java/C#.
- GopherJS - Transpiles Go code to JavaScript, allowing Go code to run in the browser.
- Yaegi - A Go interpreter that allows Go code to be transpiled into executable Go syntax trees.
Tools for debugging Go code
- Delve - The official Go debugger, supports breakpoints, variable inspection, and Goroutine debugging.
- gdb-go - GNU Debugger (GDB) support for Go, but with limited functionality; Delve is recommended.
- GoTrace - Go runtime's built-in tracing tool, useful for concurrency analysis and performance tuning.
- pprof - A Go-built performance profiling tool, useful for CPU and memory analysis.
List of Golang Variants
- cell-script - A new designed language for smart-contract programming on UTXO chain.
- Gno - A smart contract language in the Cosmos ecosystem, based on Go syntax, supporting persistent computation.
- Gop (Goplus) - A Go variant focused on engineering computation, with Python-like dynamic features and meta programming.
- Odin - A systems programming language influenced by Go, similar to Go + Rust.
- Vlang - A language with Go-like syntax but more concise, faster compilation speed, and memory safety mechanisms.
- Wa - A general-purpose programming language designed for for WebAssembly.
List of JavaScript compilers
- GraalJS - JavaScript engine in GraalVM, allowing interoperability with JVM.
- Hermes - AOT JavaScript compiler by Meta, optimized for React Native.
- JavaScriptCore (JSC) - JavaScript engine for WebKit, used in Safari.
- QuickJS - Lightweight JavaScript engine supporting ES2020, suitable for embedded use.
- SpiderMonkey - Mozilla’s JS engine, featuring Baseline and IonMonkey JIT.
- swc - A super fast JavaScript compiler written in Rust, significantly faster than Babel.
- V8 - Google Chrome and Node.js JavaScript engine with JIT compilation.
List of JavaScript transpilers
- Babel - Transpiles modern JavaScript into ES5 for compatibility.
- esbuild - A high-speed JavaScript bundler and compiler with tree-shaking and minification.
- sucrase - A fast JavaScript transpiler optimized for development.
- traceur-compiler - Traceur is a JavaScript.next-to-JavaScript-of-today compiler.
List of Javascript interpreters
- Deno - A modern JavaScript runtime, built on V8, with enhanced security.
- Duktape - Lightweight JavaScript interpreter for embedded systems.
- Espruino - JavaScript interpreter designed for microcontrollers like ESP8266/ESP32.
- Jerryscript - Ultra-lightweight JavaScript engine for IoT devices.
- MuJS - Minimal JavaScript interpreter with no dependencies.
List of Javascript parsers
- Acorn - A lightweight ECMAScript parser that supports the latest ES standard.
- Cherow - A fast and spec-compliant ECMAScript parser.
- Esprima - A widely used ECMAScript parser that generates ASTs.
- Seafox - A minimal JavaScript parser with ES2020 support.
- Tree-sitter JavaScript - Incremental JavaScript parser, used in LSP and syntax analysis.
List of Javascript syntax libraries
- AST Explorer - An online tool to visualize JavaScript ASTs.
- Escodegen - Converts JavaScript AST back to source code.
- Prettier - Code formatter that enforces a consistent style.
- Recast - JavaScript AST manipulation library for code transformation 8000 .
- Terser - Successor to UglifyJS, optimized for ES6+.
- UglifyJS - JavaScript minifier, optimizer, and obfuscator.
List of Javascript debuggers
- Chrome DevTools - Built-in Chrome debugging tools with breakpoints and performance analysis.
- Firefox DevTools - Firefox’s debugging tools, similar to Chrome DevTools.
- ndb - Enhanced Node.js debugger based on Chrome DevTools.
- Node.js Inspector -
node --inspect
for debugging Node.js with Chrome DevTools.
List of JavaScript Variants
- CoffeeScript - A syntactic sugar layer over JavaScript, compiles to JS.
- Flow - A static type checker by Meta, similar to TypeScript but with optional typing.
- JScript - A deprecated JavaScript variant from Microsoft for older Internet Explorer versions.
- LiveScript - A functional programming variant of CoffeeScript with pattern matching.
- Nasal-Interpreter - Nasal is an ECMAscript-like language.
- Clojure - The official Clojure compiler, compiles to JVM bytecode.
- ClojureScript - Compiles to JavaScript, targeting browsers and Node.js.
- Babashka - A GraalVM-based Clojure interpreter, optimized for scripting.
- Joker - A lightweight Clojure interpreter written in Go.
- Arcadia - A Clojure implementation for Unity game development.
- ABCL (Armed Bear Common Lisp) - A Common Lisp implementation for the JVM.
- Clasp - A Common Lisp implementation based on LLVM, interoperable with C++.
- CMUCL - An early high-performance Common Lisp implementation.
- ECL (Embeddable Common Lisp) - A lightweight implementation that compiles to C code.
- LispWorks - A commercial Common Lisp implementation supporting multiple platforms.
- SBCL (Steel Bank Common Lisp) - A high-performance JIT compiler based on CMUCL.
- Emacs Bytecode Compiler - The built-in bytecode compiler for Emacs Lisp.
- Native-Comp (gccemacs) - A native Emacs Lisp compiler using GCC, improving performance.
- Bigloo - A Scheme compiler that generates C, JVM, and .NET code.
- Chicken Scheme - AOT compiler to C, suitable for embedded development.
- Chez Scheme - A high-performance Scheme implementation supporting AOT and JIT.
- Gambit - Compiles Scheme to efficient C code.
- Guile - The GNU Scheme interpreter and compiler, embeddable in C applications.
- Kawa - A Scheme implementation targeting the JVM.
- Larceny - A Scheme compiler with multiple backend targets.
- [MIT/GNU Scheme](MIT/GNU Scheme) - A classic Scheme compiler.
- Racket - A powerful Lisp variant, supporting JIT compilation and DSL creation.
- Arc - A Lisp dialect developed by Paul Graham, focused on simplicity and flexibility.
- AutoLISP - A Lisp dialect integrated into AutoCAD for automating drawing tasks.
- Calcit - Indentation-based ClojureScript dialect in Rust and compiling to JavaScript ES Modules.
- Carp - A statically typed Lisp for system programming, compiles to native code via AOT.
- Clarity - A Lisp-like smart contract language for Stacks blockchain.
- EuLisp - A European Lisp dialect aimed at unifying features of Common Lisp and Scheme.
- Fennel - A Lisp variant based on Lua, compiling to Lua code, ideal for LuaJIT.
- Ferret - A Racket-style Scheme variant that supports WebAssembly.
- Franz Lisp - An early Lisp implementation, historically significant but no longer maintained.
- GOAL - A Lisp dialect developed by Naughty Dog for PlayStation 2 game development.
- Hy - A Lisp that compiles directly to Python’s AST for seamless integration with Python.
- Interlisp - An early Lisp dialect with an integrated programming environment, mainly used in Xerox systems.
- ISLISP - A standardized Lisp dialect focused on providing a small yet powerful core language.
- Janet - A lightweight Lisp supporting AOT and JIT compilation, suitable for embedded and scripting.
- LeLisp - A Lisp dialect developed in France, mainly used for AI research.
- LFE - A Lisp dialect running on the Erlang VM, combining Lisp macros with Erlang's concurrency model.
- Maclisp - A Lisp dialect developed at MIT in the 1960s, influential in later Lisp dialects.
- MDL - A Lisp dialect developed at MIT for AI and computer science research.
- newLISP - A lightweight Lisp dialect suited for scripting and general programming tasks.
- NIL - A Lisp implementation developed at MIT for VAX computers, no longer maintained.
- PicoLisp - A minimal and efficient Lisp dialect suitable for embedded systems and application development.
- PSL - A Lisp implementation designed to be portable across multiple hardware and OS platforms.
- RPL - A Lisp dialect developed by Hewlett-Packard for its calculators, using Reverse Polish Notation.
- SKILL - A Lisp dialect developed by Cadence Design Systems for electronic design automation (EDA).
- Spice Lisp - A Lisp dialect historically used in the development of CMUCL.
- T - A Scheme-derived Lisp dialect developed at Yale, designed for high-performance systems programming.
- Zetalisp - A Lisp dialect developed for Lisp Machines, influencing the development of Common Lisp.
- Wasp Lisp - A Scheme-inspired language designed for WebAssembly and frontend development.
Organising and assembling parts content from Awesome Python, for more details visit their project homepage. CC BY 4.0 license
Implementations of Python
- cpython - Default, most widely used implementation of the Python programming language written in C.
- cython - Optimizing Static Compiler for Python.
- clpython - Implementation of the Python programming language written in Common Lisp.
- ironpython - Implementation of the Python programming language written in C#.
- micropython - A lean and efficient Python programming language implementation.
- numba - Python JIT compiler to LLVM aimed at scientific Python.
- peachpy - x86-64 assembler embedded in Python.
- pypy - A very fast and compliant implementation of the Python language.
- pyston - A Python implementation using JIT techniques.
- RustPython - A Python Interpreter written in Rust.
- Vyper - Vyper is a contract-oriented, pythonic programming language that targets the Ethereum Virtual Machine (EVM).
Interactive Python interpreters (REPL)
- bpython - A fancy interface to the Python interpreter.
- Jupyter Notebook (IPython) - A rich toolkit to help you make the most out of using Python interactively.
- ptpython - Advanced Python REPL built on top of the python-prompt-toolkit.
List of Python debugging tools
- ipdb - IPython-enabled pdb.
- pudb - A full-screen, console-based Python debugger.
- manhole - Debugging UNIX socket connections and present the stacktraces for all threads and an interactive prompt.
- python-hunter - A flexible code tracing toolkit.
- py-spy - A sampling profiler for Python programs. Written in Rust.
- vprof - Visual Python profiler.
- django-debug-toolbar - Display various debug information for Django.
- flask-debugtoolbar - A port of the django-debug-toolbar to flask.
- icecream - Inspect variables, expressions, and program execution with a single, simple function call.
- pyelftools - Parsing and analyzing ELF files and DWARF debugging information.
Organising and assembling parts content from Awesome Rust, for more details visit their project homepage. CC0-1.0 license
List of Rust compilers
- rustc - Rust compiler.
- rust-analyzer - A Rust compiler front-end for IDEs.
- rustc_codegen_c - This a C codegen backend for rustc, which lowers Rust MIR to C code and compiles it with a C compiler.
- rustc_codegen_cranelift - create an alternative codegen backend for the rust compiler based on Cranelift.
- rustc_codegen_gcc - libgccjit AOT codegen for rustc, loaded by the existing rustc frontend, but benefits from GCC.
- rust-lang/llvm-project - Rust-specific fork of LLVM.
- rust-playground - Allows you to experiment with Rust before you install it locally.
List of Rust debuggers
- CodeLLDB - A native debugger extension for VSCode based on LLDB.
- gdbgui - Browser based frontend for gdb to debug C, C++, Rust, and go.
- Tracexec - Tracer for execve{,at} and pre-exec behavior, launcher for debuggers.
List of parsers
- Chomp - A fast monadic-style parser combinator.
- Combine - parser combinator library.
- grmtools - A LR parser with better error correction.
- lady-deirdre - A framework for new programming languages and LSP servers.
- LALRPOP - LR(1) parser generator.
- Nom - parser combinator library.
- Oak - A typed PEG parser generator (compiler plugin).
- Pest - The Elegant Parser.
- rust-peg - Parsing Expression Grammar (PEG) parser generator.
- Tree-Sitter - A parser generator tool and an incremental parsing library geared towards programming tools.
Static analysis
- MIRAI - an abstract interpreter operating on Rust's mid-level intermediate representation (MIR)
- static_assertions - Compile-time assertions to ensure that invariants are met
- verus - Verified Rust for low-level systems code
List of transpilers
- m2cgen - A CLI tool to transpile trained classic machine learning models into a native Rust code with zero dependencies.
- c2rust - C to Rust translator and cross checker built atop Clang/LLVM.
- Corrode - A C to Rust translator written in Haskell.
Other dialects and variants
- MoonBit - An end-to-end programming language toolchain for cloud and edge computing using WebAssembly.
- Noir - A domain specific language for zero knowledge proofs.
- aderyn - Rust-based solidity smart contract static analyzer designed to help find vulnerabilities in Solidity code bases.
- charcoal - Charcoal is a Solidity-to-Sway translator written in Rust.
- era-compiler-solidity - ZKsync Compiler Toolchain for Solidity and Yul.
- ethdebug - A standard debugging data format for smart contracts on Ethereum-compatible networks.
- evmdis - EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations.
- ocaml-solidity - Ocaml-solidity provides a Solidity parser and typechecker.
- pyrometer - A tool for analyzing the security and parameters of a solidity smart contract.
- Remix - Online realtime compiler and runtime.
- revive - Solidity compiler and YUL recompiler to LLVM, targetting RISC-V on PolkaVM.
- SIF - Solidity code instrumentation and analysis framework.
- slang - A modular set of compiler APIs empowering the next generation of Solidity code analysis and developer tooling.
- Slither - Solidity static analysis framework, a suite of vulnerability detectors, prints visual information about contract details etc.
- sol-repl - a REPL to provide instant feedback for Solidity snippets.
- sol-to-o1js - Solidity Compiler & Transpiler for Mina.
- sol2uml - Unified Modeling Language (UML) class diagram generator for Solidity contracts.
- solana-solidity.js - Compile, deploy, and use Solidity contracts on Solana.
- solang - Solidity Compiler for Solana, Polkadot and Stellar.
- solar - Blazingly fast, modular and contributor friendly Solidity compiler, written in Rust.
- solc-js - Javascript bindings for the Solidity compiler.
- solc - Solidity compiler bindings for Deno.
- solgraph - Visualize control flows for smart contract security analysis.
- solhint - Solhint is an open-source project to provide a linting utility for Solidity code.
- Solidity Parser for JavaScript - A Solidity parser for JS built on top of a robust ANTLR4 grammar.
- solidity-parser-antlr - A Solidity parser for JS built on top of a robust ANTLR4 grammar.
- solidity-repl - Ethereum Solidity REPL.
- solidity-rs - Solidity 0.8.X AST parsing and analysis in Rust.
- solidity - Official Compiler for the Solidity Smart Contracts Programming Language.
- SOLL - SOLL is a new compiler for generate Ewasm from solidity and yul.
- Soltsice - Solidity & TypeScript Integration, Configuration and Examples.
- sulk - Solidity compilation without the tears.
- surya - Utility tool for smart contract systems, offering a number of visual outputs and information about the contracts’ structure.
- warp - Warp is a Solidity to Cairo Compiler, write/migrate Solidity to Cairo for easy onboarding into the StarkNet ecosystem.
List of Typescript compilers
- TypeScript Compiler (tsc) - The official TypeScript compiler that transpiles TS to JS with type checking.
- TypeScript Go - A Go implementation of the TypeScript compiler.
List of Typescript parsers
- TypeScript Compiler API - Official TypeScript AST and parsing tools.
- swc parser - A superfast TypeScript parser written in Rust.
List of Typescript syntax libraries
- Prettier - Code formatter for TypeScript.
- ts-morph - TypeScript AST manipulation library based on the TypeScript Compiler API.
List of Typescript debuggers
- VS Code Debugger - Built-in TypeScript debugging support in VS Code.
- WebStorm Debugger - Advanced TypeScript debugging tools in WebStorm.
List of TypeScript variants
- AssemblyScript - A TypeScript-like language for WebAssembly.
- ReScript - R 514F eScript is a robustly typed language that compiles to efficient and human-readable JavaScript.
Please take a quick gander at the contribution guidelines for details. Thanks to all contributors; you rock!
If you see a project or link here that is no longer maintained or is not a good fit, please submit a pull request to improve this document. Thank you!