WebAssembly with Swift
note
- WebAssembly support for Swift is good thanks to SwiftWasm.
- SwiftWasm compiles Swift code to WebAssembly.
Install Swift
To install Docker on your local system, refer the official guide.
First, we need to pull the docker image and run it in an interactive mode; we would be accessing the container from its bash. To do the same, run the following command.
docker run -v `pwd`:/swift --rm -it ghcr.io/swiftwasm/swift:latest /bin/bash
Swift code
The fibonacci code in Swift is as follows :
func fib(n: UInt) -> UInt {
if n <= 1 {
return n
}
return fib(n: n-1) + fib(n: n-2)
}
print("Swift - Fibonacci sequence example\n")
let arguments = CommandLine.arguments
var n:UInt
if (arguments.count > 1) {
for i in 1...arguments.count-1 {
if let n = UInt(arguments[i]) {
print("Fibonacci sequence number at index \(n) is \(fib(n: n))\n")
} else {
print("Failed to parse argument into a number: \(arguments[i])\n")
}
}
} else {
print("Enter a non-negative number:\n")
if let line = readLine() {
if let n = UInt(line) {
print("Fibonacci sequence number at index \(n) is \(fib(n: n))\n")
} else {
print("Could not convert \(line) to integer.\n")
}
} else {
print("Could not read user input.\n")
}
}
tip
Access the Swift codex repository for code samples, including the fibonacci example.
Compile Swift to Wasm
To compile your Swift code to Wasm, simply run:
swiftc -target wasm32-unknown-wasi /swift/fibonacci.swift -o /swift/fibonacci.wasm
Run with Enarx
enarx run fibonacci.wasm