Crate ialloc

source ·
Expand description

§ialloc

Allocator interface traits for Rust

GitHub crates.io docs.rs unsafe: very License Build Status

§Raison d’être

  • Why not core::alloc::Allocator / allocator_api?
    • 7+ years unstabilized and counting.
    • I want container allocations this decade, thanks!
    • We can aim to be compatible and interopable with it, if/when it stabilizes, or via separate nightly crates.
  • Why not core::alloc::GlobalAlloc?
    • Win32 FreeSid has no equivalent arbitrary allocation function to implement GlobalAlloc::alloc with.
    • bgfx::alloc has no equivalent arbitrary free function to implement GlobalAlloc::dealloc with.
    • Split alloc/free/realloc traits will help avoid bugs and misuse!
    • That said, we can aim to be compatible and interopable with it.
  • Rust-style traits are annoying to adapt to C-style allocators. This provides more C-friendly traits as options.

§Out of scope

  • NUMA? Although ask again later.
  • Physical GPU memory allocation, probably. Might warrant a related crate?
  • ID/handle allocation, perhaps. Might warrant a related crate?

§License

Licensed under either of

at your option.

§Contribution

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

§Features

FeatureDescriptionAdditional Requirements
API Design
"panicyImplicitly panicy APIs
"panicy-bounds"APIs that panic on out of bounds indicies
"panicy-memory"APIs that panic when out of memory
(always)APIs that try to panic on undefined behavior
Dependencies
"alloc"alloc crate support (rust standard library)
"std"std crate support (rust standard library)
"msvc"MSVC-specific library supporttarget_env = "msvc"
"win32"Windows-specific allocatorstarget_os = "windows"
Language Standards
"c89"C89 standard library supportcc finds a C89+ compatible compiler
"c11"C11 standard library supportcc finds a C11+ compatible compiler
"c23"C23 standard library supportcc finds a C23+ compatible compiler
"c++98"C++98 standard library supportcc finds a C++98+ compatible compiler
"c++17"C++17 standard library supportcc finds a C++17+ compatible compiler

Modules§

Macros§

Structs§