From 0b72d8a2ef791674ac3cbab7910546cf2833e6c1 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Thu, 14 Apr 2022 16:28:05 -0700 Subject: [PATCH 1/4] update readme for v1.7.6 release --- doc/mimalloc-doc.h | 2 +- readme.md | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/mimalloc-doc.h b/doc/mimalloc-doc.h index ea2a1ad5..e0f1cae1 100644 --- a/doc/mimalloc-doc.h +++ b/doc/mimalloc-doc.h @@ -56,7 +56,7 @@ Notable aspects of the design include: - __first-class heaps__: efficiently create and use multiple heaps to allocate across different regions. A heap can be destroyed at once instead of deallocating each object separately. - __bounded__: it does not suffer from _blowup_ \[1\], has bounded worst-case allocation - times (_wcat_), bounded space overhead (~0.2% meta-data, with at most 12.5% waste in allocation sizes), + times (_wcat_), bounded space overhead (~0.2% meta-data, with low internal fragmentation), and has no internal points of contention using only atomic operations. - __fast__: In our benchmarks (see [below](#performance)), _mimalloc_ outperforms all other leading allocators (_jemalloc_, _tcmalloc_, _Hoard_, etc), diff --git a/readme.md b/readme.md index 2e5a2882..e63c637c 100644 --- a/readme.md +++ b/readme.md @@ -12,8 +12,8 @@ is a general purpose allocator with excellent [performance](#performance) charac Initially developed by Daan Leijen for the run-time systems of the [Koka](https://koka-lang.github.io) and [Lean](https://github.com/leanprover/lean) languages. -Latest release tag: `v2.0.5` (alpha, 2022-02-14). -Latest stable tag: `v1.7.5` (2022-02-14). +Latest release tag: `v2.0.6` (2022-04-14). +Latest stable tag: `v1.7.6` (2022-02-14). mimalloc is a drop-in replacement for `malloc` and can be used in other programs without code changes, for example, on dynamically linked ELF-based systems (Linux, BSD, etc.) you can use it as: @@ -52,7 +52,7 @@ It also has an easy way to override the default allocator in [Windows](#override - __first-class heaps__: efficiently create and use multiple heaps to allocate across different regions. A heap can be destroyed at once instead of deallocating each object separately. - __bounded__: it does not suffer from _blowup_ \[1\], has bounded worst-case allocation - times (_wcat_), bounded space overhead (~0.2% meta-data, with at most 12.5% waste in allocation sizes), + times (_wcat_), bounded space overhead (~0.2% meta-data, with low internal fragmentation), and has no internal points of contention using only atomic operations. - __fast__: In our benchmarks (see [below](#performance)), _mimalloc_ outperforms other leading allocators (_jemalloc_, _tcmalloc_, _Hoard_, etc), @@ -69,14 +69,19 @@ Enjoy! * `master`: latest stable release. * `dev`: development branch for mimalloc v1. -* `dev-slice`: development branch for mimalloc v2 with a new algorithm for managing internal mimalloc pages. +* `dev-slice`: development branch for mimalloc v2. ### Releases -Note: the `v2.x` beta has a new algorithm for managing internal mimalloc pages that tends to use reduce memory usage +Note: the `v2.x` version has a new algorithm for managing internal mimalloc pages that tends to use reduce memory usage and fragmentation compared to mimalloc `v1.x` (especially for large workloads). Should otherwise have similar performance (see [below](#performance)); please report if you observe any significant performance regression. +* 2022-04-14, `v1.7.6`, `v2.0.6`: fix fallback path for aligned OS allocation on Windows, improve Windows aligned allocation + even when compiling with older SDK's, fix dynamic overriding on macOS Monterey, fix MSVC C++ dynamic overriding, fix + warnings under Clang 14, improve performance if many OS threads are created and destroyed, fix statistics for large object + allocations, using MIMALLOC_VERBOSE=1 has no maximum on the number of error messages, various small fixes. + * 2022-02-14, `v1.7.5`, `v2.0.5` (alpha): fix malloc override on Windows 11, fix compilation with musl, potentially reduced committed memory, add `bin/minject` for Windows, @@ -301,7 +306,7 @@ or via environment variables: Use caution when using `fork` in combination with either large or huge OS pages: on a fork, the OS uses copy-on-write for all pages in the original process including the huge OS pages. When any memory is now written in that area, the -OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in big increments. +OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in large increments. [linux-huge]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5 [windows-huge]: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017 From 85e89a33b1b5d07f77d6cf304868b0acb60c80f2 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Thu, 14 Apr 2022 16:32:08 -0700 Subject: [PATCH 2/4] update readme --- readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index e63c637c..6142dbc5 100644 --- a/readme.md +++ b/readme.md @@ -67,9 +67,9 @@ Enjoy! ### Branches -* `master`: latest stable release. -* `dev`: development branch for mimalloc v1. -* `dev-slice`: development branch for mimalloc v2. +* `master`: latest stable release (based on `dev-slice`). +* `dev`: development branch for mimalloc v1. Use this branch for submitting PR's. +* `dev-slice`: development branch for mimalloc v2. This branch is downstream of `dev`. ### Releases From 45044da1013f5663b01e5f4a34fd47dfbfe4b6dc Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Thu, 14 Apr 2022 16:43:10 -0700 Subject: [PATCH 3/4] do not turn on C++ compilation on msvc by default --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7023009..a997aaee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ endif() # Process options # ----------------------------------------------------------------------------- -if(CMAKE_C_COMPILER_ID MATCHES "MSVC|Intel") +if(CMAKE_C_COMPILER_ID MATCHES "Intel") set(MI_USE_CXX "ON") endif() From 8d6a9df7521181afc276d94b3a6ef2a9dd60bd06 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Thu, 14 Apr 2022 16:47:43 -0700 Subject: [PATCH 4/4] update windows pipeline to 2022 --- CMakeLists.txt | 2 +- azure-pipelines.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a997aaee..b7023009 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,7 @@ endif() # Process options # ----------------------------------------------------------------------------- -if(CMAKE_C_COMPILER_ID MATCHES "Intel") +if(CMAKE_C_COMPILER_ID MATCHES "MSVC|Intel") set(MI_USE_CXX "ON") endif() diff --git a/azure-pipelines.yml b/azure-pipelines.yml index cfaf1876..6e99c9d9 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -18,7 +18,7 @@ jobs: displayName: Windows pool: vmImage: - windows-2019 + windows-2022 strategy: matrix: Debug: