Languages¶
The sixteen language implementation repositories. Each one implements the
curriculum with the same layout and the same make targets, built
and tested in its toolchain container and natively on Linux, macOS, and Windows.
| Language | Repository | Extension | Release line | Build / package tool | Status | Projects implemented |
|---|---|---|---|---|---|---|
| C | c |
.c |
C17 (GCC 16 in the container) | make | Active | 00 |
| C# | cs |
.cs |
.NET 10 (LTS) | dotnet CLI (NuGet) | Active | 00 |
| C++ | cpp |
.cpp |
C++20 (GCC 16 in the container) | CMake | Active | 00 |
| Go | go |
.go |
Go 1.27 | Go modules | Active | 00 |
| Haskell | hs |
.hs |
GHC 9.14 | cabal | Active | 00 |
| Java | java |
.java |
Java 25 (LTS, Eclipse Temurin) | Maven | Active | 00 |
| JavaScript | js |
.js |
Node.js 24 (LTS) | npm | Active | 00 |
| Julia | jl |
.jl |
Julia 1.13 | Pkg | Active | 00 |
| Objective-C | objc |
.m |
Objective-C with Foundation (GNUstep Base; Apple Foundation on macOS) | GNU Make + gnustep-config |
Active | 00 |
| Perl | pl |
.pl |
Perl 5.42 | cpanm (cpanfile) | Active | 00 |
| PHP | php |
.php |
PHP 8.5 | Composer | Active | 00 |
| Python | py |
.py |
Python 3.14 | uv | Active | 00 |
| Ruby | rb |
.rb |
Ruby 4.0 | Bundler | Active | 00 |
| Rust | rs |
.rs |
Rust 1.99 | cargo | Active | 00 |
| TypeScript | ts |
.ts |
Node.js 24 (LTS); TypeScript via tsc as a project dependency | npm + tsc | Active | 00 |
| Visual Basic | vb |
.vb |
VB.NET on .NET 10 (LTS) | dotnet CLI (NuGet) | Active | 00 |
Shared layout¶
Every language repository follows the curriculum's
language skeleton:
a root Makefile (make check = repository checks + toolchain verification + every project
listed in IMPLEMENTED), a toolchain Containerfile, the sdlc-curriculum submodule pinned
to a release, and one workspace per curriculum project. A project counts as implemented once
it is listed in IMPLEMENTED; CI then builds and tests it everywhere. Project 00
(00-hello-world, dp-hello) is implemented in all sixteen repositories, against curriculum
v1.5.0; see the
implementation status.
Language characteristics¶
| Language | CLI classification | Image category | Access to OS primitives | Entry-point mechanism |
|---|---|---|---|---|
| C | Included | Native Toolchain | Absolute & Direct (POSIX system calls) | Kernel drops argc and argv pointers directly into main() |
| C# | Included | First-Class | Runtime wraps system arguments into top-level Main() array | Application Level (deep native reflection tools) |
| C++ | Included | Native Toolchain | Absolute & Direct (POSIX system calls) | Kernel drops argc and argv pointers directly into main() |
| Go | Included | First-Class | High (wrapped for async goroutine scheduler) | Compiled-in runtime sets up engine and slices args to os.Args |
| Haskell | Included | First-Class | High (via System.Environment primitives) | Compiles to binary; runtime initializes and wraps options to getArgs |
| Java | Included | First-Class | Medium-High (abstracted via ProcessBuilder) | JVM host maps system args into public static void main() |
| JavaScript | Included | First-Class | High (via V8 Node.js runtime wrappers) | Host binary consumes kernel flags first; residual args go to process.argv |
| Julia | Included | First-Class | High (explicit process wrappers) | Runtime targets calculations but populates global ARGS vector |
| Objective-C | Included | Native Toolchain | Absolute & Direct (Strict superset of C) | Compiles directly; maps arguments using standard C main structure |
| Perl | Included | First-Class | Absolute & Direct (original Unix stream system wrapper) | Interpreter maps argument arrays into structural @ARGV variable |
| PHP | Included | First-Class | High (via php-cli and standard streams) | Engine wraps CLI context and exposes args via argv |
| Python | Included | First-Class | High (via sys/os/subprocess) | Interpreter maps args to high-level sys.argv list |
| Ruby | Included | First-Class | High (via native process automation libraries) | Interpreter bootstraps file and wraps arguments into ARGV array |
| Rust | Included | First-Class | Absolute & Direct (POSIX + memory boundaries) | Compiles directly to machine code; args mapped via std::env::args() |
| TypeScript | Included | First-Class | High (via V8 Node.js runtime wrappers) | Host binary consumes kernel flags first; residual args go to process.argv |
| Visual Basic | Included | First-Class | Medium-High (.NET platform hooks) | Runtime initializes and maps arguments to Main function |
Adding a language
Follow Add a repository and
Set up a language repository, then add a
page here (from templates/reference.md), a row to the tables above, and an entry in the
nav:.