Swift.Stability-in-Language-1-Whats-different-stability
Stability in Language: 1-What's the different stability
1. ABI Stability
"ABI stability for Apple OSes means that apps deploying to upcoming releases of those OSes will no longer
need to embed the Swift standard library and “overlay” libraries within the app bundle, shrinking their
download size; the Swift runtime and standard library will be shipped with the OS, like the Objective-C runtime." Ref[1]
"Swift 5.0 introduced a stable binary interface on Apple platforms. This meant that apps built with the Swift 5.0
compiler can use the Swift runtime and standard library built into the operating system, and that existing apps
will remain compatible with new versions of the Swift runtime in future operating system releases." Ref[2]
2. Module Stability
"Module stability allows Swift modules built with different compiler versions to be used together in one app." Ref[2]
"Module stability currently requires library evolution support; typically you will enable both features when
building a binary framework for distribution." Ref[2]
3. Library evolution support
"Library evolution support allows developers of binary frameworks to make additive changes to the API
of their framework while remaining binary compatible with previous versions." Ref[2]
Reference
1. ABI Stability and More
https://www.swift.org/blog/abi-stability-and-more/
2. Library Evolution in Swift
https://www.swift.org/blog/library-evolution/
3. [SR-14195] Swift emits an invalid module interface when a public type has the same name as a module
https://github.com/apple/swift/issues/56573
4. Enabling Module Stability in Swift Package Manager Projects
https://swiftrocks.com/enabling-module-stability-in-swift-package-manager-projects