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