Documentation
¶
Overview ¶
Package apicheck renders the exported surface of the supported packages so a change to it has to be deliberate.
The problem this exists for is not hypothetical. Over two days this repository added five methods to matching.CommandLog, changed what matching.Shards accepts, added fields to orderentry.Msg and bumped the wire protocol twice. Every one of those breaks somebody, every one was defensible on its own, and nothing in the build or the test suite said "this is a compatibility event" — the tests were updated along with the code, which is exactly what makes a break invisible.
So the surface is rendered to a golden file, the same trick internal/wire uses for the protocol. The check does not stop a breaking change. It makes one impossible to ship without a human regenerating the file and, one hopes, noticing what they are regenerating. See docs/COMPATIBILITY.md.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
This section is empty.