Skip to content

Ferrum development journal · Part 18 of 19

A Real Archive Roundtrip and Better File Behavior

The original 7-Zip command-line tool created, tested, and extracted an archive, with all four files compared byte for byte.

One of the more useful October results was getting an ordinary archive workflow to finish. The original 7zr 26.04 command-line tool created an archive from four files, tested it, and extracted it. The extracted files were compared with the originals, including their complete bytes and CRCs.

That is a more useful result than a help screen, although the help screen was an earlier step in understanding the program's behavior. The work had to correct file-type reporting and other file APIs that applications use to decide how to handle their input and output. A wrong answer about a handle can change what a program does even when the next read or write function looks correct in isolation.

Directory enumeration, clocks and alignment, allocation, and file metadata also received focused fixes and comparisons. The recorded candidate had 35 targeted cases across those areas, followed by repeated checks on the later archive candidate. These cases help explain why the application advanced; they aren't a count of supported programs.

The archive run used the original single-threaded command. I'm keeping that qualification because the default multithreaded path still needs its own acceptance. I'm also keeping this result separate from the older 7-Zip 26.02 installer test. They prove different workflows on different development builds.

The native 64-bit ReadFile path was exercised too, including short reads, end-of-file behavior, zero-length requests, invalid handles, file position, and protected or released memory. Those checks tested actual buffer and output effects instead of relying only on an exit status.

For a user, opening and extracting an archive should be unremarkable. For the port, it was a helpful application milestone: real code scanned real files, wrote an archive, and got the originals back. The newer builds were still external development candidates awaiting the broader regression and application work needed before adoption.

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.