#57

Windows support for rake dev, inspect and CDP

Open1byeopened 2d ago

rake no longer needs Python (#42), and on Windows rake doctor, rake build, native and Web rake bundle, and the TCP/Node rake agent now work. These still don't work on Windows, because they're built on Unix facilities and stay behind #[cfg(unix)]:

  • rake dev (desktop, Web and --preview)
  • rake inspect / rake ctl
  • --cdp and native source opening

What's needed

  1. Native endpoints. Named pipes (or an equivalent) for the app control endpoint, its client and server. Exchanges must stay bounded and cancellable, with the same session and discovery layout as on Unix.
  2. Private files and source confinement. Windows ACL, owner and reparse-point checks for discovery files, output files and source confinement. These must keep the same guarantees as the Unix UID, mode and no-follow checks.
  3. The rake dev supervisor. On top of the Job Object boundary that processes/windows.rs already uses for build tools, Windows needs:
    • readiness checks for the app, CDP and the DevTools companion;
    • output readers;
    • cancellation of reloads and checkpoints;
    • shutdown handling in place of Unix signals;
    • tests that stopping a session cleans up every child process. Browser openers are the exception: they must not be stopped (see 1214fcd).
  4. Inspection. Windows versions of the CDP, native inspection and source code, checked against a real Windows GUI.
  5. Preview capture (optional, can be split out). Capture is macOS-only, done by preview.swift. A Windows capture helper would need the same frame, input and generation limits and the same lifetime rules.

Done when

  • rake dev (desktop and Web) and rake inspect work on windows-latest, and the #[cfg(unix)] gates around them are gone.
  • CI on Windows covers starting a session, reloading it and stopping it without leaving processes behind.

See the "Remaining Windows work" section of #56 and crates/rake-cli/PORTING.md.

Activity

0

No activity yet.