Compilador AC con el objetivo de proporcionar una compilación rápida y un bajo uso de memoria con buenos diagnósticos.
Aro se incluye como una interfaz C alternativa en el compilador Zig para translate-c
y, eventualmente, compilar archivos C traduciéndolos primero a Zig. Aro se desarrolla en https://github.com/Vexu/arocc y la dependencia de Zig se actualiza desde allí cuando es necesario.
Actualmente, la mayor parte del estándar C es compatible hasta C23 y al igual que muchas de las extensiones comunes de GNU, MSVC y Clang.
La generación de código básico es compatible con Linux x86-64 y puede producir un saludo mundo válido:
$ cat hello.c
extern int printf(const char *restrict fmt, ...);
int main(void) {
printf("Hello, world!n");
return 0;
}
$ zig build && ./zig-out/bin/arocc hello.c -o hello
$ ./hello
Hello, world!
Lo siguiente supone que su paquete tiene un archivo build.zig.zon
.
zig fetch --save git+https://github.com/Vexu/arocc.git
Agregue lo siguiente a su 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" ,
});
Ahora puedes hacer
const aro = @import ( "aro" );
en tu código Zig.