From 5e41d48512fe9283258f1abcd2cd4eef3d3a7536 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sun, 14 Dec 2025 05:50:20 -0700 Subject: [PATCH] Update integration plans to reflect completed phases --- crates/scheduler/plan.md | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/crates/scheduler/plan.md b/crates/scheduler/plan.md index 652580626c..9aeb5a78a2 100644 --- a/crates/scheduler/plan.md +++ b/crates/scheduler/plan.md @@ -54,12 +54,25 @@ This document outlines the integration of the `scheduler` crate into GPUI, provi - Removed `RunnableVariant::Scheduler` variant (now uses `RunnableVariant::Meta` for both) - Simplified all dispatcher match arms +### Phase 2b: Eliminated RunnableVariant::Compat ✅ + +- Removed `RunnableVariant::Compat` variant entirely +- Updated `PlatformScheduler::timer()` to use `async_task::Builder` with `RunnableMeta` +- Updated REPL's `ZedDispatcher` to wrap external `Runnable` with metadata +- All tasks now carry source location for debugging/profiling +- `RunnableVariant` is now single-variant (could be simplified to just `Runnable`) + +### Phase 2c: Task API Parity ✅ + +- Added `is_ready()` method to GPUI's `Task` for API parity with scheduler +- Both Task types now have identical APIs except `detach_and_log_err` (GPUI-specific) + ### Phase 3: Hybrid TestDispatcher Integration ✅ `TestDispatcher` uses `TestScheduler` internally for timing/clock/rng while keeping its own task queues for `RunnableVariant` handling. **Why hybrid approach:** -- GPUI uses `RunnableVariant` with 2 variants (Meta, Compat) +- GPUI uses `RunnableVariant` (now single-variant, wrapping `Runnable`) - `TestScheduler` expects `Runnable` only - Hybrid allows unified timing without breaking existing behavior @@ -128,15 +141,20 @@ Full executor composition (GPUI executors wrapping scheduler executors) is **def - `src/tests.rs` - `test_background_priority_scheduling` ### GPUI Crate -- `src/platform/platform_scheduler.rs` - New `PlatformScheduler` adapter -- `src/platform.rs` - Re-exports `RunnableMeta` from scheduler, platform_scheduler module +- `src/platform/platform_scheduler.rs` - New `PlatformScheduler` adapter, timers use `RunnableMeta` +- `src/platform.rs` - Re-exports `RunnableMeta` from scheduler, single-variant `RunnableVariant` - `src/platform/test/dispatcher.rs` - `TestScheduler` integration, `new(seed: u64)` -- `src/platform/mac/dispatcher.rs` - `trampoline_scheduler`, handle new variant -- `src/platform/linux/dispatcher.rs` - Handle new variant -- `src/platform/linux/headless/client.rs` - Handle new variant -- `src/platform/linux/wayland/client.rs` - Handle new variant -- `src/platform/linux/x11/client.rs` - Handle new variant -- `src/platform/windows/dispatcher.rs` - Handle new variant +- `src/platform/mac/dispatcher.rs` - Simplified to only handle `Meta` variant +- `src/platform/linux/dispatcher.rs` - Simplified to only handle `Meta` variant +- `src/platform/linux/headless/client.rs` - Simplified to only handle `Meta` variant +- `src/platform/linux/wayland/client.rs` - Simplified to only handle `Meta` variant +- `src/platform/linux/x11/client.rs` - Simplified to only handle `Meta` variant +- `src/platform/windows/dispatcher.rs` - Simplified to only handle `Meta` variant +- `src/executor.rs` - Added `is_ready()` to `Task` + +### REPL Crate +- `src/repl.rs` - `ZedDispatcher` wraps external `Runnable` with `RunnableMeta` +- `Cargo.toml` - Added `async-task` dependency - `src/test.rs` - Updated `run_test` to pass seed directly - `src/app/test_context.rs` - Updated `TestAppContext::single()` - `src/text_system/line_wrapper.rs` - Updated test helper