Где именно проблема стабильности ABI в программировании Swift? - PullRequest
0 голосов
/ 23 октября 2019

Прежде всего, я был Objective C разработчиком в течение многих лет, и примерно в то время, когда было объявлено о Swift, я в основном поддерживал существующие Obj C проекты. Никогда не было возможности полностью инвестировать в приложение Swift, с нуля или в обслуживании. Мои усилия были направлены в основном на .Net и React Native в то время.

Я провел исследование , что такое ABI . Все хорошо и модно. Исходя из этого ответа, я могу только предположить, как это вступает в игру для Swift, поскольку я не очень сильно вовлечен в Swift.

Так что, просто догадываясь, все это шум, рэкет,и fracas в Swift ABI говорят о «предполагаемом» факте, что когда библиотека написана / скомпилирована с версией 1.0 из Swift (до Swift 5), она будет нормально работать с приложением, написанным в 1.0,Когда следующая версия этой библиотеки будет написана в Swift 2.0, то вышеупомянутое приложение, написанное в Swift 1.0, не сможет ее использовать, если не скомпилировано для Swift 2.0? Если предположить, что я прав в этом вопросе, что если у меня есть приложение, написанное на Swift 4, а библиотека, которую я хочу использовать, была написана на Swift 1.0 Могу ли я использовать это? После выпуска Swift 5 решены ли ABI проблемы для Swift библиотек и приложений 5+, а не 5+, взаимодействующих с 5-?

Если бы я столкнулся с этими проблемами из первых рук, я мог бы лучше понять проблемы Swift ABI.

Пожалуйста, объясните с фактическими примерами, которые охватывают весь диапазон случаев (если это возможно).

Обновление : пожалуйста, укажите, есть ли какие-либо проблемы с ABI для небольших версий увеличениянапример от swift 4.0 до 4.1

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Главное, что нужно знать о стабильности ABI, это то, что для систем до iOS 10.2 и языковых версий Swift до 5.0, языковые платформы Swift должны быть встроены в приложение, добавляя несколько МБ к его размеру и, возможно, некоторые другие накладные расходы времени выполнения. ,Но в iOS 10.2+ и Swift 5.0+, теперь, когда есть стабильность ABI, этот материал находится во время выполнения, и приложения Swift намного меньше, возможно, быстрее и быстрее запускаются.

Другими словами, благодаря стабильности ABI, Swift теперь является первоклассным гражданином, каким были Objective C и Cocoa.

0 голосов
/ 23 октября 2019

Двоичный интерфейс приложения. Стабильность ABI для Swift - это компиляция исходного кода в двоичные файлы с общим интерфейсом в нескольких версиях языка. Без стабильности ABI двоичные файлы в разных версиях языка несовместимы друг с другом, поскольку их форматы различаются. Например, динамические библиотеки имеют статическую таблицу вызовов. Как процитировано из Wikipedia : «ABI определяет, как структуры данных или вычислительные процедуры доступны в машинном коде». Стабильность ABI гарантирует, что библиотека и вызывающая сторона (приложение) используют один и тот же двоичный протокол для вызова функций, даже если они не скомпилированы для одной и той же версии языка.

Для целей Swift стабильность ABI позволит разработчикампереключаться на более новые версии языка, не обновляя свои библиотеки / платформы, таким образом, используя преимущества новых возможностей языка, не дожидаясь обновления библиотек. Из статьи Swift.org в феврале : «Сегодня, когда изменяется библиотека Swift, любые приложения, использующие эту библиотеку, должны быть перекомпилированы». Опять же, из этой статьи:

Стабильность ABI для операционных систем Apple означает, что приложениям, развертываемым в будущих выпусках этих операционных систем, больше не нужно будет встраивать стандартную библиотеку Swift и библиотеки «наложения» в комплект приложений,сокращение их размера загрузки;среда выполнения Swift и стандартная библиотека будут поставляться вместе с ОС, как и среда выполнения Objective-C.

Для вас, как разработчика, стабильность ABI в Swift означает большую совместимость с библиотеками. Из-за того, что разработчики языка Swift должны гарантировать, что стабильность ABI не нарушится, скорость добавления новых функций снизится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...