Categories
Applications
Compilers and Interpreters
  • Github CLI
  • SSH
  • HTTPS
Clone Repo

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:

Versionstatus
C23Complete excluding Add IEEE 754 interchange and extended types
C17Complete excluding warnings Ensure C1/ compatibility
C11Complete excluding warnings Ensure C11 compatibility
C99Complete excluding warnings Ensure C99 compatibility
C95Complete
C89Complete
GNU extensionsEnsure 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.

#542

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:

const aro = 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

const aro = @import("aro");

in your Zig code.

About
A modern fully featured C compiler.
Owner
Vexu (User)
Last Commit
2025-04-09
Latest Release
Latest Release Date
Created
2021-02-25