← board

Rung 3 — 141 applets, separately compiled, really linked

feature-c-corpus-busybox-userland-by-separate-compilation met its bar at 26 applets / 82 translation units and said in its own summary that growing the applet set past 26 is rung 3's business. This is that.

The bar

tools/busybox_diff.sh --separate --applets "$(busybox --list)" — 141 applets, 265 translation units, 265 objects, one real link with no -Wl,-z,muldefs, and the result byte-identical to the gcc oracle over its case set.

x86-64 only. aarch64 stays out until --emit-obj has an object writer for it; that is not this ticket's to fix.

Met

  ORACLE  gcc separate build, 265 objects (387 cases)
  ORACLE  busybox agrees with the gcc build
  note    x86_64   265 objects linked separately (109131728 bytes)
  PASS    x86_64   byte-identical to the gcc oracle over 387 cases
busybox-diff: GREEN

compiler sha256 084935c11df1f9d0. See devdocs/progress/LOGBOOK.md 2026-09-02 for the two compiler defects and the crtl surface, each with its own measurement.

The last symbol was not a missing function. After getnameinfo landed, all 265 objects compiled and the link still failed on one name -- data_extract_to_command, from if (opt & OPT_2COMMAND) in archival/tar.c, where the config sets that enum member to 0 and leaves the defining translation unit out of the build. The dead arm survived because the x and 0 branch identity looked at the outer node of and(and(opt,0),0xFFFFFFFF) -- the frontend's own unsigned width mask. A compiler fold, reached by attempting a link.

Log

Not in this rung