概要
- Zigのmainブランチに2026年の主要な変更点をまとめた内容
- std.Ioでio_uringとGrand Central Dispatchの実装が追加
- パッケージ管理ワークフローが2点強化
- WindowsでKernel32.dllをバイパスする新たな方針
- 各機能の詳細と使い方、注意点を解説
2026年2月13日: io_uringとGrand Central Dispatchのstd.Io実装
- io_uring と Grand Central Dispatch の std.Io 実装がmainブランチに追加
- これらは ユーザ空間スタック切り替え ( fibers や グリーンスレッド とも呼ばれる)を基盤とする
- std.Io.Evented を使用することで、アプリケーションで簡単にI/O実装の切り替えが可能
- 現時点では 実験的 であり、以下の課題が残る
- エラーハンドリングの改善
- 不要なロギングの削除
- IoMode.evented利用時のパフォーマンス低下の原因特定
- 未実装関数の対応
- テストカバレッジの拡充
- 関数ごとの最大スタックサイズ取得ビルトイン関数の追加
- コード例
- Threaded I/O実装 と Evented I/O実装 の切り替えが可能
- app関数の内容はどちらも同一
- Zigコンパイラ自体も std.Io.Evented で動作確認済み
- パフォーマンス低下 が未解決のため、本番利用は非推奨
2026年2月6日: パッケージ管理ワークフローの2つの強化
- 依存パッケージ はプロジェクトルートの zig-pkgディレクトリ にローカル保存
- .gitignore等で バージョン管理対象外 にする推奨
- 自己完結型ソースtarball として配布・オフラインビルド・アーカイブが容易
- 依存パッケージのグローバルキャッシュ
- ~/.cache/zig/p/ 配下に 圧縮ファイル で保存
- パスフィルタ 後に再圧縮されるため、 複数PC間での共有 が容易
- 将来的には P2Pトレント配布 も計画
- --forkフラグ の追加
- zig build --fork=[path]で依存パッケージを 一時的にローカルのフォークへ切替
- CLIフラグ なので、解除も簡単
- 対象プロジェクトが見つからない場合は エラー、マッチした場合は リマインダー表示
- エコシステム破損時のワークフロー改善
- ビルド失敗時に--forkで修正・テスト
- 修正後はパッチのアップストリーム提出も容易
2026年2月3日: Kernel32.dllバイパスの方針
- Windows のAPIは DLL階層構造 で設計
- kernel32.dllは高レベルラッパー、実際の処理はntdll.dllが担当
- kernel32.dll経由は 余計なヒープ確保・失敗要因・CPU使用・バイナリ肥大化 の原因
- Zig標準ライブラリ は ネイティブAPI優先方針 へ
- 例:乱数取得ではadvapi32.dllのSystemFunction036ではなく、より低レベルAPIを利用
- メリット
- 効率的なリソース利用
- 予期せぬ失敗の回避
- 実行速度と安定性の向上
- 今後もkernel32.dll依存削減を継続
他の年の変更点は Devlog archive page で参照可能