TL;DR

堅牢で最適かつ再利用可能なソフトウェアを保守するための、汎用プログラミング言語とツールチェーン。

仕組み

公式サイトでは、次の 3 つを特徴として挙げている。

  • シンプルな言語: プログラミング言語の知識をデバッグするのではなく、アプリケーションのデバッグに集中できる
  • comptime: コンパイル時のコード実行と遅延評価にもとづく、新しいメタプログラミングの方法
  • Zig で保守する: C、C++、Zig のコードベースを少しずつ改善できる

公式サイトの概要によると、Zig には隠れた制御フローも、隠れたメモリ割り当ても、プリプロセッサも、マクロもない。制御が移るのは、言語のキーワードと関数呼び出しのときだけである。メモリはプログラマが管理し、割り当ての失敗も扱う。標準ライブラリでも、メモリを割り当てる関数はアロケータを引数に受け取る。

エラーは投げずに値として返し、無視できない。catch でその場で扱うか、try で呼び出し元に返す。ポインタは null にならず、null になりうる値は ? を付けた optional 型で表す。

@cImport を使うと、バインディングを書かずに C の型や関数をそのまま使える。Zig は C のコンパイラとしても使え、多くのターゲット向けの libc を同梱している。ビルドシステムも付属しているので、別のビルドツールは要らない。

関連

出典