Open4
ziglangに入門してみる
最近話題のziglangに興味が出てきたので触ってみたいと思う。
言語的な面白さの部分はcmptimeかなと言う印象
コンパイル時に実行される部分があるというところ
Cのマクロみたいなものを独自ではなくziglangの文法に沿って書けるってことかなと想像している
まずはインストールからhomebrewが使える
$ brew install zig
vscodeに必要なものを事前に入れておく
$ brew install xz
$ mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/releases/download/0.9.0/x86_64-macos.tar.xz | tar -xJ --strip-components=1 -C .
vscodeのextensionもインストール
参考: https://github.com/zigtools/zls#macos
ziglings一通りやった。その過程で翻訳した。
コメントだけでも翻訳したほうが理解が早い。
rustもrustlingsやれば使えるようになるのかも。
今度やってみたい
なれたところでちょっと試しにtensrflow_liteを試してみることに
以下を自分の環境(m1 mac)で動かすようにしてみた
まずはtensorflow/liteのdylibの作成から
cmakeのインストール
brew install cmake
tensorflowのコードを取得
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
cd tensorflow_src
mkdir tflite_build
cd tflite_build
cmake ../tensorflow/lite/c
cmake --build . -j
buildが終わるまで待つ
tflite_build内にdylibが作成されていることを確認
ls -l *.dylib
-rwxr-xr-x 1 m0a staff 4740422 8 31 17:25 libtensorflowlite_c.dylib
上記ファイルのfullpathを記録しておく
github.com/mattn/zig-tflite をgit clone
git clone https://github.com/mattn/zig-tflite.git
buid.zigを修正
zuild.zig
const exe = b.addExecutable("fizzbuzz", "example/fizzbuzz.zig");
if (builtin.os.tag == .windows) {
exe.include_dirs.append(.{ .raw_path = "c:/msys64/mingw64/include" }) catch unreachable;
exe.lib_paths.append("c:/msys64/mingw64/lib") catch unreachable;
}
// <-- 追加(start)
if (builtin.os.tag == .macos) {
exe.include_dirs.append(.{ .raw_path = "<tensorflowのコードのpath /xxx//tensorflow/tensorflow_src >" } ) catch unreachable;
exe.lib_paths.append("<libtensorflowlite_c.dylibの置いてあるpath>") catch unreachable;
}
// <-- 追加(end)
上記実行後
zig build
生成された実行ファイルはdylibの参照がuser/local/libを探す挙動のため以下の環境変数設定をしておく
export DYLD_LIBRARY_PATH=<ibtensorflowlite_c.dylibの置いてあるpath>
zig-out/bin/fizzbuzz
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
うごいた、、、
参考