Skip to content

Commit 83bbb09

Browse files
kateinoigakukunMaxDesiatovyonihemi
authored
Release note for 5.3 (#5)
* Add release note for 5.3 (to be filled more) * Apply suggestions from code review Co-authored-by: Max Desiatov <max@desiatov.com> * Apply suggestions from code review Co-authored-by: yonihemi <jonathan@hemi.dev> * Apply suggestions from code review Co-authored-by: Max Desiatov <max@desiatov.com> Co-authored-by: yonihemi <jonathan@hemi.dev>
1 parent 9111819 commit 83bbb09

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Content/posts/5-3-released.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
date: 2020-11-10 0:39
3+
description: The first stable toolchain release of SwiftWasm!
4+
---
5+
6+
# The first stable toolchain release of SwiftWasm!
7+
8+
## Overview
9+
10+
This is the [first public release](https://github.com/swiftwasm/swift/releases/tag/swift-wasm-5.3.0-RELEASE) of SwiftWasm toolchain, available as a signed .pkg installer for macOS. Also via swiftenv-compatible archives and Docker for Intel-based Ubuntu 18.04 and 20.04.
11+
Our focus is on providing essential Swift features for the WebAssembly platform. Distributions supplied with this release are our most stable yet, and no breaking changes are expected for 5.3 releases anymore.
12+
13+
14+
This release includes the Swift for WebAssembly compiler, the standard and core libraries (excluding Dispatch), JavaScript interoperation library, UI library, build tool and CI support.
15+
16+
17+
## The standard library and core libraries
18+
19+
The Swift standard library is fully available on WebAssembly platform.
20+
21+
The standard library right now depends on WASI, which is a modular system interface for WebAssembly. We use the [wasi-libc](https://github.com/WebAssembly/wasi-libc) implementation, which you can also use in your Swift apps with a simple `import WASILibc` statement.
22+
However, we are going to make the WASI dependency optional in the future.
23+
24+
25+
### Foundation / XCTest
26+
27+
Foundation and XCTest are also available on WebAssembly, but in a limited capacity.
28+
29+
Please refer to our [Foundation](https://book.swiftwasm.org/getting-started/foundation.html) and [XCTest](https://book.swiftwasm.org/getting-started/testing.html) guides for more details.
30+
31+
32+
## JavaScript interoperation library
33+
34+
[JavaScriptKit](https://github.com/swiftwasm/JavaScriptKit) is a Swift library to interact with JavaScript through WebAssembly.
35+
36+
You can use any JavaScript API from Swift with this library. Here's a quick example of JavaScriptKit usage in a browser app:
37+
38+
```swift
39+
import JavaScriptKit
40+
41+
let document = JSObject.global.document
42+
43+
var divElement = document.createElement("div")
44+
divElement.innerText = "Hello, world"
45+
_ = document.body.appendChild(divElement)
46+
```
47+
48+
You can learn more from our [JavaScript interop guide](https://book.swiftwasm.org/getting-started/javascript-interop.html).
49+
50+
51+
## UI library
52+
53+
[The Tokamak UI framework](https://tokamak.dev) is a cross-platform implementation of the SwiftUI API. We currently only support WebAssembly/DOM with a lot of API parts covered, and static HTML rendering on macOS/Linux. Get started with our [browser apps guide](https://book.swiftwasm.org/getting-started/browser-app.html) that lists necessary steps to create a simple browser app with Tokamak.
54+
55+
## All-in-one builder, test runner, and bundler for SwiftWasm
56+
57+
[`carton`](https://github.com/swiftwasm/carton) is a build tool designed specifically for SwiftWasm. It is similar to webpack.js, but no configuration and dependencies (except Swift itself to build `carton`) are required. It's also our recommended way to install SwiftWasm as it downloads and unpacks our toolchain and SDK automatically for you.
58+
59+
## CI support
60+
61+
We maintain a [GitHub Action](https://github.com/swiftwasm/swiftwasm-action) that includes the SwiftWasm toolchain and `carton` for your continuous integration needs.

0 commit comments

Comments
 (0)