Skip to content

Ferrum development journal · Part 13 of 19

Correcting the Ferrum Progress Report

Some earlier 32-bit checks proved placeholder outputs rather than real NT behavior. The recovery work started by separating useful code from unsupported completion claims.

I need to correct an important part of the earlier Ferrum progress reporting. The project had used headlines such as 96 percent playable, 99 percent substrate, and a large total of passing checks. The October review found that some of the 32-bit NT milestone checks were accepting fixed placeholder answers instead of exercising the real behavior an application needed.

A check can be green and still ask the wrong question. If an API test only verifies a constant that the implementation always returns, it doesn't prove the system query, file operation, or memory behavior behind that API. Those earlier totals therefore can't be used as a supported compatibility percentage or a release-readiness claim.

The discarded placeholder approach was not the path to carry forward. The replacement work widened 32-bit arguments and structures so the guest could call real native NT implementations, with a shared handle space where appropriate. At the October 2 checkpoint, that replacement was still work in progress and had not been built and qualified. Written code and written tests were not yet runtime results.

This review also made the product scope clearer. Running an installed Windows application through a complete session is one requirement. Doing the same for arbitrary 32-bit software is another. Intel 64-bit Mac applications and a signed, notarized distribution add two more tracks. None of them can be closed by a function count.

The parked Mac branch had early Mach-O loader and command-line work, but it didn't establish normal framework-based Mac applications. Some integration candidates also had incomplete builds or test comparisons. Preserving those branches was useful; treating their presence as finished integration would not have been.

Going forward, I want progress described in terms someone can inspect: which executable ran, which result was compared, what the negative control showed, and what remains open. That still leaves plenty of real work to be excited about. It gives us a much better way to decide what actually needs to happen next.

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.