Free compilers and interpreters
In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name “compiler” is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language, object code, or machine code) to create an executable program. These are some programming language compilers and interpreters which are distributed as free software or under a free software license, with the source code available or not.

Assemblers, Linkers and Object Module Librarians

  • VASM - VASM is an assembler for a wide variety of CPUs.
  • YASM - YASM, a rewrite of the NASM assember (also listed on this page), supports the Intel x86 and AMD64 instruction sets.
  • NASM - This is a free macro assembler that assembles Intel x86 assembly code. It generates a wide range of object file formats, including a.out, ELF, COFF, Mach-0, Microsoft OBJ, etc.
  • MASM - Microsoft Macro-Assembler, or MASM, is now available for non-commercial use.

BASIC Compilers and Interpreters

  • SDLBasic - SDLBasic is a BASIC interpreter that integrates the WxBasic interpreter, the SDL graphics library and a graphics engine, so that you can use it to write 2D games in BASIC.
  • BaCon BASIC - BaCon BASIC is a BASIC to C translator for Unix-based systems (like Linux, FreeBSD, Mac OS X, etc), which means that it takes your BASIC code and changes it into C source code.
  • Vintage BASIC - Vintage BASIC is an interpreter with a language that is close to Microsoft's BASIC version 2 as found in the Commodore 64.

C/C++ Compilers

  • Tiny C Fork - This is a fork of the Tiny C compiler that is distributed in source form. Like the original Tiny C compiler, it implements many features of the ISO C99 standard.
  • AsmJIT - Complete x86/x64 JIT and Remote Assembler for C++.
  • GCC - The GNU Compiler Collection (C as a Backend).
  • LCC - The lcc retargetable ANSI C compiler (C as a Backend).
  • libFirm - C-library that provides a graph-based intermediate representation, optimizations, and assembly code generation suitable for use in compilers.
  • libJIT - Library for generic Just-In-Time compiler functionality independent of any particular bytecode, language, or runtime.
  • myJIT - Library for machine-code generation and execution at run-time.
  • OrangeC - Win32 C11/C++2014 compiler and toolchain.
  • PCC - The Portable C Compiler (C as a Backend).
  • Ragel - Ragel State Machine Compiler.
  • TCC - The Tiny C Compiler (C as a Backend).


  • ANTLR - Parser generator for reading, processing, executing, or translating structured text or binary files.
  • BYAAC/J - BYACC/Java is an extension of the Berkeley v 1.8 YACC-compatible parser generator for Java.
  • CGLIB - High level API library for generating and transforming Java Byte Code.
  • FCP JVM - JVM Backend for generating Java Byte Code that conforms to the JDK v1.5+ Specification and the Dalvik VM.
  • JavaCC - Java Compiler Construction and Parser Generator Toolkit.
  • JavaCPP Presets for LLVM - Library for easily interacting with the LLVM API.
  • JFlex - JFlex is a lexical analyzer generator for Java with full Unicode support.
  • JLex - JLex is a lexical analyzer generator, that can be used in combination with CUP.

Language Agnostic

  • B3: The Bare Bones Backend - WebKit's optimizing JIT Compiler for procedures containing C-like code.
  • Capstone - Lightweight multi-platform, multi-architecture disassembly framework with bindings to various famous programming languages.
  • Keystone - Lightweight multi-platform, multi-architecture assembler framework with bindings to various famous programming languages.
  • LLILCL - LLVM-based Compiler Backend for .NET Core.
  • LLVM - The LLVM Compiler-Backend Framework.
  • MicroVM - The “Mu” Framewrok for Programming Languages development based on the MuVM Specification.
  • Movfuscator Compiler - The M/o/Vfuscator compiles programs into “mov” instructions, and only “mov” instructions.
  • QBE: The Quick Backend - Pure C embeddable SSA-based compiler backend.
  • Rubinius - Programming Languages Development Platform.
  • Summus - Basic, reusable, compiler-frontend implementation using LLVM as a backend.
  • ZetaVM - Multi-Language Platform for Dynamic Programming Languages.

Educational and Toy Projects

  • Akilang - A compiler for a simple language, built with Python and LLVM
  • amacc - Small C Compiler generating ELF executable for Arm architecture.
  • Black - Scheme interpreter for the Reflective Programming Language “Black”, by Kenichi Asai's.
  • C4 - C Lang in 4 Functions.
  • CarpVM - Experimental VM implementation in C.
  • Charly - Interpreter for a dynamically typed language written in Crystal.
  • Dale - Lisp-flavoured C: a system programming language.
  • EasyLang - Easy Programming Language / VM.
  • Eschelle - Open source cross platform multi-paradigm language with VM & JIT
  • Gecho - Simple-stack language implementation in C.
  • gocaml - Minimal functional programming language implementation in Go and LLVM.
  • gone - Compiler for a tiny programming language called Gone, implemented using Python 3.6, SLY and llvmlite. Developed as part of the January 2018 Write a compiler course, under the supervision of David Beazly.
  • Hython - Haskell-powered Python 3 interpreter.
  • llgo - Go frontend for LLVM written in Go.
  • MAL: Make a Lisp - Clojure-inspired Lisp interpreter implemented in 64 languages.
  • MetaScala - Metacircular JVM implementation in Scala.
  • mini-js - Experimental self-hosted JavaScript compiler in 1K LoC.
  • MunVM - Lua VM & Compiler in C.
  • MY-BASIC - An embeddable BASIC dialect interpreter in C with modern paradigms.
  • oberonc - A single pass, self-hosting compiler for the Oberon-07 programming language. It targets the JVM.
  • Poprc - Compiler for the Popr Language.
  • PyCOOLC - Compiler for the COOL Programming Language written in Python 3.
  • RabbitVM - RISC-based VM implementation in C.
  • StackVM - Virtual Machine with an integrated VRAM display.
  • stack_cpu - Stack-machine simulator.
  • The Super Tiny Compiler - Tiny educational compiler project in JavaScript.
  • tinyc.c - Tiny-C language compiler in C.
  • tisp - “Time is Space” Programming Language Interpreter.
  • Ultra Tiny Compiler - Another tiny compiler in less then 90 lines of code.

Runtimes and VMs

We use cookies to personalize and enhance your experience on our site. By using our site, you agree to our use of cookies.
  More information about cookies