From cf0bdce7d4c92aac953bcefa1bf9ec4d84b3a067 Mon Sep 17 00:00:00 2001 From: Kai Tamkun Date: Wed, 20 Aug 2025 16:46:08 -0700 Subject: [PATCH] Add bun_configure_mimalloc --- cmake/sources/CxxSources.txt | 1 + cmake/targets/BuildMimalloc.cmake | 6 +++--- src/deps/mimalloc.cpp | 7 +++++++ src/main.zig | 3 +++ 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/deps/mimalloc.cpp diff --git a/cmake/sources/CxxSources.txt b/cmake/sources/CxxSources.txt index a2041f617f..dd3fade220 100644 --- a/cmake/sources/CxxSources.txt +++ b/cmake/sources/CxxSources.txt @@ -495,6 +495,7 @@ src/bun.js/modules/NodeTTYModule.cpp src/bun.js/modules/NodeUtilTypesModule.cpp src/bun.js/modules/ObjectModule.cpp src/deps/libuwsockets.cpp +src/deps/mimalloc.cpp src/io/io_darwin.cpp src/vm/Semaphore.cpp src/vm/SigintWatcher.cpp diff --git a/cmake/targets/BuildMimalloc.cmake b/cmake/targets/BuildMimalloc.cmake index f2c4a3fada..f07cbd59b1 100644 --- a/cmake/targets/BuildMimalloc.cmake +++ b/cmake/targets/BuildMimalloc.cmake @@ -4,7 +4,7 @@ register_repository( REPOSITORY oven-sh/mimalloc COMMIT - 1beadf9651a7bfdec6b5367c380ecc3fe1c40d1a + 2d81b6fee92def9f1aad72f7caad67243148b6ee ) set(MIMALLOC_CMAKE_ARGS @@ -14,7 +14,7 @@ set(MIMALLOC_CMAKE_ARGS -DMI_BUILD_TESTS=OFF -DMI_USE_CXX=ON -DMI_SKIP_COLLECT_ON_EXIT=ON - + # ``` # ❯ mimalloc_allow_large_os_pages=0 BUN_PORT=3004 mem bun http-hello.js # Started development server: http://localhost:3004 @@ -51,7 +51,7 @@ if(ENABLE_ASAN) list(APPEND MIMALLOC_CMAKE_ARGS -DMI_DEBUG_UBSAN=ON) elseif(APPLE OR LINUX) if(APPLE) - list(APPEND MIMALLOC_CMAKE_ARGS -DMI_OVERRIDE=OFF) + list(APPEND MIMALLOC_CMAKE_ARGS -DMI_OVERRIDE=OFF) list(APPEND MIMALLOC_CMAKE_ARGS -DMI_OSX_ZONE=OFF) list(APPEND MIMALLOC_CMAKE_ARGS -DMI_OSX_INTERPOSE=OFF) else() diff --git a/src/deps/mimalloc.cpp b/src/deps/mimalloc.cpp new file mode 100644 index 0000000000..9f5d5a497b --- /dev/null +++ b/src/deps/mimalloc.cpp @@ -0,0 +1,7 @@ +#include "mimalloc.h" +#include + +extern "C" void bun_configure_mimalloc() +{ + mi_option_set(mi_option_generic_collect, 10'000); // default +} diff --git a/src/main.zig b/src/main.zig index 1000c0134a..05b97cde31 100644 --- a/src/main.zig +++ b/src/main.zig @@ -11,10 +11,13 @@ comptime { extern fn bun_warn_avx_missing(url: [*:0]const u8) void; +extern fn bun_configure_mimalloc() void; + pub extern "c" var _environ: ?*anyopaque; pub extern "c" var environ: ?*anyopaque; pub fn main() void { + bun_configure_mimalloc(); bun.crash_handler.init(); if (Environment.isPosix) {