0.23.0
Breaking changes
- Drop Swift 5.10 and earlier supports
JSValue
no longer conformsSendable
norError
JSError
no longer conformsSendable
norError
See #286 for rationale of removal of Sendable conformance from JSValue
Added APIs
JSException
type is added to replace usage ofError
conformance ofJSValue
JSSending
type is added to provide a way to safely transfer or clone JavaScript objects between threads
Quick example of JSSending
// Transfer an object to another thread
let buffer = JSObject.global.Uint8Array.function!.new(100).buffer.object!
let transferring = JSSending.transfer(buffer)
// Receive the object on a worker thread
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)
Task(executorPreference: executor) {
let receivedBuffer = try await transferring.receive()
// Use the received buffer
}
// Clone an object for use in another thread
let object = JSObject.global.Object.function!.new()
object["test"] = "Hello, World!"
let cloning = JSSending(object)
Task(executorPreference: executor) {
let receivedObject = try await cloning.receive()
// Use the received object
}
Pull Requests
- Swift 6 language mode compatibility by @kateinoigakukun in #286
- Concurrency: Fix build for p1-threads target by @kateinoigakukun in #287
- Add a mechanism to "Transfer" JSObject between Workers by @kateinoigakukun in #292
Full Changelog: 0.22.3...0.23.0