Adaptive default toolchain version based on Swift version on builder #481
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
現在、cartonの用意するツールチェーンのバージョンは固定でハードコードされています。
これは概ね現在の最新安定版を追従するように更新されています。
しかし、ユーザの開発環境はそれより古いものからまだアップグレードできていなかったり、
逆にリリース前の超最新版を使いたいこともあります。
そのような場合に、ソースコードの編集で使われる言語バージョンと、
cartonがwasmビルドで利用する言語バージョンが異なってしまいます。
対策方法として、
.swift-verison
ファイルを用意することで、cartonが利用するバージョンを切り替えることができます。
しかしこれを使うまでもなく、
ユーザが期待するcartonに使って欲しいであろうバージョンは、
ユーザが
$ swift run carton bundle
するときに叩いている swift のバージョンでしょう。ファイルで設定することなく、このように期待されるバージョンに切り替われば便利です。
このパッチでは、そのようにデフォルトを切り替えるように変更します。
cartonはswiftpmで依存pluginとして導入することが想定されているため、
そのSwiftのバージョンはcartonコードの中で
#if compiler
を判別することができます。実装ではこれを使います。
事前に相談した会話:
https://discord.com/channels/291054398077927425/383442648012423179/1248990244888641648