The Jerusalem PostTurkey says Israeli citizens led alleged $3 billion international investment fraud networkCNN Türk18 EYLÜL 2026 REYTİNG SONUÇLARI| Kızılcık Şerbeti, MasterChef Türkiye Reyting Sonucu: Dün Akşam En Çok Ne İzlendi?PunchPolice arrest suspected armed robber in Cross River, recover gunBollywood HungamaRohit Shetty confirms Golmaal 5 cast; reveals release date with a ‘whistle-worthy’ motion posterוואלהנער בן 14 נכווה ממים רותחים בהרצליה - מצבו בינוניUOLCriar supervírus letal é fácil no papel e dificílimo na práticaSky TG24Ecofin, confronto su extraprofitti energia. Giorgetti: “Choc prezzi finirà nelle bollette”SportstarEast Bengal vs Coal India LIVE score, Calcutta Football League: CI 0-2 EBFC; EBFC two goals up in 10 minutesFootball ItaliaNainggolan: I could still play for Roma or Inter, Monchi’s double game with me, Dzeko and ChelseaIl Fatto QuotidianoDopo OpenAI e Anthropic, anche l’Intelligenza artificiale di Google viola sistemi informatici. Il docente: “Gemini non è un hacker, errore nei test”Digital SpyEmmerdale reveals first look at Joe Tate's fury after Vinny's confessionKhaosod EnglishPrincess Sirivannavari leads Thai costume showcase in Tokyo
The Daily Newsstand · Free, Always
Saturday, September 19, 2026

[Перевод] Swift 6.4

Translate

Swift 6.4 теперь доступна. Swift стремится быть отличным выбором для всего стека — от приложений и серверов до системного кода, встраиваемых устройств и браузера. Этот выпуск углубляет эту поддержку и делает повседневный код проще для написания. Основные моменты:

  • Swift Build теперь используется по умолчанию в Swift Package Manager, поэтому ваши проекты собираются одинаково в Linux, macOS и Windows.

  • Subprocess достигает версии 1.0 — это стабильный кроссплатформенный способ запуска других программ из Swift и взаимодействия с ними: от инструментов командной строки до потоковых процессов.

  • Интероперабельность расширяется: Span в Swift теперь напрямую связывается с std::span из C++20, а Swift/Java-интероперабельность расширяет поддержку async и обратных вызовов.

  • Swift работает быстрее в браузере: мост WebAssembly через JavaScriptKit стал до 40 раз быстрее, а Wasm SDK теперь доступен напрямую с Swift.org.

  • Embedded Swift становится более функциональным: добавлена поддержка экзистенциальных типов и более богатая обработка ошибок для целей класса микроконтроллеров.

  • Производительность улучшается при сохранении безопасности памяти: появились новые типы массивов, которые хранят некопируемые элементы без накладных расходов copy-on-write, а также новый протокол Iterable для итерации без копирования.

Это далеко не всё. Читайте далее подробное руководство по новым изменениям или ознакомьтесь с панелью Swift Evolution, чтобы увидеть полный список предложений в Swift 6.4.

Более простой и понятный код

Swift 6.4 упрощает повседневное программирование, делая ваш код проще и понятнее.

  • Более естественные опциональные типы some и any. При написании опционального типа some или any больше не нужно заключать тип в скобки. Вместо (some Rocket)? можно просто написать some Rocket? (SE-0521).

  • Управление предупреждениями компилятора на уровне исходного кода. Когда нужно контролировать поведение предупреждений в проекте — например, подавлять их или превращать в ошибки, — теперь можно определить поведение предупреждений прямо в коде с помощью нового атрибута @diagnose (SE-0522).

  • Уточнение, какой API использовать при конфликте нескольких библиотек. Когда несколько модулей определяют одно и то же имя API, которое вы хотите использовать, можно указать, какой именно модуль вы имели в виду, с помощью селекторов модулей. Если ваше приложение импортирует два модуля, оба из которых предоставляют тип CommonThing, использование селектора :: позволяет чётко указать, какой из них вы намереваетесь использовать (SE-0491).

  • Вызов асинхронных функций в блоке defer. Любой асинхронный код, написанный вами в блоке defer, ожидается и выполняется до завершения перед выходом (SE-0493).

  • Гарантия того, что необходимая работа по очистке не будет отменена. Вы можете выполнить замыкание, защищённое от отмены охватывающей задачи, через API withTaskCancellationShield (SE-0504).

Вы можете комбинировать асинхронные вызовы в блоках defer и щиты отмены, чтобы гарантировать, что работа по очистке всегда выполняется, независимо от того, как функция возвращает управление:

func processFile(at url: URL) async throws {
  let handle = try FileHandle(forReadingFrom: url)
  defer {
    // flushMetrics — это сетевой вызов, поэтому он может приостановиться
    // после запроса отмены; щит гарантирует, что он выполнится до
    // завершения и не будет включён в отмену.
    await withTaskCancellationShield {
      await flushMetrics(for: url)
      try? handle.close()
    }
  }
  try await processContents(of: handle)
}

Более богатые API основной библиотеки

Улучшения в Foundation и стандартной библиотеке упрощают использование современных API с существующими типами. Например, ProgressManager получил API для поддержки async/await (SF-0023), а типы @Observable теперь имеют детализированные и непрерывные уведомления об изменениях (SE-0506).

Библиотека Subprocess — изначально представленная как SF-0007 и выпущенная как начальная версия 0.1 в 2025 году — достигла версии 1.0. Она предоставляет кроссплатформенный пакет для запуска подпроцессов и взаимодействия с ними, построенный с нуля с использованием конкурентности Swift. Следующий пример из Getting Started with Subprocess иллюстрирует запуск процесса и захват его вывода:

let result = try await Subprocess.run(
  .name("ls"), arguments: ["-la"], output: .string(limit: 4096)
)
print(result.standardOutput)

Swift 6.4 упрощает миграцию существующих проектов на Swift Testing. Теперь можно безопасно использовать XCTAssert в тестах Swift Testing или #expect внутри XCTest (ST-0021), а также настраивать значения, отображаемые в неудачных ожиданиях, с помощью протокола CustomTestReflectable (ST-0022). swift test позволяет повторять тестовые случаи для фокусировки и экономии времени (ST-0024) и записывать вложения, соответствующие протоколу Transferable, на платформах Apple (ST-0023). У Swift теперь есть сайт документации, а содержимое документации для стандартной библиотеки стало открытым исходным кодом.

Более быстрая сборка, более понятная отладка, более широкая поддержка IDE

Swift 6.4 приносит ряд улучшений инструментов, которые делают повседневную разработку более надёжной — от отладки и сборки до поддержки редакторов:

  • Более надёжная отладка. Swift 6.4 завершает многолетнюю переработку того, как компилятор отслеживает модули Swift в отладочной информации — LLDB теперь импортирует модули через точное отслеживание зависимостей вместо неоднозначного поиска по имени. Отладочные сборки в Linux и Windows, а также пакеты dSYM в Darwin значительно уменьшаются, поскольку бинарные модули Swift больше не встраиваются в них. Прочитайте недавнюю публикацию в блоге Module Tracking in Swift Debug Info, чтобы узнать подробности.

  • Унифицированная система сборки для IDE. Swift Package Manager (SwiftPM) теперь использует Swift Build в качестве платформы сборки по умолчанию и включает генерацию Software Bill of Materials (SBOM) для Swift Package Manager (SE-0509), обеспечивая поддержку генерации документов SBOM в формате SPDX или CycloneDX. Подробнее об обновлениях SwiftPM читайте в примечаниях к выпуску SwiftPM 6.4, а о том, как сгенерировать SBOM, — в разделе Generating Software Bill of Materials (SBOM).

  • Более широкая поддержка Swift в IDE. Расширение VS Code для Swift теперь доступно в реестре Open VSX, поэтому оно работает не только в VS Code, но и в Cursor, Antigravity, Kiro и других инструментах разработки. Оно также включает интеграцию со Swiftly, что упрощает выбор и использование различных версий инструментальных цепочек Swift в вашем проекте.

Более глубокая интероперабельность и поддержка платформ

Интероперабельность Swift расширяет своё присутствие во всём стеке: от системного C++ до среды выполнения Java в Android, от WebAssembly (Wasm) в браузере до Embedded Swift на микроконтроллерах. Языковая интероперабельность в этом выпуске становится глубже.

  • C: Пара @c с @implementation позволяет использовать функцию Swift для предоставления реализации для заголовка C без отдельного объявления на C. Без @implementation компилятор генерирует объявление в создаваемом заголовке. В любом случае функции @c могут получать безопасные обёртки, например функцию, использующую Span вместо пары «сырой указатель + счётчик».

  • C++: Swift 6.4 связывает std::span из C++20 с Span в Swift, поэтому вы можете передать Span в C++ API, который ожидает std::span, и получить std::span обратно как Span, не writing ручной код преобразования на границе.

  • Java: Проект Swift/Java interop, который позволяет вызывать Swift из Java и Kotlin, расширяет поддержку вызова async и throwing функций для протокольных и callback-обёрток, добавляет автоматическое сопоставление Runnable для замыканий, импорт вариативных параметров и поддержку типов записей Java.

Поддержка платформ в Swift также углубляется.

WebAssembly

JavaScriptKit имеет лучшую производительность при связывании с Wasm в Swift 6.4: безопасное связывание стало до 40 раз быстрее, чем предыдущее динамическое. Wasm SDK доступен на странице Install Swift сайта Swift.org, поэтому для компиляции Swift под браузер не требуется никакой дополнительной настройки, кроме добавления SDK. Обновления Foundation для Swift 6.4 улучшают поддержку FileManager в WASI (WebAssembly System Interface).

Android

Swift на Android продолжает развиваться. Этот выпуск Swift SDK для Android собран с новым LTS NDK 30, который предоставляет атрибуты доступности Android как в библиотеках среды выполнения Swift, так и для ваших Swift-пакетов, использующих NDK по умолчанию. Swift Build теперь поддерживает Android и в SwiftPM, устраняя необходимость в скрипте пост-установки.

Embedded Swift

Более ранняя публикация Embedded Swift Improvements Coming in Swift 6.4 подробнее описывает другие улучшения Embedded Swift в этом выпуске, включая обобщённую поддержку экзистенциальных типов (таких как any Protocol), что позволяет естественным образом выражать гетерогенные коллекции и генерировать/перехватывать любые Error. Embedded Swift также получает новое предупреждение EmbeddedRestrictions, которое можно включить для всей цели:

// Package.swift — включить предупреждения EmbeddedRestrictions для цели
.target(
    name: "FirmwareCore",
    swiftSettings: [
        .treatWarning("EmbeddedRestrictions", as: .warning)
    ]
)

Более быстрый код с сохранением безопасности

Swift 6.4 упрощает избегание ненужного копирования данных при сохранении безопасности памяти, продолжая более раннюю работу над Span, некопируемыми типами и InlineArray.

  • Работа со значениями в памяти без их копирования. Аксессоры borrow и mutate позволяют читать или обновлять Span или InlineArray через свойство (SE-0507), некопируемые типы теперь могут соответствовать Equatable, Comparable и Hashable, а новые типы Ref и MutableRef дают полноценный, сохраняемый контейнер, позволяющий заимствовать или изменять одно значение за раз (SE-0519). Опциональные значения некопируемых типов теперь работают так же, поэтому можно inspect или обновлять содержимое Optional, не потребляя его (SE-0532).

  • Создание коллекций и значений в куче без ненужного выделения памяти. UniqueBox даёт умный указатель, который единолично владеет значением в куче, включая некопируемые значения, без подсчёта ссылок (SE-0517). UniqueArray хранит некопируемые элементы без выделений copy-on-write, которые вы бы увидели при использовании Array, и предоставляет буфер, который динамически растёт (SE-0527). Можно перебирать элементы и заимствовать их с помощью протокола Iterable вместо копирования каждого значения, что выходит за рамки возможностей протокола Sequence (SE-0516).

  • Безопасный доступ к сырой памяти без использования API с пометкой unsafe. withTemporaryAllocation предоставляет временный буфер, который автоматически инициализируется и очищается (SE-0524). Новый безопасный API загрузки позволяет RawSpan и его вариантам безопасно загружать и сохранять байты, заменяя функции с пометкой unsafe (SE-0525).

Благодарности

Swift 6.4 отражает вклад многих людей из сообщества Swift — через код, предложения, обсуждения на форумах и обратную связь. Мысли и реальный опыт сообщества дают бесценные идеи и мотивацию! Если вы хотите принять участие в том, что будет дальше, Swift Forums — отличное место для начала.

Начало работы со Swift 6.4

Попробуйте Swift 6.4 сегодня, следуя инструкциям на странице Install Swift, или загрузите новую инструментальную цепочку 6.4 с помощью Swiftly.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.