Open4

ziglangに入門してみる

m0am0a

最近話題のziglangに興味が出てきたので触ってみたいと思う。

言語的な面白さの部分はcmptimeかなと言う印象

コンパイル時に実行される部分があるというところ
Cのマクロみたいなものを独自ではなくziglangの文法に沿って書けるってことかなと想像している

m0am0a

まずはインストールから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://marketplace.visualstudio.com/items?itemName=AugusteRame.zls-vscode

参考: https://github.com/zigtools/zls#macos

https://ziglang.org/learn/getting-started/

m0am0a

なれたところでちょっと試しにtensrflow_liteを試してみることに
以下を自分の環境(m1 mac)で動かすようにしてみた

https://github.com/mattn/zig-tflite

まずは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

うごいた、、、

参考
https://www.tensorflow.org/lite/guide/build_cmake