Компания Apple представила язык программирования Swift 6.0
Компания Apple опубликовала релиз языка программирования Swift 6.0. Официальные сборки подготовлены для Linux (Ubuntu 20.04/22.04/24.04, Debian 12, Fedora 39, Amazon Linux 2, RHEL 9), Windows 10 и macOS (Xcode). Исходные тексты распространяются под лицензией Apache 2.0.
Язык Swift сочетает лучшие элементы языков C и Objective-C, и предоставляет объектную модель, совместимую с Objective-C (Swift-код может смешиваться с кодом на С и Objective-C), но отличается использованием средств автоматического распределения памяти, контроля переполнения переменных и массивов, защитой от использования неинициализированных переменных и блокированием доступа к памяти после её освобождения, что значительно увеличивает надёжность и безопасность кода. Swift также предлагает множество современных методов программирования, таких как замыкания, обобщённое программирование, лямбда-выражения, кортежи и словарные типы, быстрые операции над коллекциями, элементы функционального программирования.
Pеализация Swift построена с задействованием технологий свободного проекта LLVM. Для обеспечения высокой производительности Swift-программы компилируются в машинный код, который в проведённых тестах демонстрирует производительность на 30% опережающую код на Objective-C. Вместо сборщика мусора в Swift используются средства подсчёта ссылок на объекты. В поставку входит пакетный менеджер Swift Package Manager, предоставляющий инструменты для распространения модулей и пакетов с библиотеками и приложениями на языке Swift, управления зависимостями, автоматизированной загрузки, сборки и связывания компонентов.
Ключевые изменения в новой версии:
Добавлен новый режим изоляции данных, предоставляющий на уровне компилятора защиту от состояний гонки, возникающих при обращении к данным из параллельно выполняемых потоков. При включении режима компилятор выполняет проверку безопасного использования или наличия должных блокировок данных, обрабатываемых параллельно выполняемым кодом.
Предложен экспериментальный урезанный вариант языка Embedded Swift, предназначенный для создания приложений для встраиваемых систем и микроконтроллеров. В компиляторе сборка в новом режиме реализована для целевых платформ ARM и RISC-V, и позволяет генерировать более компактные, потребляющие меньше памяти и обособленные исполняемые файлы, не привязанные к runtime.
- Предложена новая библиотека Synchronization, предоставляющая низкоуровневый API для организации параллельного выполнения кода, атомарного выполнения операций и использования мьютексов.
Добавлена поддержка типизированных исключений (Typed throws), дающих возможность указать тип возвращаемой ошибки на этапе определения функции. Например, ниже показано определение функции, которая либо возвращает экземпляр Record либо ошибку с типом ParseError:
func parseRecord(from string: String) throws(ParseError) -> Record { // ... }
Предоставлена возможность использования обобщённого кода (generic), который может одновременно работать как с копируемыми, так и с некопируемыми типами (некопируемые типы могут иметь только одного владельца, что позволяет добиться увеличения производительности за счёт замены связанных с владением проверок на запрет копирования ресурсов).
Расширена переносимость с кодом на языке C++ в таких областях, как типы, допускающие только перемещение, виртуальные методы, аргументы по умолчанию и дополнительные типы стандартной библиотеки (например, std: map и std: optional).
- Реализованы знаковые и беззнаковые 128-разрядные целые типы.
- Библиотека Foundation унифицирована для всех поддерживаемых платформ (Linux, Windows, macOS) и может применяться в переносимых приложениях. На языке Swift переписаны реализации типов JSONDecoder, URL, Calendar, FileManager и ProcessInfo.
Добавлена новая библиотека Swift Testing, предоставляющая API для написания и выполнения тестов.
Значительно расширена поддержка платформ Linux и Windows. Добавлена возможность сборки полностью статически связываемых исполняемых файлов для Linux, не использующих внешние зависимости (реализован static SDK для Linux). Обеспечено тестирование в Debian, Fedora и Ubuntu 24.04.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61890
© OpenNet