Skip to content

Ferrum development journal · Part 14 of 19

Recovering the Project and Resuming Real Tests

The resumed work established the source baseline, exercised real NT/file behavior, and added bounded Intel Mac command-line evidence.

Before continuing the port, I needed a reliable answer to a basic question: which copy of the project are we actually working on? The recovery work compared the source repository, private branch records, local worktrees, documentation, and saved evidence. A newer folder timestamp wasn't enough to identify a newer working build.

The resumed Windows work fixed native NT handler registration on the 32-bit entry path and repaired shared file ownership and synchronous I/O behavior. A focused selection of 89 NT, file, and mapping checks passed at the recorded snapshot. That is a useful regression baseline, not 89 supported applications.

The Intel Mac investigation also produced bounded command-line evidence. Small Mach-O programs exercised the loader and Darwin syscall path. The shared translator needed a repair to preserve values across the generic syscall boundary, and the alignment path needed checks that distinguished a supported unaligned access from a real permission fault.

That distinction is practical. A program shouldn't lose a register value because it asked the operating system for something, and a legitimate alignment repair shouldn't make a read-only write acceptable. The tests checked those behaviors with expected outputs and exits rather than calling a process start a success.

There were core safety fixes too, including decoder bounds and stale lookup entries, alongside a review of upstream translation projects. FEX, Wine, box64, QEMU, LLVM, and the graphics projects are useful places to learn. A new upstream commit still needs to address a specific problem in this port and survive a relevant regression test before it becomes part of our stack.

The Mac results remained command-line and loader evidence. They didn't establish Objective-C, AppKit, or arbitrary Intel Mac applications. The Windows checks similarly didn't close a complete game session. What this day gave the project was a more trustworthy place to continue, with the source, the tested artifacts, and the open requirements kept separate.

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.