See #48 for the previous (now-outdated) roadmap. ### Core traits, types, and their interactions - [ ] Merge proposed `StaticAllocator` trait & changes to `Allocator` - https://github.com/rust-lang/rust/pull/157428 - [ ] Determine the soundness situation w.r.t. `Clone` interactions - Proposal: `unsafe trait AllocatorClone: Allocator + Clone` - Proposal: [conditionally-unsafe trait impls](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/safety.20invariants.20relying.20on.20reasoning.20about.20other.20impls/with/599135613) - [ ] Merge a `NativeAllocator<A: StaticAllocator>` lang item for LLVM intrinsic interop & `noalias` emitting - [ ] Explore other proposed extension traits - Proposals came up for `PartialEq` marking allocator equivalence - do we want something like this? - `Deallocator`? ### Beyond `GlobalAlloc` - [x] Merge a nightly `GlobalAllocator` trait - https://github.com/rust-lang/rust/pull/157153 - [ ] Deprecate/hide `GlobalAlloc` over an edition - [ ] Implement `Global` in terms of `NativeAllocator` & stop having it be a lang item ### Expanded collection types - [ ] Allocator-generic `String` - [ ] Explore options for more fallible methods on collections - Proposal: https://github.com/rust-lang/libs-team/issues/797 - Proposal: https://github.com/rust-lang/libs-team/issues/798 - [ ] Move collection types into `core` ### Allocator-aware pointer types - [x] Make `Box` no longer fundamental over the allocator - https://github.com/rust-lang/rust/pull/160162 - [ ] Figure out semantics and trait bounds for `Arc/Rc<_, A>` - Proposal: Store the allocator inline with the value instead of in the `Rc`/`Arc` itself ### Stabilisation path - [ ] Stabilise the core `Allocator` trait & minimal functionality around it - https://github.com/rust-lang/rust/pull/156882 - [ ] Plan out a roadmap for further stabilisations ### Meta - [ ] Land an allocator project goal - https://github.com/rust-lang/goals/pull/752 - [ ] Clarify and expand documentation on the allocator trait family - [ ] Clean up old & now-irrelevant issues in this repository
See #48 for the previous (now-outdated) roadmap.
Core traits, types, and their interactions
StaticAllocatortrait & changes toAllocatorCloneinteractionsunsafe trait AllocatorClone: Allocator + CloneNativeAllocator<A: StaticAllocator>lang item for LLVM intrinsic interop &noaliasemittingPartialEqmarking allocator equivalence - do we want something like this?Deallocator?Beyond
GlobalAllocGlobalAllocatortraitAllocators to be used as#[global_allocator]s rust#157153GlobalAllocover an editionGlobalin terms ofNativeAllocator& stop having it be a lang itemExpanded collection types
StringA: InfallibleAllocatorlibs-team#797Veclibs-team#798coreAllocator-aware pointer types
Boxno longer fundamental over the allocator#[fundamental]only apply to the first argument ofBoxrust#160162Arc/Rc<_, A>Rc/ArcitselfStabilisation path
Allocatortrait & minimal functionality around itAllocatorrust#156882Meta