Comunidade

tswift - Ambiente de Execução Swift em Rust

tswift é uma implementação em Rust que permite executar código Swift diretamente no navegador através de WebAssembly, sem depender do LLVM ou da ferramenta oficial do Swift. A biblioteca cobre diversos aspectos do Swift 6.3, incluindo a stdlib e frameworks como Foundation e SwiftUI, com um mapeamento eficiente entre os modelos de propriedade de Rust e Swift para garantir segurança de memória.

Compartilhar
tswift - Swift Runtime in Rust

swift → rust → wasm

Um brinquedo Swift para o navegador,
em Rust.

O tswift analisa, verifica tipos e executa Swift inteiramente em Rust — sem LLVM, Clang ou ferramentas do Swift. O mesmo binário Rust compila para WebAssembly, permitindo que você execute código Swift diretamente no navegador, com uma fração do tamanho de um ambiente completo de Swift.

Como funciona

Uma pipeline pura-Rust de fonte Swift para saída, sem dependências em C.

Fonte Swift

tswift-lexer

tswift-parser

tswift-sema

tswift-frontend

AST Tipada

Interpretador de tempo de execução

Saída

Status da implementação

O tswift abrange 8 níveis da superfície de linguagem Swift 6.3, mais stdlib, Foundation, SwiftUI, Charts e SwiftData.

168 implementados · 3 parciais · 1 ausente (172 total)

363 implementados · 1 parcial · 147 ausentes (511 total)

399 implementados · 32 parciais · 184 ausentes (615 total)

0 implementados · 112 parciais · 590 ausentes (702 total)

0 implementados · 58 parciais · 9 ausentes (67 total)

10 implementados · 2 parciais · 102 ausentes (114 total)

Por que Rust?

O modelo de propriedade do Rust se mapeia surpreendentemente bem nos semânticas de memória do Swift.

Sem segurança de memória, gratuitamente

A ARC do Swift torna-se Rc<RefCell<T>> em Rust. O tipo valor copy-on-write se torna Rc::make_mut. A desalocação determinística deinit mapeia para Drop. Nenhum unsafe na pilha.

Um binário → WebAssembly

O mesmo crate Rust compila para nativo (CLI rápida) e parawasm32-unknown-unknown (navegador). Nenhuma camada específica de plataforma — o interpretador apenas roda.

Alinhamento Semântico

SwiftRust
Value-type CoWRc::clone + Rc::make_mut
class ARCRc<RefCell<Object>>
deinitDrop at strong-count 0
weak (zeroing)rc::Weak + .upgrade()
overflow trapchecked_add / wrapping_add
UTF-8 StringRust String

Testes com Fixture Golden

Cada recurso tem uma fixture golden .swift + .expected. O suporte executa cada um através da CLI e compara a saída. Atualmente, 53+ fixtures passam de ponta a ponta.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa