概要
- 160以上のコミット による大規模な技術的負債の解消
- 新機能追加 と 既存機能の最適化
- 移植性の向上 と バグ修正
- 互換性のない変更点 を含むリリース
- 統計情報とAPI拡張 による利用状況の可視化
技術的負債解消と最適化
- リファクタリング、バグ修正、テストカバレッジ向上、オプション整理の実施
- jemallocフロントエンドの モジュール化、アリーナ管理・初期化・fork処理・割当て分離
- tcache/arenaの所有権整理、内部ヘッダーの循環依存排除
- arenaヘルパーのリファクタリング、制御フローマクロの型付きヘルパー化、ctl.cのサブシステム別整理
- 統計収集・描画処理を 分離 し、記述子駆動型テーブルで整理
- OS抽象化レイヤ 導入、プラットフォーム依存のI/O・同期・エラー処理等をコアから分離
新機能
- EXTENT_ALLOC_FLAG_PINNED 追加:HugeTLBページなどの再利用優先マッピングをカスタムフックで指定可能
- mallctl APIに stats.pinned、 stats.arenas.<i>.pinned 等を追加し、ピン留めメモリ使用量・mutex統計を可視化
- thread.arenaで per-CPUアリーナ選択の再開 を許可
- malloc統計の 人間可読形式とJSON出力の整合性向上
- 実行時experimental_infallible_newオプションを廃止し、 ビルド時--enable-cxx-infallible-new へ移行
互換性のない変更
- tcacheのfill/retentionターゲット をGCイベント間の需要観測ベースに変更し、固定リフィル/フラッシュ方針を廃止
- 7つのレガシーコントロール を削除:lg_tcache_nslots_mul、tcache_nslots_small_min、tcache_nslots_small_max、tcache_nslots_large、tcache_gc_delay_bytes、lg_tcache_flush_small_div、lg_tcache_flush_large_div
- malloc_conf設定は無視、opt.* mallctlはENOENT返却、tcache_ncached_maxのみサポート継続
バグ修正
- free, free_sized, free_aligned_sized、process_madviseベースのページパージで errno保存
- サイズクラスの 数値オーバーフロー検査修正
- free_sized(), free_aligned_sized()で NULL受理 (C23準拠)
- TSDライフサイクルのエッジケース修正:スレッドキャッシュbinの初期化順序見直し、スレッド解体後の不要なTSD再作成回避
- init_thp_stateで O_CLOEXEC使用、THP sysfsファイルの安全なオープン
- malloc_stats_print出力の 重複フィールド修正
- arena_reset時の デッドロック防止
- SANでの プロファイルサンプリング/ガードページバグ修正
最適化・リファクタ
- base-block成長ヒューリスティックの上限設定、VM枯渇防止
- バックグラウンドスレッドのライフサイクル・状態管理を専用モジュールへ分離
- ページ割当て境界の単純化、PAI抽象化の廃止、arena外への遅延処理・decayオーケストレーション移動
移植性向上
- std::__throw_bad_alloc呼び出しを 標準C++ に置換
- arena_sで C99以降の柔軟配列メンバー (bin_t all_bins[])を使用
- --with-lg-vaddrオプション時の rdtscp検出修正
- macOSでmalloc_getcpuが 正しいCPU番号取得 を実現
- バックグラウンドスレッドsleepに CLOCK_MONOTONIC使用、monotonic-condvarサポートをconfigure時に検出
- macOSでの コンパイル警告修正
- MinGWビルドでの スレッド終了時TSDクリーンアップ修正
- GCC 16ビルド警告対応:-Wpedantic違反の排除、profilingスレッド名コピーの明示的NUL終端
- PID-namespace symlink解析 をglibc非依存化、uint64_tでID返却