[Fork] A modern fully featured C compiler.
- Zig 82.7%
- C 17.2%
Aro
Aro
A C compiler with the goal of providing fast compilation and low memory usage with good diagnostics.
The project intends to support standard C and all common extensions:
| Version | status |
|---|---|
| C23 | Complete excluding Add IEEE 754 interchange and extended types |
| C17 | Complete excluding warnings Ensure C17 compatibility |
| C11 | Complete excluding warnings Ensure C11 compatibility |
| C99 | Complete excluding warnings Ensure C99 compatibility |
| C95 | Complete |
| C89 | Complete |
| GNU extensions | Ensure GNU C extension compatibility |
| Clang extensions | Ensure Clang C extension compatibility |
Aro will be used as the C frontend for C to Zig translation in the Zig toolchain.
Codegen
Earlier there was a proof of concept backend capable of producing a valid hello world binary but it was removed to make way for a new more capable backend which is still under construction. The new backend will reuse parts of the self-hosted Zig compiler.
Using aro as a module
The following assumes that your package has a build.zig.zon file.
zig fetch --save git+https://github.com/Vexu/arocc.git
Add the following to your build.zig:
constaro=b.dependency("aro",.{.target=target,.optimize=optimize,});exe.root_module.addImport("aro",aro.module("aro"));// Optional; this will make aro's builtin includes (the `include` directory of this repo) available to `Toolchain`b.installDirectory(.{.source_dir=aro.path("include"),.install_dir=.prefix,.install_subdir="include",});Now you can do
constaro=@import("aro");in your Zig code.