Ответ 1
Это не полный ответ, чтобы заполнить все неизвестные пробелы на вашей диаграмме, но, возможно, я могу заполнить кое-что полезное, независимо от того,...
Swift 3.x?
Когда началось развитие Swift 4 (и впервые официально объявлено на WWDC17), номер версии компилятора, отколовшегося от языка. (Это очень похоже на то, как, например, стандарт ANSI C имеет другое управление версиями из компиляторов clang и GCC.)
Номер версии языка отслеживает совместимость источника - самого определения языка, стандартной библиотеки и способа отображения SDK в платформе Apple в Swift. Если у вас есть код "Swift 3", вы должны скомпилировать его с версией 3 компилятора Swift или любой более поздней версией компилятора при использовании -swift-version 3
.
Но "Swift 3" - языковая версия - также не остается фиксированной. По мере того, как Swift продолжает развиваться, изменения в языке, стандартной библиотеке и SDK, которые являются чисто аддитивными, становятся доступными для Swift 3. Итак, если у вас есть кодовая база Swift 3 и начать работать с новым компилятором, вы можете выбрать, нужно ли конвертировать все на Swift 4, начните использовать новые функции компилятора или сохраните совместимость со старыми компиляторами Swift 3.
Это означает, что сопоставление версий компилятора с возможными версиями совместимости с языками:
- Язык Swift 3.2 - это "Swift 3 mode" для компилятора Swift 4.0
- Swift language 3.3 - "Swift 3 mode" для компилятора Swift 4.1
- Язык Swift 3.4 - это "Swift 3 mode" для компилятора Swift 4.2
Пока еще не выпущен Swift 5 (язык или компилятор), но когда это произойдет, скорее всего, это позволит -swift-version 4
режим в режиме " -swift-version 4
", создав языковую версию "Swift 4.3". (Предполагая, что в будущих версиях Swift 4.x эти номера сначала не берутся.)
Я не знаю ни одного источника для этого ответа, но вы можете собрать его из:
- Совместимость версий в книге Swift Programming Language
- Директива по версии компилятора SE-212
- WWDC17 и WWDC18 Что нового в быстрых переговорах
- загрузка различных бета-версий, текущих и прошлых версий Xcode
История версий
Некоторые незначительные поправки к частям вашей диаграммы, которые находятся в прошлом:
-
Xcode 8 включал две отдельные версии компилятора, а не один компилятор с переключателем
-swift-version
. Xcode 8.3 остановлен, включая компилятор Swift 2.3, оставив Swift 3.1 единственным поддерживаемым языком Swift в этой версии. -
Xcode 7/Swift 2 никогда не поддерживал компиляцию кода Swift 1.x, а только его перенос. Xcode 7.2 и более поздние версии, вплоть до текущей версии Xcode 10, по-прежнему включают в себя миграцию "Преобразовать в текущий быстрый синтаксис", которая теоретически поддерживает перенос с любой старой версии Swift.
-
Xcode 6.0 - 6.2.x поддерживает Xcode в OS X Mavericks (10.9). Xcode 6.3 первым требовал OS X Yosemite (10.10).
Дополнительные источники: старые загрузки Xcode.
Обескураженный?
Я не уверен, насколько хорошо применяется этот ярлык...
-
В то время, когда Xcode 8.x включал компилятор Swift 2.3, он полностью поддерживался для создания приложений и отправки в App Store. Вы могли бы сказать, что в то время это было "обескуражено", хотя Apple заявила, что она не будет придерживаться и что Swift 3.0 станет первой версией на языке, которая позже компилятор совместим с исходным кодом.
-
Swift 3.2 поддерживается/полностью поддерживается в Xcode 9 - в отличие от Swift 2.3 → 3.0, нет "выйти из этой версии, пока мы не отвлечем ее" от Apple или проекта Swift с открытым исходным кодом. Быстрые языковые версии 3.2, 3.3 и 3.4 явно существуют для того, чтобы позволить разработчикам поддерживать кодовые базы Swift 3, получая преимущества новых компиляторов и выпусков IDE.