書かれているのは JavaScript なのに、ビルドツールが古い CPU でクラッシュした。昨日の Rollup の小さなパッチは、「自分の環境では動く」だけでは済まないことを話すのにちょうどいい題材だ。
11 月 1 日にリリースされた Rollup v4.67.4 は、旧型 Xeon プロセッサーとの互換性の問題を修正した。公式のリリースノートが示しているのは PR
#6622 で、対象はかなり限定的だ。linux-x64-gnu ビルド内の C コードである。
なぜ JS のバンドラーが CPU 命令に関係するのか? Rollup 4 にはすでにネイティブコードが含まれており、OS と CPU アーキテクチャに応じたオプション依存パッケージがインストールされる。プロジェクト内では npm パッケージとして見えていても、実行時にはその中にプロセッサーへ直接渡して実行させるバイナリファイルが含まれていることがある。
今回の PR の作者による説明では、プロジェクトの Linux CI ランナーが Ubuntu 26.04 に切り替わり、その環境では GCC がデフォルトで x86-64-v3 を使うため、mimalloc に A2/BMI2 命令が生成された。古い CPU はこれらの命令に対応していないため、linux-x64-gnu バイナリがクラッシュする可能性がある。これ