ABI Stability in libraries
AKA the @frozen
attribute.
Per Swift Evolution 260, you can enable “library evolution mode” (with the -enable-library-evolution
command-line argument), which will make it a non-ABI-breaking change to modify fields in a struct or add new enum cases. (These are “resilient” types).
Also, on a per-type basis, you can specify structs and enums to be @frozen
, which means that the stored instance properties of a struct will not be changed (added, removed, reordered), nor will the cases of an enum change (add, remove, reorder). @frozen
only really applies if library evolution is enabled, and is assumed to be the default if not (however, libraries compiled without library evolution mode enabled are not ABI-stable).
Last updated: 2019-09-06 14:16:04 -0700