Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-compilers
https://github.com/rsumner31/awesome-compilers
Last synced: 3 days ago
JSON representation
-
Learning
-
Articles
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- A Tourist’s Guide to the LLVM Source Code
- Accidentally Turing Complete
- ALIVe: Automatic LLVM InstCombine Verifier
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Interpreter, Compiler and JIT
- Introducing the B3 JIT Compiler
- LLVM for Graduate Students - Introduction to doing research with the LLVM compiler infrastructure.
- Rust's Incremental Compilation
- Rust’s Upcoming MIR
- The Memory Models that Underlie Programming Languages
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
- Graal and Truffel - Obscure research project could radically accelerate innovation in programming language design.
-
Books
- Computer Systems: A Programmer’s Perspective, R. Bryant, D. O'Hallaron - Comprehensive treatement of Computer Systems including Compilers, Interpreters and Runtimes.
- Elements of Computing Systems, N. Nisan, S. Schocken - How to build a computer starting with Nand Logic Gates and then move to Machine Code, Assemblers, Compilers and Operating Systems.
- SICP, H. Abelson, G. Sussman - Structure and Interpretation of Computer Programs.
- Basics of Compiler Design, T. Mogensen - Short and concise book on the basic concepts behind Compiler Design.
- Compilers: Principles, Techniques, and Tools, A. Aho, M. Lam, R. Sethi, J. Ullman - The infamous Dragons Book, a classic textbook on Compiler Construction.
- Crafting Interpreters, B. Nystrom - Everything you need to learn to build an interpreted, full-featured, efficient scripting language.
- HN
- Create Your Own Programming Language - Very short book on building your own programming language with video tutorials and source code projects for 3 example programming languages.
- HN
- Engineering a Compiler, K. Cooper, L. Torczon - Modern comprehensive textbook on Compilers Construction. It covers SSA Form and recent research on Machine Code Generation.
- Essentials of Programming Languages, D. Friedman & M. Wand - Fundamental concepts of programming languages with a focus on Semantics, Interpretation and CPS (Continuation Passing Style).
- Language Implementation Patterns, T. Parr - Learn the patterns behind building programming languages and build an interpreter yourself, using ANTLR.
- Modern Compiler Implementation in ML, A. Appel
- MCI in C
- Programming Language Pragmatics, M. Scott
- Programming Languages: Theory and Practice
- 2013 Edition
- Virtual Machines, Smith and Nait
- Virtual Machines, Iain Craig
- Writing an Interpreter in Go, T. Ball
- Writing Compilers and Interpreters: A Software Engineering Approach
- Writing Compilers and Interpreters: An Applied Approach Using C++
- Advanced Compiler Design and Implementation, S. Muchnick
- Advanced Topics in Types and Programming Languages, B. Pierce
- A Retargetable C Compiler: Design and Implementation, D. Hanson
- Building an Optimizing Compiler, B. Morgan
- Compiling with Continuations, A. Appel
- Design Concepts in Programming Languages, F. Turbak, D. Gifford, M. Sheldon - also contains some introductory level material.
- Instruction Level Parallelism, A. Aiken, U. Banerjee, A. Kejariwal, A. Nicolau
- Linkers and Loaders
- Parsing Techniques: A Practical Guide
- 1st Edition, PDF
- The Garbage Collection Handbook: The Art of Automatic Memory Management, R. Jones, A. Hosking, E. Moss
- The Implemetation of Functional Programming Langauges, S. P. Jones
- The SSA Book, Springer, Zadeck
- Types and Programming Languages, B. Pierce
- HTML5/EPUB version
- GitHub Repo
- Programming Languages: Application and Interpretation, S. Krishnamurthi
-
Tutorials
- A Tutorial Implementation of a Dependently Typed Lambda Calculus
- Algorithm W Step By Step
- Compiler Optmization Tutorial
- Let’s Build A Simple Interpreter
- 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.
- `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 `lis.py` slightly better.
- Metacompiler Tutorial, Part 1
- Write You a Haskell
- Writing a Language in Truffel - Interpreter development tutorial using Truffel, by Cristian Esquivias.
-
Papers
- A Brief History of JIT Compilation, J. Aycock
- A Flexible Prolog Interpreter in Python, C. Bolz & M. Leuschel
- A Micro-Manual for LISP - Not the Whole Truth, J. McCarthy
- 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
- Compiling with Continuations: Continued, A. Kennedy
- Definitional Interpreters for Higher-Order Programming Languages, J. Reynolds
- Engineering Definitional Interpreters, J. Midtgaard, N. Ramsey, B. Larsen
- Machine Code Obfuscation via Instruction Set Reduction and CFG Linearization, C. Jonischkeit
- `MOV` is Turing-Complete, S. Dolan
- HN
- Packrat Parsing Thesis on PEG, B. Ford
- RABBIT: A Compiler for SCHEME, G. Steele
- 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
- PyPy’s Approach to VM Construction, A. Rigo & S. Pedroni
-
Specifications
-
Courses
- Compiler Construction for Undergrads, RICE University - Introduction to compiler construction and language translators course from the RICE University.
- 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.
- 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.
- 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.
-
Talks and Conferences
- Curry On! Conference - Programming Languages Conference.
- An Introduction to Combinator Compilers and Graph Reduction Machines
- Building an Interpreter in RPython
- CPython - A Ten-Hour Codewalk
- Exploring Python’s Bytecode
- 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.
- 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
- 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
- HN
- Part 1
- Part 2
- Part 3
- Type-Driven Development with Idris
- Understanding Compiler Optimization
- Meta-Tracing, RPython and PyPy
-
Community Discussions
- Can we stop recommending the Dragon Book, please? - StackExchange thread criticising the [Dragons Book](https://www.amazon.com/dp/0321486811) in favor of alternatives.
- @HN - 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
- I want to build a VM, any good references?
- Resources for Amatuer Compilers Writers
- 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.
- MicroVM - The "Mu" Framewrok for Programming Languages development based on the MuVM Specification.
- QBE: The Quick Backend - Pure C embeddable SSA-based compiler backend.
-
C / C++
-
CLR
- Reflexil - Assembly code editor which can be used as a plugin with other .NET/CLR tools.
-
Go
- LLVM Go binding - Official Go LLVM binding.
-
Graal
- Graal Core - Compiler and Truffel Partial Evaluator.
- Graal VM - Graal's multi-language VM distribution.
-
JavaScript
-
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.
- 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
-
-
Blogs
-
Educational and Toy Projects
-
-
Compilers and Interpreters
-
Runtimes and VMs
-
Educational and Toy Projects
-
-
Communities
-
Educational and Toy Projects
- /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
-
Educational and Toy Projects
-
Programming Languages
Categories
Sub Categories