Skip to content

0.23.0

Compare
Choose a tag to compare
@kateinoigakukun kateinoigakukun released this 11 Mar 11:30
· 168 commits to main since this release

Breaking changes

  • Drop Swift 5.10 and earlier supports
  • JSValue no longer conforms Sendable nor Error
  • JSError no longer conforms Sendable nor Error

See #286 for rationale of removal of Sendable conformance from JSValue

Added APIs

  • JSException type is added to replace usage of Error conformance of JSValue
  • 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

Full Changelog: 0.22.3...0.23.0