Hi swift users!
I've read some docs about module stability and -enable-library-evolution
but it still seems a bit unclear for me.
Let's say I want to distribute some library (static or dynamic) written in swift. I'm certain that clients will recompile all the dependant code after library update – I don't care about stable abi between library versions. But, what I care about is that clients can use any 5.1+ swift compiler version for their code, and it will not complain about my library built with another version.
As I understand, .swiftmodule
files are not guaranteed to be compatible between compiler versions, so I need .interface
files, that I get by passing -emit-module-interface-path $PATH
flag to compiler. It looks great, but that worries me is that xcode doesn't have that option, it only has "Build Libraries for Distribution" that enables both library evolution and interface file generation. Library evolution adds more complexity to code, that I don't need in that case (for example, all structs/enums needs to be annotated with frozen).
Is it safe to generate .swiftinterface
files without enabling library evolution and stable abi stuff that I don't care about? If it so, why doesn't xcode has that option? (we don't use xcodebuild, and we can make completely custom build rules, but I'm just curious)