Compiler, Runtime, and Bootstrap Relationships Explained
Language Lineage tracks six types of relationships between programming languages. This page explains what each means, with examples from the dataset.
Relationship types
| Relationship | Meaning | Example | Count |
|---|---|---|---|
| compiler_written_in | Language A's compiler is implemented in B | rustc is written in Rust | 78 |
| runtime_written_in | Language A's runtime/interpreter is implemented in B | CPython is written in C | 56 |
| bootstrap_written_in | Language A bootstraps from B (initial compiler was in B) | Rust bootstrapped from OCaml | 14 |
| influenced | Language A's design influenced language B | C influenced Go | 189 |
| transpiled_to | Language A compiles to language B (source-to-source) | TypeScript transpiles to JavaScript | 8 |
| rewritten_in | Language A's implementation was rewritten in B | Go compiler rewritten from C to Go | 2 |
What is a compiler?
A compiler translates source code from one language to another — typically from a high-level language to machine code, bytecode, or another high-level language. Examples: GCC (C/C++ → machine code), GHC (Haskell → machine code), tsc (TypeScript → JavaScript).
What is a runtime?
A runtime (or interpreter) is the environment that executes a program. It handles memory allocation, garbage collection, I/O, and standard library calls at execution time. Examples: V8 (JavaScript), CPython (Python), HotSpot JVM (Java bytecode).
What is compiler bootstrapping?
Bootstrapping is the process of using a compiler to compile a new version of itself. The first compiler for a language must be written in another language; once functional, it can compile a self-hosted version written in the target language itself. See: full bootstrapping explainer.