Что такое Swift 4.1.50?

Я играю с бета-версией Xcode 10 и во время проверки во время компиляции заметил номер версии Swift, который проецируется с Swift Language Version, установленным на Swift 4. в своих настройках сборки сообщается как Swift 4.1.50 (бета-версии 2, 3 и 4 делают это; у меня не было возможности протестировать бета-версию 1). Это кажется мне... странным, если не сказать больше. Текущая версия Xcode в AppStore, Xcode 9.4.1, сообщает свою версию как Swift 4.1.2.

Итак... Что случилось со Swift 4.1.3–4.1.49? Или это ошибка, которую мне следует зарегистрировать? Или число 50 имеет какое-то значение?


Вы можете сами проверить это с помощью моего тестового файла Swift Version Checker< /а>


Скриншот Xcode 10 beta 4 с использованием указанного выше файла для обнаружения Swift 4.1.50 Скриншот терминала, воспроизводящий ошибку с помощью команды ‹code›swift‹/code›< /а>


person Ky Leggiero    schedule 19.07.2018    source источник
comment
Похоже на ошибку, сравните stackoverflow.com/questions/51307937/ аналогичное наблюдение.   -  person Martin R    schedule 19.07.2018
comment
Подано SR-8323   -  person Ky Leggiero    schedule 19.07.2018
comment
Это псевдоверсия, как Swift 3.2, 3.3 и 3.4. 4.1.50 — это языковая версия компилятора Swift 4.2, работающего в режиме совместимости со Swift 4. См. forums.swift.org/t/se-0212. -директива-версии-компилятора/12267/7   -  person Hamish    schedule 19.07.2018
comment
Да, я это знаю, но почему 50? Почему не 3?   -  person Ky Leggiero    schedule 20.07.2018
comment
Джордан Роуз предоставил обоснование в комментариях к отчету об ошибке, который вы отправили :) Не стесняйтесь писать ответ самостоятельно, или я могу написать ответ, если хотите.   -  person Hamish    schedule 20.07.2018


Ответы (1)


По словам Джордана Роуза в системе отслеживания ошибок Swift:

Это наименее плохой ответ, который мы могли бы предложить, учитывая, что мы все еще можем выпустить больше версий 4.1.x, если, скажем, в одной из них будет серьезная уязвимость в системе безопасности. (Это случалось и раньше.) Нам нужен был номер версии, который был бы больше, чем любая существующая версия 4.1, но все же меньше, чем 4.2.

Мы рассмотрели и другие идеи, но остановились на этой для максимальной совместимости. По крайней мере, у нас не будет этой проблемы в будущем благодаря SE-0212.

Итак, что я делаю из этого, так это то, что, возможно, когда-нибудь в будущем все еще придется выпустить настоящий выпуск 4.1, но это будет просто исправление безопасности поверх 4.1.2, поэтому логический номер для него будет 4.1.3. Между тем, псевдо-4.1 Swift, который компилятор Swift 4.2 может переварить, нуждается в собственном номере, который также отражает диалект 4.1, и их заключение было 4.1.50, что достаточно далеко от 4.1.2, чтобы учесть столько патчи безопасности как хотят.

person Ky Leggiero    schedule 20.07.2018