Programming Language Implementation Family Tree

What are programming languages written in? Mostly C: 48 of the languages and tools in the dataset have a current compiler or runtime written in C, while 27 are self-hosted and compile themselves. This poster groups 150 languages and tools by the language their implementation is written in today, from 186 cited relationships.
Poster: languages and tools grouped by the language their current compiler or runtime is written in. The full list is in the table below.
Select the poster for the full-size PNG. Generated from the Language Lineage dataset v5.0; the table below lists every card as text.

Download and reuse

Download PNG Download SVG

The poster is licensed CC BY 4.0, like the dataset it is drawn from: print it, put it in slides or course notes, or post it, with credit to Language Lineage and a link to this page. To embed it:

<a href="https://www.languagelineage.org/posters/programming-language-implementation-family-tree"><img src="https://www.languagelineage.org/posters/programming-language-implementation-family-tree.png" alt="What programming languages are written in: Language Lineage poster" width="800"></a>

Every card, as text

Written inCountLanguages and tools
C48.NET Runtime, ABC, Alef, APL, AWK, Bash, BEAM VM, Bourne Shell, Cyclone, Cython, Dylan, Emacs Lisp, Erlang, Fortran 95, ggml, GHC, GNU Guile, Haskell, Icon, Io, J, JavaScriptCore, Julia, Limbo, llama.cpp, Lua, LuaJIT, MATLAB, Miranda, ML, MoarVM, Modula-3, Newsqueak, OCaml, Perl, Pharo, PHP, Python, QuickJS, R, Raku, Rebol, Ruby, S, Scheme, Smalltalk, Tcl, Wren
C++33.NET Runtime, ActionScript, Carbon, Chapel, Clang, Dart, Factor, GCC, GDScript, ggml, Hack, HHVM, HotSpot JVM, JavaScriptCore, Julia, Lean, llama.cpp, LLVM, Luau, Mojo, mrustc, Nix, Node.js, Objective-C, Odin, Pony, PyTorch, Self, Solidity, SpiderMonkey, Swift, Triton, V8
Self-hosted (written in itself)27Ada, C#, C++, CoffeeScript, Common Lisp, Crystal, D, Elixir, Erlang, F#, Fortran, Go, Haskell, Jakt, Java, Julia, Kotlin, Nim, OCaml, Pascal, Racket, Rust, Scala, Standard ML, Swift, TypeScript, Zig
Assembly13.NET Runtime, ALGOL, ALGOL 68, CLU, COBOL, COMTRAN, FLOW-MATIC, Forth, Go, JavaScriptCore, Lisp, OCaml, PL/I
Rust8Bun, Deno, fish, Gleam, Move, Nushell, SpiderMonkey, SWC
LLVM7Crystal, CUDA, Julia, Mojo, Rust, Swift, Triton
C#5.NET Runtime, PowerShell, Q#, Roslyn, Visual Basic .NET
Haskell5Agda, Elm, GHC, PureScript, Unison
Java4Clojure, GraalVM, Groovy, Kotlin
Python4mypy, PyPy, PyTorch, Triton
Fortran3BLAS, R, S
JavaScript3Babel, Node.js, Scratch
OCaml3Coq, Haxe, ReScript
TypeScript1Angular
Erlang1BEAM VM
Clojure1ClojureScript
Ruby1Crystal
BEAM VM1Elixir
Erlang1Elixir
Go1esbuild
CUDA1ggml
Pascal1Modula-2
Oberon1Oberon-2
Lisp1Planner
CUDA1PyTorch
Chez Scheme1Racket
Rebol1Red
Zig1Roc
ALGOL1Simula
Machine Code1Speedcoding
Go1TypeScript

How the poster is made

Each card is an implementation language. Under it are the languages and tools whose compiler or runtime is written in that language today, using the dataset's compiler written in, runtime written in, rewritten in edges that have no end year. Historical implementations are left out, so Go appears as self-hosted rather than under C, which wrote its compiler until 2015; for those changes over time see how compilers bootstrap. Influence and transpilation edges are not drawn.

A language can appear on several cards when the dataset records parts of its implementation in different languages: Julia appears under C, C++, Self-hosted, and LLVM. Cards with fewer than 3 entries are merged into "Everything else". Every edge links to its source on the relationship pages and in the downloadable dataset.

Explore the full graph →