A curated list of awesome resources and learning materials in the field of X internals. This list has a bias towards education.
- Adventures in JIT compilation, by Eli Bendersky - a series about JIT compilation with Brainfuck as an input language, implemented in C++.
- Anders Hejlsberg on Modern Compiler Construction, by Anders Hejlsberg, Seth Juarez - in this video Anders a great foundation of compiler construction by describing the traditional methodologies that have been used in the last 30 or so years. He then uses that foundation to describe modern tooling needs and how compilers have adapted to meet increasing demands.
- Beginner's Guide to Linkers, by David Drysdale - this article is intended to help C & C++ programmers understand the essentials of what the linker does.
- Build Your Own Lisp, by Daniel Holden - a book about how to implement your own Lisp language with C compiler.
- Juozas Kaziukėnas - Building An Interpreter In RPython - PyCon 2016 - a speech on how was built PHP interpreter with RPython.
- Let's Build a Compiler, by Jack Crenshaw - this fifteen-part series, written from 1988 to 1995, is a non-technical introduction to compiler construction.
- Let’s Build a Simple Interpreter, by Ruslan Spivak - a series of articles about implementing Pascal interpreter in Python.
- Project: A Programming Language, by Marijn Haverbeke - we will build a programming LISP-like language called Egg. It will be a tiny, simple language—but one that is powerful enough to express any computation you can think of. It will allow simple abstraction based on functions.
- Understanding Compiler Optimization - Chandler Carruth - Opening Keynote Meeting C++ 2015 - talk from Chandler Carruth about compilers optimizations, implemented in LLVM.
- A closer look at Crankshaft, V8's optimizing compiler, by Andy Wingo - continuing in my series of articles on V8, Google's JavaScript engine, in this article I'd like to take a closer look at V8's optimizing compiler, with a focus on the Hydrogen intermediate language.
- A Simple Graph-Based Intermediate Representation, by Cliff Click, Michael Paleczny - a paper where they present a graph-based intermediate representation (IR) with simple semantics and a low-memory-cost C++ implementation.
- A tour of V8: Crankshaft, the optimizing compiler, by Jay Conrod - an intro into Crankshaft, optimizing compiler in V8, before Turbofan.
- A tour of V8: Garbage Collection, by Jay Conrod - an intro into garbage collection in V8.
- An Introduction to Speculative Optimization in V8, by Benedikt Meurer - how TurboFan, V8’s optimizing compiler, works and how V8 turns your JavaScript into highly-optimized machine code.
- Combining Analyses, Combining Optimizations, by Cliff Click - this paper presents a framework for describing optimizations. It shows how to combine two such frameworks and how to reason about the properties of the resulting framework.
- Efficient and General On-Stack Replacement for Aggressive Program Specialization, by Sunil Soman, Chandra Krintz - in this paper, we present a novel, general-purpose OSR mechanism that is more amenable to optimiza- tion than prior approaches. In particular, we decou- ple the OSR implementation from the optimization pro- cess and update the program state information incre- mentally during optimization.
- Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches, by Urs Hölzle, Craig Chambers, David Ungar - a paper about polymorphic inlince caches which provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than one cached lookup result per call site.
- Polymorphic Inline Caching on JavaScript for fun and profit, by Chris Leary - what follows is a gentle-albeit-quirky introduction to what polymorphic inline caches (PICs) are and why they're useful to JavaScript Just-In-Time compilers like JaegerMonkey.
- V8: A tale of two compilers, by Andy Wingo - advanced intro into two compilers in V8: FullCodegen and Crankshaft.
- How does a relational database work, by Christophe Kalenzaga - a really deep explanation of how relational databases work.
- Implementing Sorting in Database Systems, by Goetz Graefe - it covers in-memory sorting, disk-based external sorting, and considerations that apply specifically to sorting in database systems.
- Demystifying the Secure Enclave Processor, by Tarjei Mandt, Mathew Solnik, David Wang - SEP is designed as a security circuit configured to perform secure services for the rest of the SOC, with no direct access from the main processor. The paper dives into its implementation and how it commnunicates with other components.
- How OSX executes applications, by Mohit Muthanna Cheppudira - a deep intro into how OS X executes applications, Mach-O format, etc...
- Linux Inside, by 0xAX - book where author wants to share his modest knowledge about the insides of the linux kernel and help people who are interested in linux kernel insides, and other low-level subject matter.
- Operating System Development Series - a series of posts on how to implement your own operating system from scratch.
- Parsing Mach-O files, by Alex Denisov - this article describes how to parse Mach-O file and explains its format.
- Writing a Minimal Mach-O Executable File, by Nicolas Seriot - a story about how author writes a minimal Mach-O executable file which fits into 164 bytes and prints Hello, World.
- Writing a Simple Operating System, by Nick Blundell - self-contained and coherent document, that will give you a hands-on experience of low-level programming, how operating systems are written, and the kind of problems they must solve.
- High Performance Browser Networking, by Ilya Grigorik - this book provides a hands-on overview of what every web developer needs to know about the various types of networks (WiFi, 3G/4G), transport protocols (UDP, TCP, and TLS), application protocols (HTTP/1.1, HTTP/2), and APIs available in the browser (XHR, WebSocket, WebRTC, and more) to deliver the best—fast, reliable, and resilient—user experience.