1190 lines
54 KiB
HTML
1190 lines
54 KiB
HTML
<h1 id="awesome-compilers"><img src="img/awesome-compilers.png"
|
||
alt="AWESOME COMPILERS" /></h1>
|
||
<p>A curated list of awesome resources, learning materials, tools,
|
||
frameworks, platforms, technologies and source code projects in the
|
||
field of Compilers, Interpreters and Runtimes. This list has a bias
|
||
towards education.</p>
|
||
<p><a href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" /></a></p>
|
||
<hr />
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#learning">Learning</a>
|
||
<ul>
|
||
<li><a href="#books">Books</a>
|
||
<ul>
|
||
<li><a href="#general-overview">General Overview</a></li>
|
||
<li><a href="#introductory">Introductory</a></li>
|
||
<li><a href="#advanced">Advanced</a></li>
|
||
</ul></li>
|
||
<li><a href="#papers">Papers</a>
|
||
<ul>
|
||
<li><a href="#researchers-and-institutes">Researchers and
|
||
Institutes</a></li>
|
||
</ul></li>
|
||
<li><a href="#specifications">Specifications</a></li>
|
||
<li><a href="#courses">Courses</a></li>
|
||
<li><a href="#talks-and-conferences">Talks and Conferences</a>
|
||
<ul>
|
||
<li><a href="#channels">Channels</a></li>
|
||
<li><a href="#videos">Videos</a></li>
|
||
</ul></li>
|
||
<li><a href="#articles">Articles</a></li>
|
||
<li><a href="#tutorials">Tutorials</a></li>
|
||
<li><a href="#community-discussions">Community Discussions</a></li>
|
||
</ul></li>
|
||
<li><a href="#tools-and-frameworks">Tools and Frameworks</a>
|
||
<ul>
|
||
<li><a href="#language-agnostic">Language Agnostic</a></li>
|
||
<li><a href="#c--c">C / C++</a></li>
|
||
<li><a href="#clr">CLR</a></li>
|
||
<li><a href="#d">D</a></li>
|
||
<li><a href="#go">Go</a></li>
|
||
<li><a href="#graal">Graal</a></li>
|
||
<li><a href="#haskell">Haskell</a></li>
|
||
<li><a href="#javascript">JavaScript</a></li>
|
||
<li><a href="#jvm">JVM</a></li>
|
||
<li><a href="#kotlin">Kotlin</a></li>
|
||
<li><a href="#python">Python</a>
|
||
<ul>
|
||
<li><a href="#lists-of-python-parsing-tools">Lists of Python Parsing
|
||
Tools</a></li>
|
||
</ul></li>
|
||
<li><a href="#rust">Rust</a></li>
|
||
</ul></li>
|
||
<li><a href="#compilers-and-interpreters">Compilers and Interpreters</a>
|
||
<ul>
|
||
<li><a href="#serious-projects">Serious Projects</a></li>
|
||
<li><a href="#educational-and-toy-projects">Educational and Toy
|
||
Projects</a></li>
|
||
</ul></li>
|
||
<li><a href="#runtimes-and-vms">Runtimes and VMs</a></li>
|
||
<li><a href="#blogs">Blogs</a></li>
|
||
<li><a href="#communities">Communities</a></li>
|
||
<li><a href="#verticals">Verticals</a></li>
|
||
</ul>
|
||
<hr />
|
||
<h2 id="learning">Learning</h2>
|
||
<h3 id="books">Books</h3>
|
||
<h4 id="general-overview">General Overview</h4>
|
||
<ul>
|
||
<li><a href="https://www.amazon.com/dp/9332573905">Computer Systems: A
|
||
Programmer’s Perspective</a> - General treatment of Computer Systems
|
||
including Compilers, Interpreters and Runtimes.</li>
|
||
<li><a href="https://www.amazon.com/dp/0262640686">Elements of Computing
|
||
Systems</a> - How to build a computer from Nand Gates all the way to
|
||
Compilers and Operating Systems.</li>
|
||
<li><a
|
||
href="https://mitpress.mit.edu/sicp/full-text/book/book.html">Structure
|
||
and Interpretation of Computer Programs</a> - Study the building blocks
|
||
of computation using Scheme by building a Scheme interpreter in a
|
||
Scheme!
|
||
<ul>
|
||
<li>Other editions: <a
|
||
href="https://sarabander.github.io/sicp/">HTML5/EPUB version</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h4 id="introductory">Introductory</h4>
|
||
<ul>
|
||
<li><a href="http://hjemmesider.diku.dk/~torbenm/Basics/">Basics of
|
||
Compiler Design</a> - Provides a short treatment of the basic
|
||
concepts.</li>
|
||
<li><a href="http://beautifulracket.com">Beautiful Racket</a> - How to
|
||
make your own Programming Language with Racket.</li>
|
||
<li><a href="http://www.buildyourownlisp.com">Build Your Own Lisp</a> -
|
||
Learn C and build your own Lisp Programming Language in 1000 LoC.</li>
|
||
<li><a href="https://www.amazon.com/dp/0321486811">Compilers:
|
||
Principles, Techniques and Tools</a> - The Dragons Book. A classic
|
||
textbook on Compiler Construction.</li>
|
||
<li><a href="http://www.craftinginterpreters.com/">Crafting
|
||
Interpreters</a> - An all-stop-shop for learning (nearly) everything you
|
||
need to learn to build an interpreted, full-featured, efficient
|
||
scripting language.
|
||
<ul>
|
||
<li><a href="https://github.com/munificent/craftinginterpreters">GitHub
|
||
Repo</a>.</li>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=13406081">HN</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://createyourproglang.com/">Create Your Own Programming
|
||
Languauge</a> - Example-driven approach to building your own programming
|
||
language with video tutorials and source code projects.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=813133">HN</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.amazon.com/dp/012088478X">Engineering a
|
||
Compiler</a> - The modern textbook on Compilers Construction, covering
|
||
SSA-Form and recent research on Code Generation.</li>
|
||
<li><a href="https://www.amazon.com/dp/0262062798">Essentials of
|
||
Programming Languages</a> - Fundamental concepts of programming
|
||
languages with a focus on Semantics, Interpretation and CPS
|
||
(Continuation Passing Style).</li>
|
||
<li><a href="https://www.amazon.com/dp/193435645X">Language
|
||
Implementation Patterns</a> - Learn the patterns behind building
|
||
programming languages and build an interpreter yourself, using
|
||
ANTLR.</li>
|
||
<li><a href="https://www.cs.princeton.edu/~appel/modern/ml/">Modern
|
||
Compiler Implementation in ML</a> - 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.
|
||
<ul>
|
||
<li>Other editions: <a
|
||
href="https://www.cs.princeton.edu/~appel/modern/c/">MCI in C</a>, <a
|
||
href="https://www.cs.princeton.edu/~appel/modern/java/">MCI in
|
||
Java</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.amazon.com/dp/0123745144">Programming Language
|
||
Pragmatics</a> - Integrated treatement of language design and
|
||
implementation, the examples feature famous architectures like ARM and
|
||
x86 64-bit.</li>
|
||
<li><a href="http://cs.brown.edu/courses/cs173/2012/book/">Programming
|
||
Languages: Application and Interpretation</a> - Excellent introduction
|
||
to the subject that uses an incremental approach to building programs.
|
||
The mistakes are included too to highlight key concepts.
|
||
<ul>
|
||
<li><a
|
||
href="http://cs.brown.edu/courses/cs173/2012/book/book.pdf">PDF</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://people.cs.uchicago.edu/~blume/classes/aut2008/proglang/text/offline.pdf">Programming
|
||
Languages: Theory and Practice</a> - Collected lecture notes for the
|
||
<em>Programming Languages</em> course taught at Carnegie Mellon
|
||
University, most suitable as an introductory text on the subject.</li>
|
||
<li><a
|
||
href="http://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf">Project
|
||
Oberon</a> - The design of an operating system and compiler.
|
||
<ul>
|
||
<li>Other editions: <a
|
||
href="http://www.cs.cmu.edu/~fp/courses/15312-f04/handouts/">2013
|
||
Edition</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/happi/theBeamBook">The BEAM Book</a> -
|
||
Description of the ERTS (Erlang Runtime System) and the BEAM Virtual
|
||
Machine.</li>
|
||
<li><a href="https://www.amazon.com/dp/1852339691">Virtual Machines</a>
|
||
- Good book on how to build Virtual Machines especially tailored for the
|
||
topic of building Programming Languages.</li>
|
||
<li><a href="https://www.amazon.com/dp/1558609105">Virtual Machines:
|
||
Versatile Platforms for Systems and Processes</a> - 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.</li>
|
||
<li><a href="https://compilerbook.com/">Write a Compiler in Go</a> -
|
||
Well-known introduction to the Go programming language and its ecosystem
|
||
through building a Compiler project.</li>
|
||
<li><a href="https://interpreterbook.com/">Write an Interpreter in
|
||
Go</a> - Successor of the “Write a Compiler in Go” book, but this one
|
||
builds an interpreter project instead.</li>
|
||
<li><a href="https://www.amazon.com/dp/0470177071">Writing Compilers and
|
||
Interpreters: A Software Engineering Approach</a> - How to build
|
||
Compilers using Java, this book is tailored for the working Software
|
||
Engineer.
|
||
<ul>
|
||
<li>Other editions: <a href="https://www.amazon.com/dp/0471113530">Using
|
||
C++</a>, <a href="https://www.amazon.com/dp/0471555800">Using
|
||
C</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.amazon.de/gp/product/1977509207">Writing
|
||
Interpreters and Compilers for the Raspberry Pi Using Python</a> - 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.</li>
|
||
</ul>
|
||
<h4 id="advanced">Advanced</h4>
|
||
<ul>
|
||
<li><a href="https://www.amazon.com/dp/1558603204">Advanced Compiler
|
||
Design and Implementation</a> - In-depth treatement of advanced design
|
||
topics such as: Intermediate Representation, SSA, Code Optimization and
|
||
the various processor architectures.</li>
|
||
<li><a href="https://www.amazon.com/dp/146658260X">Advanced Design and
|
||
Implementation of Virtual Machines</a> - 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.</li>
|
||
<li><a href="https://www.amazon.com/dp/0262162288">Advanced Topics in
|
||
Types and Programming Languages</a> - 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..</li>
|
||
<li><a href="https://www.amazon.com/dp/0805316701">A Retargetable C
|
||
Compiler: Design and Implementation</a> - Examines the design and
|
||
implementation of Icc, a production-quality, retargetable compiler,
|
||
designed at AT&T Bell Labs for the ANSI C programming language.</li>
|
||
<li><a href="https://www.amazon.com/dp/155558179X">Building an
|
||
Optimizing Compiler</a> - 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.</li>
|
||
<li><a href="https://www.amazon.com/dp/052103311X">Compiling with
|
||
Continuations</a> - Introduction to CPS (Continuation-Passing Style) as
|
||
an Intermediate Representation in Compiler for doing optimizations and
|
||
program transformations.</li>
|
||
<li><a href="https://www.amazon.com/dp/0262201755">Design Concepts in
|
||
Programming Languages</a> - 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.</li>
|
||
<li><a href="https://www.amazon.com/dp/1489977953">Instruction Level
|
||
Parallelism</a> - This book precisely formulates and simplifies the
|
||
presentation of Instruction Level Parallelism (ILP) compilation
|
||
techniques.</li>
|
||
<li><a href="https://www.amazon.com/dp/1558604960">Linkers and
|
||
Loaders</a> - Definitive text on the compile-time and runtime processes
|
||
of linking and loading.</li>
|
||
<li><a href="https://www.amazon.com/dp/1558602860/">Optimizing Compilers
|
||
for Modern Architectures</a> - Optimizing program generation based on
|
||
recent gains and breakthroughs in modern high-performance CPU
|
||
architectures.</li>
|
||
<li><a href="https://www.amazon.com/dp/038720248X">Parsing Techniques: A
|
||
Practical Guide</a> - Definitive guide on parsing algorithms and
|
||
techniques, also contains an introduction to Formal Grammar and Parsing
|
||
Theory.
|
||
<ul>
|
||
<li><a href="https://dickgrune.com/Books/PTAPG_1st_Edition/">1st
|
||
Edition, PDF</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.amazon.com/dp/1420082795">The Garbage
|
||
Collection Handbook: The Art of Automatic Memory Management</a> - 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.</li>
|
||
<li><a
|
||
href="https://www.microsoft.com/en-us/research/wp-content/uploads/1987/01/slpj-book-1987-small.pdf">The
|
||
Implementation of Functional Programming Languages</a> - Classic
|
||
textbook on implementing Functional Languages, covers Structured Types,
|
||
Pattern Matching Semantics, Lambda Calculus Transformation, Polymorphic
|
||
Type Checking and many other topics.</li>
|
||
<li><a href="http://ssabook.gforge.inria.fr/latest/book.pdf">The SSA
|
||
Book</a> - The only in-depth study of SSA-form (Static Single Assignment
|
||
Form) in book format.</li>
|
||
<li><a href="https://www.amazon.com/dp/0262162091">Types and Programming
|
||
Languages</a> - Comprehensive introduction to the topic of Type Systems
|
||
and Programming Languages from a Type-Theoretic perspective.</li>
|
||
<li><a
|
||
href="https://mitpress.mit.edu/books/warrens-abstract-machine">Warren’s
|
||
Abstract Machine: Prolog in Haskell</a> - Introduction to WAM from Logic
|
||
Programming in Prolog.</li>
|
||
</ul>
|
||
<h3 id="papers">Papers</h3>
|
||
<ul>
|
||
<li><a
|
||
href="http://eecs.ucf.edu/~dcm/Teaching/COT4810-Spring2011/Literature/JustInTimeCompilation.pdf">A
|
||
Brief History of JIT Compilation, J. Aycock</a>.</li>
|
||
<li><a
|
||
href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.1886&rep=rep1&type=pdf">A
|
||
Flexible Prolog Interpreter in Python, C. Bolz & M.
|
||
Leuschel</a>.</li>
|
||
<li><a href="http://compilers.cs.uni-saarland.de/papers/lkh15_cgo.pdf">A
|
||
Graph Higher-Order IR, R. Leißa, M. Koster & S. Hack</a>.</li>
|
||
<li><a href="https://www.uraimo.com/files/MicroManual-LISP.pdf">A
|
||
Micro-Manual for LISP - Not the Whole Truth, J. McCarthy</a>.
|
||
<ul>
|
||
<li>Other editions: <a
|
||
href="https://github.com/jaseemabid/micromanual">Neat and nice
|
||
typeset</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.121.8625&rep=rep1&type=pdf">A
|
||
Prolog Interpreter in Python, C. Bolz</a>.</li>
|
||
<li><a href="https://arxiv.org/abs/1106.2593">A Simple Multi-Processor
|
||
Computer Based on Subleq, O. Mazonka, A. Kolodin</a>.</li>
|
||
<li><a href="http://www.cse.psu.edu/~trj1/papers/ndss17.pdf">An Evil
|
||
Copy: How the Loader Betrays You</a> - About security issues related to
|
||
Dynamic Loading.</li>
|
||
<li><a href="http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf">An
|
||
Incremental Approach to Compiler Construction</a>.</li>
|
||
<li><a href="https://www.cs.indiana.edu/~dyb/pubs/fple95.pdf">Compiler
|
||
Construction Using Scheme, E. Hilsdale, J. Ashley, R. Dybvig & D.
|
||
Friedman</a>.</li>
|
||
<li><a
|
||
href="https://www.microsoft.com/en-us/research/wp-content/uploads/2007/10/compilingwithcontinuationscontinued.pdf">Compiling
|
||
with Continuations: Continued, A. Kennedy</a>.</li>
|
||
<li><a
|
||
href="http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf">Definitional
|
||
Interpreters for Higher-Order Programming Languages, J.
|
||
Reynolds</a>.</li>
|
||
<li><a
|
||
href="http://drops.dagstuhl.de/opus/volltexte/2015/5034/pdf/24.pdf">Draining
|
||
the Swamp: Micro Virtual Machines as Solid Foundation for Language
|
||
Development, K. Wang, Y. Lin, S. Blackburn, M. Norrish & A.
|
||
Hosking</a>.</li>
|
||
<li><a href="https://www.cs.tufts.edu/~nr/pubs/interps.pdf">Engineering
|
||
Definitional Interpreters, J. Midtgaard, N. Ramsey, B. Larsen</a>.</li>
|
||
<li><a
|
||
href="https://pdfs.semanticscholar.org/6434/aa10f3745dcf959cfca9c379aae120396724.pdf?_ga=2.133026126.1710272003.1495044697-300816831.1495044697">Garbage
|
||
Collection in an Uncooperative Environment, H. Boehm, M.
|
||
Weiser</a>.</li>
|
||
<li><a href="https://kirschju.re/static/ba_jonischkeit_2016.pdf">Machine
|
||
Code Obfuscation via Instruction Set Reduction and CFG Linearization, C.
|
||
Jonischkeit</a>.</li>
|
||
<li><a
|
||
href="https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf"><code>MOV</code>
|
||
is Turing-Complete, S. Dolan</a>.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=6309631">HN</a>, <a
|
||
href="https://redd.it/1nft0x">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://www.cs.indiana.edu/~dyb/pubs/commercial-nanopass.pdf">Nanopass
|
||
Framework for Commercial Compiler Development, A. Keep & R.
|
||
Dybvig</a>.</li>
|
||
<li><a href="https://www.cs.indiana.edu/~dyb/pubs/nano-jfp.pdf">Nanopass
|
||
Framework for Compiler Education, D. Sarkar, O. Waddell & R.
|
||
Dybvig</a>.</li>
|
||
<li><a href="http://www.cs.umb.edu/%7Eoffner/files/flow_graph.pdf">Notes
|
||
on Graph Algorithms Used in Optimizing Compilers, C. Offner</a>.</li>
|
||
<li><a href="https://pdos.csail.mit.edu/~baford/packrat/thesis/">Packrat
|
||
Parsing Thesis on PEG, B. Ford</a>.</li>
|
||
<li><a href="http://www.vpri.org/pdf/tr2010003_PEG.pdf">PEG-based
|
||
transformer provides front-end, middle-end and back-end stages in a
|
||
simple Compiler, I. Piumarta</a>.</li>
|
||
<li><a
|
||
href="http://homes.soic.indiana.edu/samth/pycket-draft.pdf">Pycket: A
|
||
Tracing JIT for a Functional Language</a>.</li>
|
||
<li><a
|
||
href="http://www.csc.lsu.edu/~gb/csc7700/Reading/pypy-vm-construction.pdf">PyPy’s
|
||
Approach to VM Construction, A. Rigo & S. Pedroni</a>.</li>
|
||
<li><a
|
||
href="http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AITR-474.pdf">RABBIT:
|
||
A Compiler for SCHEME, G. Steele</a>.</li>
|
||
<li><a
|
||
href="http://compilers.cs.uni-saarland.de/projects/ssaconstr/">Simple
|
||
and Efficient Construction of SSA Form</a>.</li>
|
||
<li><a
|
||
href="http://compilers.cs.uni-saarland.de/projects/ssara/">SSA-based
|
||
Register Allocation, S. Hack & G. Goos</a>.</li>
|
||
<li><a href="https://users.soe.ucsc.edu/~cormac/papers/pldi93.pdf">The
|
||
Essence of Compiling with Continuations, C. Flanagan, A. Sabry, B. Duba
|
||
& M. Felleisen</a>.</li>
|
||
<li><a
|
||
href="https://www.usenix.org/system/files/conference/woot13/woot13-bangert.pdf">The
|
||
Page-Faults Weird Machine: Lessons in Instruction-less Computation, J.
|
||
Bangert, S. Bratus, R. Shapiro, S. Smith</a>.</li>
|
||
<li><a
|
||
href="http://files.catwell.info/misc/mirror/tracing-jit-haskell-schilling.pdf">Trace-based
|
||
JIT Compilation for Lazy Functional Languages, T. Schilling</a>.</li>
|
||
<li><a
|
||
href="https://people.csail.mit.edu/mcarbin/papers/aplas05.pdf">Using
|
||
Datalog with Binary Decision Diagrams for Program Analysis, J. Whaley,
|
||
D. Avots, M. Carbin & M. Lam</a>.</li>
|
||
</ul>
|
||
<h4 id="researchers-and-institutes">Researchers and Institutes</h4>
|
||
<ul>
|
||
<li><a href="https://scholar.google.com/citations?user=S0rpYpkAAAAJ">C.
|
||
Bolz’s Research Publications</a>.</li>
|
||
<li><a href="http://compilers.cs.uni-saarland.de">Compilers Lab at
|
||
Saarland University</a>.</li>
|
||
<li><a href="http://pllab.is.ocha.ac.jp/%7Easai/papers/">Kenichi
|
||
Asai</a>.</li>
|
||
<li><a href="http://bford.info/packrat/">Packrat Parsing (PEG) Papers
|
||
and Resources</a>.</li>
|
||
</ul>
|
||
<h3 id="specifications">Specifications</h3>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.ecma-international.org/publications/standards/Ecma-335.htm">CLI
|
||
(ECMA-335) Specification</a>.</li>
|
||
<li><a href="https://gitlab.anu.edu.au/mu/mu-spec">Mu
|
||
Specification</a>.</li>
|
||
<li><a href="https://docs.oracle.com/javase/specs/jvms/se8/html/">JVM
|
||
SE8 Specification</a>.</li>
|
||
</ul>
|
||
<h3 id="courses">Courses</h3>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.cl.cam.ac.uk/teaching/1516/CompConstr/materials.html">Compilers
|
||
Construction, Cambridge</a> - Introduction to compiler construction
|
||
course from the University of Cambridge.</li>
|
||
<li><a href="https://www.clear.rice.edu/comp412/Lectures/">Compiler
|
||
Construction for Undergrads, RICE University</a> - Introduction to
|
||
compiler construction and language translators course from the RICE
|
||
University.</li>
|
||
<li>Compilers Theory, Stanford - <a
|
||
href="https://www.youtube.com/playlist?list=PLLH73N9cB21VSVEX1aSRlNTufaLK1dTAI">YouTube</a>,
|
||
<a
|
||
href="https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/">Stanford.edu</a>,
|
||
<a href="http://web.stanford.edu/class/cs143/">Class Notes</a>
|
||
-Introduction to Compilers theory and construction course from
|
||
Stanford.</li>
|
||
<li><a href="https://lambda.uta.edu/cse5317/">Design and Construction of
|
||
Compilers, University of Texas</a> - Design and construction of
|
||
compilers including lexical analysis, parsing, code generation
|
||
techniques, error analysis and simple code optimizations.
|
||
<ul>
|
||
<li>Lecture Notes: <a
|
||
href="https://lambda.uta.edu/cse5317/notes.pdf">PDF</a>, <a
|
||
href="https://lambda.uta.edu/cse5317/long/long.html">HTML</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://vjovanov.github.io/dsldi-summer-school/">DSL Design
|
||
and Implementation Summer School</a> - Summer School program on the
|
||
topics of DSL Design and Implementation hosted by the EPFL
|
||
University.</li>
|
||
<li><a href="http://www.cs.cmu.edu/~fp/courses/15312-f04/">Foundations
|
||
of Programming Languages</a> - Concepts that underlie the design,
|
||
definition, implementation and use of modern programming languages from
|
||
a formal standpoint.</li>
|
||
<li><a href="https://www.coursera.org/learn/nand2tetris2">Nand2Tetris:
|
||
How to Build a Computer from First Principles, Part 2</a> - 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.</li>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLbMVogVj5nJQNjkHZgwuAlfQ9tzmQDxjA">NPTEL’s
|
||
Principles of Compiler Design Course</a> - Introductory course from
|
||
NPTEL on Compiler Design.</li>
|
||
<li><a href="http://nptel.ac.in/courses/106108052/32">NPTEL’s Compiler
|
||
Design Course</a> - Slightly more advanced course than their Principles
|
||
of Compiler Design course, covers SSA Form to a good degree.
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLbMVogVj5nJTmKzaSlCpGgi7qxgcRRs8h">YouTube
|
||
Video Playlist</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://www.coursera.org/learn/programming-languages">Programming
|
||
Languages: Part A, by Grossman</a> - Part 1 of a 3-part course series to
|
||
the basic concepts of programming languages, with a strong emphasis on
|
||
functional programming.</li>
|
||
<li><a
|
||
href="https://www.coursera.org/learn/programming-languages-part-b">Programming
|
||
Languages: Part B, by Grossman</a> - Part 2 of a 3-part course series to
|
||
the basic concepts of programming languages, with a strong emphasis on
|
||
functional programming.</li>
|
||
<li><a
|
||
href="https://www.coursera.org/learn/programming-languages-part-c">Programming
|
||
Languages: Part C, by Grossman</a> - Part 3 of a 3-part course series to
|
||
the basic concepts of programming languages, with a strong emphasis on
|
||
functional programming.</li>
|
||
<li><a
|
||
href="https://www.cs.uoregon.edu/research/summerschool/summer15/curriculum.html">Types,
|
||
Logic, Semantics, and Verification from Oregon University’s Summer
|
||
School</a> - Summer School program that consists of 80 minute lectures
|
||
presented by internationally recognized leaders in programming languages
|
||
and formal reasoning research.</li>
|
||
<li><a href="http://www.wolczko.com/CS294/">Virtual Machines and Managed
|
||
Runtimes, UCB CS294</a> - Introductory course on Virtual Machines and
|
||
Managed Runtimes from the University of Berkeley.</li>
|
||
<li><a href="http://soft-dev.org/events/vmss16/">Virtual Machines Summer
|
||
School 2016 (VMSS 2016)</a> - VMSS is a Summer School program that aims
|
||
to give an overview of the field, targeted at early career researchers.
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLJq3XDLIJkib2h2fObomdFRZrQeJg4UIW">YouTube
|
||
Videos Playlist</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h3 id="talks-and-conferences">Talks and Conferences</h3>
|
||
<h4 id="channels">Channels</h4>
|
||
<ul>
|
||
<li><a href="http://www.curry-on.org/">Curry On! Conference</a> -
|
||
Programming Languages Conference.
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/channel/UC-WICcSW1k3HsScuXxDrp0w/videos">YouTube
|
||
Channel</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012">Lang.NEXT
|
||
Conference 2012</a>.</li>
|
||
<li><a
|
||
href="https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014">Lang.NEXT
|
||
Conference 2014</a>.</li>
|
||
<li><a
|
||
href="https://www.youtube.com/channel/UCv2_41bSAa5Y_8BacJUZfjQ">LLVM
|
||
Developers Meeting YouTube Channel</a>.</li>
|
||
</ul>
|
||
<h4 id="videos">Videos</h4>
|
||
<ul>
|
||
<li><a
|
||
href="https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction">Anders
|
||
Hejlsberg on Modern Compiler Construction</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=GawiQQCn3bk">An
|
||
Introduction to Combinator Compilers and Graph Reduction
|
||
Machines</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=9tDpjzPLvNY">Building an
|
||
Interpreter in RPython</a>.</li>
|
||
<li><a href="http://pgbovine.net/cpython-internals.htm">CPython - A
|
||
Ten-Hour Codewalk</a>.</li>
|
||
<li><a
|
||
href="https://ep2016.europython.eu/media/conference/slides/exploring-python-bytecode.pdf">Exploring
|
||
Python’s Bytecode</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=OjaAToVkoTw">How to Build a
|
||
Virtual Machine</a> - 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.</li>
|
||
<li><a href="https://2016.javazone.no/program/java-aot-compilation">Java
|
||
AOT (Ahead of Time) Compilation</a>.</li>
|
||
<li><a
|
||
href="https://skillsmatter.com/skillscasts/4916-metascala-a-tiny-diy-jvm">MetaScala:
|
||
A Tiny DIY JVM</a> - Metascala is a tiny metacircular Java Virtual
|
||
Machine (JVM) written in the Scala programming language.</li>
|
||
<li><a
|
||
href="https://ia601503.us.archive.org/32/items/vmss16/bolz.pdf">Meta-Tracing,
|
||
RPython and PyPy</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=FJY96_6Y3a4">One VM to Rule
|
||
Them All, One VM to Bind Them</a> - Tutorial on the Truffel
|
||
technology.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=SrKj4hYic5A">Programming
|
||
Should Eat Itself</a> - StrangeLoop Talk on Reflective Programming and
|
||
Kenichi Asai’s Black Programming Language.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=twQKAoq2OPE">Python,
|
||
Linkers and Virtual Memory - PYCON US</a>.</li>
|
||
<li><a href="https://youtube.com/watch?v=fWqBmmPQP40">Reverse
|
||
Engineering the MOS 6502 CPU</a>.</li>
|
||
<li><a href="http://compilers.cs.uni-saarland.de/ssasem/">Single Static
|
||
Assignment Form Seminar</a> - Introductory seminar on SSA Form, Compiler
|
||
Optimizations under it and its applications in other areas such as
|
||
Program Analysis and Verification.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=ZBJ0u9MaKtM">The JVM (Java
|
||
Virtual Machine) Architecture</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=OyfBQmvr2Hc">The Most
|
||
Beautiful Program Ever Written</a> - William Byrd on a Lisp interpreter
|
||
written in 15 lines of Lisp.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=R7EEoWg6Ekk">The
|
||
MoVfuscator: turning mov into a soul crushing RE nightmare</a>.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=9751312">HN</a>, <a
|
||
href="https://redd.it/4zl8mh">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li>The SSA Form - Video Lectures from NPTEL’s Compilers Course (see: <a
|
||
href="#courses">Courses</a> for more info):
|
||
<ul>
|
||
<li><a href="https://www.youtube.com/watch?v=Q7hlcuCGbxE">Part
|
||
1</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=FV9fq_HfPsM">Part
|
||
2</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=GyYiic8trCE">Part
|
||
3</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.youtube.com/watch?v=X36ye-1x_HQ">Type-Driven
|
||
Development with Idris</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=FnGCDLhaxKU">Understanding
|
||
Compiler Optimization</a>.</li>
|
||
</ul>
|
||
<h3 id="articles">Articles</h3>
|
||
<ul>
|
||
<li><a href="https://blog.regehr.org/archives/1453">A Tourist’s Guide to
|
||
the LLVM Source Code</a>.</li>
|
||
<li><a
|
||
href="http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html">Accidentally
|
||
Turing Complete</a>.</li>
|
||
<li>Adventures in JIT Compilation by Eli Bendersky:
|
||
<ul>
|
||
<li><a
|
||
href="http://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-1-an-interpreter/">Part
|
||
1 - An Interpreter</a>.</li>
|
||
<li><a
|
||
href="http://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-2-an-x64-jit/">Part
|
||
2 - An x64 JIT</a>.</li>
|
||
<li><a
|
||
href="http://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-3-llvm/">Part
|
||
3 - LLVM</a>.</li>
|
||
<li><a
|
||
href="http://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-4-in-python/">Part
|
||
4 - In Python</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://blog.regehr.org/archives/1170">ALIVe: Automatic
|
||
LLVM InstCombine Verifier</a>.</li>
|
||
<li><a href="https://blog.plan99.net/graal-truffle-134d8f28fb69">Graal
|
||
and Truffel</a> - Obscure research project could radically accelerate
|
||
innovation in programming language design.
|
||
<ul>
|
||
<li>Discussions: <a href="https://redd.it/4tm4mj">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://matt.might.net/articles/cps-conversion/">How to
|
||
Compile with Continuations</a>.</li>
|
||
<li><a
|
||
href="https://nickdesaulniers.github.io/blog/2015/05/25/interpreter-compiler-jit/">Interpreter,
|
||
Compiler and JIT</a>.</li>
|
||
<li><a
|
||
href="https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/">Introducing
|
||
the B3 JIT Compiler</a>.</li>
|
||
<li><a href="http://www.aosabook.org/en/llvm.html">LLVM Architecture</a>
|
||
- Chapter from the book Architecture of Open Source Applications.</li>
|
||
<li><a href="http://www.cs.cornell.edu/~asampson/blog/llvm.html">LLVM
|
||
for Graduate Students</a> - Introduction to doing research with the LLVM
|
||
compiler infrastructure.</li>
|
||
<li><a
|
||
href="http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/">Pratt
|
||
Parsers: Expression Parsing Made Easy</a>.</li>
|
||
<li><a
|
||
href="https://gchp.ie/2016/08/09/rust-compiler-walkthrough-introduction/">Rust
|
||
Compiler Walk-Through</a>.</li>
|
||
<li><a
|
||
href="https://blog.rust-lang.org/2016/09/08/incremental.html">Rust’s
|
||
Incremental Compilation</a>.</li>
|
||
<li><a href="https://blog.rust-lang.org/2016/04/19/MIR.html">Rust’s
|
||
Upcoming MIR</a>.</li>
|
||
<li><a href="http://canonical.org/~kragen/memory-models/">The Memory
|
||
Models that Underlie Programming Languages</a>.</li>
|
||
</ul>
|
||
<h3 id="tutorials">Tutorials</h3>
|
||
<ul>
|
||
<li><a href="https://www.andres-loeh.de/LambdaPi/">A Tutorial
|
||
Implementation of a Dependently Typed Lambda Calculus</a>.</li>
|
||
<li><a href="http://www.lurklurk.org/linkers/linkers.html">A Beginner’s
|
||
Guide to Linkers</a> - Tutorial for helping C & C++ programmers
|
||
understand the essentials of what the linker does.</li>
|
||
<li><a
|
||
href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7733&rep=rep1&type=pdf">Algorithm
|
||
W Step By Step</a>.</li>
|
||
<li><a
|
||
href="https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/">Building
|
||
a LISP from scratch with Swift</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=SfV8aRX0YY0">Compiler
|
||
Optmization Tutorial</a>.</li>
|
||
<li><a
|
||
href="https://github.com/quchen/articles/tree/master/hindley-milner">Hindley-Damas-Milner
|
||
Tutorial</a> - Extensively documented walkthrough for typechecking a
|
||
basic functional language using the Hindley-Damas-Milner algorithm.</li>
|
||
<li><a
|
||
href="https://medium.com/@william01110111/the-programming-language-pipeline-91d3f449c919">How
|
||
I Wrote a Programming Language, and How You Can Too</a>.
|
||
<ul>
|
||
<li>Discussions: <a href="https://redd.it/62ixbc">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://www.stephendiehl.com/llvm/">Implementing a JIT
|
||
Compiled Language with Haskell and LLVM</a>.</li>
|
||
<li><a
|
||
href="http://llvm.org/docs/tutorial/index.html#kaleidoscope-implementing-a-language-with-llvm-in-objective-caml">Kaleidoscope:
|
||
Implementing a Language with LLVM in Objective Caml</a>.</li>
|
||
<li><a href="https://ruslanspivak.com/lsbasi-part1/">Let’s Build A
|
||
Simple Interpreter</a>.</li>
|
||
<li><a href="http://lisperator.net/pltut/">Lisperator</a> - How to
|
||
implement a programming language in JavaScript.</li>
|
||
<li><a
|
||
href="https://maryrosecook.com/blog/post/little-lisp-interpreter">Little
|
||
Lisp Interpreter</a> - Interpreter that supports function invocation,
|
||
lambdas, lets, ifs, numbers, strings, a few library functions, and lists
|
||
in under 120 lines of JavaScript.
|
||
<ul>
|
||
<li><a href="https://github.com/maryrosecook/littlelisp">GitHub
|
||
Repository</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://norvig.com/lispy.html"><code>lis.py</code>, v1: (How
|
||
to Write a (Lisp) Interpreter (in Python))</a> - Tutorial by Peter
|
||
Norvig on writing a simple Lisp interpreter.</li>
|
||
<li><a href="http://norvig.com/lispy2.html"><code>lis.py</code>, v2: An
|
||
((Even Better) Lisp) Interpreter (in Python)</a> - Follow-up tutorial by
|
||
Peter Norvig on making <code>lis.py</code> slightly better.</li>
|
||
<li><a
|
||
href="http://releases.llvm.org/3.6.2/docs/tutorial/LangImpl1.html">LLVM
|
||
Tutorial: Implementing Kaleidoscope</a>.
|
||
<ul>
|
||
<li><a
|
||
href="http://www.llvmpy.org/llvmpy-doc/dev/doc/kaleidoscope/index.html">Python
|
||
version with LLVMPY</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://www.bayfronttechnologies.com/mc_tutorial.html">Metacompiler
|
||
Tutorial, Part 1</a>.</li>
|
||
<li><a href="http://eloquentjavascript.net/11_language.html">Project: A
|
||
Programming Language</a> - Chapter 11 from the book <em>Eloquent
|
||
JavaScript</em>, 2nd Edition.</li>
|
||
<li><a href="http://dev.stephendiehl.com/fun/">Write You a
|
||
Haskell</a>.</li>
|
||
<li><a href="http://cesquivias.github.io/tags/truffle.html">Writing a
|
||
Language in Truffel</a> - Interpreter development tutorial using
|
||
Truffel, by Cristian Esquivias.</li>
|
||
</ul>
|
||
<h3 id="community-discussions">Community Discussions</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://meta.stackexchange.com/questions/25840/can-we-stop-recommending-the-dragon-book-please">Can
|
||
we stop recommending the Dragon Book, please?</a> - StackExchange thread
|
||
criticising the <a href="https://www.amazon.com/dp/0321486811">Dragons
|
||
Book</a> in favor of alternatives.</li>
|
||
<li><a
|
||
href="http://stackoverflow.com/questions/1044600/difference-between-an-ll-and-recursive-descent-parser">What
|
||
is difference between an LL and Recursive Descent parser?</a>.</li>
|
||
<li>Does a compiler use all x86 instructions? - <a
|
||
href="https://news.ycombinator.com/item?id=12352959"><span
|
||
class="citation" data-cites="HN">@HN</span></a>, <a
|
||
href="https://redd.it/4zgawj"><span class="citation"
|
||
data-cites="Reddit">@Reddit</span></a> - Article discussions on HN and
|
||
Reddit.</li>
|
||
<li><a href="https://redd.it/4o7qag">How to Write a Compiler</a> -
|
||
Article discussion on Reddit.</li>
|
||
<li><a
|
||
href="https://softwareengineering.stackexchange.com/questions/165543/how-to-write-a-very-basic-compiler">How
|
||
to Write a Very Basic Compiler</a>.</li>
|
||
<li><a
|
||
href="https://cs.stackexchange.com/questions/6618/how-to-implement-a-prolog-interpreter-in-a-purely-functional-language">How
|
||
to Write a Prolog Interpreter in a Purely Functional Language</a>.
|
||
<ul>
|
||
<li>Discussions: <a href="https://redd.it/4u2xt3">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://stackoverflow.com/questions/415532/implementing-type-inference">Implementing
|
||
Type Inference</a>.</li>
|
||
<li><a
|
||
href="https://softwareengineering.stackexchange.com/questions/178224/i-want-to-build-a-virtual-machine-are-there-any-good-references">I
|
||
want to build a VM, any good references?</a>.</li>
|
||
<li><a href="https://redd.it/4u15t1">Resources for Amatuer Compilers
|
||
Writers</a>.</li>
|
||
<li><a
|
||
href="http://stackoverflow.com/questions/1621899/what-are-the-good-open-source-implementations-of-java-virtual-machine">What
|
||
are the good open source implementations of Java Virtual
|
||
Machine?</a>.</li>
|
||
<li><a
|
||
href="https://www.quora.com/What-are-the-latest-research-trends-in-compilers-and-programming-languages">What
|
||
are the latest research trends in Compilers and PLs</a>.</li>
|
||
</ul>
|
||
<h2 id="tools-and-frameworks">Tools and Frameworks</h2>
|
||
<h3 id="language-agnostic">Language Agnostic</h3>
|
||
<ul>
|
||
<li><a href="https://webkit.org/docs/b3/">B3: The Bare Bones Backend</a>
|
||
- WebKit’s optimizing JIT Compiler for procedures containing C-like
|
||
code.</li>
|
||
<li><a href="https://github.com/aquynh/capstone">Capstone</a> -
|
||
Lightweight multi-platform, multi-architecture disassembly framework
|
||
with bindings to various famous programming languages.</li>
|
||
<li><a href="https://github.com/keystone-engine/keystone">Keystone</a> -
|
||
Lightweight multi-platform, multi-architecture assembler framework with
|
||
bindings to various famous programming languages.</li>
|
||
<li><a href="https://github.com/dotnet/llilc">LLILCL</a> - LLVM-based
|
||
Compiler Backend for .NET Core.</li>
|
||
<li><a href="http://llvm.org/">LLVM</a> - The LLVM Compiler-Backend
|
||
Framework.</li>
|
||
<li><a href="http://microvm.github.io/">MicroVM</a> - The “Mu” Framewrok
|
||
for Programming Languages development based on the MuVM
|
||
Specification.</li>
|
||
<li><a href="https://github.com/xoreaxeaxeax/movfuscator">Movfuscator
|
||
Compiler</a> - The <code>M/o/Vfuscator</code> compiles programs into
|
||
“mov” instructions, and only “mov” instructions.</li>
|
||
<li><a href="http://c9x.me/compile/">QBE: The Quick Backend</a> - Pure C
|
||
embeddable SSA-based compiler backend.</li>
|
||
<li><a href="https://github.com/rubinius/rubinius">Rubinius</a> -
|
||
Programming Languages Development Platform.</li>
|
||
<li><a href="https://github.com/igor84/summus">Summus</a> - Basic,
|
||
reusable, compiler-frontend implementation using LLVM as a backend.</li>
|
||
<li><a href="https://github.com/zetavm/zetavm">ZetaVM</a> -
|
||
Multi-Language Platform for Dynamic Programming Languages.</li>
|
||
</ul>
|
||
<h3 id="c-c">C / C++</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/asmjit/asmjit">AsmJIT</a> - Complete
|
||
x86/x64 JIT and Remote Assembler for C++.</li>
|
||
<li><a href="https://gcc.gnu.org/">GCC</a> - The GNU Compiler Collection
|
||
(C as a Backend).</li>
|
||
<li><a href="https://github.com/drh/lcc">LCC</a> - The lcc retargetable
|
||
ANSI C compiler (C as a Backend).</li>
|
||
<li><a href="http://pp.ipd.kit.edu/firm/">libFirm</a> - C-library that
|
||
provides a graph-based intermediate representation, optimizations, and
|
||
assembly code generation suitable for use in compilers.</li>
|
||
<li><a href="https://www.gnu.org/software/libjit/">libJIT</a> - Library
|
||
for generic Just-In-Time compiler functionality independent of any
|
||
particular bytecode, language, or runtime.</li>
|
||
<li><a href="http://myjit.sourceforge.net/">myJIT</a> - Library for
|
||
machine-code generation and execution at run-time.</li>
|
||
<li><a href="http://github.com/LADSoft/OrangeC">OrangeC</a> - Win32
|
||
C11/C++2014 compiler and toolchain.</li>
|
||
<li><a href="http://pcc.ludd.ltu.se/">PCC</a> - The Portable C Compiler
|
||
(C as a Backend).</li>
|
||
<li><a href="http://www.colm.net/open-source/ragel/">Ragel</a> - Ragel
|
||
State Machine Compiler.</li>
|
||
<li><a href="http://bellard.org/tcc/">TCC</a> - The Tiny C Compiler (C
|
||
as a Backend).</li>
|
||
</ul>
|
||
<h3 id="clr">CLR</h3>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/">Cecil</a>
|
||
- Library to generate and inspect programs and libraries in the ECMA CIL
|
||
format.</li>
|
||
<li><a href="https://github.com/LADSoft/DotNetPELib">DotNetPELib</a> -
|
||
Library to read and write .net assemblies in C++11</li>
|
||
<li><a href="http://ilspy.net">ILSpy</a> - .NET Decompiler.</li>
|
||
<li><a
|
||
href="http://www.red-gate.com/products/dotnet-development/reflector/">Reflector</a>
|
||
- .NET Decompiler.</li>
|
||
<li><a href="http://sebastien.lebreton.free.fr/reflexil/">Reflexil</a> -
|
||
Assembly code editor which can be used as a plugin with other .NET/CLR
|
||
tools.</li>
|
||
</ul>
|
||
<h3 id="d">D</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/pwil3058/dunnart">dunnart</a> - LALR(1)
|
||
Parser Generator.</li>
|
||
<li><a
|
||
href="https://github.com/UplinkCoder/FancyPars-lite">FancyPars-lite</a>
|
||
- Fast parser generator.</li>
|
||
<li><a href="https://github.com/dlang-community/libdparse">libdparse</a>
|
||
- Library allowing to build lexers and parsers. Contains a lexer and a
|
||
parser for the D language itself.</li>
|
||
<li><a href="https://github.com/Calrama/llvm-d">llvm-d</a> - D bindings
|
||
for LLVM.</li>
|
||
<li><a href="https://github.com/PhilippeSigaud/Pegged">Pegged</a> -
|
||
design, test and generate parsers for PEG grammars.</li>
|
||
</ul>
|
||
<h3 id="go">Go</h3>
|
||
<ul>
|
||
<li><a href="https://godoc.org/golang.org/x/tools/cmd/goyacc">goyacc</a>
|
||
- YACC Implementation in Go. Standard LALR(1) parser generator.</li>
|
||
<li><a href="https://godoc.org/llvm.org/llvm/bindings/go/llvm">LLVM Go
|
||
binding</a> - Official Go LLVM binding.</li>
|
||
</ul>
|
||
<h3 id="graal">Graal</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/graalvm/graal">Graal</a> -
|
||
High-Performance Polyglot Runtime.</li>
|
||
<li><a href="https://github.com/graalvm/graal-core">Graal Core</a> -
|
||
Compiler and Truffel Partial Evaluator.</li>
|
||
<li><a href="https://github.com/graalvm/graalvm">Graal VM</a> - Graal’s
|
||
multi-language VM distribution.</li>
|
||
</ul>
|
||
<h3 id="haskell">Haskell</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/ekmett/bound/">Bound</a> / <a
|
||
href="https://github.com/sweirich/replib">unbound</a> / <a
|
||
href="https://github.com/lambdageek/unbound-generics">unbound-generics</a>
|
||
- Libraries for manipulating bound variables.</li>
|
||
<li><a href="https://github.com/haskell/hoopl">Hoopl</a> - Higher-order
|
||
optimization library.</li>
|
||
<li><a href="https://github.com/bscarlet/llvm-general/">llvm-general</a>
|
||
- Haskell bindings for LLVM.</li>
|
||
<li><a href="https://github.com/aslatter/parsec">Parsec</a> / <a
|
||
href="https://github.com/bos/attoparsec">attoparsec</a> / <a
|
||
href="https://github.com/mrkkrp/megaparsec">Megaparsec</a> / <a
|
||
href="https://github.com/ekmett/trifecta/">Trifecta</a> / <a
|
||
href="https://github.com/simonmar/alex">Alex</a> + <a
|
||
href="https://github.com/simonmar/happy">Happy</a> - Parsers for every
|
||
use case.</li>
|
||
<li><a
|
||
href="https://github.com/ivan-m/wl-pprint-text">wl-pprint-text</a> / <a
|
||
href="https://github.com/batterseapower/ansi-wl-pprint">ansi-wl-pprint</a>
|
||
- Walder-style pretty-printing libraries.</li>
|
||
</ul>
|
||
<h3 id="javascript">JavaScript</h3>
|
||
<ul>
|
||
<li><a href="http://mrale.ph/irhydra/2/">IRHudra</a> - Tool for
|
||
displaying intermediate representations used by V8 and Dart VM
|
||
optimizing compilers.
|
||
<ul>
|
||
<li><a href="https://github.com/mraleph/irhydra">GitHub Repo</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://zaa.ch/jison/docs/">JISON</a> - Context-free grammar
|
||
parser generator for JavaScript.
|
||
<ul>
|
||
<li><a href="https://github.com/GerHobbelt/jison">GerHobbelt/jison</a> -
|
||
active fork of jison with bunch of improvements.<br />
|
||
</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Hardmath123/nearley">Nearley</a> -
|
||
Simple, fast, powerful parser toolkit for JavaScript.</li>
|
||
<li><a href="https://github.com/harc/ohm">Ohm</a> - A library and
|
||
language for building parsers, interpreters, compilers, etc.</li>
|
||
<li><a href="https://pegjs.org">PEG.js</a> - Simple parser generator for
|
||
JavaScript.</li>
|
||
</ul>
|
||
<h3 id="jvm">JVM</h3>
|
||
<ul>
|
||
<li><a href="http://www.antlr.org">ANTLR</a> - Parser generator for
|
||
reading, processing, executing, or translating structured text or binary
|
||
files.</li>
|
||
<li><a href="http://byaccj.sourceforge.net">BYAAC/J</a> - BYACC/Java is
|
||
an extension of the Berkeley v 1.8 YACC-compatible parser generator for
|
||
Java.</li>
|
||
<li><a href="https://github.com/cglib/cglib">CGLIB</a> - High level API
|
||
library for generating and transforming Java Byte Code.</li>
|
||
<li><a href="http://wiki.freepascal.org/FPC_JVM">FCP JVM</a> - JVM
|
||
Backend for generating Java Byte Code that conforms to the JDK v1.5+
|
||
Specification and the Dalvik VM.</li>
|
||
<li><a href="https://javacc.org">JavaCC</a> - Java Compiler Construction
|
||
and Parser Generator Toolkit.</li>
|
||
<li><a
|
||
href="https://github.com/bytedeco/javacpp-presets/tree/master/llvm">JavaCPP
|
||
Presets for LLVM</a> - Library for easily interacting with the LLVM
|
||
API.</li>
|
||
<li><a href="http://www.jflex.de">JFlex</a> - JFlex is a lexical
|
||
analyzer generator for Java with full Unicode support.</li>
|
||
<li><a
|
||
href="http://www.cs.princeton.edu/~appel/modern/java/JLex/">JLex</a> -
|
||
JLex is a lexical analyzer generator, that can be used in combination
|
||
with CUP.</li>
|
||
</ul>
|
||
<h3 id="kotlin">Kotlin</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/norswap/whimsy">The Whimsy Compiler
|
||
Framework</a> - Compiler framework research project in Kotlin.</li>
|
||
</ul>
|
||
<h3 id="python">Python</h3>
|
||
<ul>
|
||
<li><a href="https://docs.python.org/3.5/library/ast.html">AST</a> -
|
||
Python’s builtin Abstract Syntax Tree package.</li>
|
||
<li><a href="https://docs.python.org/3.6/library/dis.html">Dis</a> -
|
||
Python’s builtin Disassembler package.</li>
|
||
<li><a href="http://www.canonware.com/Parsing/">Parsing</a> -
|
||
Pure-Python module that implements an LR(1) parser generator, as well as
|
||
CFSM and GLR parser drivers.</li>
|
||
<li><a href="http://www.dabeaz.com/ply/">PLY</a> - Implementation of lex
|
||
and yacc parsing tools for Python.</li>
|
||
<li><a href="http://pyparsing.wikispaces.com/">PyParsing</a> -
|
||
Alternative approach to creating and executing simple grammars, vs. the
|
||
traditional lex/yacc approach, or the use of regular expressions.</li>
|
||
<li><a href="https://github.com/alex/rply">RPLY</a> - Port of the PLY
|
||
project to RPython.</li>
|
||
<li><a href="https://rpython.readthedocs.io/en/latest/">RPython</a> -
|
||
RPython is a framework for the implementatation of dynamic
|
||
languages.</li>
|
||
</ul>
|
||
<h4 id="lists-of-python-parsing-tools">Lists of Python Parsing
|
||
Tools</h4>
|
||
<ul>
|
||
<li><a href="https://wiki.python.org/moin/LanguageParsing">List of
|
||
Language Parsing Tools at the Python Wiki</a>.</li>
|
||
<li><a href="http://nedbatchelder.com/text/python-parsers.html">Survey
|
||
of Python Parsers, by Ned Batchelder</a>.</li>
|
||
</ul>
|
||
<h3 id="rust">Rust</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/Marwes/combine">Combine</a> - Parser
|
||
Combinator Library for Rust.</li>
|
||
<li><a href="https://github.com/jauhien/iron-llvm">IronLLVM</a> - Safe
|
||
LLVM bindings for Rust.</li>
|
||
<li><a href="https://github.com/nikomatsakis/lalrpop">LALRPOP</a> -
|
||
LR(1) parser generator for Rust.</li>
|
||
<li><a href="https://github.com/Geal/nom">Nom</a> - Parser Combinator
|
||
Framework.</li>
|
||
<li><a href="https://github.com/kevinmehall/rust-peg">PEG</a> - PEG
|
||
Parser Generator.</li>
|
||
<li><a href="https://github.com/pest-parser/pest">Pest</a> - PEG Parser
|
||
Generator.</li>
|
||
<li><a href="https://github.com/rust-lang-nursery/rls">RLS</a> - The
|
||
Rust Language Server implementation (aka RLS).</li>
|
||
</ul>
|
||
<h2 id="compilers-and-interpreters">Compilers and Interpreters</h2>
|
||
<p><em>This section aims at listing code projects of Compilers,
|
||
Interpreters, Translators, Runtimes, Virtual Machines and the
|
||
like.</em></p>
|
||
<h3 id="serious-projects">Serious Projects</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/babel/babel">Babel.js</a> -
|
||
Next-generation JavaScript Compiler.</li>
|
||
<li><a href="https://github.com/facebookincubator/BOLT">BOLT</a> -
|
||
Binary Optimization and Layout Tool.</li>
|
||
<li><a href="https://github.com/cisco/ChezScheme">ChezScheme’s
|
||
Compiler</a> - ChezScheme Language Compiler.</li>
|
||
<li><a href="https://github.com/ELENA-LANG/elena-lang">ELENA
|
||
Compiler</a> - Elena programming language.</li>
|
||
<li><a href="https://github.com/typelead/eta">Eta’ Compiler</a> -
|
||
JVM-based Compiler for the Eta Programming Language.</li>
|
||
<li><a href="https://github.com/Frege/frege">Frege’s Compiler</a> -
|
||
JVM-based Compiler for the Frege Programming Language.</li>
|
||
<li><a href="https://github.com/gluon-lang/gluon">Gluon’s Compiler</a> -
|
||
Embedded Language Compiler written in Rust.</li>
|
||
<li><a href="https://github.com/facebook/hhvm">HHVM</a> - Virtual
|
||
Machine for running programs written in Hack and PHP.</li>
|
||
<li><a href="https://github.com/FascinatedBox/lily">Lily’s
|
||
Interpreter</a>.</li>
|
||
<li><a href="https://github.com/LuaDist/lua">Lua’s Interpreter</a> -
|
||
Official Lua Language Interperter.
|
||
<ul>
|
||
<li><a href="http://stevedonovan.github.io/lua-5.1.4/">Lua’s Annotated
|
||
Source Code</a> - Annotated source code of the Lua Programming Language
|
||
Interpreter v5.1.4.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/mirah/mirah">Mirah’s Compiler</a> -
|
||
JVM-based Compiler for the Mirah Programming Language.</li>
|
||
<li><a href="https://github.com/nim-lang/Nim">Nim’s Compiler</a>.</li>
|
||
<li><a href="https://github.com/p-org/P">P Lang</a> - The P Programming
|
||
Language Runtime.</li>
|
||
<li><a href="https://github.com/red/red">Red’s Compiler</a>.</li>
|
||
<li><a href="https://github.com/dotnet/roslyn">Roslyn</a> - The .NET
|
||
“Roslyn” Compiler Platform.</li>
|
||
<li><a
|
||
href="https://github.com/LADSoft/Simple-MSIL-Compiler">Simple-MSIL-Compiler</a>
|
||
- C compiler that compiles to CLR.</li>
|
||
<li><a href="https://github.com/Microsoft/TypeScript">TypeScript’s
|
||
Compiler</a>.</li>
|
||
<li><a href="https://github.com/munificent/wren">Wren’s
|
||
Compiler</a>.</li>
|
||
<li><a href="https://github.com/zig-lang/zig">Zig’s Compiler</a> - Zig
|
||
Language Compiler.</li>
|
||
</ul>
|
||
<h3 id="educational-and-toy-projects">Educational and Toy Projects</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/syegulalp/Akilang">Akilang</a> - A
|
||
compiler for a simple language, built with Python and LLVM</li>
|
||
<li><a href="https://github.com/jserv/amacc">amacc</a> - Small C
|
||
Compiler generating ELF executable for Arm architecture.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=11411124">HN</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://www.is.ocha.ac.jp/~asai/Black/">Black</a> - Scheme
|
||
interpreter for the Reflective Programming Language “Black”, by Kenichi
|
||
Asai’s.
|
||
<ul>
|
||
<li>Other sources: <a
|
||
href="https://github.com/readevalprintlove/black">GitHub
|
||
Mirror</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/rswier/c4">C4</a> - C Lang in 4
|
||
Functions.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=8558822">HN</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/tekknolagi/carp">CarpVM</a> -
|
||
Experimental VM implementation in C.</li>
|
||
<li><a href="https://github.com/charly-lang/charly">Charly</a> -
|
||
Interpreter for a dynamically typed language written in Crystal.</li>
|
||
<li><a href="https://github.com/tomhrr/dale">Dale</a> - Lisp-flavoured
|
||
C: a system programming language.</li>
|
||
<li><a href="https://github.com/erhanbaris/EasyLang">EasyLang</a> - Easy
|
||
Programming Language / VM.</li>
|
||
<li><a href="https://github.com/Eschelle/Eschelle">Eschelle</a> - Open
|
||
source cross platform multi-paradigm language with VM & JIT</li>
|
||
<li><a href="https://github.com/tekknolagi/gecho">Gecho</a> -
|
||
Simple-stack language implementation in C.</li>
|
||
<li><a href="https://github.com/rhysd/gocaml">gocaml</a> - Minimal
|
||
functional programming language implementation in Go and LLVM.</li>
|
||
<li><a href="https://github.com/paivett/gone">gone</a> - Compiler for a
|
||
tiny programming language called Gone, implemented using Python 3.6, SLY
|
||
and llvmlite. Developed as part of the January 2018 <a
|
||
href="http://www.dabeaz.com/compiler.html">Write a compiler course</a>,
|
||
under the supervision of David Beazly.</li>
|
||
<li><a href="https://github.com/mattgreen/hython">Hython</a> -
|
||
Haskell-powered Python 3 interpreter.
|
||
<ul>
|
||
<li>Discussions: <a href="https://redd.it/46f8j4">Reddit</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/llvm-mirror/llgo">llgo</a> - Go frontend
|
||
for LLVM written in Go.</li>
|
||
<li><a href="https://github.com/kanaka/mal">MAL</a>: Make a Lisp -
|
||
Clojure-inspired Lisp interpreter implemented in 64 languages.</li>
|
||
<li><a href="https://github.com/lihaoyi/Metascala">MetaScala</a> -
|
||
Metacircular JVM implementation in Scala.</li>
|
||
<li><a href="https://github.com/maierfelix/mini-js">mini-js</a> -
|
||
Experimental self-hosted JavaScript compiler in 1K LoC.</li>
|
||
<li><a href="https://github.com/MunVM/MunVM">MunVM</a> - Lua VM &
|
||
Compiler in C.</li>
|
||
<li><a href="https://github.com/paladin-t/my_basic">MY-BASIC</a> - An
|
||
embeddable BASIC dialect interpreter in C with modern paradigms.</li>
|
||
<li><a href="https://github.com/lboasso/oberonc">oberonc</a> - A single
|
||
pass, self-hosting compiler for the Oberon-07 programming language. It
|
||
targets the JVM.</li>
|
||
<li><a href="https://github.com/HackerFoo/poprc">Poprc</a> - Compiler
|
||
for the Popr Language.</li>
|
||
<li><a href="https://github.com/aalhour/PyCOOLC">PyCOOLC</a> - Compiler
|
||
for the COOL Programming Language written in Python 3.</li>
|
||
<li><a href="https://github.com/rabbitvm/rabbit">RabbitVM</a> -
|
||
RISC-based VM implementation in C.</li>
|
||
<li><a href="https://github.com/HPCguy/Squint">Squint</a> - A peephole
|
||
optimizer for educational compilers generating stack based
|
||
assembly.</li>
|
||
<li><a href="https://github.com/KCreate/stackvm">StackVM</a> - Virtual
|
||
Machine with an integrated VRAM display.</li>
|
||
<li><a href="https://github.com/dsturnbull/stack_cpu">stack_cpu</a> -
|
||
Stack-machine simulator.</li>
|
||
<li><a
|
||
href="https://github.com/thejameskyle/the-super-tiny-compiler">The Super
|
||
Tiny Compiler</a> - Tiny educational compiler project in JavaScript.
|
||
<ul>
|
||
<li>Discussions: <a
|
||
href="https://news.ycombinator.com/item?id=11395656">HN</a>.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c">tinyc.c</a>
|
||
- Tiny-C language compiler in C.</li>
|
||
<li><a href="https://github.com/raviqqe/tisp">tisp</a> - “Time is Space”
|
||
Programming Language Interpreter.</li>
|
||
<li><a href="https://github.com/antonmedv/ultra-tiny-compiler">Ultra
|
||
Tiny Compiler</a> - Another tiny compiler in less then 90 lines of
|
||
code.</li>
|
||
</ul>
|
||
<h2 id="runtimes-and-vms">Runtimes and VMs</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/CakeML/cakeml">CakeML</a>.</li>
|
||
<li><a href="https://github.com/dotnet/coreclr">CoreCLR</a> - The .NET’s
|
||
Common Language Runtime.</li>
|
||
<li><a href="https://github.com/erlang/otp">Erlang BEAM</a>.</li>
|
||
<li><a href="https://github.com/facebook/hhvm">HHVM</a> - Facebook’s
|
||
Open Source VM for running Hack and PHP programs.</li>
|
||
<li><a href="http://www.ffconsultancy.com/ocaml/hlvm/">HLVM</a>.</li>
|
||
<li>JVM Implementations:
|
||
<ul>
|
||
<li><a href="http://openjdk.java.net/">OpenJDK</a>.</li>
|
||
<li><a href="https://github.com/kaffe/kaffe">Kaffe</a>.</li>
|
||
<li><a href="http://jamvm.sourceforge.net">JamVM</a> - <a
|
||
href="https://github.com/cfriedt/jamvm">GitHub project mirror</a>.</li>
|
||
<li><a href="https://harmony.apache.org/">Apache Harmony</a>.</li>
|
||
<li><a
|
||
href="https://en.wikipedia.org/wiki/List_of_Java_virtual_machines">Other
|
||
JVM Runtimes</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="blogs">Blogs</h2>
|
||
<ul>
|
||
<li><a href="http://eli.thegreenplace.net/">Eli Bendersky</a>.</li>
|
||
<li><a href="https://blog.regehr.org/">John Regehr</a>.</li>
|
||
<li><a href="https://kristerw.blogspot.com/">Krister
|
||
Walfridsson</a>.</li>
|
||
<li><a href="http://lambda-the-ultimate.org">Lambda The
|
||
Ultimate</a>.</li>
|
||
<li><a href="http://llvm.org/devmtg/">LLVM Developers’
|
||
Meetings</a>.</li>
|
||
<li><a href="http://llvmweekly.org/">LLVM Weekly</a> - Weekly newsletter
|
||
about LLVM.</li>
|
||
</ul>
|
||
<h2 id="communities">Communities</h2>
|
||
<ul>
|
||
<li><a href="https://www.reddit.com/r/Compilers">/r/Compilers</a> -
|
||
Subreddit community about the theory and development of compilers.</li>
|
||
<li><a
|
||
href="https://reddit.com/r/ProgrammingLanguages">/r/ProgrammingLanguages</a>
|
||
- Subreddit community that is dedicated to discussion of programming
|
||
languages, programming language theory, design, their syntax and
|
||
compilers.</li>
|
||
</ul>
|
||
<h2 id="verticals">Verticals</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://tomassetti.me/resources-create-programming-languages/">68
|
||
Resources for Creating Programming Languages</a>.</li>
|
||
<li><a href="https://github.com/mre/awesome-static-analysis">Awesome
|
||
Static Analysis</a>.</li>
|
||
<li><a
|
||
href="https://github.com/MattPD/cpplinks/blob/master/compilers.md#conferences">Compiler
|
||
Conferences, Workshops and Journals</a>.</li>
|
||
<li><a href="https://mohd-akram.github.io/languages/">Languages and
|
||
Compilers Network Graph</a>.</li>
|
||
<li><a href="http://minikanren.org">miniKanren.org</a> - Papers, Talks
|
||
and Implementations of miniKanren and microKanren.</li>
|
||
<li><a href="http://steshaw.org/plt/">PLT Enlightenment</a>.</li>
|
||
<li><a href="https://c9x.me/compile/bib/">Resources for Amateur Compiler
|
||
Writers</a>.</li>
|
||
<li><a href="http://www.dcs.gla.ac.uk/~jsinger/ssa.html">SSA Form
|
||
Bibliography</a>.</li>
|
||
<li><a
|
||
href="https://gist.github.com/biboudis/377b4a4de4d1718df2d0">Summer
|
||
Schools</a>.</li>
|
||
<li><a href="https://github.com/endrazine/wcc">The Witchcraft Compiler
|
||
Collection</a>.</li>
|
||
<li><a
|
||
href="https://github.com/williamdemeo/TypeFunc">TypeFunc</a>.</li>
|
||
</ul>
|
||
<h2 id="contributors">Contributors</h2>
|
||
<p><a href="https://github.com/aalhour/awesome-compilers/graphs/contributors">
|
||
<img src="https://contributors-img.firebaseapp.com/image?repo=aalhour/awesome-compilers" />
|
||
</a></p>
|
||
<p><br />
|
||
<!-- Made with [contributors-img](https://contributors-img.firebaseapp.com). --></p>
|
||
<h2 id="license">License</h2>
|
||
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
|
||
src="http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg"
|
||
alt="CC0" /></a></p>
|
||
<p>To the extent possible under law, <a href="http://aalhour.com">Ahmad
|
||
Alhour</a> has waived all copyright and related or neighboring rights to
|
||
this work.</p>
|
||
<p>The logo was designed using <a
|
||
href="https://textcraft.net">TextCraft</a>.</p>
|
||
<p><a href="https://github.com/aalhour/awesome-compilers">compilers.md
|
||
Github</a></p>
|