Compiled to machine code
A compiler turns the whole program into machine code for one operating system and CPU before it runs, so it starts fast and needs no virtual machine.
How they work
C, C++, Rust, Zig, Go and Haskell (with GHC) are compiled ahead of time. The output is an executable for one target, such as Linux on x86-64; running it elsewhere means compiling again. There is no warm-up and no interpreter, so start-up is quick, and nothing extra has to be installed on the machine that runs it.
Native doesn’t mean there’s no runtime. Go statically links its runtime, garbage collector included, into every binary, and GHC’s runtime system collects garbage too. C, C++, Rust and Zig ship no collector at all. The line also blurs from the other side: Racket CS compiles Racket to machine code through Chez Scheme, while the older Racket BC compiled to bytecode and finished the job with a JIT.
Technologies
What all programming languages have in common →| Open source | ISO/IEC JTC1/SC22/WG14 | ISO standard (ISO/IEC 9899:2024); compilers carry their own licences | 2026-10-08 | |
| Open source | ISO/IEC JTC1/SC22/WG21 | ISO standard (ISO/IEC 14882:2024); compilers carry their own licences | 2026-10-08 | |
| Open source | Google (the Go team) | BSD 3-Clause | 2026-10-08 | |
| Open source | GHC developers and the Haskell community | BSD-3-Clause (GHC) | 2026-10-08 | |
| Open source | Racket team (PLT) | MIT or Apache 2.0, at your option | 2026-10-08 | |
| Open source | Rust Project, supported by the Rust Foundation | MIT or Apache 2.0 (your choice) | 2026-10-08 | |
| Open source | Zig Software Foundation | MIT | 2026-10-08 |
Sources
- Dennis Ritchie: The Development of the C Language (1993)
- Go FAQ: Why is my trivial program such a large binary? (statically linked, includes the Go runtime)
- GHC User’s Guide: Options related to code generation (native and LLVM code generators)
- GHC User’s Guide: Running a compiled program (RTS options for the garbage collector)
- The Racket Reference: 1.5 Implementations (CS compiles to machine code; BC used bytecode and a JIT)
- Zig language reference 0.15.2: Memory (no memory management, no runtime)