D075 - Standard-library names are harvested from FreeBSD, not remembered
decided · 2026-08-19 · prompted by the user
The published-standard word list was ~470 names written out from knowledge of ISO C and POSIX. Correct as far as it went, and the weakest link in the provenance argument: "somebody wrote these down from the standards" cannot be audited, and it is bounded by what one person thought of rather than by what exists.
FreeBSD publishes the answer. Every Symbol.map in its
source tree lists what one library exports, grouped by version -
authoritative, permissively licensed, and citable to a revision.
orbistoun-cli harvest <freebsd-src> --revision <tag>
reads them and writes a word list whose header names the source it came
from.
A sparse checkout is enough, since only the maps are read:
git sparse-checkout set lib/libc lib/libthr lib/msun lib/libutilWhat is skipped, and why. Private version blocks
(FBSDprivate_*) are implementation detail rather than
interface. Reserved names - anything leading with an underscore - belong
to the implementation's own namespace. Linker-script syntax
(local:, *;) is not a symbol, and treating it
as one would put nonsense in the candidate list.
A malformed map costs its own symbols, not the run. A harvest that fails wholesale because one file uses an unfamiliar construct is worse than a partial one that reports how many maps it read.
The hand-written list stays until somebody runs the harvest, and now says so in its own header. It is correct; it is simply smaller than it should be, and cited to the wrong kind of source.