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 |
---|---|---|
ATS | ATS | |
BaCon (Basic Converter) | Basic | |
bc9Basic | Basic | Windows-only. |
bft (Brainfuck Transcompiler) | Brainfuck | |
Bigloo | Scheme (R5RS) | |
bmx-ng | BlitzMax | A Monkey-derrived BlitzMax to C transpiler. |
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. |
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 | Targets C++, not C. |
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 |
Language84 | Language84 | |
mbeddr | mbeddr | A set of languages for embedded software engineering. |
Mercury | Mercury | |
MLton | Standard ML | |
Monkey | Monkey | Targets C++, not C. |
Nim | Nim | Can generate C, C++ or Objective C code. |
Nit | Nit | |
Nuitka | Python | |
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 | For 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 | Compiles executable finite state machines from regular languages. Can generate C or C++ code. |
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. |
Ur/Web | Ur/Web | |
Vala | Vala | |
Zephir | Zephir | A language for writing PHP extensions. |
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)
- LISP/c, a Common Lisp based macrolanguage for C
- LLVM C backend resurrected
Contributing
Your contributions are welcome! Please submit a pull request or create an issue to add a new compiler to the list.