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
| Swift | Rust |
|---|---|
Value-type CoW | Rc::clone + Rc::make_mut |
class ARC | Rc<RefCell<Object>> |
deinit | Drop at strong-count 0 |
weak (zeroing) | rc::Weak + .upgrade() |
overflow trap | checked_add / wrapping_add |
UTF-8 String | Rust 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.

