AC-компилятор с целью обеспечить быструю компиляцию и низкое использование памяти с хорошей диагностикой.
Aro включен в качестве альтернативного интерфейса C в компилятор Zig для translate-c
и, в конечном итоге, компилирует файлы C, сначала переводя их в Zig. Aro разрабатывается на https://github.com/Vexu/arocc, и зависимость Zig обновляется оттуда при необходимости.
В настоящее время большая часть стандарта C поддерживается до C23, а также многие распространенные расширения GNU, MSVC и Clang.
Базовая генерация кода поддерживается для Linux x86-64 и может создавать действительный hello world:
$ 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!
Далее предполагается, что в вашем пакете есть файл build.zig.zon
.
zig fetch --save git+https://github.com/Vexu/arocc.git
Добавьте в свой 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" ,
});
Теперь вы можете сделать
const aro = @import ( "aro" );
в вашем Zig-коде.