Apple обновила Swift и открыла код библиотеки Swift System

Candellmans

Мастер
Сообщения
7,983
Реакции
8,505
Компания Apple объявила об открытии исходных текстов библиотеки Swift System, предоставляющей идеоматический набор программных интерфейсов к системным вызовам и низкоуровневым типам данных. Изначально Swift System поддерживал только системные вызовы платформ Apple, но теперь портирован и для Linux. Код Swift System написан на языке Swift и распространяется под лицензией Apache 2.0.

Swift System предоставляет единую точку доступа к системным интерфейсам, которую можно использовать на всех поддерживаемых платформах без применения в Swift-программах специфичных обвязок на языке Си. При этом Swift System не унифицирует сами системные вызовы, а предоставляет отдельное подмножество API для каждой поддерживаемой платформы, учитывающее поведение данной платформы и точно отражающее низкоуровневые интерфейсы операционной системы. Ключевой целью создания Swift System является упрощение разработки кросс-платформенных библиотек и приложений, таких как SwiftNIO и SwiftPM. Swift System не отменяет необходимость ветвления на основе "#if os()" при обращении к низкоуровневым примитивам, но делает данную работу более безопасной и удобной.

Также можно отметить публикацию релиза языка программирования Swift 5.3. Официальные сборки подготовлены для Linux (Ubuntu 16.04/18.04/20.04, СentOS 7/8), macOS (Xcode 12) и Windows 10. Исходные тексты распространяются под лицензией Apache 2.0.

В новом выпуске добавлена начальная поддержка платформы Windows и началась поставка инструментария для сборки и запуска Swift-приложений в Windows 10. Продолжено оттачивание функциональности языка. Из новых возможностей отмечается добавление инициализатора для типа String, расширение применение выражения "where", изменение семантики didSet, поддержка указания нескольких шаблонов в выражениях Catch, добавление типа Float16, атомарные операции с памятью.

Снижен размер результирующих приложений - если в Swift 4 размер собранной программы превышал вариант на Objective-C в 2.3 раза, то теперь разрыв сокращён до 1.5 раза. В новом выпуске также заметно ускорена инкрементальная сборка и сборка кода с большим числом свойств и функций, импортируемых из других библиотек. Расширены средства диагностики в компиляторе и качество выводимых сообщений об ошибках. В пакетном менеджере реализована возможность включения в пакеты дополнительных ресурсов, необходимых во время исполнения, таких как изображения. В пакетный менеджер также добавлена поддержка компонентов для локализации и возможность определения условных зависимостей.

Напомним, что язык Swift наследует лучшие элементы языков C и Objective-C, и предоставляет объектную модель, совместимую с Objective-C (Swift-код может смешиваться с кодом на С и Objective-C), но отличается использованием средств автоматического распределения памяти и контроля переполнения переменных и массивов, что значительно увеличивает надёжность и безопасность кода. Swift также предлагает множество современных методов программирования, таких как замыкания, обобщённое программирование, лямбда-выражения, кортежи и словарные типы, быстрые операции над коллекциями, элементы функционального программирования. Версия для Linux не привязана к Objective-C Runtime, что позволяет использовать язык в окружениях, в которых отсутствует поддержка Objective-C.

Pеализация Swift построена с задействованием технологий свободного проекта LLVM. Для обеспечения высокой производительности Swift-программы компилируются в машинный код, выполняемый в тестах Apple на 30% быстрее кода на Objective-C. Вместо сборщика мусора в Swift используются средства подсчёта ссылок на объекты. В поставку входит пакетный менеджер Swift Package Manager, предоставляющий средства для распространения модулей и пакетов с библиотеками и приложениями на языке Swift, управления зависимостями, автоматизированной загрузки, сборки и связывания компонентов.


Opennet
 
Назад
Сверху Снизу