Skip to content
A list of compilers that can generate C code
Branch: master
Clone or download
Latest commit 59afe1e Sep 1, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.

Compilers targeting C

The following is a list of open source compilers that can generate C (or in some cases, C++) code.

Project name/link Language(s) supported Notes
BaCon (Basic Converter) Basic
bc9Basic Basic Can generate C or C++ code. Runs only on Windows but can generate code for *nix. A fork of BCX that outputs valid ISO/ANSI C. Website archive.
Bigloo Scheme (R5RS)
bmx-ng BlitzMax A Monkey-derived BlitzMax to C transpiler.
Carp Carp A statically typed lisp, without a GC, for real-time applications.
Chapel Chapel
CHICKEN Scheme Scheme (R5RS)
Ciao Prolog
cito Ć A language for making portable libraries with a syntax like C#. Also targets Java, C#, JavaScript, ActionScript, Perl 5 and D.
CLiCC Common Lisp Compiles a large strict subset of Common Lisp + CLOS to C.
Critical Mass Modula-3 Modula-3
Cyclone Scheme (R7RS) Cheney on the M.T.A. with native threads.
Cython Python
Céu Céu
EiffelStudio Eiffel
Embeddable Common-Lisp ANSI Common Lisp
Epic Epic
Esotope Brainfuck Compiler Brainfuck
Euphoria to C Translator Euphoria
f2c Fortran 77
Felix Felix Targets C++, not C.
FreeBASIC Basic
Futhark Futhark Purely functional data-parallel language generating OpenCL C
Gambit Scheme (R5RS)
GCL Common Lisp
Genie Genie
GHC Haskell C backend documentation page.
GnuCOBOL COBOL 2014 with extensions
Haxe Haxe Has separate C++ and C targets
Idris Idris A pure functional programming language with dependent types.
Ivory Ivory A Haskell eDSL for safe systems programming.
jhc Haskell 98 The resulting code doesn't use a garbage collector.
JX Objective-C Objective-C (JX Dialect) Object-oriented (Kayian School) language hosted on C
Kit Kit A statically typed procedural language with manual MM, traits, pattern matching, and metaprogramming designed with game development in mind.
Language84 Language84
mbeddr mbeddr A set of languages for embedded software engineering.
Mercury Mercury
MLton Standard ML
Monkey 2 Monkey 2 Targets C++, not C.
Mrustc Rust
NectarJS JavaScript The primary target is WebAssembly. How to compile to C.
Nim Nim Can generate C, C++ or Objective C code.
Nit Nit
Nuitka Python
OBNC Oberon
ocamlcc OCaml Compiles OCaml bytecode to C.
oi C with traits Compiles to code that can be directly used from plain C.
ooc ooc
OpenDylan Dylan
p2c Several Pascal dialects, including UCSD and Turbo Pascal; Modula-2. Can generate C or C++ code.
ParparVM Java bytecode Use for the Java to iOS portability part of the Codename One project.
perlcc Perl 5
purescript-native PureScript Targets C++, not C.
Py14 Python Targets C++, not C.
Pythran Python Targets C++, not C.
Ragel Ragel Can generate C or C++ code. Compiles executable finite state machines from regular languages.
RPerl RPerl, a restricted subset of Perl. Targets C++, not C. Unrelated to RPython.
RPython RPython, a restricted subset of Python. Unrelated to RPerl.
Sather Sather
Scheme-to-C Scheme Example nanopass compiler
Seed7 Seed7
Shedskin Python Targets C++, not C.
SLua Lua
SystemTap SystemTap scripting language SystemTap compiles kernel modules for monitoring Linux systems.
ThinScript ThinScript A lower-level programming language inspired by TypeScript. ThinScript also compiles to JavaScript and WebAssembly.
ts2c JavaScript, TypeScript Compiles a subset of JavaScript/TypeScript (ES3) to readable C89.
TSP A typed subset of Tcl. An experimental JIT. Compiles procedures written in a statically typed subset of Tcl to C or Java to accelerate Tcl programs.
UbxBasic Basic Can generate C or C++ code. A fork of BCX that adds Linux support in addition to Windows. Uses Glib.
Ur/Web Ur/Web
Vala Vala
Zephir Zephir A language for writing PHP extensions.
ZZ ZZ (Drunk Octopus) A safe dialect of C for embedded systems inspired by Rust.

C macro languages

  • C-Mera, a simple source-to-source compiler that transforms s-expression notation to code in a C-family language.
  • LISP/c, a Common Lisp-based macrolanguage for C.

See also

  • Cello, a library for high-level programming in C.
  • Clue, an ANSI C compiler targeting high level languages (Lua, JavaScript, Perl 5, C, Java, Common Lisp).
  • LLVM C backend resurrected.
  • luastatic, a tool that builds standalone executables from Lua programs by embedding Lua code in C.


Your contributions are welcome! Please submit a pull request or create an issue to add a new compiler to the list.



You can’t perform that action at this time.