#port #allocator #linux #rustix #ported #dlmalloc

rustix-dlmalloc

A Rust port of the dlmalloc allocator, ported to rustix

5 releases

0.1.5 Mar 1, 2024
0.1.4 Jan 30, 2024
0.1.2 Dec 20, 2023
0.1.0 Aug 25, 2023

#4 in #ported

Download history 98/week @ 2023-12-22 144/week @ 2023-12-29 110/week @ 2024-01-05 51/week @ 2024-01-12 79/week @ 2024-01-19 40/week @ 2024-01-26 26/week @ 2024-02-02 77/week @ 2024-02-09 130/week @ 2024-02-16 161/week @ 2024-02-23 206/week @ 2024-03-01 103/week @ 2024-03-08 72/week @ 2024-03-15 42/week @ 2024-03-22 113/week @ 2024-03-29 34/week @ 2024-04-05

268 downloads per month
Used in 5 crates (3 directly)

MIT/Apache

310KB
6K SLoC

C 3.5K SLoC // 0.4% comments Rust 2K SLoC // 0.0% comments

rustix-dlmalloc

This is a port of the dlmalloc-rs crate to rustix.

The "global" feature currently depends on rustix-futex-sync, which is only supported on Linux.

Original README.md follows

A port of dlmalloc to Rust.

Documentation

Why dlmalloc?

This crate is a port of dlmalloc to Rust, and doesn't rely on C. The primary purpose of this crate is to serve as the default allocator for Rust on the wasm32-unknown-unknown target. At the time this was written the wasm target didn't support C code, so it was required to have a Rust-only solution.

This allocator is not the most performant by a longshot. It is primarily, I think, intended for being easy to port and easy to learn. I didn't dive too deep into the implementation when writing it, it's just a straight port of the C version.

It's unlikely that Rust code needs to worry/interact with this allocator in general. Most of the time you'll be manually switching to a different allocator :)

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–12MB
~119K SLoC