Skip to content

Releases: swiftwasm/JavaScriptKit

0.44.1: BridgeJS MVP

13 Feb 12:12
d0c0282

Choose a tag to compare

BridgeJS MVP Release! 🌉

This release marks the MVP of BridgeJS, a new interop mechanism that makes Swift-JavaScript interop faster, easier, and type-safe for WebAssembly apps.
With BridgeJS, you declare the shape of your API using Swift macros (or optionally TypeScript definitions), and the tool generates specialized glue code in both directions, exporting Swift to JavaScript and importing JavaScript into Swift.

Compared to the dynamic JSObject/JSValue APIs, BridgeJS offers significantly better performance through specialized codegen, compile-time type safety, and less boilerplate.

See the BridgeJS documentation to get started.

Note

You can quickly preview what interfaces will be exposed on the Swift/JavaScript/TypeScript sides using the BridgeJS Playground.

What's Changed

  • Prevent cross-module inlining of remaining @_extern(wasm) functions by @fjtrujy in #631
  • CI: Use debug builds for SwiftSyntax in ./Examples/Embedded by @kateinoigakukun in #632

Full Changelog: 0.44.0...0.44.1

0.44.0: BridgeJS MVP

13 Feb 06:49

Choose a tag to compare

BridgeJS MVP Release! 🌉

This release marks the MVP of BridgeJS, a new interop mechanism that makes Swift-JavaScript interop faster, easier, and type-safe for WebAssembly apps.
With BridgeJS, you declare the shape of your API using Swift macros (or optionally TypeScript definitions), and the tool generates specialized glue code in both directions, exporting Swift to JavaScript and importing JavaScript into Swift.

Compared to the dynamic JSObject/JSValue APIs, BridgeJS offers significantly better performance through specialized codegen, compile-time type safety, and less boilerplate.

See the BridgeJS documentation to get started.

Note

You can quickly preview what interfaces will be exposed on the Swift/JavaScript/TypeScript sides using the BridgeJS Playground.

What's Changed

  • BridgeJS: show unified diff on snapshot mismatch by @kateinoigakukun in #600
  • [NFC] BridgeJS: Cover more types in closure snapshot tests by @kateinoigakukun in #602
  • [NFC] Fix warnings by @kateinoigakukun in #603
  • BridgeJS: Support @JS class in imported function signatures by @kateinoigakukun in #601
  • BridgeJS: Add profiling instrumentation by @kateinoigakukun in #604
  • BridgeJS: Deduplicate closure signature collection logic by @kateinoigakukun in #605
  • [NFC] BridgeJS: Make JSGlueGen and IntrinsicJSFragment methods throwable by @kateinoigakukun in #606
  • [NFC] BridgeJS: Move CodeFragmentPrinter to BridgeJSCore by @kateinoigakukun in #607
  • BridgeJS: Fix optional Swift heap object handling for imported interface by @kateinoigakukun in #608
  • BridgeJS: Add IntrinsicJSFragment.PrintCodeContext by @kateinoigakukun in #609
  • BridgeJS: Unify closure JS glue lift/lower by @kateinoigakukun in #610
  • Bump actions/setup-node from 4 to 6 by @dependabot[bot] in #613
  • BridgeJS: Fix incorrect TypeScript type names for tsEnum-style enums and struct associated values by @krodak in #614
  • BridgeJS: Update JSUndefinedOr APIs by @kateinoigakukun in #615
  • BridgeJS: Include source-context in diagnostic messages by @kateinoigakukun in #616
  • BridgeJS: Check generated TypeScript validity in test suites by @krodak in #611
  • BridgeJS: Remove BasicFormat usage in ExportSwift by @kateinoigakukun in #617
  • NCF: BridgeJS: Generalize Optional stack ABI for Array, Dictionary, and Struct types by @krodak in #618
  • NFC: BridgeJS: Delegate nested container codegen to generic runtime conformances by @krodak in #619
  • [NFC] BridgeJS: Remove tag stack and use i32 stack for enum case tags by @kateinoigakukun in #620
  • [NFC] BridgeJS: Minimize enum with assoc values code generation by @kateinoigakukun in #621
  • NFC: BridgeJS: Simplify liftExpression by using no-arg bridgeJSLiftParameter() for enums and protocols by @krodak in #623
  • NFC: BridgeJS: Simplify ExportSwift codegen by removing redundant branches and extracting helpers by @krodak in #624
  • NFC: BridgeJS: Further simplify codegen and JSValue intrinsics by @krodak in #625
  • Fix ts2swift alias struct naming and docs by @kateinoigakukun in #627
  • BridgeJS: Consolidate optional and pointer runtime intrinsics by @krodak in #626
  • Benchmarks: Prevent cross-module inlining of f32/f64 @_extern(wasm) functions by @krodak in #628
  • BridgeJS: add runtime coverage for public @JS struct by @kateinoigakukun in #629
  • BridgeJS: Prepare for MVP release for documentation and relaxing feature gates by @kateinoigakukun in #630

Full Changelog: 0.43.1...0.44.0

0.43.1

06 Feb 17:58
60b9444

Choose a tag to compare

What's Changed

  • BridgeJS: Always provide swift_js_closure_unregister intrinsic in generated bridge-js.js by @krodak in #599

Full Changelog: 0.43.0...0.43.1

0.43.0

06 Feb 10:58
8217d06

Choose a tag to compare

What's Changed

Full Changelog: 0.42.1...0.43.0

0.42.1

06 Feb 00:05
444393f

Choose a tag to compare

What's Changed

  • BridgeJS: Fix Dictionary bridging after Stack ABI refactor by @krodak in #594

Full Changelog: 0.42.0...0.42.1

0.42.0

05 Feb 15:20
faf9d12

Choose a tag to compare

What's Changed

Full Changelog: 0.41.0...0.42.0

0.41.0

05 Feb 09:43
c8536db

Choose a tag to compare

What's Changed

Full Changelog: 0.40.0...0.41.0

0.40.0

03 Feb 07:21
4af1984

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.39.0...0.40.0

0.39.0

27 Jan 01:32
7b0ef78

Choose a tag to compare

What's Changed

Full Changelog: 0.38.0...0.39.0

0.38.0

12 Jan 11:33
a277afb

Choose a tag to compare

What's Changed

  • BridgeJS: Fix ordering issue with multiple stack based parameters by @krodak in #472
  • Add Node.js example by @kateinoigakukun in #473
  • build: Allow swift-syntax 6.2.0 by @scottmarchant in #474
  • workflows/test.yml: update main snapshots, add 6.3 snapshot by @MaxDesiatov in #476
  • BridgeJS: Swift struct support by @krodak in #479
  • BridgeJS: Enable struct as default parameter and enable default parameters in struct init / methods by @krodak in #480
  • BridgeJS: Struct and struct vs classes benchmarks by @krodak in #481
  • [NFC] BridgeJS: Codegen code organisation and minor cleanups by @krodak in #482
  • Fix typo: rename BridgeJSInstrincics to BridgeJSIntrinsics by @MaxDesiatov in #485
  • Use swift format command provided by the Swift toolchain by @MaxDesiatov in #484
  • Fix Examples/Embedded not building with Swift 6.2.3 by @MaxDesiatov in #483
  • BridgeJS: Fix multifile declaration resolution order issue by @kateinoigakukun in #488
  • Documentation: Add JavaScript Interop Cheat Sheet by @kateinoigakukun in #491

New Contributors

Full Changelog: 0.37.0...0.38.0