8000 GitHub - shepardo/awesome-compilers2: An opinionated list of awesome compiler frameworks, libraries, software and resources.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

shepardo/awesome-compilers2

 
 

Folders and files

NameName
Last commit message
< 8000 div title="Last commit date" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit">Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

awesome-compilers

An opinionated list of awesome compiler frameworks, libraries, software and resources.

Contents

C/C++ · Golang · Javascript · Lisp · Python · Rust · Solidity · Typescript

C/C++

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.

Golang

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.

JavaScript

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.

Lisp

Clojure

  • 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.

Common Lisp

Emacs Lisp

Scheme

  • 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.

Other dialects and variants

  • 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.

Python

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)

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.

Rust

Organising and assembling parts content from Awesome Rust, for more details visit their project homepage. CC0-1.0 license

List of Rust compilers

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.

Solidity

  • 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.

TypeScript

List of Typescript compilers

List of Typescript parsers

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

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.

Contributing

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!

About

An opinionated list of awesome compiler frameworks, libraries, software and resources.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0