#author("2023-02-05T09:25:48+00:00","default:admin","admin") #author("2023-02-05T09:33:47+00:00","default:admin","admin") [[Zig:https://ziglang.org/]] -[[In-depth Overview:https://ziglang.org/learn/overview/]] -[[5分でざっと理解するZig言語:https://zenn.dev/tetsu_koba/articles/2da58bd66586aa]] -[[The Road to Zig 1.0 - Andrew Kelley:https://www.youtube.com/watch?v=Gv2I7qTux7g]] -[[Zig言語はいつバージョン1.0になるのか:https://zenn.dev/tetsu_koba/articles/a2558fc78b135f]] -[[Zig による効率的で移植性の高いプログラミング言語の構築:https://www.fastly.com/jp/blog/building-an-efficient-and-portable-programming-language-with-zig]] -[[zig note:https://zenn.dev/ousttrue/books/b2ec4e93bdc5c4]] -[[ざっくりとしたZigの紹介:https://zenn.dev/hastur/articles/bacbe2af2c5807]] -[[Zig言語のドキュメントを見て「なるほど!」と思ったところ:https://zenn.dev/tetsu_koba/articles/032d3a2f675f50]] -[[オープンソースプログラミング言語zigまとめ:https://qiita.com/bellbind/items/f2338fa1d82a2a79f290]] -[[Zig 言語を触ってみる:https://zenn.dev/helloyuki/scraps/a012ef8cc52fc0]] -[[Zig言語 : Zig言語に遭遇した時のメモ 2021-12:http://mpu.seesaa.net/article/484785713.html]] -[[Zigについてのメモ:https://zenn.dev/hnakamur/books/memo-about-zig/viewer/introduction]] -[[Zig で簡単な JSON パーサを書いてみた。:https://zenn.dev/mattn/articles/3b01651b7a42b3]] *概要 [#nf71a11f] **基本的な方針 [#u760deed] -プログラムの振る舞いをすべて記述 --隠れた制御フローがない(プログラムは見た目の通りに 動く) --手動のメモリ管理(メモリの扱いを明示的に記述) -性能を重視しつつ,安全性も重視する --性能と安全性は同時には両立できないため,ビルドオプションにより,性能を取るか安全性を取るかを選択(ReleaseSafeとReleaseFast/ReleaseSmall) --ただし,メモリ安全な言語ではない -シンプルな文法(小さい言語仕様) --ただし,ビルトイン関数と標準ライブラリは別(ビルトイン関数は100個くらいある.標準ライブラリはそれなりの規模.これは仕方がない) -C言語との共存を容易に **Zig言語の重要な特徴(設計方針) [#u7f9eebc] -コンパイル時のコード実行(comptime) --最適化と合わせて,プリプロセッサが不要に -安全性の向上 --ポインタの種類分け --オプショナル型(NULLポインタの代替) --安全なunion -記述性の向上 --新しいエラー処理のアプローチ --defer文,ラベル付きのbreak文とcontinue文(goto-less) --ジェネリックなデータ構造と関数 --コンパイル時のリフレクション(メタプログラミング) --非同期関数,並行性のサポート(☆未調査) -単体テスト記述の統合 --ビルドシステム(Makefileの代替)をZig自身で記述できる **安全性 [#tebdb7c9] -[[How safe is zig?:https://www.scattered-thoughts.net/writing/how-safe-is-zig/]] --zigの空間メモリ安全性はRustとほぼ同等であり、時間メモリ安全性とデータレース安全性はcとほぼ同等であると言える *習得 [#qc4b0aea] -公式サイトの「Getting Started」の流れに沿って学んでから、Zig の使用に必要なことの大部分をカバーしている[[Learn:https://ziglearn.org/]]セクションに移ることです。 -Zig に関するトークに興味があれば、[[Zig SHOWTIME:https://zig.show/]] をチェック *他言語との比較 [#g959ed5f] **Rustとの比較 [#ja12c976] -[[Rust VS Zig benchmarks:https://programming-language-benchmarks.vercel.app/rust-vs-zig]] -[[Rustがあるのに何でZig使うんですか?に対する解答:https://zenn.dev/hastur/scraps/06c2ff5bde0c10]] *環境構築 [#kd84f994] -[[Releases:https://ziglang.org/download/]] -[[zig 紹介 インストール vscode:https://zenn.dev/ousttrue/books/b2ec4e93bdc5c4/viewer/e13c06]] **macOS [#keda41f7] -[[プログラミング言語 Zig で Hello World:https://kawaken.dev/posts/20220322_hello-world-in-programming-language-zig/]] *[[Bun:https://bun.sh/]] [#b32170f0] -JavaScript runtime *組み込み [#ffee3514] -[[Zig⾔語およびZen⾔語によるリアルタイムOSの実現:https://swest.toppers.jp/SWEST22/program/pdfs/s3a_public.pdf]] -[[Zig on RISC-V BL602: Quick Peek with Apache NuttX RTOS:https://lupyuen.github.io/articles/zig]]