Programming Language Research
Research on programming languages, compilers, functional programming, devtools.
Research
All notes from my research on programming languages and compilers.
Courses & Notes
Tooking classes to learn compiler theory more in-depth. Here's all courses I took and the notes I wrote.
- Programming Languages Part A
- Compilers: Theory and Practice
- Compiler — Stanford
- Introduction to Functional Programming
- UFMG Compilers Course
Books & Notes
Experiments
- An interpreter for the Monkey programming language
- An interpreter for the Lox programming language
- How the TypeScript compiler works
Papers
- How Statically-Typed Functional Programmers Write Code
- An Axiomatic Basis for Computer Programming
- The Next 700 Programming Languages
- A Theory of Type Polymorphism in Programming
- Towards a theory of type structure
- Call-by-name, call-by-value, and the λ-calculus
- A syntactic approach to type soundness
- Fundamental concepts in programming languages
Programming Language Design / Theory
- A Tale of Two Asyncs: Open Source Language Design in Rust and Node.js
- Another Go at Language Design
- How Rust does OSS
- Growing a Language, by Guy Steele
- The Mess We're In
- A Frontend Programmer's Guide to Languages
- Let’s Build a Programming Language
- Grammars for programming languages
- Building a Debugger: Code Analysis
- Language-oriented software engineering
- The Programming Language Enthusiast
- Programming and Programming Languages
- Programming Language Foundations in Agda
- Programming Language and Compilers Reading List
- On understanding types, data abstraction and effects
- What's Next for Our Programming Languages
- JavaScript Static Analysis for Evolving Language Specifications
- Minimalism in Programming Language Design
- Programming language theory and practice in ReScript
- CS520 Theories of Programming Languages — KAIST
Compilers
Compiler Construction
- Let's build a compiler
- Compiler Design course
- Lexical Analysis
- AST (Abstract Syntax Tree)
- Compilers and Interpreters
- Anders Hejlsberg on Modern Compiler Construction
- Language grammar
- Lexing in JS style
- Mozilla Hacks Compiler Compiler
- Resources for Amateur Compiler Writers
- Understanding compiler optimization
- An Incremental Approach to Compiler Construction
- Lessons from Writing a Compiler
- Understanding GC in JSC From Scratch
- JavaScript implementation in SpiderMonkey
Interpreter
- Building an Interpreter
- Let’s Build A Simple Interpreter
- Crafting Interpreters
- Implementing a Simple Compiler on 25 Lines of JavaScript
- Little lisp interpreter
Modern Compilers
- Write you a Haskell
- Quick look at the TypeScript Compiler API
- Typescript Compiler explained by the Author Anders Hejlsberg
- TypeScript Compiler Notes
- A miniature model of the Typescript compiler
Type System
- Let's build a typesystem in Haskell!
- Safe & Efficient Gradual Typing for TypeScript
- A Type System From Scratch
- Typing the Untyped: Soundness in Gradual Type Systems
- "Propositions as Types" by Philip Wadler
- Type-safe embedded domain-specific languages 1/4
- Type-safe embedded domain-specific languages 2/4
- Type-safe embedded domain-specific languages 3/4
- Type-safe embedded domain-specific languages 4/4
Books & Papers
- Practical Foundations for Programming Languages
- SICP
- HTDP
- Papers to read
- Papers on programming languages: ideas from 70's for today
Language Learnings
TypeScript
- Type level programming in TypeScript
- Advanced Types in TypeScript
- An Introduction To Type Programming In TypeScript
- Type Level Programming in TypeScript
- Optimizing TypeScript Memory Usage
- TypeScript Bytecode Interpreter / Runtime Types
Rust
Browser
- Browser from scratch
- Let's build a browser engine!
- How Browsers Work: Behind the scenes of modern web browsers
- Concurrent JavaScript: It can work!
- Web Browser Engineering
- Round-up of web browser internals resources
- How browsers work
- Browser Performance
- Notes on how browsers work
- Notes on Javascript Memory Profiling in Google Chrome
- Notes on JavaScript Interpreters
- Web Browser Engineering
- Critical rendering path - Crash course on web performance
- Understanding Reflow and Repaint in the browser
- In The Loop - setTimeout, micro tasks, requestAnimationFrame, requestIdleCallback
- reflows & repaints: css performance making your javascript slow?
- What forces layout / reflow
- Rendering: repaint, reflow/relayout, restyle
- David Baron's blog: Blink engineer
- The internet computer
- Servo: Designing and Implementing a Parallel Browser
- Building a Rust Web Browser
- Browser from Scratch
Web UI
- PL web frameworks
- Algebraic Effects for the Rest of Us
- Algebraic Effects for React Developers
- Algebraic effects, Fibers, Coroutines
- TypeScript + fp-ts: ReaderTaskEither and React
- React - Basic Theoretical Concepts
- React Concurrent mode
Chrome
- Overview of the RenderingNG architecture
- Key data structures and their roles in RenderingNG
- RenderingNG deep-dive: LayoutNG
- RenderingNG: an architecture that makes and keeps Chrome fast for the long term
Careers
- Chromium Engineer at Browser Company
- Senior Software Engineer at Mozilla Corporation
- JavaScript Virtual Machine Compiler Engineer at Apple