✓ Uses Rust 2018 edition
|0.2.9||Apr 1, 2020|
|0.2.8||Mar 21, 2020|
|0.2.4||Feb 13, 2020|
|0.2.1||Jan 24, 2020|
|0.1.2||Jan 21, 2020|
#21 in Memory management
1,019 downloads per month
Used in tremor-influx
snmalloc-rs provides a wrapper for
microsoft/snmalloc to make it usable as a global allocator for rust.
snmalloc is a research allocator. Its key design features are:
- Memory that is freed by the same thread that allocated it does not require any synchronising operations.
- Freeing memory in a different thread to initially allocated it, does not take any locks and instead uses a novel message passing scheme to return the memory to the original allocator, where it is recycled.
- The allocator uses large ranges of pages to reduce the amount of meta-data required.
Some old benchmark results are available in the
There are three features defined in this crate:
debug: Enable the
1mib: Use the
cache-friendly: Make the allocator more cache friendly (setting
64in building the library).
snmalloc-rs add it as a dependency:
# Cargo.toml [dependencies] snmalloc-rs = "0.2"
SnMalloc as the global allocator add this to your project:
#[global_allocator] static ALLOC: snmalloc_rs::SnMalloc = snmalloc_rs::SnMalloc;
mingw version is only tested on nighly branch. Due to the complexity of locating GNU libraries on Windows environment,
the library requests you to provide a
MINGW64_BIN environment variable during compiling. Since
GCC does not provide a option for us
libatomic statically, I have to use dynamic linking. Hence, please make sure the following libs are in your
This is the best thing I can do for current stage, if you have any better solution, please do help me to provide a better support for
- upstream adjust remote batch size (performance improved dramatically, see benchmark
- upstream improve slow path performance for allocation
- More CI (ARM64 on QEMU)
- upstream ARM(32/64) support
- upstream x86-SGX support
- partially fixed
- upstream remote dealloc refactor (higher performance)
- upstream remove extra assertions
for older versions, see CHANGELOG