Swift3 Linux vc Mac DispatchQueue
В соответствии с swift.org/migration -guide, диспетчерские и связанные функции имеют отличный новый быстрый интерфейс (например, dispatch_async
→ DispatchQueue.async
). Также были добавлены другие типы фундамента, такие как Data
и Date
, а не NSData
и NSDate
.
Однако, в версии с открытым исходным кодом swift3 (предварительный просмотр разработчика 1) на linux, ubuntu15.10, компилятор отклоняет все эти изменения. Фактически, глядя на версию с открытым исходным кодом быстрых и быстрых-corelib на github, я фактически не вижу ни одного из этих изменений. Поскольку он будет компилироваться на предварительном просмотре разработчиков XCode, это заставило меня поверить: я делаю что-то не так в Linux, или эти изменения были сделаны в ветке Apple, а не в ветке с открытым исходным кодом. Может ли кто-нибудь проверить это, и если это так, и если да, то как мы узнаем, какие изменения произойдут в ветке Apple против ветки с открытым исходным кодом?
Ответы
Ответ 1
Благодаря Брэду Ларсону для поиска Foundation и Dispatch накладывается на источник. Согласно swift.org:
Наложения SDK: для платформ Apple, наложения SDK (внедренные в stdlib/public/SDK) обеспечивают Swift-специфические дополнения и изменения существующих структур Objective-C для улучшения их отображение в Свифт. В частности, наложение фонда обеспечивает дополнительная поддержка для взаимодействия с кодом Objective-C.
tl; dr все в этих папках - это только платформы Apple. Все еще не уверены, почему они ограничили оверлей отправки на Apple Platforms, поскольку libdispatch
также является открытым исходным кодом и нацелен на Linux, но это отвечает на мой первоначальный вопрос.
Изменить: удалось с помощью быстрых списков рассылки подтвердить, что накладки отправки имеют определенную зависимость от времени выполнения Objective-C. Есть работа по их внедрению для платформ, отличных от Дарвина, но никаких гарантий по срокам.
Ответ 2
Начиная с версии Swift 3.0 версия GCD доступна в Linux с простым import Dispatch
, что немного запутанно, поскольку оно не требуется на iOS/macOS, где модуль Dispatch
импортируется по умолчанию.
Ответ 3
Просмотрите страницу Swift 3 Evolution Github. Они перечисляют все предлагаемые изменения на языке и разделяют их теми, которые были реализованы, и теми, которые этого не сделали. Предложение SE-0088: Модернизация libdispatch для названия Swift 3 находится в списке "еще не реализована", как и многие другие изменения.
Что касается данных и даты, я не могу сказать, так как я считаю, что это часть предстоящих основных библиотек, и я еще не смог подробно рассмотреть эти детали. Возможно, вы можете проверить страницу Swift Core-Libs Github, хотя ссылки на страницы статуса работают над NSData и NSDate, не упоминается о новых типы данных.