Resources to study Compilers/PLs
﷽
Basics
Resource Collections
- Programming languages resources - Max Bernstein
- Programming Language Theory - Steven Shaw
- Oregon Programming Languages Summer SChool
- Programming Language Implementation Summer School.
- Resources on Compilers for Functional Languages
- Matt Might’s articles
- jayconrod.com
- Great Works in Programming Languages - Collected by Benjamin C. Pierce
- Approachable PL Papers for Undergrads
- aalhour/awesome-compilers
Courses
- CS 6120: Advanced Compilers
- CS 6110: Advanced Programming Languages
- UCSD - Advanced Compiler Design
- IITD - Advanced Compiler Techniques
- UCB CS294-113: Virtual Machines and Managed Runtimes
- Virtual Machine Summer School 2016
Compiler Optimisation
- A Catalogue of Optimising Transforms
- Intel Microcode
- Fabian Giesen
- Combining Analyses, Combining Optimizations
Garbage Collection
- Writing a Simple Garbage Collector in C
- The Journey of Go’s Garbage Collector
- A Guide to the Go Garbage Collector
- Generational GC - Mono
- Understanding Garbage Collection in JavaScriptCore
- Trash talk: the Orinoco garbage collector
- Baby’s First Garbage Collector
-
Incremental GCs
Static Program Analysis
Single Static Assignment
- Simple and Efficient Construction of Static Single Assignment Form
- Efficiently computing static single assignment form and the control dependence graph
- CMU - cs6120 - SSA
- SSABook
Compile-time Memory Management
- compile time memory management models - r/programminglanguages
- Linear Types - c2
- Unique Type - c2
- Linear Type Systems - CS 6110
- Substructural Type Systems - CS 152
- Lobster’s Memory Management
- Zero-Cost Borrowing with Vale Regions
- Generational References - Vale
- Ownership and Lifetimes - Rustnomicon
- Region-based memory management
- Uniqueness Type
- Practical Affine Types
- Linear Regions Are All You Need
- A Step-Indexed Model of Substructural State
- Monadic Regions
- Ownership Types for Safe Region-Based Memory Management in Real-Time Java
- ASAP: As Static As Possible memory management
- Ownership You Can Count On: A Hybrid Approach to Safe Explicit Memory Management
- Adoption and Focus: Practical Linear Types for Imperative Programming
- Memory safety without runtime checks or garbage collection
- Perceus: Garbage Free Reference Counting with Reuse
- Type Systems for Memory Safety
Fearless Concurrency
- A Simple Capability-Based Dynamic Language Design For Data Race-Freedom
- A Flexible Type System for Fearless Concurrency
Functional
- Compiling a Functional Language Using C++
- Compiling Functional Languages - chalmers
- An Introduction to Combinator Compilers and Graph Reduction Machines
- Implementing functional languages: a tutorial
- Making a Fast Curry: Push/Enter vs. Eval/Apply
-
GHC
JIT
- spencertipping/jit-tutorial
- Adventures in JIT compilation
- Building a baseline JIT for Lua automatically
- Speculation in JavaScriptCore
- TigerShrimp: An Understandable Tracing JIT Compiler
- wdv4758h/awesome-jit
- A primer on code generation in Cranelift
- How JIT Compilers are Implemented and Fast
- The Sea of Nodes and the HotSpot JIT - Cliff Click
- A JVM Does That??? by Dr Cliff Click