When does an implementation detail become a promise?
Callers can depend on observable behavior that was never documented. Changing an interpreter or a library then becomes a compatibility decision.
Read on through a shared source
Can two versions coexist under the same name? →A module name can force a choice between versions. Identifying content by its hash gives each version a separate address.When does an implementation detail become a promise? →Interpreter behavior, hash tables and public APIs illustrate how callers come to rely on what they can observe. Observable behavior need not have been formally guaranteed.What does a repeated microbenchmark leave out? →Compare the costs visible in an isolated hash-table operation with the effect of workload and cache behavior. Microbenchmarks help answer a narrower question than end-to-end measurements.
Compare the passages
people actually depend in very bizarre ways on some of the internalsanything a user can observe about the implementation of your API