Expand description
kozan-scheduler — Task scheduler and async executor for Kozan.
Like Chrome’s base/task/ + blink/platform/scheduler/.
Standalone crate — zero dependency on kozan-core.
§Architecture
Scheduler (MainThreadScheduler — the event loop)
├── TaskQueueManager (SequenceManager — priority picker)
│ └── TaskQueue × 6 (one per priority level)
├── MicrotaskQueue (drain after each macrotask)
├── LocalExecutor (!Send async runtime)
├── FrameScheduler (vsync-driven frame timing)
└── WakeReceiver (cross-thread task delivery)§Event loop algorithm (HTML spec)
loop {
1. Receive cross-thread tasks
2. Promote delayed tasks
3. Poll async executor
4. Pick ONE macrotask → run
5. Drain ALL microtasks
6. If frame due → callbacks → style → layout → paint
7. Park until next event
}Re-exports§
pub use executor::LocalExecutor;pub use executor::TaskId;pub use frame::FrameInfo;pub use frame::FrameScheduler;pub use microtask::Microtask;pub use microtask::MicrotaskQueue;pub use queue::TaskQueue;pub use queue::TaskQueueManager;pub use scheduler::Scheduler;pub use scheduler::TickResult;pub use task::Task;pub use task::TaskPriority;pub use waker::CrossThreadTask;pub use waker::SendError;pub use waker::WakeReceiver;pub use waker::WakeSender;pub use waker::cross_thread_channel;
Modules§
- executor
- Local executor — single-threaded
!Sendasync runtime. - frame
- Frame scheduler — Chrome’s
CCSchedulerfor vsync-driven rendering. - microtask
- Microtask queue — HTML spec “perform a microtask checkpoint”.
- queue
- Task queues — Chrome’s
base::sequence_manager::TaskQueue+SequenceManager. - scheduler
- Scheduler — Chrome’s
MainThreadScheduler, the event loop. - task
- Task types — Chrome’s
base::OnceClosure+base::TaskTraits. - timer
- Timer registry — drives
asyncsleep / deadline futures on the view thread. - waker
- Cross-thread waker — wakes the window thread from background threads.
Structs§
- Frame
Timing - Pipeline timing breakdown for a single frame (milliseconds).