compilers-targeting-c
compilers-targeting-c copied to clipboard
A list of compilers that can generate C code
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) | |
Blech | Blech | A synchronous programming language for embedded reactive real-time-critical software. |
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 | |
eC | eC | An object-oriented superset of C with modules and generics. |
EiffelStudio | Eiffel | |
Embeddable Common-Lisp | ANSI Common Lisp | |
Emfrp | Emfrp | A pure functional reactive programming language for small-scale embedded systems. |
Emgo | Go | Compiles a subset of Go for 32-bit microcontrollers through C. |
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 | |
Harbour | xBase compatible with CA-Clipper | |
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. |
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. |
ManKai Common Lisp | Common Lisp | |
matiec (unoffficial mirror) | ST, IL, SFC (IEC 61131) | A set of textual languages for PLC programming. |
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. |
Nelua | Nelua | A statically-typed meta-programmable systems programming language heavily inspired by Lua. |
Nim | Nim | Can generate C, C++ or Objective C code. |
Nit | Nit | |
NN-512 | NN-512 graph language | Generate C99 code for neural net inference. |
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. |
QuickJS | JavaScript (ES2020) | Compiles JavaScript to bytecode and embeds the bytecode in 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 | |
V | V | A no-GC systems language with modern features like sum types and immutability by default. |
Vala | Vala | |
Vostok | Oberon-07 | Also targets Java, JavaScript, and Oberon dialects. |
wasm2c | WebAssembly | Converts WASM files to C source and header. |
wasmdec | WebAssembly | Converts WebAssembly binaries to C. |
wax | wax | A language design for transpiling. Compiles to C, C#, C++, Java, Lua, Python, Swift, TypeScript, and WebAssembly. |
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.
Contributing
Your contributions are welcome! Please submit a pull request or create an issue to add a new compiler to the list.