@@ -15,9 +15,9 @@ is a general purpose allocator with excellent [performance](#performance) charac
1515Initially developed by Daan Leijen for the runtime systems of the
1616[ Koka] ( https://koka-lang.github.io ) and [ Lean] ( https://github.com/leanprover/lean ) languages.
1717
18- Latest release : ` v3.3.0 ` (2026-04-15 ) recommended.
19- Latest v2 release: ` v2.3.0 ` (2026-04-15 ) stable.
20- Latest v1 release: ` v1.9.8 ` (2026-04-15 ) legacy.
18+ Latest release : ` v3.3.1 ` (2026-04-20 ) recommended.
19+ Latest v2 release: ` v2.3.1 ` (2026-04-20 ) stable.
20+ Latest v1 release: ` v1.9.9 ` (2026-04-20 ) legacy.
2121
2222mimalloc is a drop-in replacement for ` malloc ` and can be used in other programs
2323without code changes, for example, on dynamically linked ELF-based systems (Linux, BSD, etc.) you can use it as:
@@ -88,6 +88,9 @@ New development is mostly on v3, while v1 and v2 are maintained with security an
8888- __ v1__ : legacy version: initial design of mimalloc (release tags: ` v1.9.x ` , development branch ` dev ` ). Send PR's against this version if possible.
8989
9090### Releases
91+ * 2026-04-20, ` v1.9.9 ` , ` v2.3.1 ` , ` v3.3.1 ` : various bug and security fixes. Special thanks to
92+ @jinpzhanAMD , @res2k , and @GoldJohnKing for their help in improving Windows finalization, and
93+ @Zoxc for his help in finding various issues.
9194* 2026-04-15, ` v1.9.8 ` , ` v2.3.0 ` , ` v3.3.0 ` : initial support for github (binary) releases,
9295 fix visiting of full pages during collection (performance),
9396 fix THP alignment (performance), fix arm64 cross-compilation on Windows, enable guard pages in debug mode,
@@ -399,15 +402,17 @@ OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the
399402_ mimalloc_ can be build in secure mode by using the ` -DMI_SECURE=ON ` flags in ` cmake ` . This build enables various mitigations
400403to make mimalloc more robust against exploits. In particular:
401404
402- - All internal mimalloc pages are surrounded by guard pages and the heap metadata is behind a guard page as well (so a buffer overflow
403- exploit cannot reach into the metadata).
405+ - All internal mimalloc page meta-data is surrounded by guard pages (so a buffer overflow exploit cannot reach into the metadata).
404406- All free list pointers are
405407 [ encoded] ( https://github.com/microsoft/mimalloc/blob/783e3377f79ee82af43a0793910a9f2d01ac7863/include/mimalloc-internal.h#L396 )
406408 with per-page keys which is used both to prevent overwrites with a known pointer, as well as to detect heap corruption.
407409- Double free's are detected (and ignored).
408410- The free lists are initialized in a random order and allocation randomly chooses between extension and reuse within a page to
409411 mitigate against attacks that rely on a predicable allocation order. Similarly, the larger heap blocks allocated by mimalloc
410412 from the OS are also address randomized.
413+ - If enabling ` -DMI_SECURE_FULL=ON ` there will also be guard pages at the end of each (64KiB) mimalloc page (thus interleaving
414+ valid block data with inaccessible gaps). This setting is not recommended in general as it is more expensive and can lead to
415+ reaching the maximum VMA limit on Linux systems if the heap gets too large.
411416
412417As always, evaluate with care as part of an overall security strategy as all of the above are mitigations but not guarantees.
413418
0 commit comments