プログラミング言語Zigを試してみる
Zigの概要
Home ⚡ Zig Programming Languageをやっていく。
Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software.
mattnさんによれば、Better C的な言語であるようだ。
JSON パーサを実装してみて Zig がだいたいどんな言語なのか分かってきた。一言で言うなれば
「Rust ぽいC言語」
別の言い回しをするなら
「Result と Optional のあるC言語」
といった所だと思う。
Zigのセットアップ
Chapter 0 - Getting Started | ziglearn.orgは無視して、asdfでインストールする(asdf-community/asdf-zig: Zig plugin for the asdf version manager)。
また、Language Serverをビルドするために、Zigのリリース版ではなくmasterブランチを使う必要がある。
$ asdf plugin-add zig https://github.com/asdf-community/asdf-zig.git
$ asdf install zig master
$ asdf global zig master
$ zig version
0.10.0-dev.3041+de62bd064
開発環境の準備
コードを書く前に、エディタ(VSCode)を設定する。
以下の拡張機能を入れた。
- Zig - Visual Studio Marketplace
- Zig Snippets - Visual Studio Marketplace
- Zig Language Server (zls) for VSCode - Visual Studio Marketplace
Language Serverも設定する。zigtools/zls: Zig LSP implementation + Zig Language Serverの通り実行する。
$ 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 .
また、実行権限もつけておく。
$ chmod +x ~/zls/zls
そして、以下の通り、zlsのパスを設定。
しかし、補完が効かない〜。
Hello, World
Getting Started ⚡ Zig Programming Languageに沿ってやっていく。
$ mkdir zig-getting-started
$ cd zig-getting-started
zig init-exe
で諸々準備するようだ。
$ zig init-exe
info: Created build.zig
info: Created src/main.zig
info: Next, try `zig build --help` or `zig build run`
ファイルが2つ吐き出されている。ソースコードと、ビルド用のファイルぽい。
$ tree .
.
├── build.zig
└── src
└── main.zig
main.zig
はこんな感じ。
const std = @import("std");
pub fn main() anyerror!void {
// Note that info level log messages are by default printed only in Debug
// and ReleaseSafe build modes.
std.log.info("All your codebase are belong to us.", .{});
}
test "basic test" {
try std.testing.expectEqual(10, 3 + 7);
}
実行してみるとちゃんと動いた。
$ zig build run
info: All your codebase are belong to us.
インラインでテストが書かれてるぽいので、実行コマンドを適当にzig build test
としてみたら、テストが動いた。
$ zig build test
All 1 tests passed.