Development Resource
Haskell
- Megaparsec tutorial
- Parser Combinators in Haskell
- https://www.learnyouahaskell.com/
- Static binaries with Haskell
- Compiling a functional language to LLVM
- An introduction to typeclass metaprogramming
- Error reporting made easy
- Existential Haskell
- Falsify: Hypothesis-inspired shrinking for Haskell
- Fast Haskell: Competing with C at parsing XML
- hasp: Writing a Lisp Interpreter in Haskell
- Typeclassopedia
- Why GADTs matter for performance
Nix
LLVM
- Brief Overview of LLVM
- A bit in depth details on LLVM
- Official LLVM tutorial C++
- Interactive C++ with Cling
- My First LLVM Compiler
- A Complete Guide to LLVM for Programming Language Creators
- LLVM Internals
- How to learn about compilers (LLVM Version)
- Compiling a functional language to LLVM
- Micro C
TableGen
Data Structures
- Pure functional datastructures papaer
- Dynamic typing: syntax and proof theory
- Representing Type Information in Dynamically Typed Languages
- An empirical study on the impact of static typing on software maintainability
- Mapping High Level Constructs to LLVM IR
Other languages
Memory management
- Visualizing memory management in Golang
- TCMalloc : Thread-Caching Malloc
- A visual guide to Go Memory Allocator from scratch (Golang)
Concurrency
Garbage collection
- GC on V8
- Perceus: Garbage Free Reference Counting with Reuse
- Boehm GC
- MPS
- MMTK
- Whiro
This is not GC but a tool to debug GC and memory allocation.
JIT
Optimizations
Compiler
- Stack frame layout on x86-64
- Pointers Are Complicated
- Pointers Are Complicated III, or: Pointer-integer casts exposed
- A compiler writting journal
Linker
Toolchain
Cross compilation
- Creating portable Linux binaries
A nice to read article on some of the common problems when linking statically with none default libc or libc++
Lang
- Scheme
- Chicken Scheme - Easy-to-use compiler and interpreter, with lots of libraries
- Stalin - Brutally optimizing Scheme compiler, with lots of optimization flags
- Crafting Interpreters
Emacs mode
Mathematics
-
CS410 course: Advance Functional Programming
If you need to learn Agda (We use it for the mathematics side of Serene, to proof certain features) check out -
Programming Language Foundations in Agda
This book is an introduction to programming language theory using the proof assistant Agda.
Curry-Howard correspondence
Type Theory
- Homotopy Type Theory
-
Practical Foundations of Programming Languages
-
Types and Programming Languages
-
Advanced Topics in Types and Programming Languages
-
The Works of Per Martin-Löf:
-
The Works of John Reynolds
- Student's Notes on HoTT
- Materials for the Schools and Workshops on UniMath
- Dependently typed programming with singletons ACM or brynmaw
Proof Theory
-
Frank Pfenning's Lecture Notes
- The Blind Spot: Lectures on Logic
- Mustard Watches: An Integrated Approach to Time and Food
Category Theory
-
Category Theory in Context
-
Practical Foundations of Mathematics
-
Categorical Logic and Type Theory
Others
-
OPLSS:
The Oregon Programming Languages Summer School is a 2 week long bootcamp on PLs held annually at the university of Oregon. It's a wonderful event to attend but if you can't make it they record all their lectures anyways! They're taught be a variety of lecturers but they're all world class researchers. - SIGPLAN
- An index of research confs