Closed4

プログラミング言語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 で簡単な JSON パーサを書いてみた。

栗林健太郎栗林健太郎

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)を設定する。

以下の拡張機能を入れた。

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.
このスクラップは2022/08/01にクローズされました