# ABI Stability and More

* [**ABI Stability and More**](https://swift.org/blog/abi-stability-and-more/)
* ABI Stability
  * 在 Run time 下，binary 可多版本相容（在沒有 ABI Stability 之前不行）
  * 有了ABI Stability，**Swift Standard Library** 就可從以往的 App 層移到 **OS** 層
  * 所以打包出來的 **ipa 檔更小**
  * 從 **iOS 12.2** 開始
* Module Stability
  * Swift framework 裡有一個檔案 **swiftmodule**，用來作為與專案溝通的 interface
  * 以往 swiftmodule 與 **Swift 版本相依**，所以當專案換 Swift 版本時，其專案使用的 swift framework 必須要用新的 Swift 重新建置，來產生相依的 swiftmodule 檔
  * 有了 Module Stability ，Swift framework 就不需要隨著專案更新Swift版本而重新建置
  * 自己推測：目前 Carthage 就是要做上述的重新建置，推測原因應該就是 **swiftmodule 相依 swift 版本**
* Library Evolution
  * 以往當專案的某個 Library 有更新(尤其是 Standard library)，整個專案就得重新編譯
  * 有了 Library Evolution，就不需要整個專案重新編譯了，能節省很多時間
