"Что нового в Swift" Март 2026

Swift 6.3: главные особенности релиза

Вышел Swift 6.3, который расширяет возможности языка в новых областях и повышает удобство его использования разработчиками. Одна из главных особенностей релиза — работа над улучшением кроссплатформенных инструментов сборки.

Оуэн Вурхис делится новостями об этой работе:

Привет! Меня зовут Оуэн, я ведущий инженер в команде Core Build в Apple. В прошлом году мы объявили о своей цели — внедрить Swift Build в Swift Package Manager, чтобы устранить дублирование технологий сборки в экосистеме Swift и обеспечить единообразие процесса сборки на всех платформах, поддерживаемых Swift.

С момента объявления мы работали открыто, выпустив сотни патчей для улучшения поддержки Swift Build на различных платформах, включая Linux и Windows, а также для его глубокой интеграции в Swift Package Manager.

Начиная с версии Swift 6.3 разработчики могут включить эту интеграцию и опробовать её на своих пакетах. Чтобы убедиться в том, что новая система сборки не уступает предыдущей, мы использовали список пакетов с сайта swiftpackageindex.com и протестировали тысячи пакетов с открытым исходным кодом с помощью Swift Build.

Совсем недавно основная ветка Swift начала использовать Swift Build в качестве системы сборки по умолчанию, что открывает путь к тому, чтобы в будущих релизах Swift Swift Build стал стандартной системой сборки для разработчиков Swift.

В ближайшие месяцы мы продолжим рассказывать о наших успехах и устранять оставшиеся ошибки, чтобы довести систему сборки до идеала. Мы призываем вас попробовать её и сообщать о найденных ошибках. Мы воодушевлены достигнутым прогрессом и с нетерпением ждём возможности улучшить инструменты для всех платформ и моделей проектов, которые выиграют от использования этой системы сборки.

Видеоролики

Интересуетесь системным программированием на Swift? Вот подборка свежих материалов:

  • В докладе «Containerization» на конференции SCaLE рассказывается о проекте Containerization и опыте внедрения Swift.

  • На восьмой встрече сообщества Swift были представлены два доклада:

    • о компьютерном зрении в реальном времени на NVIDIA Jetson;

    • о производственном конвейере данных для искусственного интеллекта, созданном с помощью Vapor.

  • В новом интервью с Мэттом Массикоттом в подкасте Swift Academy подробно рассказывается о параллельной обработке в Swift.

Основные моменты

  • Как постепенно отказаться от устаревших API перед выходом новой крупной версии? В блоге Point‑Free рассказывается о «жёстком» и «мягком» устаревании с помощью SwiftPM Traits — продуманном подходе к решению распространённой проблемы устаревания API.

  • Внедрение TelemetryDeck. Дэниел Джилг рассказал в блоге Swift о внедрении TelemetryDeck, в том числе о том, как они используют Swift и Vapor для серверных сервисов.

  • Релиз Swift для Wasm (март 2026 года). Представлен новый выпуск JavaScriptKit с улучшениями BridgeJS и продолжена работа над WasmKit.

Эволюция Swift

В рамках проекта Swift в язык добавляются новые возможности. Вот некоторые из предложений, которые в настоящее время находятся на рассмотрении или недавно были одобрены для включения в следующий релиз Swift:

На стадии рассмотрения:

  • SE‑0522. Управление предупреждениями компилятора на уровне исходного кода. Swift позволяет настраивать поведение предупреждений на уровне модуля с помощью флагов компилятора, но это подход по принципу «всё или ничего». Это предложение добавляет возможность детальной настройки предупреждений: атрибут @warn, который позволяет переопределить поведение предупреждений для определённой диагностической группы в рамках одного объявления, с возможностью повышения уровня предупреждения до уровня ошибки, понижения до уровня предупреждения или полного отключения — без влияния на остальную часть модуля.

Недавно одобренные предложения:

  • SE‑0509. Генерация спецификации программного обеспечения (Software Bill of Materials, SBOM) для Swift Package Manager. SBOM — это стандартизированный перечень всех программных компонентов в проекте, который всё чаще требуется для аудита безопасности и соблюдения нормативных требований. Это предложение добавляет в SwiftPM встроенную функцию генерации SBOM в виде:

    • флага --sbom-spec для swift build;

    • отдельной подкоманды swift package generate-sbom с поддержкой форматов CycloneDX и SPDX.

  • ST‑0021. Целенаправленная совместимость между Swift Testing и XCTest. При переходе с XCTest на Swift Testing часто возникает необходимость вызывать существующие вспомогательные функции XCTest из новых тестов Swift Testing. Сегодня сбой XCTAssert в тесте Swift Testing игнорируется без каких‑либо уведомлений. Это предложение устраняет эту проблему:

    • API XCTest будут работать должным образом при вызове в Swift Testing;

    • API Swift Testing — при вызове в XCTest, если XCTest уже предоставляет аналогичную функциональность.

  • SE‑0515. Разрешить функции reduce возвращать некопируемые результаты. В настоящее время функция reduce в Swift требует, чтобы её начальное значение было копируемым, что делает её несовместимой с некопируемыми типами. В этом предложении функция reduce дополняется:

    • поддержкой некопируемых исходных значений и результатов;

    • функцией, которая не заимствует, а использует исходное значение, — что позволяет избежать ненужного копирования даже для копируемых типов.