StunxFS / compilers-targeting-c

A list of compilers that can generate C code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.
Glaz Glaz
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.

License

CC0

About

A list of compilers that can generate C code