File: hello.swift

package info (click to toggle)
swiftlang 6.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,856,264 kB
  • sloc: cpp: 9,995,718; ansic: 2,234,019; asm: 1,092,167; python: 313,940; objc: 82,726; f90: 80,126; lisp: 38,373; pascal: 25,580; sh: 20,378; ml: 5,058; perl: 4,751; makefile: 4,725; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (27 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Compile: swiftc ./hello.swift -o hello.wasm -target wasm32-unknown-none-wasm -enable-experimental-feature Extern -enable-experimental-feature Embedded -wmo -Xcc -fdeclspec -Xclang-linker -nostdlib -Xfrontend -disable-stack-protector -Osize
// Swift version: DEVELOPMENT-SNAPSHOT-2024-06-13-a

// This is a simple WASI program written in Embedded Swift.

@_extern(wasm, module: "wasi_snapshot_preview1", name: "fd_write")
@_extern(c)
func fd_write(fd: Int32, iovs: UnsafeRawPointer, iovs_len: Int32, nwritten: UnsafeMutablePointer<Int32>) -> Int32

func _print(_ string: StaticString) {
    string.withUTF8Buffer { string in
        withUnsafeTemporaryAllocation(byteCount: 8, alignment: 4) { iov in
            let iov = iov.baseAddress!
            iov.advanced(by: 0).storeBytes(of: string.baseAddress!, as: UnsafeRawPointer.self)
            iov.advanced(by: 4).storeBytes(of: Int32(string.count), as: Int32.self)
            var nwritten: Int32 = 0
            _ = fd_write(fd: 1, iovs: iov, iovs_len: 1, nwritten: &nwritten)
        }
    }
}

// The entry point of this WASI program.
@_expose(wasm, "_start")
@_cdecl("_start")
func _start() {
    _print("Hello, World!\n")
}