Add comprehensive implementation reference section

- GPUI and Cloud file paths with specific types to update
- Migration points for each area
- Platform backend files for each OS
- Compatibility checklist for all features
- Step-by-step implementation roadmap
- Test files that will be impacted

Provides complete reference for implementing the unified scheduler architecture.
This commit is contained in:
Nathan Sobo
2025-08-31 17:35:49 -06:00
parent de19c379f9
commit eac2ce7d84

View File

@@ -442,3 +442,110 @@ impl CloudSimulatedScheduler {
**Backward Compatibility**: All existing functionality preserved
This design keeps test concerns in TestScheduler while maintaining production safety and session coordination capabilities.
## Implementation Reference
### GPUI File Paths & Types
**Core Executor Files:**
- `crates/gpui/src/executor.rs` - `BackgroundExecutor`, `ForegroundExecutor`, `Task<T>`
- `crates/gpui/src/app/app.rs` - App-level executor access
- `crates/gpui/src/platform.rs` - `PlatformDispatcher` trait (current system)
**Types to Update:**
- `BackgroundExecutor` - Switch from `PlatformDispatcher` to `Arc<dyn Scheduler>`
- `ForegroundExecutor` - Switch from `PlatformDispatcher` to `Rc<dyn Scheduler>`
- `Task<T>` - Ensure compatibility with new `Task<T>` design
**Test Infrastructure:**
- `crates/gpui/src/platform/test/dispatcher.rs` - `TestDispatcher` (current)
- Will need new `TestScheduler` implementation
- `TaskLabel` usage in tests
### Cloud File Paths & Types
**Core Runtime Files:**
- `crates/platform_simulator/src/runtime.rs` - `SimulatorRuntime`, session management
- `crates/platform_simulator/src/platform.rs` - `SimulatedExecutionContext`
- `crates/platform_simulator/src/lib.rs` - Cloud worker setup
**Key Types:**
- `SessionId` - Session identification
- `WorkerSession` - Session state tracking
- `ExecutionContext::wait_until()` - Session coordination API
- `SimulatorRuntime::validate_session_cleanup()` - Cleanup validation
**Worker Files:**
- `crates/client_api/src/client_api.rs` - API endpoints using sessions
- `crates/cloud_worker/src/worker.rs` - Worker execution with sessions
- `crates/cloudflare_platform/src/execution_context.rs` - Platform-specific execution context
### Migration Points
**GPUI Areas:**
- Replace `cx.background_executor()` calls with new executors
- Update any direct `PlatformDispatcher` usage
- Preserve `spawn_labeled()` and `deprioritize()` APIs
**Cloud Areas:**
- Replace `SimulatorRuntime` usage in tests
- Update session management to use new scheduler wrapper
- Preserve `wait_until()` and session validation behavior
### Test Files Impacted
**GPUI Tests:**
- `crates/gpui/src/app/test_context.rs` - Test setup
- `crates/gpui_macros/src/test.rs` - Test macro generation
- Project-specific test files using `deprioritize()`
**Cloud Tests:**
- `crates/platform_simulator/src/lib.rs` - Test setup
- Worker test files using session features
- Session validation test cases
### Platform Backend Files
**macOS:**
- `crates/gpui/src/platform/mac/dispatcher.rs` - `MacDispatcher``GcdScheduler`
**Linux:**
- `crates/gpui/src/platform/linux/dispatcher.rs` - `LinuxDispatcher``ThreadPoolScheduler`
**Windows:**
- `crates/gpui/src/platform/windows/dispatcher.rs` - `WindowsDispatcher``ThreadPoolScheduler`
**Test:**
- `crates/gpui/src/platform/test/dispatcher.rs` - `TestDispatcher``TestScheduler`
## Compatibility Checklist
### GPUI Compatibility
-`spawn()``scheduler.spawn()`
-`spawn_labeled(label)``scheduler.spawn_labeled(label)`
-`deprioritize()` → Downcast to TestScheduler
-`timer()``scheduler.timer()`
-`BackgroundExecutor` → Trait object wrapper
### Cloud Compatibility
-`ExecutionContext::wait_until()` → Scheduler wrapper
- ✅ Session validation → `validate_session_cleanup()`
- ✅ Automatic session association → Wrapper intelligence
- ✅ Task cleanup checking → TestScheduler task tracking
-`spawn()` in sessions → Auto-association
### Test Compatibility
- ✅ Test determinism → TestScheduler deprioritization
- ✅ Task labeling → TestScheduler spawn_labeled override
- ✅ Session coordination → Cloud wrapper
- ✅ Production efficiency → Minimal scheduler implementations
## Next Steps
1. **Create shared scheduler crate** with core types
2. **Implement TestScheduler** with task tracking and test features
3. **Update GPUI executors** to use trait objects
4. **Create Cloud wrapper** with session coordination
5. **Migrate platform backends** to new scheduler implementations
6. **Update tests** to use new architecture
7. **Validate performance** and backward compatibility