Compilador AC com o objetivo de fornecer compilação rápida e baixo uso de memória com bons diagnósticos.
Aro é incluído como um frontend C alternativo no compilador Zig para translate-c
e, eventualmente, compilar arquivos C, traduzindo-os primeiro para Zig. Aro é desenvolvido em https://github.com/Vexu/arocc e a dependência Zig é atualizada a partir daí quando necessário.
Atualmente a maior parte do C padrão é suportada até C23 e assim como muitas das extensões comuns do GNU, MSVC e Clang
A geração de código básico é suportada para Linux x86-64 e pode produzir um hello world 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!
O seguinte pressupõe que seu pacote tenha um arquivo build.zig.zon
.
zig fetch --save git+https://github.com/Vexu/arocc.git
Adicione o seguinte ao seu 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" ,
});
Agora você pode fazer
const aro = @import ( "aro" );
em seu código Zig.