diff --git a/changelog.md b/changelog.md index 60b5975..5323a24 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,14 @@ # Changelog +## 2026-02-25 - 25.8.1 - fix(allocator) +switch global allocator from tikv-jemallocator to mimalloc + +- Replaced tikv-jemallocator with mimalloc in rust/Cargo.toml workspace dependencies. +- Updated rust/crates/rustproxy/Cargo.toml to use mimalloc as a workspace dependency. +- Updated rust/Cargo.lock: added mimalloc and libmimalloc-sys entries and removed tikv-jemallocator and tikv-jemalloc-sys entries. +- Changed the global allocator in crates/rustproxy/src/main.rs from tikv_jemallocator::Jemalloc to mimalloc::MiMalloc. +- Impact: runtime memory allocator is changed which may affect memory usage and performance; no public API changes but recommend testing memory/performance in deployments. + ## 2026-02-24 - 25.8.0 - feat(rustproxy) use tikv-jemallocator as the global allocator to reduce glibc fragmentation and slow RSS growth; add allocator dependency and enable it in rustproxy, update lockfile, and run tsrust before tests diff --git a/rust/Cargo.lock b/rust/Cargo.lock index a9fe2f8..c93b1ca 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -612,6 +612,16 @@ version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +[[package]] +name = "libmimalloc-sys" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "lock_api" version = "0.4.14" @@ -642,6 +652,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "mimalloc" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8" +dependencies = [ + "libmimalloc-sys", +] + [[package]] name = "mio" version = "1.1.1" @@ -924,6 +943,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", + "mimalloc", "rcgen", "rustls", "rustproxy-config", @@ -936,7 +956,6 @@ dependencies = [ "rustproxy-tls", "serde", "serde_json", - "tikv-jemallocator", "tokio", "tokio-rustls", "tokio-util", @@ -1299,26 +1318,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "tikv-jemalloc-sys" -version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "tikv-jemallocator" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" -dependencies = [ - "libc", - "tikv-jemalloc-sys", -] - [[package]] name = "time" version = "0.3.47" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 54f4715..cfb1842 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -91,8 +91,8 @@ libc = "0.2" # Socket-level options (keepalive, etc.) socket2 = { version = "0.5", features = ["all"] } -# jemalloc allocator (prevents glibc fragmentation / slow RSS growth) -tikv-jemallocator = "0.6" +# mimalloc allocator (prevents glibc fragmentation / slow RSS growth) +mimalloc = "0.1" # Internal crates rustproxy-config = { path = "crates/rustproxy-config" } diff --git a/rust/crates/rustproxy/Cargo.toml b/rust/crates/rustproxy/Cargo.toml index d3bb8c3..7a5b09a 100644 --- a/rust/crates/rustproxy/Cargo.toml +++ b/rust/crates/rustproxy/Cargo.toml @@ -39,7 +39,7 @@ hyper = { workspace = true } hyper-util = { workspace = true } http-body-util = { workspace = true } bytes = { workspace = true } -tikv-jemallocator = { workspace = true } +mimalloc = { workspace = true } [dev-dependencies] rcgen = { workspace = true } diff --git a/rust/crates/rustproxy/src/main.rs b/rust/crates/rustproxy/src/main.rs index d59778b..d3caf63 100644 --- a/rust/crates/rustproxy/src/main.rs +++ b/rust/crates/rustproxy/src/main.rs @@ -1,5 +1,5 @@ #[global_allocator] -static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; +static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; use clap::Parser; use tracing_subscriber::EnvFilter; diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8c8f318..cbfc58e 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartproxy', - version: '25.8.0', + version: '25.8.1', description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.' }