Update and add index

This commit is contained in:
Jonas Zeunert
2024-04-23 15:17:38 +02:00
parent 4d0cd768f7
commit 8d4db5d359
726 changed files with 41721 additions and 53949 deletions

View File

@@ -1,11 +1,10 @@
 !AWESOME COMPILERS (img/awesome-compilers.png)
 !AWESOME COMPILERS (img/awesome-compilers.png)
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.
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.
! (https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg) (https://github.com/sindresorhus/awesome)
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Contents
@@ -46,7 +45,7 @@
  ⟡ Communities (#communities)
  ⟡ Verticals (#verticals)
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Learning
@@ -57,8 +56,7 @@
  ⟡ Computer Systems: A Programmers Perspective (https://www.amazon.com/dp/9332573905) - General treatment of Computer Systems including Compilers, Interpreters and Runtimes.
  ⟡ Elements of Computing Systems (https://www.amazon.com/dp/0262640686) - How to build a computer from Nand Gates all the way to Compilers and Operating Systems.
  ⟡ Structure and Interpretation of Computer Programs
 (https://mitpress.mit.edu/sicp/full-text/book/book.html) - Study the building blocks of computation using Scheme by building a Scheme interpreter in a Scheme!
  ⟡ Structure and Interpretation of Computer Programs (https://mitpress.mit.edu/sicp/full-text/book/book.html) - Study the building blocks of computation using Scheme by building a Scheme interpreter in a Scheme!
+ Other editions: **HTML5/EPUB version** (https://sarabander.github.io/sicp/).
Introductory
@@ -67,72 +65,62 @@
  ⟡ Beautiful Racket (http://beautifulracket.com) - How to make your own Programming Language with Racket.
  ⟡ Build Your Own Lisp (http://www.buildyourownlisp.com) - Learn C and build your own Lisp Programming Language in 1000 LoC.
  ⟡ Compilers: Principles, Techniques and Tools (https://www.amazon.com/dp/0321486811) - The Dragons Book. A classic textbook on Compiler Construction.
  ⟡ Crafting Interpreters
 (http://www.craftinginterpreters.com/) - An all-stop-shop for learning (nearly) everything you need to learn to build an interpreted, full-featured, efficient scripting language.
  ⟡ Crafting Interpreters (http://www.craftinginterpreters.com/) - An all-stop-shop for learning (nearly) everything you need to learn to build an interpreted, full-featured, efficient scripting language.
+ **GitHub Repo** (https://github.com/munificent/craftinginterpreters).
+ Discussions: **HN** (https://news.ycombinator.com/item?id=13406081). 
  ⟡ Create Your Own Programming Languauge (http://createyourproglang.com/) - Example-driven approach to building your own programming language with video tutorials and source code projects.
+ Discussions: **HN** (https://news.ycombinator.com/item?id=813133).
  ⟡ Engineering a Compiler (https://www.amazon.com/dp/012088478X) - The modern textbook on Compilers Construction, covering SSA-Form and recent research on Code Generation.
  ⟡ Essentials of Programming Languages
 (https://www.amazon.com/dp/0262062798) - Fundamental concepts of programming languages with a focus on Semantics, Interpretation and CPS (Continuation Passing Style).
  ⟡ Essentials of Programming Languages (https://www.amazon.com/dp/0262062798) - Fundamental concepts of programming languages with a focus on Semantics, Interpretation and CPS (Continuation Passing Style).
  ⟡ Language Implementation Patterns (https://www.amazon.com/dp/193435645X) - Learn the patterns behind building programming languages and build an interpreter yourself, using ANTLR.
  ⟡ Modern Compiler Implementation in ML (https://www.cs.princeton.edu/~appel/modern/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.
  ⟡ Modern Compiler Implementation in ML (https://www.cs.princeton.edu/~appel/modern/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.
+ Other editions: **MCI in C** (https://www.cs.princeton.edu/~appel/modern/c/), **MCI in Java** (https://www.cs.princeton.edu/~appel/modern/java/).
  ⟡ Programming Language Pragmatics
 (https://www.amazon.com/dp/0123745144) - Integrated treatement of language design and implementation, the examples feature famous architectures like ARM and x86 64-bit.
  ⟡ Programming Languages: Application and Interpretation (http://cs.brown.edu/courses/cs173/2012/book/) - Excellent introduction to the subject that uses an incremental approach to building 
programs. The mistakes are included too to highlight key concepts.
  ⟡ Programming Language Pragmatics (https://www.amazon.com/dp/0123745144) - Integrated treatement of language design and implementation, the examples feature famous architectures like ARM and x86 64-bit.
  ⟡ Programming Languages: Application and Interpretation
 (http://cs.brown.edu/courses/cs173/2012/book/) - Excellent introduction to the subject that uses an incremental approach to building programs. The mistakes are included too to highlight key concepts.
+ **PDF** (http://cs.brown.edu/courses/cs173/2012/book/book.pdf).
  ⟡ Programming Languages: Theory and Practice (http://people.cs.uchicago.edu/~blume/classes/aut2008/proglang/text/offline.pdf) - Collected lecture notes for the _Programming Languages_ 
course taught at Carnegie Mellon University, most suitable as an introductory text on the subject.
  ⟡ Programming Languages: Theory and Practice (http://people.cs.uchicago.edu/~blume/classes/aut2008/proglang/text/offline.pdf) - Collected lecture notes for the _Programming Languages_ course taught at Carnegie Mellon University, most 
suitable as an introductory text on the subject.
  ⟡ Project Oberon (http://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf) - The design of an operating system and compiler.
+ Other editions: **2013 Edition** (http://www.cs.cmu.edu/~fp/courses/15312-f04/handouts/).
  ⟡ The BEAM Book (https://github.com/happi/theBeamBook) - Description of the ERTS (Erlang Runtime System) and the BEAM Virtual Machine.
  ⟡ Virtual Machines (https://www.amazon.com/dp/1852339691) - 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 (https://www.amazon.com/dp/1558609105) - 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.
  ⟡ Virtual Machines: Versatile Platforms for Systems and Processes
 (https://www.amazon.com/dp/1558609105) - 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 (https://compilerbook.com/) - Well-known introduction to the Go programming language and its ecosystem through building a Compiler project.
  ⟡ Write an Interpreter in Go (https://interpreterbook.com/) - 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
 (https://www.amazon.com/dp/0470177071) - How to build Compilers using Java, this book is tailored for the working Software Engineer.
  ⟡ Writing Compilers and Interpreters: A Software Engineering Approach (https://www.amazon.com/dp/0470177071) - How to build Compilers using Java, this book is tailored for the working Software Engineer.
+ Other editions: **Using C++** (https://www.amazon.com/dp/0471113530), **Using C** (https://www.amazon.com/dp/0471555800).
  ⟡ Writing Interpreters and Compilers for the Raspberry Pi Using Python (https://www.amazon.de/gp/product/1977509207) - 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.
  ⟡ Writing Interpreters and Compilers for the Raspberry Pi Using Python
 (https://www.amazon.de/gp/product/1977509207) - 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
  ⟡ Advanced Compiler Design and Implementation
 (https://www.amazon.com/dp/1558603204) - 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 (https://www.amazon.com/dp/146658260X) - 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 (https://www.amazon.com/dp/0262162288) - 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 (https://www.amazon.com/dp/0805316701) - 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 (https://www.amazon.com/dp/155558179X) - 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
 (https://www.amazon.com/dp/052103311X) - Introduction to CPS (Continuation-Passing Style) as an Intermediate Representation in Compiler for doing optimizations and program transformations.
  ⟡ Design Concepts in Programming Languages (https://www.amazon.com/dp/0262201755) - 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
 (https://www.amazon.com/dp/1489977953) - This book precisely formulates and simplifies the presentation of Instruction Level Parallelism (ILP) compilation techniques.
  ⟡ Advanced Compiler Design and Implementation (https://www.amazon.com/dp/1558603204) - 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
 (https://www.amazon.com/dp/146658260X) - 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
 (https://www.amazon.com/dp/0262162288) - 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
 (https://www.amazon.com/dp/0805316701) - 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 (https://www.amazon.com/dp/155558179X) - 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 (https://www.amazon.com/dp/052103311X) - Introduction to CPS (Continuation-Passing Style) as an Intermediate Representation in Compiler for doing optimizations and program transformations.
  ⟡ Design Concepts in Programming Languages (https://www.amazon.com/dp/0262201755) - 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 (https://www.amazon.com/dp/1489977953) - This book precisely formulates and simplifies the presentation of Instruction Level Parallelism (ILP) compilation techniques.
  ⟡ Linkers and Loaders (https://www.amazon.com/dp/1558604960) - Definitive text on the compile-time and runtime processes of linking and loading.
  ⟡ Optimizing Compilers for Modern Architectures
 (https://www.amazon.com/dp/1558602860/) - Optimizing program generation based on recent gains and breakthroughs in modern high-performance CPU architectures.
  ⟡ Parsing Techniques: A Practical Guide
 (https://www.amazon.com/dp/038720248X) - Definitive guide on parsing algorithms and techniques, also contains an introduction to Formal Grammar and Parsing Theory.
  ⟡ Optimizing Compilers for Modern Architectures (https://www.amazon.com/dp/1558602860/) - Optimizing program generation based on recent gains and breakthroughs in modern high-performance CPU architectures.
  ⟡ Parsing Techniques: A Practical Guide (https://www.amazon.com/dp/038720248X) - Definitive guide on parsing algorithms and techniques, also contains an introduction to Formal Grammar and Parsing Theory.
+ **1st Edition, PDF** (https://dickgrune.com/Books/PTAPG_1st_Edition/).
  ⟡ The Garbage Collection Handbook: The Art of Automatic Memory Management (https://www.amazon.com/dp/1420082795) - 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 (https://www.microsoft.com/en-us/research/wp-content/uploads/1987/01/slpj-book-1987-small.pdf) - Classic textbook on implementing 
Functional Languages, covers Structured Types, Pattern Matching Semantics, Lambda Calculus Transformation, Polymorphic Type Checking and many other topics.
  ⟡ The Garbage Collection Handbook: The Art of Automatic Memory Management
 (https://www.amazon.com/dp/1420082795) - 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 (https://www.microsoft.com/en-us/research/wp-content/uploads/1987/01/slpj-book-1987-small.pdf) - 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 (http://ssabook.gforge.inria.fr/latest/book.pdf) - The only in-depth study of SSA-form (Static Single Assignment Form) in book format.
  ⟡ Types and Programming Languages
 (https://www.amazon.com/dp/0262162091) - Comprehensive introduction to the topic of Type Systems and Programming Languages from a Type-Theoretic perspective.
  ⟡ Types and Programming Languages (https://www.amazon.com/dp/0262162091) - Comprehensive introduction to the topic of Type Systems and Programming Languages from a Type-Theoretic perspective.
  ⟡ Warren's Abstract Machine: Prolog in Haskell (https://mitpress.mit.edu/books/warrens-abstract-machine) - Introduction to WAM from Logic Programming in Prolog.
Papers
@@ -149,11 +137,9 @@
  ⟡ Compiler Construction Using Scheme, E. Hilsdale, J. Ashley, R. Dybvig & D. Friedman (https://www.cs.indiana.edu/~dyb/pubs/fple95.pdf).
  ⟡ Compiling with Continuations: Continued, A. Kennedy (https://www.microsoft.com/en-us/research/wp-content/uploads/2007/10/compilingwithcontinuationscontinued.pdf).
  ⟡ Definitional Interpreters for Higher-Order Programming Languages, J. Reynolds (http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf).
  ⟡ Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development, K. Wang, Y. Lin, S. Blackburn, M. Norrish & A. Hosking
 (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 (http://drops.dagstuhl.de/opus/volltexte/2015/5034/pdf/24.pdf).
  ⟡ Engineering Definitional Interpreters, J. Midtgaard, N. Ramsey, B. Larsen (https://www.cs.tufts.edu/~nr/pubs/interps.pdf).
  ⟡ Garbage Collection in an Uncooperative Environment, H. Boehm, M. Weiser
 (https://pdfs.semanticscholar.org/6434/aa10f3745dcf959cfca9c379aae120396724.pdf?_ga=2.133026126.1710272003.1495044697-300816831.1495044697).
  ⟡ Garbage Collection in an Uncooperative Environment, H. Boehm, M. Weiser (https://pdfs.semanticscholar.org/6434/aa10f3745dcf959cfca9c379aae120396724.pdf?_ga=2.133026126.1710272003.1495044697-300816831.1495044697).
  ⟡ Machine Code Obfuscation via Instruction Set Reduction and CFG Linearization, C. Jonischkeit (https://kirschju.re/static/ba_jonischkeit_2016.pdf).
  ⟡ MOV is Turing-Complete, S. Dolan (https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf).
+ Discussions: **HN** (https://news.ycombinator.com/item?id=6309631), **Reddit** (https://redd.it/1nft0x).
@@ -168,8 +154,7 @@
  ⟡ Simple and Efficient Construction of SSA Form (http://compilers.cs.uni-saarland.de/projects/ssaconstr/).
  ⟡ SSA-based Register Allocation, S. Hack & G. Goos (http://compilers.cs.uni-saarland.de/projects/ssara/).
  ⟡ The Essence of Compiling with Continuations, C. Flanagan, A. Sabry, B. Duba & M. Felleisen (https://users.soe.ucsc.edu/~cormac/papers/pldi93.pdf).
  ⟡ The Page-Faults Weird Machine: Lessons in Instruction-less Computation, J. Bangert, S. Bratus, R. Shapiro, S. Smith
 (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 (https://www.usenix.org/system/files/conference/woot13/woot13-bangert.pdf).
  ⟡ Trace-based JIT Compilation for Lazy Functional Languages, T. Schilling (http://files.catwell.info/misc/mirror/tracing-jit-haskell-schilling.pdf).
  ⟡ Using Datalog with Binary Decision Diagrams for Program Analysis, J. Whaley, D. Avots, M. Carbin & M. Lam (https://people.csail.mit.edu/mcarbin/papers/aplas05.pdf).
@@ -189,34 +174,28 @@
Courses
  ⟡ Compilers Construction, Cambridge (http://www.cl.cam.ac.uk/teaching/1516/CompConstr/materials.html) - Introduction to compiler construction course from the University of Cambridge.
  ⟡ Compiler Construction for Undergrads, RICE University
 (https://www.clear.rice.edu/comp412/Lectures/) - Introduction to compiler construction and language translators course from the RICE University.
  ⟡ Compilers Theory, Stanford - YouTube (https://www.youtube.com/playlist?list=PLLH73N9cB21VSVEX1aSRlNTufaLK1dTAI), Stanford.edu 
(https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/), Class Notes (http://web.stanford.edu/class/cs143/) -Introduction to Compilers theory and construction course from 
Stanford.
  ⟡ Compiler Construction for Undergrads, RICE University (https://www.clear.rice.edu/comp412/Lectures/) - Introduction to compiler construction and language translators course from the RICE University.
  ⟡ Compilers Theory, Stanford - YouTube (https://www.youtube.com/playlist?list=PLLH73N9cB21VSVEX1aSRlNTufaLK1dTAI), Stanford.edu (https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/), Class Notes 
(http://web.stanford.edu/class/cs143/) -Introduction to Compilers theory and construction course from Stanford.
  ⟡ Design and Construction of Compilers, University of Texas
 (https://lambda.uta.edu/cse5317/) - Design and construction of compilers including lexical analysis, parsing, code generation techniques, error analysis and simple code optimizations.
+ Lecture Notes: **PDF** (https://lambda.uta.edu/cse5317/notes.pdf), **HTML** (https://lambda.uta.edu/cse5317/long/long.html).
  ⟡ DSL Design and Implementation Summer School
 (http://vjovanov.github.io/dsldi-summer-school/) - Summer School program on the topics of DSL Design and Implementation hosted by the EPFL University.
  ⟡ Foundations of Programming Languages
 (http://www.cs.cmu.edu/~fp/courses/15312-f04/) - 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 (https://www.coursera.org/learn/nand2tetris2) - 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.
  ⟡ DSL Design and Implementation Summer School (http://vjovanov.github.io/dsldi-summer-school/) - Summer School program on the topics of DSL Design and Implementation hosted by the EPFL University.
  ⟡ Foundations of Programming Languages (http://www.cs.cmu.edu/~fp/courses/15312-f04/) - 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
 (https://www.coursera.org/learn/nand2tetris2) - 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 (https://www.youtube.com/playlist?list=PLbMVogVj5nJQNjkHZgwuAlfQ9tzmQDxjA) - Introductory course from NPTEL on Compiler Design.
  ⟡ NPTEL's Compiler Design Course (http://nptel.ac.in/courses/106108052/32) - Slightly more advanced course than their Principles of Compiler Design course, covers SSA Form to a good degree.
+ **YouTube Video Playlist** (https://www.youtube.com/playlist?list=PLbMVogVj5nJTmKzaSlCpGgi7qxgcRRs8h).
  ⟡ Programming Languages: Part A, by Grossman
 (https://www.coursera.org/learn/programming-languages) - 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 (https://www.coursera.org/learn/programming-languages-part-b) - 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 (https://www.coursera.org/learn/programming-languages-part-c) - 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 (https://www.cs.uoregon.edu/research/summerschool/summer15/curriculum.html) - Summer School program that 
consists of 80 minute lectures presented by internationally recognized leaders in programming languages and formal reasoning research.
  ⟡ Programming Languages: Part A, by Grossman (https://www.coursera.org/learn/programming-languages) - 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
 (https://www.coursera.org/learn/programming-languages-part-b) - 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
 (https://www.coursera.org/learn/programming-languages-part-c) - 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 (https://www.cs.uoregon.edu/research/summerschool/summer15/curriculum.html) - 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 (http://www.wolczko.com/CS294/) - Introductory course on Virtual Machines and Managed Runtimes from the University of Berkeley.
  ⟡ Virtual Machines Summer School 2016 (VMSS 2016)
 (http://soft-dev.org/events/vmss16/) - VMSS is a Summer School program that aims to give an overview of the field, targeted at early career researchers.
  ⟡ Virtual Machines Summer School 2016 (VMSS 2016) (http://soft-dev.org/events/vmss16/) - VMSS is a Summer School program that aims to give an overview of the field, targeted at early career researchers.
+ **YouTube Videos Playlist** (https://www.youtube.com/playlist?list=PLJq3XDLIJkib2h2fObomdFRZrQeJg4UIW).
Talks and Conferences
@@ -236,18 +215,16 @@
  ⟡ Building an Interpreter in RPython (https://www.youtube.com/watch?v=9tDpjzPLvNY).
  ⟡ CPython - A Ten-Hour Codewalk (http://pgbovine.net/cpython-internals.htm).
  ⟡ Exploring Pythons Bytecode (https://ep2016.europython.eu/media/conference/slides/exploring-python-bytecode.pdf).
  ⟡ How to Build a Virtual Machine (https://www.youtube.com/watch?v=OjaAToVkoTw) - 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.
  ⟡ How to Build a Virtual Machine (https://www.youtube.com/watch?v=OjaAToVkoTw) - 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 (https://2016.javazone.no/program/java-aot-compilation).
  ⟡ MetaScala: A Tiny DIY JVM
 (https://skillsmatter.com/skillscasts/4916-metascala-a-tiny-diy-jvm) - Metascala is a tiny metacircular Java Virtual Machine (JVM) written in the Scala programming language.
  ⟡ MetaScala: A Tiny DIY JVM (https://skillsmatter.com/skillscasts/4916-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 (https://ia601503.us.archive.org/32/items/vmss16/bolz.pdf).
  ⟡ One VM to Rule Them All, One VM to Bind Them (https://www.youtube.com/watch?v=FJY96_6Y3a4) - Tutorial on the Truffel technology.
  ⟡ Programming Should Eat Itself (https://www.youtube.com/watch?v=SrKj4hYic5A) - StrangeLoop Talk on Reflective Programming and Kenichi Asai's Black Programming Language.
  ⟡ Python, Linkers and Virtual Memory - PYCON US (https://www.youtube.com/watch?v=twQKAoq2OPE).
  ⟡ Reverse Engineering the MOS 6502 CPU (https://youtube.com/watch?v=fWqBmmPQP40).
  ⟡ Single Static Assignment Form Seminar (http://compilers.cs.uni-saarland.de/ssasem/) - Introductory seminar on SSA Form, Compiler Optimizations under it and its applications in other areas
such as Program Analysis and Verification.
  ⟡ Single Static Assignment Form Seminar (http://compilers.cs.uni-saarland.de/ssasem/) - 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 (https://www.youtube.com/watch?v=ZBJ0u9MaKtM).
  ⟡ The Most Beautiful Program Ever Written (https://www.youtube.com/watch?v=OyfBQmvr2Hc) - William Byrd on a Lisp interpreter written in 15 lines of Lisp.
  ⟡ The MoVfuscator: turning mov into a soul crushing RE nightmare (https://www.youtube.com/watch?v=R7EEoWg6Ekk).
@@ -290,16 +267,15 @@
  ⟡ Algorithm W Step By Step (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7733&rep=rep1&type=pdf).
  ⟡ Building a LISP from scratch with Swift (https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/).
  ⟡ Compiler Optmization Tutorial (https://www.youtube.com/watch?v=SfV8aRX0YY0).
  ⟡ Hindley-Damas-Milner Tutorial
 (https://github.com/quchen/articles/tree/master/hindley-milner) - Extensively documented walkthrough for typechecking a basic functional language using the Hindley-Damas-Milner algorithm.
  ⟡ Hindley-Damas-Milner Tutorial (https://github.com/quchen/articles/tree/master/hindley-milner) - 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 (https://medium.com/@william01110111/the-programming-language-pipeline-91d3f449c919).
+ Discussions: **Reddit** (https://redd.it/62ixbc).
  ⟡ Implementing a JIT Compiled Language with Haskell and LLVM (http://www.stephendiehl.com/llvm/).
  ⟡ Kaleidoscope: Implementing a Language with LLVM in Objective Caml (http://llvm.org/docs/tutorial/index.html#kaleidoscope-implementing-a-language-with-llvm-in-objective-caml).
  ⟡ Lets Build A Simple Interpreter (https://ruslanspivak.com/lsbasi-part1/).
  ⟡ Lisperator (http://lisperator.net/pltut/) - How to implement a programming language in JavaScript.
  ⟡ Little Lisp Interpreter (https://maryrosecook.com/blog/post/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.
  ⟡ Little Lisp Interpreter
 (https://maryrosecook.com/blog/post/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.
+ **GitHub Repository** (https://github.com/maryrosecook/littlelisp).
  ⟡ lis.py, v1: (How to Write a (Lisp) Interpreter (in Python)) (http://norvig.com/lispy.html) - Tutorial by Peter Norvig on writing a simple Lisp interpreter.
  ⟡ lis.py, v2: An ((Even Better) Lisp) Interpreter (in Python) (http://norvig.com/lispy2.html) - Follow-up tutorial by Peter Norvig on making lis.py slightly better.
@@ -313,8 +289,8 @@
Community Discussions
  ⟡ Can we stop recommending the Dragon Book, please? (https://meta.stackexchange.com/questions/25840/can-we-stop-recommending-the-dragon-book-please) - StackExchange thread criticising the 
Dragons Book (https://www.amazon.com/dp/0321486811) in favor of alternatives.
  ⟡ Can we stop recommending the Dragon Book, please? (https://meta.stackexchange.com/questions/25840/can-we-stop-recommending-the-dragon-book-please) - StackExchange thread criticising the Dragons Book 
(https://www.amazon.com/dp/0321486811) in favor of alternatives.
  ⟡ What is difference between an LL and Recursive Descent parser? (http://stackoverflow.com/questions/1044600/difference-between-an-ll-and-recursive-descent-parser).
  ⟡ Does a compiler use all x86 instructions? - @HN (https://news.ycombinator.com/item?id=12352959), @Reddit (https://redd.it/4zgawj) - Article discussions on HN and Reddit.
  ⟡ How to Write a Compiler (https://redd.it/4o7qag) - Article discussion on Reddit.
@@ -386,12 +362,11 @@
Haskell
  ⟡ Bound (https://github.com/ekmett/bound/) / unbound (https://github.com/sweirich/replib) / unbound-generics (https://github.com/lambdageek/unbound-generics) - Libraries for manipulating 
bound variables.
  ⟡ Bound (https://github.com/ekmett/bound/) / unbound (https://github.com/sweirich/replib) / unbound-generics (https://github.com/lambdageek/unbound-generics) - Libraries for manipulating bound variables.
  ⟡ Hoopl (https://github.com/haskell/hoopl) - Higher-order optimization library.
  ⟡ llvm-general (https://github.com/bscarlet/llvm-general/) - Haskell bindings for LLVM.
  ⟡ Parsec (https://github.com/aslatter/parsec) / attoparsec (https://github.com/bos/attoparsec) / Megaparsec (https://github.com/mrkkrp/megaparsec) / Trifecta 
(https://github.com/ekmett/trifecta/) / Alex (https://github.com/simonmar/alex) + Happy (https://github.com/simonmar/happy) - Parsers for every use case.
  ⟡ Parsec (https://github.com/aslatter/parsec) / attoparsec (https://github.com/bos/attoparsec) / Megaparsec (https://github.com/mrkkrp/megaparsec) / Trifecta (https://github.com/ekmett/trifecta/) / Alex 
(https://github.com/simonmar/alex) + Happy (https://github.com/simonmar/happy) - Parsers for every use case.
  ⟡ wl-pprint-text (https://github.com/ivan-m/wl-pprint-text) / ansi-wl-pprint (https://github.com/batterseapower/ansi-wl-pprint) - Walder-style pretty-printing libraries.
JavaScript
@@ -486,8 +461,8 @@
  ⟡ Eschelle (https://github.com/Eschelle/Eschelle) - Open source cross platform multi-paradigm language with VM & JIT
  ⟡ Gecho (https://github.com/tekknolagi/gecho) - Simple-stack language implementation in C.
  ⟡ gocaml (https://github.com/rhysd/gocaml) - Minimal functional programming language implementation in Go and LLVM.
  ⟡ gone (https://github.com/paivett/gone) - Compiler for a tiny programming language called Gone, implemented using Python 3.6, SLY and llvmlite. Developed as part of the January 2018 Write 
a compiler course (http://www.dabeaz.com/compiler.html), under the supervision of David Beazly.
  ⟡ gone (https://github.com/paivett/gone) - Compiler for a tiny programming language called Gone, implemented using Python 3.6, SLY and llvmlite. Developed as part of the January 2018 Write a compiler course 
(http://www.dabeaz.com/compiler.html), under the supervision of David Beazly.
  ⟡ Hython (https://github.com/mattgreen/hython) - Haskell-powered Python 3 interpreter.
+ Discussions: **Reddit** (https://redd.it/46f8j4).
  ⟡ llgo (https://github.com/llvm-mirror/llgo) - Go frontend for LLVM written in Go.
@@ -538,8 +513,7 @@
Communities
  ⟡ /r/Compilers (https://www.reddit.com/r/Compilers) - Subreddit community about the theory and development of compilers.
  ⟡ /r/ProgrammingLanguages
 (https://reddit.com/r/ProgrammingLanguages) - Subreddit community that is dedicated to discussion of programming languages, programming language theory, design, their syntax and compilers.
  ⟡ /r/ProgrammingLanguages (https://reddit.com/r/ProgrammingLanguages) - Subreddit community that is dedicated to discussion of programming languages, programming language theory, design, their syntax and compilers.
Verticals