Node.js 24.22.0 LTS で parsePKCS12 と sqlite の close() が使える
Node.js 24 LTS を使うチーム向けに、24.22.0 の暗号 API と sqlite の明示的な破棄処理を整理する。新 API の追加と fs.cpSync など既存処理の変更を分け、更新時の確認箇所を示す。
Node.js 24 LTS を使うチーム向けに、24.22.0 の暗号 API と sqlite の明示的な破棄処理を整理する。新 API の追加と fs.cpSync など既存処理の変更を分け、更新時の確認箇所を示す。
2026年10月14日に出た Node.js 24.22.0(‘Krypton’、LTS)で、crypto.parsePKCS12() と sqlite の StatementSync.prototype.close() が 24 系に入った。リリースノートの Notable Changes では、どちらも SEMVER-MINOR として載っている。24 LTS に留まっているチームでも、24.22.0 へ上げればこれらの API を利用できる。
ただし、リリースノートに書かれているのは機能名と PR 番号までで、引数や戻り値の形は載っていない。コードを書く前に 24.22.0 の API ドキュメントで確かめる必要がある。以下、Notable Changes の SEMVER-MINOR 項目を用途別に並べ、そのあとで上げる前に見ておきたい既存 API の挙動変更を挙げる。
| 分野 | 追加された項目 | PR |
|---|---|---|
| crypto | crypto.parsePKCS12() | #65627 |
| crypto | 汎用 MAC API | #65553 |
| crypto | OpenSSL provider からの cipher・hash の検出 | #65484 |
| crypto | Cipher/Decipher API で SIV と GCM-SIV モードを有効化 | #63411 |
| sqlite | StatementSync.prototype.close() と [Symbol.dispose]() | #64232 |
| perf_hooks | SlidingWindowHistogram、qrde 分析、meanCI、CBOR での export/import | #65825 ほか |
| net | net.BoundSocket をスレッドと子プロセスへ送る | #64725 |
| util | util.throttle、debounce、util.markPromiseAsHandled | #65899、#65805 |
出典:Node.js 24.22.0 (LTS) リリースノート(Notable Changes)
PKCS#12 ファイルを読む処理は、crypto.parsePKCS12() という名前で標準 API に入った。これまで外部ライブラリで分解していた場合、置き換えの候補になる。どこまで(鍵、証明書チェーン、パスワード付きファイル)を扱えるかはリリースノートからは分からない。
汎用 MAC API も追加された。対応アルゴリズムの一覧はノートにないため、既存の暗号処理を置き換える判断には API の仕様確認が必要になる。暗号モードでは、Cipher/Decipher で SIV と GCM-SIV が使えるようになった。OpenSSL provider が持つ cipher と hash を検出する変更も入っているので、provider を差し替えている環境では、使える名前の一覧が変わる可能性がある。どう変わるかはノートに書かれていない。
SEMVER-MINOR の印は付いていないが、crypto には他にも修正が多い。Hmac.digest() が未初期化メモリを返さないようにする修正(#65112)、--force-fips の strict mode と FIPS indicator の diagnostics channel(#65645)、Web Cryptography への Hybrid KEM 追加(#65759)などだ。FIPS モードで非 FIPS の WebCrypto 経路を無効にする変更(#65172)もあり、FIPS 環境で WebCrypto を使っているなら、上げた後に同じ処理が通るかを確かめておきたい。
node:sqlite の StatementSync に close() と [Symbol.dispose]() が付いた(#64232)。prepared statement の寿命をコード側で明示的に終わらせられる。Symbol.dispose を実装したことで、破棄のプロトコルに乗る形にもなった。24 系の実行環境で using 構文がそのまま使えるかは、このノートからは判断できない。
同じリリースには、sqlite のコールバック内で close() を呼んだときのエラーを文書化するコミット(#65090)もある。ただし、このコミット名だけでは今回追加された statement の close() と同じ対象かは判断できない。両者を同一の制限として扱わず、利用するクラスの API 仕様を確認したい。
perf_hooks の Histogram は 4 つの拡張を受けた。スライディングウィンドウ版の SlidingWindowHistogram、qrde 分析、平均の信頼区間を返す meanCI API、そして Histogram を別プロセスとやり取りするための CBOR export/import だ。ベンチマーク結果を集計しているチームには関係が深い。
node:net では net.BoundSocket をスレッドと子プロセスへ送れるようになった。逆に、Server.prototype._listen2 は非推奨になった。これは doc: のコミットとして入っており、実行時に警告が出るかどうかはノートから読み取れない。内部 API に触れているライブラリを使っているなら、依存先が _listen2 を呼んでいないかを grep しておくとよい。
util.throttle、debounce、util.markPromiseAsHandled も SEMVER-MINOR 項目に並ぶ。利用する場合は、このリリースの API 仕様を読んで既存処理の置き換え可否を判断したい。
追加とは別に、既存 API の挙動が変わるコミットもある。
fs.cpSync は errorOnExist 指定時、既存ディレクトリで例外を投げる(#64124)fs.cpSync が作るディレクトリは、コピー元ディレクトリの mode を受け継ぐ(#65488)fs.rmSync が読み取り専用ファイルも削除できるようになった(#64453)ほかに同梱 npm が 11.19.1 に上がり、自前ビルドでは古い configure フラグが削除された(#65456)。CI でソースから Node.js をビルドしているなら、フラグの指定を見直す。
更新時は、新しく呼び出す API と既存コードへの影響を分けて確認したい。PKCS#12 の読み込みや statement の破棄が目的なら追加 API の仕様を読み、既存のファイルコピーや FIPS 経路を使っているなら、その処理の回帰確認を先に行う。リリースノートの項目名だけから、対応アルゴリズムや安全な呼び出し順序まで推測して実装しない。