库之间的Swift兼容性

我正在分发其他开发者使用的库( http://empiric.al )。 我注意到,在swift版本之间,甚至2.0到2.1,我将得到Module file was created by a (newer/older) version of the compiler.

我需要以面向未来的方式分发。

我怎样才能确保我的编译框架可以被更新版本的Swift在未来使用,所以我没有必要重新编译一旦苹果提出了一个新的testing版?

从苹果网站 :

二进制兼容性和框架

尽pipe您的应用程序的运行时兼容性得到了保证,但Swift语言本身将继续发展,二进制接口也将发生变化。 为了安全起见,应用程序的所有组件都应该使用相同版本的Xcode和Swift编译器来构build,以确保它们一起工作。

这意味着框架需要仔细pipe理。 例如,如果您的项目使用框架与embedded式扩展共享代码,则需要一起构build框架,应用程序和扩展。 依赖使用Swift的二进制框架(尤其是来自第三方)是危险的。 随着Swift的变化,这些框架将与您的应用程序的其余部分不兼容。 当二进制接口在一两年内稳定后,Swift运行时将成为主机操作系统的一部分,这个限制将不再存在。

在Swift ABI(应用程序二进制接口)稳定之前(我猜测再过一两年),分发在不同Xcode版本上工作的库的唯一方法是分发源代码。 cocoa豆荚和迦太基都是使库发行更容易的好工具,但对于Swift代码,它们仍然依赖于可用的源代码。

可能有一个Cocoapod检测它运行的Xcode版本,然后下载并提供正确的库生成,但是仍然需要为所有需要支持和重新编译的Xcode版本生成库苹果发布新的Xcode,但至less用户不需要手动下载新版本。