Vexu/arocc

A modern fully featured C compiler.

Zig

1,825

2,213 commits

updated Sep 26, 2026

See the code

README

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 C17 compatibility
C11Complete excluding warnings Ensure C11 compatibility
C99Complete excluding warnings Ensure C99 compatibility
C95Complete
C89Complete
GNU extensionsEnsure GNU C extension compatibility
Clang extensionsEnsure 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.

c
compiler
zig

Significant stargazers

(top 24 of 82)

Delyan Angelov

386 followers · starred Sep 2025

Ofek Lev

916 followers · starred Jul 2026

Julien Voisin

546 followers · starred Jun 2023

Linus Groh

941 followers · starred Mar 2025

Vexu/arocc

A modern fully featured C compiler.

Zig

1,825

2,213 commits

updated Sep 26, 2026

See the code

README

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 C17 compatibility
C11Complete excluding warnings Ensure C11 compatibility
C99Complete excluding warnings Ensure C99 compatibility
C95Complete
C89Complete
GNU extensionsEnsure GNU C extension compatibility
Clang extensionsEnsure 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.

c
compiler
zig

Significant stargazers

(top 24 of 82)

Delyan Angelov

386 followers · starred Sep 2025

Ofek Lev

916 followers · starred Jul 2026

Julien Voisin

546 followers · starred Jun 2023

Linus Groh

941 followers · starred Mar 2025

Languages

Zig

81.2%

C

18.8%