diff --git a/LICENSE b/LICENSE
index 670b668a..53315ebe 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2021 Microsoft Corporation, Daan Leijen
+Copyright (c) 2018-2025 Microsoft Corporation, Daan Leijen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index bccf7a3f..0be85db1 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -8,7 +8,8 @@ trigger:
include:
- master
- dev
- - dev-slice
+ - dev2
+ - dev3
tags:
include:
- v*
diff --git a/doc/mimalloc-doc.h b/doc/mimalloc-doc.h
index 698c5dbb..0c9da48a 100644
--- a/doc/mimalloc-doc.h
+++ b/doc/mimalloc-doc.h
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------------
-Copyright (c) 2018-2021, Microsoft Research, Daan Leijen
+Copyright (c) 2018-2025, Microsoft Research, Daan Leijen
This is free software; you can redistribute it and/or modify it under the
terms of the MIT license. A copy of the license can be found in the file
"LICENSE" at the root of this distribution.
@@ -1303,25 +1303,31 @@ the [shell](https://stackoverflow.com/questions/43941322/dyld-insert-libraries-i
### Dynamic Override on Windows
-Dynamically overriding on mimalloc on Windows
-is robust and has the particular advantage to be able to redirect all malloc/free calls that go through
-the (dynamic) C runtime allocator, including those from other DLL's or libraries.
-As it intercepts all allocation calls on a low level, it can be used reliably
+Dynamically overriding on mimalloc on Windows
+is robust and has the particular advantage to be able to redirect all malloc/free calls
+that go through the (dynamic) C runtime allocator, including those from other DLL's or
+libraries. As it intercepts all allocation calls on a low level, it can be used reliably
on large programs that include other 3rd party components.
-There are four requirements to make the overriding work robustly:
+There are four requirements to make the overriding work well:
1. Use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch).
-2. Link your program explicitly with `mimalloc-override.dll` library.
- To ensure the `mimalloc-override.dll` is loaded at run-time it is easiest to insert some
- call to the mimalloc API in the `main` function, like `mi_version()`
- (or use the `/INCLUDE:mi_version` switch on the linker). See the `mimalloc-override-test` project
- for an example on how to use this.
-3. The [`mimalloc-redirect.dll`](bin) (or `mimalloc-redirect32.dll`) must be put
- in the same folder as the main `mimalloc-override.dll` at runtime (as it is a dependency of that DLL).
- The redirection DLL ensures that all calls to the C runtime malloc API get redirected to
- mimalloc functions (which reside in `mimalloc-override.dll`).
-4. Ensure the `mimalloc-override.dll` comes as early as possible in the import
+
+2. Link your program explicitly with the `mimalloc.lib` export library for the `mimalloc.dll`.
+ (which must be compiled with `-DMI_OVERRIDE=ON`, which is the default though).
+ To ensure the `mimalloc.dll` is actually loaded at run-time it is easiest
+ to insert some call to the mimalloc API in the `main` function, like `mi_version()`
+ (or use the `/include:mi_version` switch on the linker command, or
+ similarly, `#pragma comment(linker, "/include:mi_version")` in some source file).
+ See the `mimalloc-test-override` project for an example on how to use this.
+
+3. The `mimalloc-redirect.dll` must be put in the same directory as the main
+ `mimalloc.dll` at runtime (as it is a dependency of that DLL).
+ The redirection DLL ensures that all calls to the C runtime malloc API get
+ redirected to mimalloc functions (which reside in `mimalloc.dll`).
+
+4. Ensure the `mimalloc.dll` comes as early as possible in the import
list of the final executable (so it can intercept all potential allocations).
+ You can use `minject -l ` to check this if needed.
For best performance on Windows with C++, it
is also recommended to also override the `new`/`delete` operations (by including
@@ -1329,15 +1335,14 @@ is also recommended to also override the `new`/`delete` operations (by including
a single(!) source file in your project).
The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic
-overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully redirected.
+overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully
+redirected.
+
+For different platforms than x64, you may need a specific [redirection dll](bin).
+Furthermore, we cannot always re-link an executable or ensure `mimalloc.dll` comes
+first in the import table. In such cases the [`minject`](bin) tool can be used
+to patch the executable's import tables.
-We cannot always re-link an executable with `mimalloc-override.dll`, and similarly, we cannot always
-ensure the the DLL comes first in the import table of the final executable.
-In many cases though we can patch existing executables without any recompilation
-if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the `mimalloc-override.dll`
-into the import table (and put `mimalloc-redirect.dll` in the same folder)
-Such patching can be done for example with [CFF Explorer](https://ntcore.com/?page_id=388) or
-the [`minject`](bin) program.
## Static override
diff --git a/docker/alpine-arm32v7/Dockerfile b/docker/alpine-arm32v7/Dockerfile
index 1d7fd48b..f74934fb 100644
--- a/docker/alpine-arm32v7/Dockerfile
+++ b/docker/alpine-arm32v7/Dockerfile
@@ -15,7 +15,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev
# Get mimalloc
-RUN git clone https://github.com/microsoft/mimalloc -b dev-slice
+RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug
diff --git a/docker/alpine/Dockerfile b/docker/alpine/Dockerfile
index b222b791..e1234a9b 100644
--- a/docker/alpine/Dockerfile
+++ b/docker/alpine/Dockerfile
@@ -10,7 +10,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev
# Get mimalloc
-RUN git clone https://github.com/microsoft/mimalloc -b dev-slice
+RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug
diff --git a/docker/manylinux-x64/Dockerfile b/docker/manylinux-x64/Dockerfile
index 22d37e5a..ff54d674 100644
--- a/docker/manylinux-x64/Dockerfile
+++ b/docker/manylinux-x64/Dockerfile
@@ -10,7 +10,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev
# Get mimalloc
-RUN git clone https://github.com/microsoft/mimalloc -b dev-slice
+RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug
diff --git a/docs/annotated.html b/docs/annotated.html
index e31fddc4..fbb3936e 100644
--- a/docs/annotated.html
+++ b/docs/annotated.html
@@ -3,7 +3,7 @@
-
+
mi-malloc: Data Structures
@@ -54,7 +54,7 @@
-
+