Skip to content

Ferrum development journal · Part 17 of 19

Making the Launcher Own Its Storage and Processes

Managed storage and an app-local process supervisor are part of turning a development engine into an application people can safely launch and stop.

A useful launcher needs to do more than start a process. It needs to know where its managed files belong, which process it owns, whether a launch is still active, and what stopping that launch actually means. Those details become especially important when the engine is running translated code and keeping several runtime components together.

The October 11 launcher work included managed-storage checks, a native process supervisor, and a shared launcher client. The shared code compiled, the full SwiftUI launcher passed typechecking, and the native control tests exercised the supervisor protocol and the package-contained development pieces.

The practical goal is to keep a launch attached to its owner. If the user closes or stops it, Ferrum should have a bounded way to finish that operation and report the result. It should also keep its own state separate from a live application library used elsewhere. Development tests use staged copies where state needs to change.

This is also where storage and packaging choices start to affect the user experience. A managed runtime should have a known location and a predictable lifecycle. A successful development run that depends on a temporary directory or a developer's existing installation isn't enough for someone installing the finished application on another Mac.

The limits are worth stating clearly. Native control tests and a typechecked GUI don't prove a complete graphical launch-and-play workflow through the newest FEX candidate. They also don't establish a signed, notarized, stapled distribution or a clean-machine installation. The development package and the final product have different acceptance requirements.

This work made the launcher side more concrete while the translation work continued. The next step is to qualify those pieces together with real application launches and the intended runtime bundle, then repeat the workflow on the required clean test machines.

Ferrum development journal

View the journal

Live19 entries so farUpdated New (19 entries updated in the last 14 days)

  1. Part 1Bringing FEX to macOS: The First Windows ProgramDevelopment work: Aug 5 – 7, 2026Updated , new
  2. Part 2From Return Values to Pixels and SoundDevelopment work: Aug 8 – 11, 2026Updated , new
  3. Part 3Building More of the Windows RuntimeDevelopment work: Aug 12 – 18, 2026Updated , new
  4. Part 4Following a Game Through Its Opening VideoDevelopment work: Aug 19 – 20, 2026Updated , new
  5. Part 5Installers, Saves, Fonts, and the Parts Around the GameDevelopment work: Aug 21 – 22, 2026Updated , new
  6. Part 6Game Progress and Measuring the Right ThingDevelopment work: Aug 23 – 27, 2026Updated , new
  7. Part 7Building the 32-Bit Graphics PathDevelopment work: Aug 28 – Sep 1, 2026Updated , new
  8. Part 8Making Memory, Files, and Graphics State AgreeDevelopment work: Sep 2 – 3, 2026Updated , new
  9. Part 9DirectX 12, Shader Caches, and the Steam Startup WorkDevelopment work: Sep 4 – 6, 2026Updated , new
  10. Part 10Working on Presentation and Controller InputDevelopment work: Sep 7 – 12, 2026Updated , new
  11. Part 11A Launcher and a Freeze That Wasn't the PresenterDevelopment work: Sep 15 – 17, 2026Updated , new
  12. Part 12Portal Reaches a Command Stream, With the Frame Still AheadDevelopment work: Sep 23 – 26, 2026Updated , new
  13. Part 13Correcting the Ferrum Progress ReportDevelopment work: Oct 2, 2026Updated , new
  14. Part 14Recovering the Project and Resuming Real TestsDevelopment work: Oct 5, 2026Updated , new
  15. Part 15Making Memory Protection and Lifetime Tests More UsefulDevelopment work: Oct 6 – 9, 2026Updated , new
  16. Part 16Getting Wine's Real 32-Bit Startup to RunDevelopment work: Oct 9 – 11, 2026Updated , new
  17. Part 17Making the Launcher Own Its Storage and ProcessesDevelopment work: Oct 11, 2026Updated , new
  18. Part 18A Real Archive Roundtrip and Better File BehaviorDevelopment work: Oct 11, 2026Updated , new
  19. Part 19Asynchronous I/O and the Bytes a Cancelled Write KeepsDevelopment work: Oct 11, 2026Updated , new

Arrow keys move through the results, Enter opens one, Command or Control with Enter opens it in a new tab. Tab and Shift+Tab change which kind of results are shown.