Link All the Languages!
An ongoing project created by Alexander Hill where we link as many programming languages as possible into a single executable.
Theory
Most programming languages provide a foreign function interface to the C language. Therefore, language X should be able to call functions in language Y and language Y should be able to call functions in language X using the C ABI.
Languages
Tier 3 (Statically linked and fully interoperable)
- Assembly
- C
- C++
- Nim
- Zig
Tier 2 (Can call C and be called by C)
- D
- Lua
- Rust
Tier 1 (Can be called by C)
- Fortran
- Go
- Java
- Kotlin
- Python
- Rexx
- Ruby
- Tcl
To-do
- Ada
- Agda
- ALGOL
- APL
- B
- Ballerina
- BCPL
- Boo
- Bosque
- C#
- C--
- Caml
- Carbon
- Carp
- Clojure
- COBOL
- CoffeeScript
- Common Lisp
- Coq
- Dart
- Eiffel
- Elixir
- Erlang
- F
- F#
- Forth
- FreeBasic
- Futhark
- Groovy
- Hack
- Haskell
- Haxe
- Hy
- Idris
- Janet
- Javascript
- Julia
- MATLAB
- Mercury
- Modula-3
- OCaml
- Oz
- Pascal
- Perl
- PL/I
- PHP
- PowerShell
- Prolog
- R
- Racket
- Raku
- Ratfor
- RPG
- Scala
- Scheme
- Smalltalk
- Squirrel
- Swift
- Typescript
- Unison
Impossible
- Crystal(crystal-lang/crystal#921)
Rules for including languages
- Languages must be statically linked
- Languages must be able to use their standard library
- Languages must be able to call C and be called by C
- Languages must be stable(1.0.0 or greater in semantic versioning)