«Что нового в Swift» — кураторский дайджест релизов, видео и обсуждений в проекте и сообществе Swift.
Июнь был насыщенным месяцем для Swift: анонсы на WWDC и мероприятия сообщества по всему миру. Мы пригласили организаторов одного из них поделиться своими впечатлениями:
«По всему миру локальные группы встреч и конференции объединяют разработчиков Swift, и некоторые из них появились даже раньше самого Swift! У многих есть каналы на YouTube, где они публикуют видео со своих мероприятий, так что вы можете подключаться удалённо. Давайте выделим несколько.
В мае на встрече SF Swift прошёл доклад Дэна Федермана «Agentify Your Swift Repo», в котором рассказывается о создании агента для CI и обратной связи при ревью кода. Swift Barcelona имеет своё представительство на YouTube, а некоторые группы, например новое сообщество MLX India, публикуют плейлисты мероприятий, включая недавний доклад об использовании MLX Swift в iOS-приложениях, который стоит посмотреть. Существует даже организованный сообществом YouTube-канал Swift Community Meetups, который проводит онлайн-встречи и содержит серию кросс-платформенных докладов о Swift.
Эти группы поддерживают разработчиков несколькими важными способами:
Локальное сообщество: они налаживают связи между разработчиками Swift и организациями на местах.
Пространство для экспериментов: благодаря менее формальному формату и иногда незавершённым проектам встречи создают пространство для обмена идеями, получения обратной связи и обучения друг у друга.
Я призываю больше людей участвовать в жизни местных Swift-сообществ. Если ваша группа начнёт публиковать контент и видео, пожалуйста, поделитесь этим на форумах Swift в категории Community Showcase.»
— Дэйв Лестер
Основные моменты WWDC26
На конференции WWDC26 Apple поделилась обновлениями о внедрении Swift и сделала ряд новых анонсов, связанных с этим языком. Вот некоторые из них:
На Platforms State of the Union Apple объявила, что части ядра основной операционной системы будут написаны на Swift в предстоящих релизах.
В сессии What’s new in Swift были представлены изменения в языке с прошлого года, включая превью того, что готовится в Swift 6.4: например, ускорение парсинга URL до 4 раз и поддержка асинхронного кода в блоках
defer.Транспортный уровень QUIC в сетевом стеке Apple был переписан на Swift. Проект открыт и доступен для кроссплатформенного использования через интеграцию со SwiftNIO.
Выпущен новый пакет Swift — Foundation Models framework utilities — с инструментами для работы с LLM, включая пользовательские навыки и помощники для управления контекстом. Работает на платформах Apple и на выбранных дистрибутивах Linux.
Сам Foundation Models framework будет открыт в будущем, что означает, что те же Swift API, которые вы используете в приложении, смогут работать и на сервере.
Container Machine — новый инструмент, предоставляющий лёгкое постоянное окружение Linux на Mac. В отличие от контейнера, который моделируется по образу приложения, container machine моделируется по образу самого окружения. Container machines разделяют окружение хоста, включая домашний каталог и конфигурацию. Написан на Swift и имеет открытый исходный код.
Видео к просмотру
Build real-time apps and services with gRPC and Swift — пошаговая интеграция iOS-приложения и gRPC-сервиса на примере данных гонок лиги картинга. Посмотрите, сможете ли вы определить, где расположена трасса. ?
Хотите изучить Swift макросы на практике? Стюарт Линч опубликовал два видео с примерами кода для самостоятельного повторения: Swift Macros Demystified: Build a Freestanding Expression Macro и Swift Attached Macros: Build a Real-World Member Macro from Scratch.
Новая 10-минутная демонстрация Embedded Swift использует акселерометр и XIAO ESP32-C6 для управления птицей Swift, которая скользит по мини-OLED-экрану. Пайка не требуется!
Яркие моменты из сообщества
Swift Package Index присоединился к Apple и остаётся открытым исходным кодом. Команда сообщает, что они работают вместе над созданием комплексного реестра пакетов для сообщества Swift.
Yeo Kheng Meng написал в блоге о переносе Swift на Apple II — с REPL, компилятором, файловым браузером и редактором. Это подмножество Swift, созданное с помощью ИИ.
Apple опубликовала в блоге Swift историю внедрения: Migrating the TrueType Hinting Interpreter, — о том, как интерпретатор TrueType hinting в macOS и iOS был переписан с C на Swift. В среднем работает на 13% быстрее.
Swift Ecosystem Steering Group объявил о создании рабочей группы по сетевым технологиям (Networking workgroup). Эта группа будет работать над унифицированным сетевым стеком для Swift — от низкоуровневых примитивов ввода-вывода через общие протоколы до современного HTTP-клиента и серверного API.
Новые выпуски пакетов
Выпущены новые Swift-привязки для Java-библиотеки OkHttp. Если вы используете Swift на Android и ищете HTTP-клиент — это может быть полезно. Проект сгенерирован с помощью swift-java.
Kiln — новый движок документации, написанный на Swift. Создан для замены сайтов документации на базе MkDocs, он предоставляет сообществу Swift больше возможностей для рендеринга документации наряду с проектом DocC, используемым для официальной документации Swift. Kiln можно увидеть в действии на сайте документации Vapor.
Выпущена версия 0.4.0 Elementary UI — фронтенд-фреймворка для нативного запуска Swift-приложений в браузере.
Эволюция Swift
Проект Swift добавляет новые языковые возможности через процесс Swift Evolution. Вот некоторые предложения, которые в настоящее время находятся на стадии рассмотрения или недавно приняты для будущего выпуска Swift.
На стадии активного рассмотрения:
SE-0526 withDeadline — Асинхронные операции в Swift могут выполняться бесконечно, а реализация временных ограничений вручную с помощью групп задач и операций сна часов получается многословной и подверженной ошибкам. Это предложение добавляет
withDeadline— функцию, которая выполняет асинхронную операцию с композитным абсолютным временным ограничением, указанным как момент времени часов, отменяя операцию, если она не завершилась вовремя. Оно также позволяет нескольким вложенным операциям разделять один и тот же дедлайн, избегая дрейфа, который накапливается при передаче относительных длительностей через слои вызовов.
Недавно принятые:
SE-0474 Yielding Accessors — Когда вы вызываете мутирующий метод на вычисляемом свойстве, Swift создаёт иллюзию изменения на месте, получая копию, мутируя её и затем устанавливая обратно. Это вызывает ненужное дублирование буфера copy-on-write для типов вроде String и невозможно для noncopyable типов, которые вообще нельзя скопировать. Это предложение добавляет
yielding borrowиyielding mutate— два новых способа реализации вычисляемых свойств и сабскриптов, которые вместо этого предоставляют вызывающей стороне прямой доступ к базовому значению без копирования.
Недавно принятые с изменениями:
SE-0529 Add FilePath to the Standard Library —
FilePathв пакете swift-system разбирает платформенно-специфичный синтаксис путей от имени разработчика, предоставляет нормализованное представление компонентов пути и позволяет разрешение файловой системы. Однако поскольку он поставляется во внешнем пакете, стандартная библиотека, рантайм Swift и инструментальные библиотеки вроде Foundation не могут зависеть от него. Это предложение добавляетFilePathи связанные с ним типы в модуль Swift, наряду с основной функциональностью для конструирования, декомпозиции, разрешения и совместимости с C.SE-0527 UniqueArray —
Arrayв Swift не может хранить noncopyable элементы без компрометации семантики copy-on-write или предсказуемости производительности. Это предложение добавляет два новых типа в новый модуль Containers:RigidArray— массив фиксированной ёмкости, который прерывает выполнение при переполнении, иUniqueArray— динамически растущий массив, который обеспечивает уникальное владение, будучи сам noncopyable.