Compilateur AC dans le but de fournir une compilation rapide et une faible utilisation de la mémoire avec de bons diagnostics.
Aro est inclus comme interface C alternative dans le compilateur Zig pour translate-c
et éventuellement compiler les fichiers C en les traduisant d'abord en Zig. Aro est développé sur https://github.com/Vexu/arocc et la dépendance Zig est mise à jour à partir de là en cas de besoin.
Actuellement, la plupart du standard C est pris en charge jusqu'au C23, tout comme la plupart des extensions courantes de GNU, MSVC et Clang.
La génération de code de base est prise en charge pour Linux x86-64 et peut produire un hello world valide :
$ 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!
Ce qui suit suppose que votre package contient un fichier build.zig.zon
.
zig fetch --save git+https://github.com/Vexu/arocc.git
Ajoutez ce qui suit à votre 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" ,
});
Maintenant tu peux faire
const aro = @import ( "aro" );
dans votre code Zig.