@swiftbrowser/wasm-tools
v0.26.1
Published
The Swift compiler (swift-frontend) and the LLVM linker (wasm-ld) built as WebAssembly modules for a wasm32-wasip1 host, brotli-compressed: what @swiftbrowser/wasm-compiler runs to compile Swift for WebAssembly without a native toolchain. Swift 6.4.0, wit
Readme
@swiftbrowser/wasm-tools
The Swift compiler (swift-frontend) and the LLVM linker (wasm-ld) built
as WebAssembly modules for a wasm32-wasip1 host, brotli-compressed. They
compile Swift for WebAssembly with no native toolchain:
@swiftbrowser/wasm-compiler (packages/wasm-compiler) runs them under
WASI, and docs/in-browser-compiler.md is the plan they are part of.
import { readTool, toolPath, manifest } from '@swiftbrowser/wasm-tools';
const frontend = await WebAssembly.compile(await readTool('swift-frontend'));Swift 6.4.0, built without assertions, as a release toolchain's compiler
is (smaller and faster; release swift-6.4.0-r8 in R2 is the same
compiler with them, for a compiler crash's diagnostics), and with function
names, so a crash names where it happened; and clang (for packages' C targets). Beside them: macro plugins built as WebAssembly
(plugins/, the toolchain's ObservationMacros and SwiftMacros, swift-testing's TestingMacros), and PackageDescription
built for wasm32-wasip1 (manifest-api/), which a package's
Package.swift is compiled against and linked with to read it without
SwiftPM. tools.json records the build and each file's checksum.
In this repository
The modules are not committed. packages/wasm-compiler/toolchain builds
them, and publish-tools.sh uploads them to Cloudflare R2 and writes
tools.json. node fetch.mjs downloads them into this directory (with
CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID set) and checks them
against tools.json; npm's prepack refuses to pack without them.
License
The modules contain code of Swift and of SwiftPM's PackageDescription
(Apache 2.0 with Runtime Library Exception), the LLVM Project (Apache 2.0 with LLVM Exceptions),
swift-cmark (BSD 2-Clause) and wasi-libc; LICENSE.txt has each license.
