Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-compilers1
https://github.com/rsumner31/awesome-compilers1
Last synced: 1 day ago
JSON representation
-
Learning
-
Books
- GitHub Repo
- 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
- Compilers: Principles, Techniques, and Tools - The Dragons Book (2nd Edition).
- Crafting Interpreters: A Handbook for Making Programming Languages, B. Nystrom
- HN
- Create Your Own Programming Language
- HN
- Engineering a Compiler, K. Cooper, L. Torczon
- Essentials of Programming Languages, D. Friedman & M. Wand
- Language Implementation Patterns, T. Parr
- Modern Compiler Implementation in ML, A. Appel
- MCI in C
- Programming Language Pragmatics, M. Scott
- Virtual Machines, Iain Craig
- Advanced Compiler Design and Implementation, S. Muchnick
- Advanced Topics in Types and Programming Languages, B. Pierce
- Building an Optimizing Compiler, B. Morgan
- Compiling with Continuations, A. Appel
- Programming Languages: Theory and Practice
- 2013 Edition
- Virtual Machines, Smith and Nait
- 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 SSA Book, Springer, Zadeck
- Types and Programming Languages, B. Pierce
- Programming Languages: Application and Interpretation, S. Krishnamurthi
- Computer Systems: A Programmer’s Perspective, R. Bryant, D. O'Hallaron - Comprehensive treatement of Computer Systems including Compilers, Interpreters and Runtimes.
-
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.
- 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.
-
Papers
- A Brief History of JIT Compilation, J. Aycock
- A Flexible Prolog Interpreter in Python, C. Bolz & M. Leuschel
- A Prolog Interpreter in Python, C. Bolz
- A Simple Multi-Processor Computer Based on Subleq, O. Mazonka, A. Kolodin
- Compiling with Continuations: Continued, A. Kennedy
- 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
- PyPy’s Approach to VM Construction, A. Rigo & S. Pedroni
- 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
-
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
- 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.
- Python, Linkers and Virtual Memory - PYCON US
- Reverse Engineering the MOS 6502 CPU
- The JVM (Java Virtual Machine) Architecture
- 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
-
Tutorials
- A Tutorial Implementation of a Dependently Typed Lambda Calculus
- Algorithm W Step By Step
- Compiler Optmization Tutorial
- Let’s Build A Simple Interpreter
- Metacompiler Tutorial, Part 1
- Write You a Haskell
- Writing a Language in Truffel - Interpreter development tutorial using Truffel, by Cristian Esquivias.
-
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
-
-
Compilers and Interpreters
-
Educational and Toy Projects
-
Serious Projects
- Lua's Annotated Source Code - Annotated source code of the Lua Programming Language Interpreter v5.1.4.
-
-
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 (as a Backend)
-
CLR
- Reflexil - Assembly code editor which can be used as a plugin with other .NET/CLR tools.
-
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
-
-
Runtimes and VMs
-
Educational and Toy Projects
-
-
Blogs
-
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
Programming Languages
Categories
Sub Categories