Yep, you're right, I apologize for mixing up the terms.
To be absolutely clear and avoid using potentially ambiguous language:
Module interfaces generated by a given version of the Swift compiler are guaranteed to be able to be imported by any future Swift compiler that supports the -swift-version
that it was compiled with.
For example, if Swift 20 removes support for -swift-version 8
, then .swiftinterface
files compiled in the -swift-version 8
language mode will no longer be supported, but Swift 8 to Swift 19 will be able to import it.
That said, if Swift 9 produces a module interface, even in -swift-version 8
mode there's no guarantee that the Swift 8 compiler will be able to import the module, because the @inlinable
code in the .swiftinterface
file may be using new syntax that was introduced in Swift 9, but that was included in the -swift-version 8
language mode.