-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
The main crossbeam crate is going to be an umbrella crate that brings together the most important pieces of the Crossbeam project together and reexports them. I've been thinking what should it look like. Here are some quick ideas...
First, crossbeam depends on crossbeam-epoch and reexports the crate as:
crossbeam::epoch::* // from crossbeam-epochThen we have several atomic types, but I'm unsure if they should live in sync::atomic or just atomic. The former is more consistent with the standard library, though.
crossbeam::sync::atomic::{AtomicBox,AtomicArc,AtomicCell} // from crossbeam-atomicThere's also a bunch of data structures:
crossbeam::sync::Stack // from crossbeam-stack
crossbeam::sync::Queue // from crossbeam-queue
crossbeam::sync::channel::* // from crossbeam-channel
crossbeam::sync::{deque,Worker,Stealer} // from crossbeam-dequeFinally, some utilities:
crossbeam::scoped; // from crossbeam-utils
crossbeam::CachePadded; // from crossbeam-utilsBut, instead of just shoving utilities into the crate root, we could organize them into submodules:
crossbeam::thread::scoped; // from crossbeam-utils
crossbeam::utils::CachePadded; // from crossbeam-utilsSo the questions we need to answer are:
- What goes inside
crossbeamand what needs to be left outside? When should a Rust programmer reach forcrossbeam-Xinstead ofcrossbeam? - What hierarchy of submodules do we want? Do we closely mimic
stdor come up with our own?
Metadata
Metadata
Assignees
Labels
No labels