iOS 13用へこれまでの(12.x用の)プロジェクトを更新する
実機にもiOS13アップデートのお知らせが来たので試しにあるプロジェクトを13対応にしようとした。macOS Mojave 10.14.6 上のXcode 11.0 (11A420a)
12.x向けのプロジェクトをビルドする際に、コンパイラーはSwift 5.0.1というパターンが多いと思う。
GitHubなどに上げているプロジェクトのバイナリも5.0.1でビルドしたものかも知れない。
その場合、Xcode 11の5.1コンパイラーでビルドしようとすると
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
というエラーが出てしまう。
GitHubに入れておいたのは、5.0.1でビルドしたパッケージ(バイナリ)だった。つまりバイナリ互換はなさそうだ。
と言うわけで、Module化してある部品も5.1でビルドしなくてはいけない。
「コードを書くと言う面」に限れば5.1、5.0.1の差異は小さかったので、ビルドできないことはないと思うが、振る舞いが異なる可能性があるので、悩ましい問題ではある。
まとめ
プロジェクトにバイナリとして組み込んでいる各モジュールもSwift 5.1でビルドし直さなくてはならない。
GitHub等のみで管理していると大規模プロジェクトでは厳しいだろう。なんらかの構成管理ツールが必要かも知れないと思い始めた。