環境
当方の環境は以下である。
Windows 11 + x86_64 + wsl2 + ubuntu24.04 + zsh
zigバージョン検討
本稿執筆時点のmasterはバージョン0.16.0-dev.2960+ce1f7136aであり、0.16.0の安定板に向けた開発中であることが分かる。ここで、zigのリリース履歴を確認すると以下であり、0.11.0~0.15.0までは約半年間でリリースされていることが分かる。また、大体dev.3000前後で開発完了していることが分かる。前回の0.15.0からはすでに約7ヶ月経っており、dev.3000前後に到達していることから、そろそろリリースされることが推測される。
| version | release date | dev. number |
|---|---|---|
| 0.10.0 | 2021/10/31 | dev.3978 |
| 0.11.0 | 2023/06/08 | dev.4214 |
| 0.12.0 | 2023/12/19 | dev.3515 |
| 0.13.0 | 2024/05/19 | dev.3363 |
| 0.14.0 | 2025/03/05 | dev.4689 |
| 0.15.0 | 2025/08/19 | dev.2897 |
0.16.0では、以下が変更点・新機能として実装されるらしい。
stdという標準ライブラリにIoというモジュールが、すなわちstd.Ioが、これまでのバージョンでは使われていたらしいstd.ioを廃止する代わりに新規実装される。これは以下に代表される全ての入出力・並行処理を抽象化したクロスプラットフォームインターフェースになるとのこと。- ファイルシステム
- ネットワーク
- プロセス
- タイマー
- 乱数
- 非同期処理
- 排他
- グローバルメモリ
- main関数の書き方が以下のように変更され、標準ライブラリ
stdの様々なモジュールで取得していた入出力を、全てinitから取得可能とし取得後に必要だったOS依存なコード記述を解消するとのこと。
0.15
pub fn main() !void {
0.16
pub fn main(init: std.process.Init) !void {
- build.zigに代表されるビルドシステムの関数や引数などAPIが変更されるとのこと。
今回、入出力やビルドといったプログラムの根幹を占める機能に大規模な破壊的変更があることが分かった。また、まだ安定板ではないとはいえ、そろそろ開発完了しリリースされることが推測された。そのため、当方は0.16をインストールすることに決めたにゅんちゅ。
インストール
公式ダウンロードサイトから該当バージョン及びアーキテクチャの実行ファイルが置いてあるURLを確認し、以下コマンドでインストールした。
zsh
% cd
% mkdir Zig #Zig用ディレクトリを作成、ディレクトリが散らからないようにするため
% cd Zig
% curl -f https://ziglang.org/builds/zig-x86_64-linux-0.16.0-dev.2960+ce1f7136a.tar.xz | tar xJ #実行ファイル一式を解凍しながらダウンロード
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52.8M 100 52.8M 0 0 2047k 0 0:00:26 0:00:26 --:--:-- 5523k
% cd zig-x86_64-linux-0.16.0-dev.2960+ce1f7136a
% sudo ln -sf `pwd`/zig /usr/local/bin/zig #実行ファイルをシンボリックリンクでコマンド化、パッケージ管理ツール以外でのインストールは/usr/local/binに入れるようにしている
尚、usr/local/binにパスが通っていない場合は、例えば以下のように設定して通すこと。その際、追記する設定ファイルの読み込み条件や順番、パスの優先順に留意すること。
zsh: ~/.zshenv
export PATH="/usr/local/bin:$PATH"
hello world
公式導入手順で案内されている動作確認方法は、ただhello worldと表示するわけではないようだ。といっても、自動生成機能が用意されているので、いきなりコードを書く必要はない。実際に、以下コマンドにて動作確認を実施した。
zsh
% mkdir hello-world
% cd hello-world
% zig init #hello world一式が生成される
info: created build.zig
info: created build.zig.zon
info: created src/main.zig
info: created src/root.zig
info: see `zig build --help` for a menu of options
% zig build run #ビルドシステムによるrun処理の実行、ビルド方法は3種類あるが動作確認にはこの方式が採用されている
All your codebase are belong to us.
info: arg: /home/hoge/Zig/hello-world/zig-out/bin/hello_world
Run `zig build test` to run the tests.
%
公式導入手順に例示されている出力結果と比較すると、info: arg: /home/hoge/Zig/hello-world/zig-out/bin/hello_world
が余計に出ているが、、。開発版なのでまだ手が回っていないのだろう。
本稿では一旦ここまでとして、次回は複数の手法があるらしいビルドについて全体像を把握したいにゅんちゅ。
