Swift interface without library evolution?

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)

I've got my answer here Update on Module Stability and Module Interface Files – no, it is not supported to generate .swiftinterface file without library evolution(

1 Like
Terms of Service

Privacy Policy

Cookie Policy