You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: readme.md
+46-43Lines changed: 46 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ is a general purpose allocator with excellent [performance](#performance) charac
12
12
Initially developed by Daan Leijen for the runtime systems of the
13
13
[Koka](https://koka-lang.github.io) and [Lean](https://github.com/leanprover/lean) languages.
14
14
15
-
Latest release : `v3.1.4` (beta) (2025-06-09).
15
+
Latest release : `v3.1.5` (beta) (2025-06-13).
16
16
Latest v2 release: `v2.2.4` (2025-06-09).
17
17
Latest v1 release: `v1.9.4` (2024-06-09).
18
18
@@ -83,6 +83,7 @@ Enjoy!
83
83
84
84
### Releases
85
85
86
+
* 2025-06-13, `v3.1.5`: Bug fix release where memory was not always correctly committed (issue #1098).
86
87
* 2025-06-09, `v1.9.4`, `v2.2.4`, `v3.1.4` (beta) : Some important bug fixes, including a case where OS memory
87
88
was not always fully released. Improved v3 performance, build on XBox, fix build on Android, support interpose
88
89
for older macOS versions, use MADV_FREE_REUSABLE on macOS, always check commit success, better support for Windows
@@ -103,53 +104,13 @@ Enjoy!
103
104
add 0-byte to canary; upstream CPython fixes; reduce .bss size; allow fixed TLS slot on Windows for improved performance.
104
105
* 2024-05-21, `v1.8.7`, `v2.1.7`: Fix build issues on less common platforms. Started upstreaming patches
105
106
from the CPython [integration](https://github.com/python/cpython/issues/113141#issuecomment-2119255217). Upstream `vcpkg` patches.
106
-
* 2024-05-13, `v1.8.6`, `v2.1.6`: Fix build errors on various (older) platforms. Refactored aligned allocation.
107
-
* 2024-04-22, `v1.8.4`, `v2.1.4`: Fixes various bugs and build issues. Add `MI_LIBC_MUSL` cmake flag for musl builds.
108
-
Free-ing code is refactored into a separate module (`free.c`). Mimalloc page info is simplified with the block size
109
-
directly available (and new `block_size_shift` to improve aligned block free-ing).
110
-
New approach to collection of abandoned segments: When
111
-
a thread terminates the segments it owns are abandoned (containing still live objects) and these can be
112
-
reclaimed by other threads. We no longer use a list of abandoned segments but this is now done using bitmaps in arena's
113
-
which is more concurrent (and more aggressive). Abandoned memory can now also be reclaimed if a thread frees an object in
114
-
an abandoned page (which can be disabled using `mi_option_abandoned_reclaim_on_free`). The option `mi_option_max_segment_reclaim`
115
-
gives a maximum percentage of abandoned segments that can be reclaimed per try (=10%).
116
-
117
-
* 2023-04-24, `v1.8.2`, `v2.1.2`: Fixes build issues on freeBSD, musl, and C17 (UE 5.1.1). Reduce code size/complexity
118
-
by removing regions and segment-cache's and only use arenas with improved memory purging -- this may improve memory
119
-
usage as well for larger services. Renamed options for consistency. Improved Valgrind and ASAN checking.
120
-
121
-
* 2023-04-03, `v1.8.1`, `v2.1.1`: Fixes build issues on some platforms.
122
-
123
-
* 2023-03-29, `v1.8.0`, `v2.1.0`: Improved support dynamic overriding on Windows 11. Improved tracing precision
124
-
with [asan](#asan) and [Valgrind](#valgrind), and added Windows event tracing [ETW](#ETW) (contributed by Xinglong He). Created an OS
125
-
abstraction layer to make it easier to port and separate platform dependent code (in `src/prim`). Fixed C++ STL compilation on older Microsoft C++ compilers, and various small bug fixes.
126
-
127
-
* 2022-12-23, `v1.7.9`, `v2.0.9`: Supports building with [asan](#asan) and improved [Valgrind](#valgrind) support.
128
-
Support arbitrary large alignments (in particular for `std::pmr` pools).
129
-
Added C++ STL allocators attached to a specific heap (thanks @vmarkovtsev).
130
-
Heap walks now visit all object (including huge objects). Support Windows nano server containers (by Johannes Schindelin,@dscho).
131
-
Various small bug fixes.
132
-
133
-
* 2022-11-03, `v1.7.7`, `v2.0.7`: Initial support for [Valgrind](#valgrind) for leak testing and heap block overflow
134
-
detection. Initial
135
-
support for attaching heaps to a specific memory area (only in v2). Fix `realloc` behavior for zero size blocks, remove restriction to integral multiple of the alignment in `alloc_align`, improved aligned allocation performance, reduced contention with many threads on few processors (thank you @dposluns!), vs2022 support, support `pkg-config`, .
136
-
137
-
* 2022-04-14, `v1.7.6`, `v2.0.6`: fix fallback path for aligned OS allocation on Windows, improve Windows aligned allocation
138
-
even when compiling with older SDK's, fix dynamic overriding on macOS Monterey, fix MSVC C++ dynamic overriding, fix
139
-
warnings under Clang 14, improve performance if many OS threads are created and destroyed, fix statistics for large object
140
-
allocations, using MIMALLOC_VERBOSE=1 has no maximum on the number of error messages, various small fixes.
141
-
142
-
* 2022-02-14, `v1.7.5`, `v2.0.5` (alpha): fix malloc override on
143
-
Windows 11, fix compilation with musl, potentially reduced
144
-
committed memory, add `bin/minject` for Windows,
145
-
improved wasm support, faster aligned allocation,
146
-
various small fixes.
147
107
148
108
*[Older release notes](#older-release-notes)
149
109
150
110
Special thanks to:
151
111
152
-
*[David Carlier](https://devnexen.blogspot.com/) (@devnexen) for his many contributions, and making
112
+
* Sergiy Kuryata for his contributions on reducing memory commit -- especially on Windows with the Windows thread pool (now implemented in v3).
113
+
*[David Carlier](https://devnexen.blogspot.com/) (@devnexen) for his _many_ contributions, and making
153
114
mimalloc work better on many less common operating systems, like Haiku, Dragonfly, etc.
154
115
* Mary Feofanova (@mary3000), Evgeniy Moiseenko, and Manuel Pöter (@mpoeter) for making mimalloc TSAN checkable, and finding
155
116
memory model bugs using the [genMC] model checker.
@@ -904,6 +865,48 @@ provided by the bot. You will only need to do this once across all repos using o
904
865
905
866
# Older Release Notes
906
867
868
+
* 2024-05-13, `v1.8.6`, `v2.1.6`: Fix build errors on various (older) platforms. Refactored aligned allocation.
869
+
* 2024-04-22, `v1.8.4`, `v2.1.4`: Fixes various bugs and build issues. Add `MI_LIBC_MUSL` cmake flag for musl builds.
870
+
Free-ing code is refactored into a separate module (`free.c`). Mimalloc page info is simplified with the block size
871
+
directly available (and new `block_size_shift` to improve aligned block free-ing).
872
+
New approach to collection of abandoned segments: When
873
+
a thread terminates the segments it owns are abandoned (containing still live objects) and these can be
874
+
reclaimed by other threads. We no longer use a list of abandoned segments but this is now done using bitmaps in arena's
875
+
which is more concurrent (and more aggressive). Abandoned memory can now also be reclaimed if a thread frees an object in
876
+
an abandoned page (which can be disabled using `mi_option_abandoned_reclaim_on_free`). The option `mi_option_max_segment_reclaim`
877
+
gives a maximum percentage of abandoned segments that can be reclaimed per try (=10%).
878
+
879
+
* 2023-04-24, `v1.8.2`, `v2.1.2`: Fixes build issues on freeBSD, musl, and C17 (UE 5.1.1). Reduce code size/complexity
880
+
by removing regions and segment-cache's and only use arenas with improved memory purging -- this may improve memory
881
+
usage as well for larger services. Renamed options for consistency. Improved Valgrind and ASAN checking.
882
+
883
+
* 2023-04-03, `v1.8.1`, `v2.1.1`: Fixes build issues on some platforms.
884
+
885
+
* 2023-03-29, `v1.8.0`, `v2.1.0`: Improved support dynamic overriding on Windows 11. Improved tracing precision
886
+
with [asan](#asan) and [Valgrind](#valgrind), and added Windows event tracing [ETW](#ETW) (contributed by Xinglong He). Created an OS
887
+
abstraction layer to make it easier to port and separate platform dependent code (in `src/prim`). Fixed C++ STL compilation on older Microsoft C++ compilers, and various small bug fixes.
888
+
889
+
* 2022-12-23, `v1.7.9`, `v2.0.9`: Supports building with [asan](#asan) and improved [Valgrind](#valgrind) support.
890
+
Support arbitrary large alignments (in particular for `std::pmr` pools).
891
+
Added C++ STL allocators attached to a specific heap (thanks @vmarkovtsev).
892
+
Heap walks now visit all object (including huge objects). Support Windows nano server containers (by Johannes Schindelin,@dscho).
893
+
Various small bug fixes.
894
+
895
+
* 2022-11-03, `v1.7.7`, `v2.0.7`: Initial support for [Valgrind](#valgrind) for leak testing and heap block overflow
896
+
detection. Initial
897
+
support for attaching heaps to a specific memory area (only in v2). Fix `realloc` behavior for zero size blocks, remove restriction to integral multiple of the alignment in `alloc_align`, improved aligned allocation performance, reduced contention with many threads on few processors (thank you @dposluns!), vs2022 support, support `pkg-config`, .
898
+
899
+
* 2022-04-14, `v1.7.6`, `v2.0.6`: fix fallback path for aligned OS allocation on Windows, improve Windows aligned allocation
900
+
even when compiling with older SDK's, fix dynamic overriding on macOS Monterey, fix MSVC C++ dynamic overriding, fix
901
+
warnings under Clang 14, improve performance if many OS threads are created and destroyed, fix statistics for large object
902
+
allocations, using MIMALLOC_VERBOSE=1 has no maximum on the number of error messages, various small fixes.
903
+
904
+
* 2022-02-14, `v1.7.5`, `v2.0.5` (alpha): fix malloc override on
905
+
Windows 11, fix compilation with musl, potentially reduced
906
+
committed memory, add `bin/minject` for Windows,
907
+
improved wasm support, faster aligned allocation,
908
+
various small fixes.
909
+
907
910
* 2021-11-14, `v1.7.3`, `v2.0.3` (beta): improved WASM support, improved macOS support and performance (including
908
911
M1), improved performance for v2 for large objects, Python integration improvements, more standard
0 commit comments