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 | 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. |
| 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 |
| Language84 | Language84 | |
| mbeddr | mbeddr | A set of languages for embedded software engineering. |
| Mercury | Mercury | |
| MLton | Standard ML | |
| Monkey | Monkey | Targets C++, not C. |
| Mrustc | Rust | |
| 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 | 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. |
| 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. |
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
- luastatic, a tool that builds standalone executables from Lua programs by embedding Lua code in C
Contributing
Your contributions are welcome! Please submit a pull request or create an issue to add a new compiler to the list.
