Awesome Lists

awesome-compilers

by aalhour

awesome listpushed over 2 years ago

sunglasses Curated list of awesome resources on Compilers, Interpreters and Runtimes

AI summary

Compiler toolkit

A curated collection of resources and learning materials for building compilers, interpreters, and runtimes.

stars
9K
forks
651
watching
294
awesome lists
2
entries
344
View on GitHubaalhour.com/awesome-compilers

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/aalhour/awesome-compilers/links.svg)](https://awesome.facts.dev/awesome/aalhour/awesome-compilers)
HTML
<a href="https://awesome.facts.dev/awesome/aalhour/awesome-compilers"><img src="https://awesome.facts.dev/shield/aalhour/awesome-compilers/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/aalhour/awesome-compilers/links.svg

What's in the list

344 links in 85 sections, with live GitHub stats.activeno commit in 2y

Books

Books / Structure and Interpretation of Computer Programs

Books

Books / Crafting Interpreters

Books

Books / Create Your Own Programming Languauge

  • HN

    Discussions:

Books

  • Engineering a Compiler

    The modern textbook on Compilers Construction, covering SSA-Form and recent research on Code Generation

  • Essentials of Programming Languages

    Fundamental concepts of programming languages with a focus on Semantics, Interpretation and CPS (Continuation Passing Style)

  • Language Implementation Patterns

    Learn the patterns behind building programming languages and build an interpreter yourself, using ANTLR

  • Modern Compiler Implementation in ML

    Build a compiler using ML (MetaLanguage) with a textbook that has one of the best coverage on all compiler stages. The book comes with a reference compiler implementation to guide your software development process

Books / Modern Compiler Implementation in ML

Books

Books / Programming Languages: Application and Interpretation

Books

Books / Project Oberon

Books

Books / Writing Compilers and Interpreters: A Software Engineering Approach

Books

Books / Parsing Techniques: A Practical Guide

Books

Papers

Papers / A Micro-Manual for LISP - Not the Whole Truth, J. McCarthy

Papers

Papers / MOV is Turing-Complete, S. Dolan

  • HN

    Discussions: ,

Papers

Specifications

Courses

Courses / Design and Construction of Compilers, University of Texas

  • PDF

    Lecture Notes: ,

Courses

Courses / NPTEL's Compiler Design Course

Courses

Courses / Virtual Machines Summer School 2016 (VMSS 2016)

Talks and Conferences

Talks and Conferences / Curry On! Conference

Talks and Conferences

Talks and Conferences / The MoVfuscator: turning mov into a soul crushing RE nightmare

  • HN

    Discussions: ,

Talks and Conferences / Courses

Talks and Conferences

Articles

Articles / Adventures in JIT Compilation by Eli Bendersky:

Articles

Articles / Graal and Truffel

Articles

Tutorials

Tutorials / How I Wrote a Programming Language, and How You Can Too

Tutorials

Tutorials / Little Lisp Interpreter

Tutorials

Tutorials / LLVM Tutorial: Implementing Kaleidoscope

Tutorials

Community Discussions

Community Discussions / How to Write a Prolog Interpreter in a Purely Functional Language

Community Discussions

Tools and Frameworks / Language Agnostic

  • B3: The Bare Bones Backend

    WebKit's optimizing JIT Compiler for procedures containing C-like code

  • Capstone

    Lightweight multi-platform, multi-architecture disassembly framework with bindings to various famous programming languages

  • Keystone

    Lightweight multi-platform, multi-architecture assembler framework with bindings to various famous programming languages

  • LLILCL

    LLVM-based Compiler Backend for .NET Core

  • LLVM

    The LLVM Compiler-Backend Framework

  • MicroVM

    The "Mu" Framewrok for Programming Languages development based on the MuVM Specification

  • Movfuscator Compiler

    The compiles programs into "mov" instructions, and only "mov" instructions

  • QBE: The Quick Backend

    Pure C embeddable SSA-based compiler backend

  • Rubinius

    Programming Languages Development Platform

  • Summus

    Basic, reusable, compiler-frontend implementation using LLVM as a backend

  • ZetaVM

    Multi-Language Platform for Dynamic Programming Languages

Tools and Frameworks / C / C++

  • AsmJIT

    Complete x86/x64 JIT and Remote Assembler for C++

  • GCC

    The GNU Compiler Collection (C as a Backend)

  • LCC

    The lcc retargetable ANSI C compiler (C as a Backend)

  • libFirm

    C-library that provides a graph-based intermediate representation, optimizations, and assembly code generation suitable for use in compilers

  • libJIT

    Library for generic Just-In-Time compiler functionality independent of any particular bytecode, language, or runtime

  • myJIT

    Library for machine-code generation and execution at run-time

  • OrangeC

    Win32 C11/C++2014 compiler and toolchain

  • PCC

    The Portable C Compiler (C as a Backend)

  • Ragel

    Ragel State Machine Compiler

  • TCC

    The Tiny C Compiler (C as a Backend)

Tools and Frameworks / CLR

  • Cecil

    Library to generate and inspect programs and libraries in the ECMA CIL format

  • DotNetPELib

    Library to read and write .net assemblies in C++11

  • ILSpy

    .NET Decompiler

  • Reflector

    .NET Decompiler

  • Reflexil

    Assembly code editor which can be used as a plugin with other .NET/CLR tools

Tools and Frameworks / D

  • dunnart

    LALR(1) Parser Generator

  • FancyPars-lite

    Fast parser generator

  • libdparse

    Library allowing to build lexers and parsers. Contains a lexer and a parser for the D language itself

  • llvm-d

    D bindings for LLVM

  • Pegged

    design, test and generate parsers for PEG grammars

Tools and Frameworks / Go

  • goyacc

    YACC Implementation in Go. Standard LALR(1) parser generator

  • LLVM Go binding

    Official Go LLVM binding

Tools and Frameworks / Graal

  • Graal

    High-Performance Polyglot Runtime

  • Graal Core

    Compiler and Truffel Partial Evaluator

  • Graal VM

    Graal's multi-language VM distribution

Tools and Frameworks / Haskell

  • Bound

    / / - Libraries for manipulating bound variables

  • Hoopl

    Higher-order optimization library

  • llvm-general

    Haskell bindings for LLVM

  • Parsec

    / / / / + - Parsers for every use case

  • wl-pprint-text

    / - Walder-style pretty-printing libraries

Tools and Frameworks / JavaScript

  • IRHudra

    Tool for displaying intermediate representations used by V8 and Dart VM optimizing compilers

Tools and Frameworks / JavaScript / IRHudra

Tools and Frameworks / JavaScript

  • JISON

    Context-free grammar parser generator for JavaScript

Tools and Frameworks / JavaScript / JISON

Tools and Frameworks / JavaScript

  • Nearley

    Simple, fast, powerful parser toolkit for JavaScript

  • Ohm

    A library and language for building parsers, interpreters, compilers, etc

  • PEG.js

    Simple parser generator for JavaScript

Tools and Frameworks / JVM

  • ANTLR

    Parser generator for reading, processing, executing, or translating structured text or binary files

  • BYAAC/J

    BYACC/Java is an extension of the Berkeley v 1.8 YACC-compatible parser generator for Java

  • CGLIB

    High level API library for generating and transforming Java Byte Code

  • FCP JVM

    JVM Backend for generating Java Byte Code that conforms to the JDK v1.5+ Specification and the Dalvik VM

  • JavaCC

    Java Compiler Construction and Parser Generator Toolkit

  • JavaCPP Presets for LLVM

    Library for easily interacting with the LLVM API

  • JFlex

    JFlex is a lexical analyzer generator for Java with full Unicode support

  • JLex

    JLex is a lexical analyzer generator, that can be used in combination with CUP

Tools and Frameworks / Kotlin

Tools and Frameworks / Python

Tools and Frameworks / Rust

  • Combine

    Parser Combinator Library for Rust

  • IronLLVM

    Safe LLVM bindings for Rust

  • LALRPOP

    LR(1) parser generator for Rust

  • Nom

    Parser Combinator Framework

  • PEG

    PEG Parser Generator

  • Pest

    PEG Parser Generator

  • RLS

    The Rust Language Server implementation (aka RLS)

Compilers and Interpreters / Serious Projects

Compilers and Interpreters / Serious Projects / Lua's Interpreter

Compilers and Interpreters / Serious Projects

Compilers and Interpreters / Educational and Toy Projects

  • Akilang

    A compiler for a simple language, built with Python and LLVM

  • amacc

    Small C Compiler generating ELF executable for Arm architecture

Compilers and Interpreters / Educational and Toy Projects / amacc

  • HN

    Discussions:

Compilers and Interpreters / Educational and Toy Projects

  • Black

    Scheme interpreter for the Reflective Programming Language "Black", by Kenichi Asai's

Compilers and Interpreters / Educational and Toy Projects / Black

Compilers and Interpreters / Educational and Toy Projects

  • C4

    C Lang in 4 Functions

Compilers and Interpreters / Educational and Toy Projects / C4

  • HN

    Discussions:

Compilers and Interpreters / Educational and Toy Projects

  • CarpVM

    Experimental VM implementation in C

  • Charly

    Interpreter for a dynamically typed language written in Crystal

  • Dale

    Lisp-flavoured C: a system programming language

  • EasyLang

    Easy Programming Language / VM

  • Eschelle

    Open source cross platform multi-paradigm language with VM & JIT

  • Gecho

    Simple-stack language implementation in C

  • gocaml

    Minimal functional programming language implementation in Go and LLVM

  • gone

    Compiler for a tiny programming language called Gone, implemented using Python 3.6, SLY and llvmlite. Developed as part of the January 2018 , under the supervision of David Beazly

  • Hython

    Haskell-powered Python 3 interpreter

Compilers and Interpreters / Educational and Toy Projects / Hython

Compilers and Interpreters / Educational and Toy Projects

  • llgo

    Go frontend for LLVM written in Go

  • MAL

    : Make a Lisp - Clojure-inspired Lisp interpreter implemented in 64 languages

  • MetaScala

    Metacircular JVM implementation in Scala

  • mini-js

    Experimental self-hosted JavaScript compiler in 1K LoC

  • MunVM

    Lua VM & Compiler in C

  • MY-BASIC

    An embeddable BASIC dialect interpreter in C with modern paradigms

  • oberonc

    A single pass, self-hosting compiler for the Oberon-07 programming language. It targets the JVM

  • Poprc

    Compiler for the Popr Language

  • PyCOOLC

    Compiler for the COOL Programming Language written in Python 3

  • RabbitVM

    RISC-based VM implementation in C

  • Squint

    A peephole optimizer for educational compilers generating stack based assembly

  • StackVM

    Virtual Machine with an integrated VRAM display

  • stack_cpu

    Stack-machine simulator

  • The Super Tiny Compiler

    Tiny educational compiler project in JavaScript

Compilers and Interpreters / Educational and Toy Projects / The Super Tiny Compiler

  • HN

    Discussions:

Compilers and Interpreters / Educational and Toy Projects

  • tinyc.c

    Tiny-C language compiler in C

  • tisp

    "Time is Space" Programming Language Interpreter

  • Ultra Tiny Compiler

    Another tiny compiler in less then 90 lines of code

Runtimes and VMs

  • CoreCLR

    The .NET's Common Language Runtime

  • HHVM

    Facebook's Open Source VM for running Hack and PHP programs

Runtimes and VMs / JVM Implementations:

Blogs

Communities

  • /r/Compilers

    Subreddit community about the theory and development of compilers

  • /r/ProgrammingLanguages

    Subreddit community that is dedicated to discussion of programming languages, programming language theory, design, their syntax and compilers

Verticals

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.