dowel

ADR-0001: ツールチェーンは所有、依存供給は委譲する

状態: Accepted

文脈

C/C++ 向けビルドシステムの設計には3つの立場がある。

  1. 強制型 — ツールチェーンも依存もすべて自分のグラフに載せる(Nix, Spack, Zig)。 再現性は最高だが、世界の再構築コストが極大。ベンダ SDK は所有できない
  2. 調停型 — 供給を既存パッケージマネージャに委譲し、グラフと FFI に集中する (Meson, CMake)。採用障壁は最低だが、ABI 保証は委譲先の粒度以上に細かくならない
  3. 新言語同伴型 — 特定言語のために設計する(Cargo)。C 依存が必要になった時点で エスケープハッチ(build.rs)に落ち、hermeticity を失う

決定

非対称に採る。ツールチェーンは立場1、依存供給は立場2。

根拠

帰結