Erlang VM から Zig を呼び出す

V
Jul 30, 2022

--

Bun という JavaScript ランタイムが Zig で書かれていたため、Zig に興味を持っています。

自分たちの使い道としては Zig 単体で使うことはほとんどありませんが、Erlang VM から Zig を呼び出すということを想定しています。

なぜ Zig なのかは別記事にまとめていますので、興味があればどうぞ。

rebar3 zig プラグイン

Erlang のビルドツールである rebar3 から zig をビルドして Erlang VM から読み込めるのを簡単にする rebar3 プラグインを公開しました。

const std = @import("std");

pub fn add(x: c_int, y: c_int) c_int {
return x + y;
}

test "add" {
try std.testing.expectEqual(add(1, 2), 3);
}

こんな感じの add 関数を erlang 側から呼び出すことが出来ます。

$ rebar3 shell
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling zig_sample
Erlang/OTP 25 [erts-13.0.1] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]
Eshell V13.0.1 (abort with ^G)
1> sample:add(1,2).
3

こんな感じで Erlang 経由で zig の add を呼び出せるようになります。

もし Erlang と Zig の両方に興味がある人がいたら、是非触ってみてください。

--

--

V
V

No responses yet