arocc
1.0.0
高速なコンパイルと低メモリ使用量を提供し、適切な診断を行うことを目的とした AC コンパイラ。
Aro は、 translate-c
用の Zig コンパイラーに代替 C フロントエンドとして組み込まれており、最終的には最初に C ファイルを Zig に変換することで C ファイルをコンパイルします。 Aro は https://github.com/Vexu/arocc で開発されており、Zig の依存関係は必要に応じてそこから更新されます。
現在、標準 C のほとんどは C23 までサポートされており、GNU、MSVC、Clang の一般的な拡張機能の多くもサポートされています。
基本的なコード生成は x86-64 Linux でサポートされており、有効な 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コードに。