From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v2 0/6] mingw: stop using nedmalloc
Date: Thu, 07 May 2026 16:00:07 +0000 [thread overview]
Message-ID: <pull.2104.v2.git.1778169613.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2104.git.1777811392756.gitgitgadget@gmail.com>
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/00fd3145-b3d2-ddab-466d-d06fd27298ec@gmx.de/ 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.
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: drop the small nedmalloc auxiliary files
mingw: drop the first chunk of compat/nedmalloc/malloc.c.h
mingw: drop the second chunk of compat/nedmalloc/malloc.c.h
mingw: drop the rest of compat/nedmalloc/malloc.c.h
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-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2104/dscho/stop-using-nedmalloc-with-mingw-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/2104
Range-diff vs v1:
1: b5d1ae93e4 ! 1: d547877ae3 mingw: stop using nedmalloc
@@ Commit message
https://github.com/git-for-windows/git-sdk-64/actions/runs/25244795074.
Rather than patch the unmaintained vendored sources to silence the
- warning, stop opting into nedmalloc altogether on MINGW. The platform
- allocator is what every non-MINGW build already uses, and a fresh
- build of git.git's master against a minimal Git for Windows SDK
- upgraded to GCC 16, with `USE_NED_ALLOCATOR` removed from the MINGW
- section, completes successfully.
+ warning, stop opting into nedmalloc altogether on Windows. The
+ platform allocator is what every non-MINGW build already uses, and a
+ fresh build of git.git's master against a minimal Git for Windows SDK
+ upgraded to GCC 16 completes successfully.
- The compat/nedmalloc/ subtree itself is left in place to keep this
- change minimal; nothing in the build links against it any longer, so
- it can be removed in a follow-up if desired.
+ The compat/nedmalloc/ subtree itself is removed by subsequent commits
+ in this series.
- Assisted-by: Claude Opus 4.7
+ Assisted-by: Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
## config.mak.uname ##
@@ config.mak.uname: ifeq ($(uname_S),MINGW)
ifeq (/mingw64,$(subst 32,64,$(subst clangarm,mingw,$(prefix))))
# Move system config into top-level /etc/
ETC_GITCONFIG = ../etc/gitconfig
+
+ ## contrib/buildsystems/CMakeLists.txt ##
+@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ add_compile_definitions(HAVE_ALLOCA_H NO_POSIX_GOODIES NATIVE_CRLF NO_UNIX_SOCKETS WIN32
+ _CONSOLE DETECT_MSYS_TTY STRIP_EXTENSION=".exe" NO_SYMLINK_HEAD UNRELIABLE_FSTAT
+ NOGDI OBJECT_CREATION_MODE=1 __USE_MINGW_ANSI_STDIO=0
+- USE_NED_ALLOCATOR OVERRIDE_STRDUP MMAP_PREVENTS_DELETE USE_WIN32_MMAP
++ OVERRIDE_STRDUP MMAP_PREVENTS_DELETE USE_WIN32_MMAP
+ HAVE_WPGMPTR ENSURE_MSYSTEM_IS_SET HAVE_RTLGENRANDOM)
+ list(APPEND compat_SOURCES
+ compat/mingw.c
+@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ compat/win32/syslog.c
+ compat/win32/trace2_win32_process_info.c
+ compat/win32/dirent.c
+- compat/nedmalloc/nedmalloc.c
+ compat/strdup.c)
+ set(NO_UNIX_SOCKETS 1)
+
+
+ ## meson.build ##
+@@ meson.build: elif host_machine.system() == 'windows'
+ 'compat/win32/pthread.c',
+ 'compat/win32/syslog.c',
+ 'compat/win32mmap.c',
+- 'compat/nedmalloc/nedmalloc.c',
+ ]
+
+ libgit_c_args += [
-: ---------- > 2: 7b5daae659 mingw: drop the build-system plumbing for nedmalloc
-: ---------- > 3: a5ccd4dae3 mingw: drop the small nedmalloc auxiliary files
-: ---------- > 4: 95682cc2c6 mingw: drop the first chunk of compat/nedmalloc/malloc.c.h
-: ---------- > 5: a605b58586 mingw: drop the second chunk of compat/nedmalloc/malloc.c.h
-: ---------- > 6: 90d4137018 mingw: drop the rest of compat/nedmalloc/malloc.c.h
--
gitgitgadget
next prev parent reply other threads:[~2026-05-07 16:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-03 12:29 [PATCH] mingw: stop using nedmalloc Johannes Schindelin via GitGitGadget
2026-05-05 6:09 ` Patrick Steinhardt
2026-05-07 16:00 ` Johannes Schindelin via GitGitGadget [this message]
2026-05-07 16:00 ` [PATCH v2 1/6] " Johannes Schindelin via GitGitGadget
2026-05-07 16:00 ` [PATCH v2 2/6] mingw: drop the build-system plumbing for nedmalloc Johannes Schindelin via GitGitGadget
2026-05-07 16:00 ` [PATCH v2 3/6] mingw: drop the small nedmalloc auxiliary files Johannes Schindelin via GitGitGadget
2026-05-07 16:00 ` [PATCH v2 4/6] mingw: drop the first chunk of compat/nedmalloc/malloc.c.h Johannes Schindelin via GitGitGadget
2026-05-07 16:00 ` [PATCH v2 5/6] mingw: drop the second " Johannes Schindelin via GitGitGadget
2026-05-07 16:00 ` [PATCH v2 6/6] mingw: drop the rest " Johannes Schindelin via GitGitGadget
2026-05-08 2:56 ` [PATCH v2 0/6] mingw: stop using nedmalloc Junio C Hamano
2026-05-08 14:15 ` Jeff King
2026-05-08 12:50 ` [PATCH v3 " Johannes Schindelin via GitGitGadget
2026-05-08 12:50 ` [PATCH v3 1/6] " Johannes Schindelin via GitGitGadget
2026-05-08 12:50 ` [PATCH v3 2/6] mingw: drop the build-system plumbing for nedmalloc Johannes Schindelin via GitGitGadget
2026-05-08 12:50 ` [PATCH v3 3/6] mingw: remove the vendored compat/nedmalloc/ subtree Johannes Schindelin via GitGitGadget
2026-05-08 12:50 ` [PATCH v3 4/6] to be squashed into 3/6 (chunk 1 of 3) Johannes Schindelin via GitGitGadget
2026-05-08 12:51 ` [PATCH v3 5/6] to be squashed into 3/6 (chunk 2 " Johannes Schindelin via GitGitGadget
2026-05-08 12:51 ` [PATCH v3 6/6] to be squashed into 3/6 (chunk 3 " Johannes Schindelin via GitGitGadget
2026-05-08 13:17 ` [PATCH v3 0/6] mingw: stop using nedmalloc Patrick Steinhardt
2026-05-10 2:31 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.2104.v2.git.1778169613.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox