本文へ移動

Node.js 24.21.0 は LTS でも API が増える、MIMEType.parse は例外を投げない

Node.js 24.21.0 は LTS ながら SEMVER-MINOR を5項目含む。crypto の STORE ローダー、例外を投げない MIMEType.parse、OpenSSL 3.5.8 の同梱までを整理する。

8項目中5項目 24.21.0 の Notable Changes で SEMVER-MINOR と表記された数 リリースノートの Notable Changes は8項目で、crypto の STORE ローダー、histogram 実装の改善、net.BlockList の性能改善、perf_hooks の統計的仮説検定、util の MIMEType.parse に SEMVER-MINOR が付く

Node.js 24.21.0 が2026年9月8日に公開された。コードネームは ‘Krypton’、LTS 行のリリースである。Notable Changes に並ぶ8項目のうち、5項目に SEMVER-MINOR が付いている。LTS 行に入るのは修正だけだと思っていると、API が増えているほうを見落とす。

5項目の内訳は、新しい経路・APIを使ったときに効く追加と、net.BlockList や histogram のように既存実装へ効く改善が混在する。新規 API の追加によって既存の呼び出しが壊れるという記述は Notable Changes にないが、5件すべてが opt-in というわけではない。それでも上げる理由を探すなら、これらに加えて依存コンポーネントの更新も見る必要がある。OpenSSL が3.5.8 に上がり、ルート証明書が NSS 3.126 に入れ替わった。

秘密鍵の読み込みに STORE ローダーの経路が増えた

crypto に、STORE ローダー経由で秘密鍵を読み込む対応が入った(#63949)。SEMVER-MINOR なので既存の読み込み方を取り上げる変更ではなく、経路が一つ増えたと読める。ファイル以外の場所に置いた鍵を読むためのものだと読めるが、どのローダーをどう指定するのか、どの API が受け取るのかは、リリースノートの一覧からは分からない。ここは推測の域を出ない。

同じリリースには FIPS まわりの変更が #64982 として4つ並んでいる。crypto 側の FIPS モード無効化の修正、node.gyp での FIPS オプション値の検査、不正な OpenSSL マクロの処理、そしてドキュメントの明確化だ。FIPS を切り替えて運用しているなら、機能追加よりこちらのほうが直接効く。

MIMEType.parse は失敗しても例外を投げない

util に、例外を投げない MIMEType.parse が追加された(#64965)。追加であって置き換えではないので、今のコードは今のまま動く。失敗したときに何を返すのかはリリースノートに書かれていない。

外から来た MIME タイプ文字列を解析している箇所で try/catch を外せるかどうかが、この追加を取りに行くかの分かれ目になる。解析まわりでは、ESM が data URL を解析する正規表現が超線形になる問題も同じリリースで直った(#61951)。data URL からモジュールを読み込む構成なら、こちらは新しい API を使わなくても効く。

計測と接続制御に入った3件

net.BlockList の性能改善(#64974)、histogram 実装の改善(#65024)、histogram への統計的仮説検定の追加(#65416)。この3件はすべて James M Snell によるもので、すべて SEMVER-MINOR だ。

net.BlockList は性能を改善したとだけ書かれていて、どれだけ速くなったかの数字はない。接続元の判定に使っているなら効く変更ではあるが、効き目の大きさはリリースノートからは見積もれない。histogram のほうは実装の改善と統計的仮説検定の追加が別々の項目として並ぶ。

perf_hooks 側の #65416 は、同じ番号で benchmark の compare.js に —analyze モードも入れている。検定の手法も、追加された API の名前も、Notable Changes の行からは読めない。ベンチマーク結果の比較を機械的に扱う方向の変更だと読めるが、ここも推測だ。

Notable Changes に載っていない側の修正

Notable Changes は8項目だが、Commits の一覧にはそこへ上がらなかった修正が並ぶ。fs では glob が早期 return して兄弟エントリを飛ばす問題(#64895)と、長いプレフィックスを渡したときの mkdtemp の領域外書き込み(#64770)が直っている。http は、長さの分かっている end() 呼び出しの性能改善(#65466)と、ソケット引き継ぎ時に drain を出すようにした修正(#64991)。permission は GetLinkedBinding でアドオンの権限を強制するようになった(#65432)。

この並びは SEMVER-MINOR のリストより地味だ。ただし glob の取りこぼしや mkdtemp の領域外書き込みは、上げない限り直らない。

機能を使わなくても上げる理由

更新対象バージョンPR
OpenSSL3.5.8#65542
Undici7.29.1#65789
ルート証明書NSS 3.126#65495
corepack0.36.0#65653
zlib1.3.2.1-motley-8002e91#65316
simdjson4.6.7#65318

出典:Node.js 24.21.0 (LTS) リリースノートの Commits 一覧

OpenSSL 3.5.8 は、翌日の2026年9月9日に出た 26.8.2 (Current) にも同じ #65542 で入っている。Undici は 24.x が7.29.1、26.x が8.10.2 で、取り込まれている系列が違う。どの更新が何を直したのかは、どちらのリリースノートにも書かれていない。CVE 番号も、セキュリティリリースだという記述もない。

ルート証明書が NSS 3.126 に入れ替わったということは、どの認証局を信頼するかが変わったということだ。何が増えて何が減ったのかはリリースノートに書かれていないので、証明書チェーンを固定している環境は自分の接続先で確かめるしかない。24.21.0 を入れるかどうかの材料は、5項目の SEMVER-MINOR だけでなく、この行と OpenSSL の行にもある。

新規 API のほうは、必要になったときに選んで使えばいい。既存実装の改善と依存コンポーネントの更新は、現在のコードにも関係しうる。

出典 種別について