awesome-compilers

Compiler toolkit

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

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

GitHub

9k stars
296 watching
648 forks
last commit: 6 months ago
Linked from 2 awesome lists

awesomeawesome-listbookscompilerinterpreterlistprogramming-languageresourcesruntimevirtual-machine

Learning / Books

Computer Systems: A Programmer’s Perspective General treatment of Computer Systems including Compilers, Interpreters and Runtimes
Elements of Computing Systems How to build a computer from Nand Gates all the way to Compilers and Operating Systems
Structure and Interpretation of Computer Programs Study the building blocks of computation using Scheme by building a Scheme interpreter in a Scheme!

Learning / Books / Structure and Interpretation of Computer Programs

HTML5/EPUB version Other editions:

Learning / Books

Basics of Compiler Design Provides a short treatment of the basic concepts
Beautiful Racket How to make your own Programming Language with Racket
Build Your Own Lisp Learn C and build your own Lisp Programming Language in 1000 LoC
Compilers: Principles, Techniques and Tools The Dragons Book. A classic textbook on Compiler Construction
Crafting Interpreters An all-stop-shop for learning (nearly) everything you need to learn to build an interpreted, full-featured, efficient scripting language

Learning / Books / Crafting Interpreters

GitHub Repo 9,030 4 months ago
HN Discussions:

Learning / Books

Create Your Own Programming Languauge Example-driven approach to building your own programming language with video tutorials and source code projects

Learning / Books / Create Your Own Programming Languauge

HN Discussions:

Learning / 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

Learning / Books / Modern Compiler Implementation in ML

MCI in C Other editions: ,

Learning / Books

Programming Language Pragmatics Integrated treatement of language design and implementation, the examples feature famous architectures like ARM and x86 64-bit
Programming Languages: Application and Interpretation Excellent introduction to the subject that uses an incremental approach to building programs. The mistakes are included too to highlight key concepts

Learning / Books / Programming Languages: Application and Interpretation

PDF

Learning / Books

Programming Languages: Theory and Practice Collected lecture notes for the course taught at Carnegie Mellon University, most suitable as an introductory text on the subject
Project Oberon The design of an operating system and compiler

Learning / Books / Project Oberon

2013 Edition Other editions:

Learning / Books

The BEAM Book 3,125 5 months ago Description of the ERTS (Erlang Runtime System) and the BEAM Virtual Machine
Virtual Machines Good book on how to build Virtual Machines especially tailored for the topic of building Programming Languages
Virtual Machines: Versatile Platforms for Systems and Processes Key textbook on the subject of Virtual Machines which examines virtual machine technologies across the disciplines that use them, e.g.: OS and Programming Languages
Write a Compiler in Go Well-known introduction to the Go programming language and its ecosystem through building a Compiler project
Write an Interpreter in Go Successor of the "Write a Compiler in Go" book, but this one builds an interpreter project instead
Writing Compilers and Interpreters: A Software Engineering Approach How to build Compilers using Java, this book is tailored for the working Software Engineer

Learning / Books / Writing Compilers and Interpreters: A Software Engineering Approach

Using C++ Other editions: ,

Learning / Books

Writing Interpreters and Compilers for the Raspberry Pi Using Python If you want to learn how to write interpreters and compilers, and at the same time learn how Python, Python bytecode, assembly language, and dynamic typing work, this is the book for you
Advanced Compiler Design and Implementation In-depth treatement of advanced design topics such as: Intermediate Representation, SSA, Code Optimization and the various processor architectures
Advanced Design and Implementation of Virtual Machines Step-by-step hollistic introduction to the design of Virtual Machine architectures, topics and algorithms. Contains illustrated figures and implementations for the algorithms in the book
Advanced Topics in Types and Programming Languages Intensive study of Type Systems, covering topics such as, but not limited to: Precise Type Analyses; Type Systems for Low-Level Languages and Advanced Techniques in ML-style Type Inference
A Retargetable C Compiler: Design and Implementation Examines the design and implementation of Icc, a production-quality, retargetable compiler, designed at AT&T Bell Labs for the ANSI C programming language
Building an Optimizing Compiler Fills the gap in the domain of code optimization. This book provides a high level design for a thorough optimizer, code generator, scheduler and register allocator for a generic modern RISC processor
Compiling with Continuations Introduction to CPS (Continuation-Passing Style) as an Intermediate Representation in Compiler for doing optimizations and program transformations
Design Concepts in Programming Languages Systematic exploration of techniques and ideas used in Programming Language Design, covers topics such as: Operational and Denotational Semantic techniques, Dynamic Semantic techniques and Static Semantic techniques
Instruction Level Parallelism This book precisely formulates and simplifies the presentation of Instruction Level Parallelism (ILP) compilation techniques
Linkers and Loaders Definitive text on the compile-time and runtime processes of linking and loading
Optimizing Compilers for Modern Architectures Optimizing program generation based on recent gains and breakthroughs in modern high-performance CPU architectures
Parsing Techniques: A Practical Guide Definitive guide on parsing algorithms and techniques, also contains an introduction to Formal Grammar and Parsing Theory

Learning / Books / Parsing Techniques: A Practical Guide

1st Edition, PDF

Learning / Books

The Garbage Collection Handbook: The Art of Automatic Memory Management The living-classic and definitive text on the topic of Garbage Collection, also covers hardware-based optimizations in light of modern advances in CPU architectures
The Implementation of Functional Programming Languages Classic textbook on implementing Functional Languages, covers Structured Types, Pattern Matching Semantics, Lambda Calculus Transformation, Polymorphic Type Checking and many other topics
The SSA Book The only in-depth study of SSA-form (Static Single Assignment Form) in book format
Types and Programming Languages Comprehensive introduction to the topic of Type Systems and Programming Languages from a Type-Theoretic perspective
Warren's Abstract Machine: Prolog in Haskell Introduction to WAM from Logic Programming in Prolog

Learning / Papers

A Brief History of JIT Compilation, J. Aycock
A Flexible Prolog Interpreter in Python, C. Bolz & M. Leuschel
A Graph Higher-Order IR, R. Leißa, M. Koster & S. Hack
A Micro-Manual for LISP - Not the Whole Truth, J. McCarthy

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

Neat and nice typeset 120 12 months ago Other editions:

Learning / Papers

A Prolog Interpreter in Python, C. Bolz
A Simple Multi-Processor Computer Based on Subleq, O. Mazonka, A. Kolodin
An Evil Copy: How the Loader Betrays You About security issues related to Dynamic Loading
An Incremental Approach to Compiler Construction
Compiler Construction Using Scheme, E. Hilsdale, J. Ashley, R. Dybvig & D. Friedman
Compiling with Continuations: Continued, A. Kennedy
Definitional Interpreters for Higher-Order Programming Languages, J. Reynolds
Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development, K. Wang, Y. Lin, S. Blackburn, M. Norrish & A. Hosking
Engineering Definitional Interpreters, J. Midtgaard, N. Ramsey, B. Larsen
Garbage Collection in an Uncooperative Environment, H. Boehm, M. Weiser
Machine Code Obfuscation via Instruction Set Reduction and CFG Linearization, C. Jonischkeit
MOV is Turing-Complete, S. Dolan

Learning / Papers / MOV is Turing-Complete, S. Dolan

HN Discussions: ,

Learning / Papers

Nanopass Framework for Commercial Compiler Development, A. Keep & R. Dybvig
Nanopass Framework for Compiler Education, D. Sarkar, O. Waddell & R. Dybvig
Notes on Graph Algorithms Used in Optimizing Compilers, C. Offner
Packrat Parsing Thesis on PEG, B. Ford
PEG-based transformer provides front-end, middle-end and back-end stages in a simple Compiler, I. Piumarta
Pycket: A Tracing JIT for a Functional Language
PyPy’s Approach to VM Construction, A. Rigo & S. Pedroni
RABBIT: A Compiler for SCHEME, G. Steele
Simple and Efficient Construction of SSA Form
SSA-based Register Allocation, S. Hack & G. Goos
The Essence of Compiling with Continuations, C. Flanagan, A. Sabry, B. Duba & M. Felleisen
The Page-Faults Weird Machine: Lessons in Instruction-less Computation, J. Bangert, S. Bratus, R. Shapiro, S. Smith
Trace-based JIT Compilation for Lazy Functional Languages, T. Schilling
Using Datalog with Binary Decision Diagrams for Program Analysis, J. Whaley, D. Avots, M. Carbin & M. Lam
C. Bolz’s Research Publications
Compilers Lab at Saarland University
Kenichi Asai
Packrat Parsing (PEG) Papers and Resources

Learning / Specifications

CLI (ECMA-335) Specification
Mu Specification
JVM SE8 Specification

Learning / Courses

Compilers Construction, Cambridge Introduction to compiler construction course from the University of Cambridge
Compiler Construction for Undergrads, RICE University Introduction to compiler construction and language translators course from the RICE University
YouTube Compilers Theory, Stanford - , , -Introduction to Compilers theory and construction course from Stanford
Design and Construction of Compilers, University of Texas Design and construction of compilers including lexical analysis, parsing, code generation techniques, error analysis and simple code optimizations

Learning / Courses / Design and Construction of Compilers, University of Texas

PDF Lecture Notes: ,

Learning / Courses

DSL Design and Implementation Summer School Summer School program on the topics of DSL Design and Implementation hosted by the EPFL University
Foundations of Programming Languages Concepts that underlie the design, definition, implementation and use of modern programming languages from a formal standpoint
Nand2Tetris: How to Build a Computer from First Principles, Part 2 This 2nd part of the Nand2Tetris course covers basic language design and elementary compiler construction concepts in addition to many other topics on a basic level
NPTEL's Principles of Compiler Design Course Introductory course from NPTEL on Compiler Design
NPTEL's Compiler Design Course Slightly more advanced course than their Principles of Compiler Design course, covers SSA Form to a good degree

Learning / Courses / NPTEL's Compiler Design Course

YouTube Video Playlist

Learning / Courses

Programming Languages: Part A, by Grossman Part 1 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming
Programming Languages: Part B, by Grossman Part 2 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming
Programming Languages: Part C, by Grossman Part 3 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming
Types, Logic, Semantics, and Verification from Oregon University's Summer School Summer School program that consists of 80 minute lectures presented by internationally recognized leaders in programming languages and formal reasoning research
Virtual Machines and Managed Runtimes, UCB CS294 Introductory course on Virtual Machines and Managed Runtimes from the University of Berkeley
Virtual Machines Summer School 2016 (VMSS 2016) VMSS is a Summer School program that aims to give an overview of the field, targeted at early career researchers

Learning / Courses / Virtual Machines Summer School 2016 (VMSS 2016)

YouTube Videos Playlist

Learning / Talks and Conferences

Curry On! Conference Programming Languages Conference

Learning / Talks and Conferences / Curry On! Conference

YouTube Channel

Learning / Talks and Conferences

Lang.NEXT Conference 2012
Lang.NEXT Conference 2014
LLVM Developers Meeting YouTube Channel
Anders Hejlsberg on Modern Compiler Construction
An Introduction to Combinator Compilers and Graph Reduction Machines
Building an Interpreter in RPython
CPython - A Ten-Hour Codewalk
Exploring Python’s Bytecode
How to Build a Virtual Machine Terence Parr gives an idea of the core mechanisms behind virtual machines by building one, in front of your eyes, from scratch. It is the same kind of commercial interpreter he made for Renault cars
Java AOT (Ahead of Time) Compilation
MetaScala: A Tiny DIY JVM Metascala is a tiny metacircular Java Virtual Machine (JVM) written in the Scala programming language
Meta-Tracing, RPython and PyPy
One VM to Rule Them All, One VM to Bind Them Tutorial on the Truffel technology
Programming Should Eat Itself StrangeLoop Talk on Reflective Programming and Kenichi Asai's Black Programming Language
Python, Linkers and Virtual Memory - PYCON US
Reverse Engineering the MOS 6502 CPU
Single Static Assignment Form Seminar Introductory seminar on SSA Form, Compiler Optimizations under it and its applications in other areas such as Program Analysis and Verification
The JVM (Java Virtual Machine) Architecture
The Most Beautiful Program Ever Written William Byrd on a Lisp interpreter written in 15 lines of Lisp
The MoVfuscator: turning mov into a soul crushing RE nightmare

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

HN Discussions: ,

Learning / Talks and Conferences / Courses

Part 1
Part 2
Part 3

Learning / Talks and Conferences

Type-Driven Development with Idris
Understanding Compiler Optimization

Learning / Articles

A Tourist’s Guide to the LLVM Source Code
Accidentally Turing Complete

Learning / Articles / Adventures in JIT Compilation by Eli Bendersky:

Part 1 - An Interpreter
Part 2 - An x64 JIT
Part 3 - LLVM
Part 4 - In Python

Learning / Articles

ALIVe: Automatic LLVM InstCombine Verifier
Graal and Truffel Obscure research project could radically accelerate innovation in programming language design

Learning / Articles / Graal and Truffel

Reddit Discussions:

Learning / Articles

How to Compile with Continuations
Interpreter, Compiler and JIT
Introducing the B3 JIT Compiler
LLVM Architecture Chapter from the book Architecture of Open Source Applications
LLVM for Graduate Students Introduction to doing research with the LLVM compiler infrastructure
Pratt Parsers: Expression Parsing Made Easy
Rust Compiler Walk-Through
Rust's Incremental Compilation
Rust’s Upcoming MIR
The Memory Models that Underlie Programming Languages

Learning / Tutorials

A Tutorial Implementation of a Dependently Typed Lambda Calculus
A Beginner's Guide to Linkers Tutorial for helping C & C++ programmers understand the essentials of what the linker does
Algorithm W Step By Step
Building a LISP from scratch with Swift
Compiler Optmization Tutorial
Hindley-Damas-Milner Tutorial 1,250 over 1 year ago Extensively documented walkthrough for typechecking a basic functional language using the Hindley-Damas-Milner algorithm
How I Wrote a Programming Language, and How You Can Too

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

Reddit Discussions:

Learning / Tutorials

Implementing a JIT Compiled Language with Haskell and LLVM
Kaleidoscope: Implementing a Language with LLVM in Objective Caml
Let’s Build A Simple Interpreter
Lisperator How to implement a programming language in JavaScript
Little Lisp Interpreter Interpreter that supports function invocation, lambdas, lets, ifs, numbers, strings, a few library functions, and lists in under 120 lines of JavaScript

Learning / Tutorials / Little Lisp Interpreter

GitHub Repository 608 over 3 years ago

Learning / Tutorials

lis.py, v1: (How to Write a (Lisp) Interpreter (in Python)) Tutorial by Peter Norvig on writing a simple Lisp interpreter
lis.py, v2: An ((Even Better) Lisp) Interpreter (in Python) Follow-up tutorial by Peter Norvig on making slightly better
LLVM Tutorial: Implementing Kaleidoscope

Learning / Tutorials / LLVM Tutorial: Implementing Kaleidoscope

Python version with LLVMPY

Learning / Tutorials

Metacompiler Tutorial, Part 1
Project: A Programming Language Chapter 11 from the book , 2nd Edition
Write You a Haskell
Writing a Language in Truffel Interpreter development tutorial using Truffel, by Cristian Esquivias

Learning / Community Discussions

Can we stop recommending the Dragon Book, please? StackExchange thread criticising the in favor of alternatives
What is difference between an LL and Recursive Descent parser?
@HN Does a compiler use all x86 instructions? - , - Article discussions on HN and Reddit
How to Write a Compiler Article discussion on Reddit
How to Write a Very Basic Compiler
How to Write a Prolog Interpreter in a Purely Functional Language

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

Reddit Discussions:

Learning / Community Discussions

Implementing Type Inference
I want to build a VM, any good references?
Resources for Amatuer Compilers Writers
What are the good open source implementations of Java Virtual Machine?
What are the latest research trends in Compilers and PLs

Tools and Frameworks / Language Agnostic

B3: The Bare Bones Backend WebKit's optimizing JIT Compiler for procedures containing C-like code
Capstone 7,605 8 days ago Lightweight multi-platform, multi-architecture disassembly framework with bindings to various famous programming languages
Keystone 2,294 3 months ago Lightweight multi-platform, multi-architecture assembler framework with bindings to various famous programming languages
LLILCL 1,515 over 2 years ago 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 9,461 6 months ago The compiles programs into "mov" instructions, and only "mov" instructions
QBE: The Quick Backend Pure C embeddable SSA-based compiler backend
Rubinius 3,066 over 1 year ago Programming Languages Development Platform
Summus 234 about 6 years ago Basic, reusable, compiler-frontend implementation using LLVM as a backend
ZetaVM 635 over 2 years ago Multi-Language Platform for Dynamic Programming Languages

Tools and Frameworks / C / C++

AsmJIT 3,972 8 days ago Complete x86/x64 JIT and Remote Assembler for C++
GCC The GNU Compiler Collection (C as a Backend)
LCC 2,025 about 2 months ago 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 55 7 months ago 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 14 over 7 years ago LALR(1) Parser Generator
FancyPars-lite 5 almost 5 years ago Fast parser generator
libdparse 115 3 months ago Library allowing to build lexers and parsers. Contains a lexer and a parser for the D language itself
llvm-d 56 over 4 years ago D bindings for LLVM
Pegged 534 about 1 year ago 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 20,398 5 days ago High-Performance Polyglot Runtime
Graal Core Compiler and Truffel Partial Evaluator
Graal VM Graal's multi-language VM distribution

Tools and Frameworks / Haskell

Bound 122 4 months ago / / - Libraries for manipulating bound variables
Hoopl 73 over 1 year ago Higher-order optimization library
llvm-general Haskell bindings for LLVM
Parsec 847 6 months ago / / / / + - Parsers for every use case
wl-pprint-text 7 about 1 year ago / - 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

GitHub Repo 433 almost 7 years ago

Tools and Frameworks / JavaScript

JISON Context-free grammar parser generator for JavaScript

Tools and Frameworks / JavaScript / JISON

GerHobbelt/jison 118 over 3 years ago active fork of jison with bunch of improvements

Tools and Frameworks / JavaScript

Nearley 3,607 7 days ago Simple, fast, powerful parser toolkit for JavaScript
Ohm 5,001 2 months ago 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 4,805 3 months ago 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 2,677 8 days ago 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

The Whimsy Compiler Framework 125 about 3 years ago Compiler framework research project in Kotlin

Tools and Frameworks / Python

AST Python's builtin Abstract Syntax Tree package
Dis Python's builtin Disassembler package
Parsing Pure-Python module that implements an LR(1) parser generator, as well as CFSM and GLR parser drivers
PLY Implementation of lex and yacc parsing tools for Python
PyParsing Alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions
RPLY 381 almost 2 years ago Port of the PLY project to RPython
RPython RPython is a framework for the implementatation of dynamic languages
List of Language Parsing Tools at the Python Wiki
Survey of Python Parsers, by Ned Batchelder

Tools and Frameworks / Rust

Combine 1,302 8 months ago Parser Combinator Library for Rust
IronLLVM 119 almost 8 years ago Safe LLVM bindings for Rust
LALRPOP 1 over 1 year ago LR(1) parser generator for Rust
Nom 9,477 about 2 months ago Parser Combinator Framework
PEG 1,467 4 months ago PEG Parser Generator
Pest 4,658 about 1 month ago PEG Parser Generator
RLS 3,514 about 2 years ago The Rust Language Server implementation (aka RLS)

Compilers and Interpreters / Serious Projects

Babel.js 43,241 6 days ago Next-generation JavaScript Compiler
BOLT 2,518 over 1 year ago Binary Optimization and Layout Tool
ChezScheme's Compiler 6,987 7 days ago ChezScheme Language Compiler
ELENA Compiler 236 11 days ago Elena programming language
Eta' Compiler 2,607 over 2 years ago JVM-based Compiler for the Eta Programming Language
Frege's Compiler 3,642 about 2 years ago JVM-based Compiler for the Frege Programming Language
Gluon's Compiler 3,220 9 months ago Embedded Language Compiler written in Rust
HHVM 18,188 4 days ago Virtual Machine for running programs written in Hack and PHP
Lily's Interpreter 1,081 3 months ago
Lua's Interpreter 1,456 about 5 years ago Official Lua Language Interperter

Compilers and Interpreters / Serious Projects / Lua's Interpreter

Lua's Annotated Source Code Annotated source code of the Lua Programming Language Interpreter v5.1.4

Compilers and Interpreters / Serious Projects

Mirah's Compiler 864 about 6 years ago JVM-based Compiler for the Mirah Programming Language
Nim's Compiler 16,593 6 days ago
P Lang 3,040 17 days ago The P Programming Language Runtime
Red's Compiler 5,547 6 days ago
Roslyn 19,064 6 days ago The .NET "Roslyn" Compiler Platform
Simple-MSIL-Compiler C compiler that compiles to CLR
TypeScript's Compiler 101,081 8 days ago
Wren's Compiler 6,928 over 1 year ago
Zig's Compiler 34,929 8 days ago Zig Language Compiler

Compilers and Interpreters / Educational and Toy Projects

Akilang 99 about 5 years ago A compiler for a simple language, built with Python and LLVM
amacc 1,015 over 1 year ago 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

GitHub Mirror 195 over 2 years ago Other sources:

Compilers and Interpreters / Educational and Toy Projects

C4 9,741 11 months ago C Lang in 4 Functions

Compilers and Interpreters / Educational and Toy Projects / C4

HN Discussions:

Compilers and Interpreters / Educational and Toy Projects

CarpVM 980 almost 4 years ago Experimental VM implementation in C
Charly 199 over 4 years ago Interpreter for a dynamically typed language written in Crystal
Dale 1,028 about 1 month ago Lisp-flavoured C: a system programming language
EasyLang 25 over 6 years ago Easy Programming Language / VM
Eschelle 5 over 6 years ago Open source cross platform multi-paradigm language with VM & JIT
Gecho 16 almost 13 years ago Simple-stack language implementation in C
gocaml 748 over 4 years ago Minimal functional programming language implementation in Go and LLVM
gone 28 almost 5 years ago 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 579 over 7 years ago Haskell-powered Python 3 interpreter

Compilers and Interpreters / Educational and Toy Projects / Hython

Reddit Discussions:

Compilers and Interpreters / Educational and Toy Projects

llgo 88 over 5 years ago Go frontend for LLVM written in Go
MAL 10,082 12 days ago : Make a Lisp - Clojure-inspired Lisp interpreter implemented in 64 languages
MetaScala 1,176 over 1 year ago Metacircular JVM implementation in Scala
mini-js 160 about 7 years ago Experimental self-hosted JavaScript compiler in 1K LoC
MunVM 8 about 8 years ago Lua VM & Compiler in C
MY-BASIC 507 3 months ago An embeddable BASIC dialect interpreter in C with modern paradigms
oberonc 149 8 months ago A single pass, self-hosting compiler for the Oberon-07 programming language. It targets the JVM
Poprc 242 almost 4 years ago Compiler for the Popr Language
PyCOOLC 40 over 5 years ago Compiler for the COOL Programming Language written in Python 3
RabbitVM 104 over 5 years ago RISC-based VM implementation in C
Squint 26 about 2 months ago A peephole optimizer for educational compilers generating stack based assembly
StackVM 49 over 4 years ago Virtual Machine with an integrated VRAM display
stack_cpu 14 about 12 years ago Stack-machine simulator
The Super Tiny Compiler 27,945 9 months ago 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 410 9 months ago "Time is Space" Programming Language Interpreter
Ultra Tiny Compiler 180 over 5 years ago Another tiny compiler in less then 90 lines of code

Runtimes and VMs

CakeML 964 6 days ago
CoreCLR 12,797 almost 2 years ago The .NET's Common Language Runtime
Erlang BEAM 11,390 6 days ago
HHVM 18,188 4 days ago Facebook's Open Source VM for running Hack and PHP programs
HLVM

Runtimes and VMs / JVM Implementations:

OpenJDK
Kaffe 429 almost 5 years ago
JamVM
Apache Harmony
Other JVM Runtimes

Blogs

Eli Bendersky
John Regehr
Krister Walfridsson
Lambda The Ultimate
LLVM Developers' Meetings
LLVM Weekly Weekly newsletter about LLVM

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

68 Resources for Creating Programming Languages
Awesome Static Analysis 13,359 3 days ago
Compiler Conferences, Workshops and Journals 4,557 6 days ago
Languages and Compilers Network Graph
miniKanren.org Papers, Talks and Implementations of miniKanren and microKanren
PLT Enlightenment
Resources for Amateur Compiler Writers
SSA Form Bibliography
Summer Schools
The Witchcraft Compiler Collection 1,849 about 1 month ago
TypeFunc 309 over 3 years ago

Backlinks from these awesome lists:

More related projects: