Dasturlash

Jemalloc 5.4.0: Yengilashuv, optimallashtirish va yangiliklar

18-sentabr, 2026, 11:280 ko'rish3 daqiqa o'qish
Jemalloc 5.4.0: Yengilashuv, optimallashtirish va yangiliklar

Jemalloc 5.4.0 yangiligi 160 dan ortiq o'zgartirishni o'z ichiga oladi, texnik qarzlarni tozalash, xatolarni tuzatish, test qamrab olinishini yaxshilash va portabilitni yaxshilashga qaratilgan. Yangiliklar orasida yangi xususiyatlar, mos kelmasliklar va optimallashtirishlar mavjud.

Yangi xususiyatlar

Jemalloc 5.4.0 yangi xususiyatlarni kiritadi:

  • EXTENT_ALLOC_FLAG_PINNED qo'shildi. Bu maxsus extent-allocation hooksni HugeTLB sahifalari kabi qaytarib olinmaydigan xaritalashlarni afzal foydalanish uchun belgilash imkonini beradi. Yangi mallctl interfeyslari stats.pinned, stats.arenas.pinned, stats.arenas.extents.npinned, stats.arenas.extents.pinned_bytes va stats.arenas.mutexes.extents_pinned.{counter} kiritildi, ular pinned-memory foydalanishini va mutex statistikalarini hisobot beradi.
  • Per-CPU arena tanlashni thread.arena orqali davom ettirish imkoniyati qo'shildi.
  • Inson tomonidan o'qiladigan va JSON malloc statistikalarini yaxshiroq moslashtirish amalga oshirildi.
  • Compile-time --enable-cxx-infallible-new optioni kiritildi, bu compiler-level optimallashtirishlarni va move constructorsdagi optimallashtirishlarni ta'minlaydi.

Mos kelmasliklar

Jemalloc 5.4.0 mos kelmasliklarni kiritadi:

  • Tcache fill va retention targetsni bin per bin talabiga moslashtirish. Ushbu o'zgarishlar bilan birga yetti eskirgan non-experimental controls o'chirildi.

Xatolarni tuzatish

Jemalloc 5.4.0 bir nechta xatolarni tuzatdi:

  • free, free_sized va free_aligned_sized funksiyalarida errno ni saqlab qolish.
  • Size classesdagi numeric overflow tekshirishlarni tuzatish.
  • free_sized() va free_aligned_sized() funksiyalarida NULL qiymatini qabul qilish.
  • TSD lifecycle edge casesni tuzatish.
  • THP sysfs faylini ochishda O_CLOEXEC ishlatish.
  • malloc_stats_print chiqishi bilan bog'liq duplicate fieldsni tuzatish.
  • Arena_reset paytida potentsial deadlockni tuzatish.
  • Prof-sampling / guard-page interaction bugini tuzatish.

Optimallashtirish va qayta tuzilish

Jemalloc 5.4.0 bir nechta optimallashtirish va qayta tuzilishlarni amalga oshirdi:

  • Jemalloc front endni modularlashtirish, arena management, initialization, fork orchestration va allocation dispatchni jemalloc.c dan ajratish.
  • Ctl dispatchni soddalashtirish, arena helpersni qayta tuzish va control-flow macrosni typed helpers bilan almashtirish.
  • Base-block growth heuristicni cheklash, virtual-memory exhaustionni oldini olish.
  • Background-thread lifecycle va state operationsni background-thread moduliga ko'chirish.
  • Page-allocation boundaryni soddalashtirish, PAI vtable dispatchni direct PAC/HPA calls bilan almashtirish.
  • Statistics collection va renderingni separate gather/emission stages va descriptor-driven tablesga qayta tuzish.
  • OS abstraction layerni kiritish, platform-dependent operatsiyalarni allocator core code dan ajratish.

Portabilitni yaxshilash

Jemalloc 5.4.0 portabilitni yaxshilash uchun bir nechta o'zgartirishlarni amalga oshirdi:

  • std::__throw_bad_alloc callni standard C++ bilan almashtirish.
  • arena_s ni flexible array member bilan almashtirish.
  • rdtscp detectionni --with-lg-vaddr bilan tuzatish.
  • macOSda malloc_getcpu ni to'g'ri o'qish.
  • CLOCK_MONOTONIC ni background-thread sleep uchun ishlatish.
  • macOSda compilation warningsni tuzatish.
  • MinGW buildsda thread-exit TSD cleanupni tuzatish.
  • GCC 16 build warningsni tuzatish.
  • PID-namespace symlinksni glibc-dependent strtok/atol ishlatmasdan parselash.

Jemalloc 5.4.0 yangiligi xavfsizlik, optimallashtirish va portabilitni yaxshilashga qaratilgan. Bu yangiliklar Jemalloc foydalanuvchilariga yaxshiroq xavfsizlik, optimallashtirilgan ishlash va kengroq platformalar bilan moslashuv imkoniyatini beradi.

Asl manba: github.com

Manba: Hacker News
#jemalloc #yangiliklar #optimallashtirish #xavfsizlik #portabilit
Telegram da muhokama qilish