Onyx をソースからビルド
先に結論
git clone してきて ↓ でいけた。あくまで自分の環境では。
source ./settings.sh && ONYX_RUNTIME_LIBRARY=ovmwasm ./build.sh compile install
Onyx のインストール
上の記事では https://get.onyxlang.io に置かれているインストールスクリプトを使ってインストールした[1]。
Onyx をソースからビルド
この記事ではソースからビルドする。手順は https://onyxlang.io/docs/install#source に載っている。
git clone https://github.com/onyx-lang/onyx
cd ./onyx
source settings.sh
./build.sh compile
libwasmer.a
というアセンブリファイルがないというエラーになる。
$ ./build.sh compile
Compiling onyx
clang: error: no such file or directory: '~/.wasmer/lib/libwasmer.a'
libwasmer.a
はヘッドレスの軽量 wasmer コンパイラらしいけどどうやってインストールするのかわからない。
とりあえず build.sh
を読むと ONYX_RUNTIME_LIBRARY
環境変数の値によって、コンパイラでビルドするかインタプリタでビルドするか分岐しているっぽい様子が伺える。
compile_all() {
if [ "$ONYX_RUNTIME_LIBRARY" = "ovmwasm" ]; then
cd interpreter
./build.sh $1
cd ..
fi
cd compiler
./build.sh $1
cd ..
if [ ! -z ${ONYX_RUNTIME_LIBRARY+x} ]; then
cd runtime
./build.sh $1
cd ..
fi
}
case "${ONYX_RUNTIME_LIBRARY}" in
ovmwasm)
LIBS="../shared/lib/$ONYX_ARCH/lib/libovmwasm.a $LIBS"
FLAGS="$FLAGS -DUSE_OVM_DEBUGGER"
;;
wasmer)
LIBS="$(wasmer config --libdir)/libwasmer.a $LIBS"
;;
# Used by MacOS ARM64 cross compilation
wasmer-custom)
LIBS="$WASMER_LIB_PATH/libwasmer.a $LIBS"
;;
*)
echo "Unknown WebAssembly runtime '$ONYX_RUNTIME_LIBRARY'. Aborting.";
exit 1
;;
esac
ONYX_RUNTIME_LIBRARY="ovmwasm"
[2] でビルドすれば libwasmer.a
は不要そう。この設定は、ビルド手順の途中で読み込んでいる ./settings.sh
のなかでもコメントアウトで書いてある。
$ ONYX_RUNTIME_LIBRARY=ovmwasm ./build.sh compile
Compiling ovmwasm to ../shared/lib/darwin_arm64/lib/libovmwasm.a
Compiling onyx
Compiling onyx_runtime.dylib
./compiler/onyx
にバイナリがビルドされる。
$ ./compiler/onyx version
Onyx toolchain version v0.1.8
Built on Wed Jan 3 08:21:31 2024
Runtime: ovmwasm
インストール
$ ./build.sh install
Installing on 'Darwin ...(省略)... arm64'
Installing core libs
Installing core tools
Installing runtime library
Installing to $HOME/.onyx
適宜 $HOME/.onyx/bin
にパスを通すなりすればOK。
ビルド時間
だいたい7秒前後。
$ time /bin/bash -c 'source ./settings.sh && ONYX_RUNTIME_LIBRARY=ovmwasm ./build.sh compile install'
# ...(省略)...
/bin/bash -c 6.53s user 0.95s system 85% cpu 8.712 total
まとめ
libwasmer.a がなくてエラーになるので ovmwasm でビルドしたら一応ビルドできた。
うーん、、 wasmer 自体をもっと勉強しようと思いました。
その他参考
-
この URL は https://github.com/onyx-lang/onyx リポジトリの
dev
ブランチの bin/install.sh にリダイレクトされる。自分が確認したときは、このファイル自体にmaster
とdev
の間でとくに差分はなかった。 ↩︎ -
ovm は Onyx Virtual Machine の略で、wasm や wasmer とは異なる Onyx 独自の処理系なのだと思う。ovm は wasmer より少し遅く、しかしデバッグ実行が使える。 ↩︎
Discussion