Добавить объявление

Wasm и Swift: мост между нативными и веб-приложениями

Если вы еще не слышали о WebAssembly (Wasm) - это технология, позволяющая запускать код на любых платформах: в браузере, на сервере, в мобильных приложениях. Think of it as universal bytecode для веба и не только.

Зачем Wasm Swift-разработчику:


  • Кроссплатформенность: один код для iOS, Android, Web и серверов.

  • Производительность: скорость выполнения, близкая к нативному коду.

  • Безопасность: песочница и изоляция по умолчанию.

  • Интероперабельность: работа с JavaScript, C++, Rust.


Как и писал ранее про добавление поддержки Wasm в Swift 6.2 - за лето, с момента анонса, экосистема сделала огромный рывок.

Embedded Concurrency:


Работает в двух средах:

# CLI-приложения
swift run --target wasm32-unknown-wasip1

# Браузер через JavaScriptKit
import JavaScriptEventLoop // Для асинхронности в браузере

CI и пакеты:


Автосборка для основных пакетов Swift:

  • swift-algorithms

  • swift-collections

  • swift-nio

  • swift-foundation (теперь входит в SDK)

Вот что уже работает сегодня:


  • Сборка комплексных проектов:

    swift build --target wasm32-unknown-wasip1

  • Использование Foundation (кроме Embedded Swift):

    import Foundation
    // Работает с URLSession, JSONDecoder и т.д.

  • Интеграция с JavaScript:

    // Через JavaScriptKit
    let result = JSObject.global.document.createElement("div")

Что еще в работе:


  • Полная поддержка Embedded Swift Concurrency.

  • WASI Preview 2 (wasip2).

  • Стабилизация Foundation для Embedded.

Вывод:


Wasm в Swift переходит из стадии эксперимента в production-ready. Уже сейчас можно собирать реальные проекты - от CLI-утилит до браузерных приложений. Главное преимущество - единая кодобаза для разных платформ.
20.09.2025 11 451