mingw: stop using nedmalloc
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest6 patches 2 repliesIn review
- v26 patches 2 repliesSuperseded
- v11 patch 1 replySuperseded
Changes in v3 from the cover letter
* Reworded the last 4 patches as recommended by Junio, in preparation for squashing them on his end.
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/6 | mingw: stop using nedmallocconfig.mak.uname contrib/ meson.build | +1 | 0 replies | |
| 2/6 | mingw: drop the build-system plumbing for nedmallocMakefile config.mak.uname contrib/ +1 more | +0 | 0 replies | |
| 3/6 | mingw: remove the vendored compat/nedmalloc/ subtreecompat/ compat/ compat/ +1 more | +0 | 0 replies | |
| 4/6 | to be squashed into 3/6 (chunk 1 of 3)compat/ | +0 | 0 replies | |
| 5/6 | to be squashed into 3/6 (chunk 2 of 3)compat/ | +0 | 0 replies | |
| 6/6 | to be squashed into 3/6 (chunk 3 of 3)compat/ | +0 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.
Cover letter [PATCH v3 0/6] mingw: stop using nedmalloc
Git for Windows' SDK wants to update GCC to v16. Since it is used in the CI builds also of the git/git repository, it is crucial that GCC can compile even the latter all right, but currently it does not, see
https://github.com/git-for-windows/git-sdk-64/actions/runs/25244795074.
Git for Windows switched away from nedmalloc to mimalloc a long time ago, but recent benchmarks across Windows, macOS, and Linux (see
https://github.com/git-for-windows/git/pull/6231) show no measurable benefit from mimalloc over the platforms' default allocators, so rather than upstreaming the mimalloc support, I will drop it from Git for Windows entirely.
This series therefore disables nedmalloc for MINGW builds and removes the vendored-in nedmalloc from Git's source code; my earlier sketch in
https://lore.kernel.org/git/[email protected]/ had the opposite ordering only because it assumed mimalloc would land first. Since that's not going to happen, it's best to move forward with this, so that the CI builds can switch to using GCC 16 (and the current Git for Windows SDK) on Windows.
The patches that remove the vendored sources have a slightly unusual shape:
the Git mailing list rejects messages over 100kB and compat/nedmalloc/malloc.c.h alone is ~196kB of source, so the deletion of that file is split at section boundaries into three commits, each comfortably under the cap. The intention (as documented by the last three commit messages) is for them to be squashed by the Git maintainer before merging.
Changes since v2:
* Reworded the last 4 patches as recommended by Junio, in preparation for squashing them on his end.
Changes since v1:
* Also remove nedmalloc from the CMake and Meson configurations in the first patch.
* Add follow-up patches that drop the nedmalloc build-system plumbing and source files.
Johannes Schindelin (6):
mingw: stop using nedmalloc
mingw: drop the build-system plumbing for nedmalloc
mingw: remove the vendored compat/nedmalloc/ subtree to be squashed into 3/6 (chunk 1 of 3)
to be squashed into 3/6 (chunk 2 of 3)
to be squashed into 3/6 (chunk 3 of 3)
Makefile | 17 - compat/nedmalloc/License.txt | 23 - compat/nedmalloc/Readme.txt | 136 - compat/nedmalloc/malloc.c.h | 5761 --------------------------- compat/nedmalloc/nedmalloc.c | 954 ----- compat/nedmalloc/nedmalloc.h | 180 - config.mak.uname | 4 - contrib/buildsystems/CMakeLists.txt | 3 +- contrib/vscode/init.sh | 1 - meson.build | 2 - 10 files changed, 1 insertion(+), 7080 deletions(-) delete mode 100644 compat/nedmalloc/License.txt delete mode 100644 compat/nedmalloc/Readme.txt delete mode 100644 compat/nedmalloc/malloc.c.h delete mode 100644 compat/nedmalloc/nedmalloc.c delete mode 100644 compat/nedmalloc/nedmalloc.h
base-commit: 94f057755b7941b321fd11fec1b2e3ca5313a4e0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2104%2Fdscho%2Fstop-using-nedmalloc-with-mingw-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2104/dscho/stop-using-nedmalloc-with-mingw-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/2104
Range-diff vs v2:
1: d547877ae3 = 1: d547877ae3 mingw: stop using nedmalloc 2: 7b5daae659 = 2: 7b5daae659 mingw: drop the build-system plumbing for nedmalloc 3: a5ccd4dae3 ! 3: fc7f5cae10 mingw: drop the small nedmalloc auxiliary files
@@ Metadata
Author: Johannes Schindelin <[email protected]>
## Commit message ##
- mingw: drop the small nedmalloc auxiliary files
+ mingw: remove the vendored compat/nedmalloc/ subtree
- The Git mailing list rejects messages over 100 KB, and
- compat/nedmalloc/malloc.c.h alone is ~196 KB of source, so the
- deletion of that file has to be split across several commits.
- Carving the four smaller files (the LICENSE, the README, and the
- nedmalloc.{c,h} wrappers) into a commit of their own gives the
- malloc.c.h-chunk commits that follow enough headroom to comfortably
- fit under the cap once email-envelope overhead is accounted for.
+ The previous two commits stopped opting into nedmalloc on Windows
+ and stripped out the build-system plumbing that referenced it; the
+ compat/nedmalloc/ subtree now has no callers and no consumers in
+ the build, so retire it from the tree.
+
+ Logically this is a single deletion of compat/nedmalloc/ in its
+ entirety: License.txt, Readme.txt, nedmalloc.{c,h}, and the bulk of
+ the subtree, malloc.c.h. Unfortunately malloc.c.h alone is roughly
+ 196 KB while the Git mailing list rejects messages over 100 KB, so
+ the deletion is artificially split across four commits cut at file
+ or section-banner boundaries: this commit (the smaller auxiliary
+ files) plus three chunks of malloc.c.h cut at its own top-level
+ section banners ("Overlaid data structures" and "System
+ allocation"). The split is purely a mailing-list accommodation,
+ not a logical separation; the three follow-up patches in this
+ series carry "to be squashed into 3/6" subjects so they can be
+ folded back into this commit at integration time, per Junio's
+ suggestion in
+ <https://lore.kernel.org/git/[email protected]/>.
4: 95682cc2c6 ! 4: 9085f00910 mingw: drop the first chunk of compat/nedmalloc/malloc.c.h
@@ Metadata
Author: Johannes Schindelin <[email protected]>
## Commit message ##
- mingw: drop the first chunk of compat/nedmalloc/malloc.c.h
-
- The vendored malloc.c.h is around 196 KB of source, which does not
- fit in a single mailing-list-sized message; the deletion is split
- across three commits cut at the file's own top-level section
- banners. This first chunk ends just before the "Overlaid data
- structures" banner.
+ to be squashed into 3/6 (chunk 1 of 3)
5: a605b58586 ! 5: fa28d50d18 mingw: drop the second chunk of compat/nedmalloc/malloc.c.h
@@ Metadata
Author: Johannes Schindelin <[email protected]>
## Commit message ##
- mingw: drop the second chunk of compat/nedmalloc/malloc.c.h
-
- This is the second of three chunks splitting the malloc.c.h
- deletion (see the preceding commit for the rationale); it picks up
- at the "Overlaid data structures" banner and ends just before the
- "System allocation" banner.
+ to be squashed into 3/6 (chunk 2 of 3)
6: 90d4137018 ! 6: 6e0fd5182f mingw: drop the rest of compat/nedmalloc/malloc.c.h
@@ Metadata
Author: Johannes Schindelin <[email protected]>
## Commit message ##
- mingw: drop the rest of compat/nedmalloc/malloc.c.h
-
- The third and final chunk removes the remainder of malloc.c.h, from
- the "System allocation" banner to the end of the file, and the file
- itself. With this commit the compat/nedmalloc/ directory is fully
- retired from the tree.
+ to be squashed into 3/6 (chunk 3 of 3)
Signature · 1 line
gitgitgadget