How snowdeenn/weave works
Weave is a Rust parallel-computing library. Its principal workflow builds a thread pool, submits work or installs a parallel iterator computation, and returns results through handles or iterator terminals. The scheduler supports priorities, work stealing, scoped borrowed tasks, and worker-local state; separate capabilities describe hardware topology and allocate NUMA-aware buffers. The graph preserves documented platform backends and iterator stages. Some runtime wiring is documented only in the README; unsampled implementation details are not inferred.
Main entry points: pool.rs Thread pool · mod.rs Topology model · layout.rs Worker layout · buffer.rs NUMA buffer
Components 25
Task execution
- Pool builder
src/builder.rs - Thread pool
src/pool.rs - Jobs and priorities
src/job.rs - Work scheduler
src/pool.rs - Task deque
src/deque.rs - Scoped tasks
src/scope.rs - Join handles
src/handle.rs - Steal policy
src/steal.rs
Parallel iteration
- Parallel sources
src/iterator/range.rs - Slice sources
src/iterator/slice.rs - Lazy adapters
src/iterator/adaptator.rs - Iterator terminals
src/iterator/mod.rs
Hardware placement
- Topology model
src/topology/mod.rs - Linux discovery
src/topology/linux.rs - Windows discovery
src/topology/windows.rs - Worker layout
src/layout.rs - Linux affinity
src/affinity/linux.rs - Windows affinity
src/affinity/windows.rs
NUMA memory
- NUMA buffer
src/memory/buffer.rs - Linux memory
src/memory/linux.rs - Windows memory
src/memory/windows.rs
Worker state
- Worker-local storage
src/storage/local.rs
Other components
- Rust caller
- Linux sysfs
- Windows APIs
Connections 32
- Rust caller → Pool builder: configures
README.md - Pool builder → Thread pool: builds
README.md - Rust caller → Thread pool: submits work
README.md - Thread pool → Jobs and priorities: schedules
src/pool.rs - Thread pool → Work scheduler: dispatches
README.md - Work scheduler → Task deque: uses
- Thread pool → Join handles: returns handle
src/pool.rs - Rust caller → Scoped tasks: starts scope
README.md - Scoped tasks → Thread pool: submits descendants
src/scope.rs - Thread pool → Steal policy: uses policy
src/pool.rs - Rust caller → Parallel sources: creates range
README.md - Rust caller → Slice sources: iterates slice
README.md - Parallel sources → Lazy adapters: transforms lazily
src/iterator/mod.rs - Slice sources → Lazy adapters: transforms lazily
src/iterator/mod.rs - Lazy adapters → Iterator terminals: drives computation
src/iterator/mod.rs - Iterator terminals → Thread pool: uses current pool
README.md - Rust caller → Topology model: discovers topology
README.md - Topology model → Linux discovery: dispatches to
src/topology/mod.rs - Topology model → Windows discovery: dispatches to
src/topology/mod.rs - Linux discovery → Linux sysfs: reads topology
README.md - Windows discovery → Windows APIs: queries processor data
src/topology/windows.rs - Topology model → Worker layout: informs placement
README.md - Worker layout → Linux affinity: pins workers
README.md - Worker layout → Windows affinity: pins workers
- Worker layout → Steal policy: guides steal order
README.md - Rust caller → NUMA buffer: allocates buffer
README.md - NUMA buffer → Linux memory: maps storage
src/memory/buffer.rs - NUMA buffer → Windows memory: maps storage
src/memory/buffer.rs - Linux memory → Topology model: checks nodes
src/memory/linux.rs - Windows memory → Windows APIs: allocates on node
src/memory/windows.rs - Rust caller → Worker-local storage: creates local state
README.md - Worker-local storage → Thread pool: binds to pool
src/storage/local.rs