«Что нового в Swift» — кураторский дайджест релизов, видео и обсуждений в проекте и сообществе Swift.
Июнь был насыщенным месяцем для Swift: анонсы на WWDC и мероприятия сообщества по всему миру. Мы пригласили организаторов одного из них поделиться своими впечатлениями:
Привет, это Микаэла и Адриан. Мы организаторы CommunityKit, конференции, организованной сообществом, которая проходит на той же неделе, что и WWDC, и iOSDevHappyHour, ежемесячной онлайн-встречи, которая поддерживает связь с сообществом круглый год. Мы приезжаем в Купертино уже пятый год подряд, и нам нравится создавать условия для развития сообщества, независимо от того, где живут разработчики.
CommunityKit собрал более 250 разработчиков в реальной жизни, чтобы ознакомиться с анонсами, поддержать сообщество и атмосферу, посмотреть, что все создают, и поучиться друг у друга. Одними из самых ярких событий этого года стали Indie Fair, на которой разработчики представили свои приложения; Watch Party - наша ежегодная встреча, на которой мы вместе смотрим презентации; и завершающая неделю мастер-класс по изготовлению открыток “Сделай что-нибудь, не отправляя ничего”. В этом году мы также провели семинары, в том числе “Инклюзивный дизайн” от Даниэль Льюис, а для сообщества Swift - “Пиши быстрее и умнее в Swift” от Пола Хадсона.
Нам не терпится узнать о том, что каждый из них создаст и представит на инди-ярмарке в следующем году, и мы надеемся увидеть вас на CommunityKit и iOSDevHappyHour!
Основные моменты 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.
