Releases: swiftwasm/JavaScriptKit
0.46.1
What's Changed
- BridgeJS: Fix memory management of SwiftHeapObject by @kateinoigakukun in #664
- BridgeJS: Fix
Array<@JSClass struct>support on imported interfaces by @kateinoigakukun in #665
Full Changelog: 0.46.0...0.46.1
0.46.0
What's Changed
- BridgeJS: Fix
@JSClasson public/package access level struct by @kateinoigakukun in #640 - PlayBridgeJS: Surface BridgeJS diagnostics inside editors by @kateinoigakukun in #641
- BridgeJS: Use indirect _exports lookup in wrap functions by @krodak in #642
- PackageToJS: Replace
@ts-ignorewith@ts-expect-errorin templates by @krodak in #643 - Runtime: Enforce prettier formatting, simplify find-global.ts by @krodak in #644
- BridgeJS: Add runtime tests for
@JS classto JSObject conversion by @kateinoigakukun in #646 - PackageToJS: Rebuild bridge-js.js when BridgeJSLink is changed by @kateinoigakukun in #647
- BridgeJS: Fix SwiftHeapObject finalization registry leaks and double release by @kateinoigakukun in #648
- Add AI coding agent config files to gitignore by @krodak in #649
- Runtime: Fix lint issues in compiled output by @krodak in #650
- BridgeJS: Improve ts2swift diagnostics on invalid definitions by @kateinoigakukun in #651
- TS2Swift: treat callable exported consts as functions by @kateinoigakukun in #652
- TS2Swift: emit static properties as static members by @kateinoigakukun in #653
- TS2Swift: emit enums for string literal unions by @kateinoigakukun in #654
- NFC: BridgeJS: Remove dead cleanup infrastructure by @krodak in #655
- [NFC] BridgeJS: Work around extern inlining by adding an extra non-inlined layer of indirection by @kateinoigakukun in #659
- TS2Swift: warn on skipped exports by @kateinoigakukun in #660
- NFC: BridgeJS: Refactor JSGlueGen with compositional optional handling and helper consolidation by @krodak in #656
Full Changelog: 0.45.0...0.46.0
0.45.0
What's Changed
- NFC: BridgeJS: Reduce retained object cleanup warning noise in BridgeJS glue by @krodak in #633
- [NFC] BridgeJS: Rename Stack ABI operation methods by @kateinoigakukun in #634
- BridgeJS: Take ownership of source Uint8Array id in
swift_js_init_memoryby @kateinoigakukun in #635 - TS2Swift: Make it easier to use ts2swift directly by @kateinoigakukun in #637
- BridgeJS: Fix double-release of JSObject when passing a
JSObject?JS->Swift by @kateinoigakukun in #636 - BridgeJS: Include pluginGeneratedSources in build plugin input files by @krodak in #638
- BridgeJS: Skip writing output files when content is unchanged by @krodak in #639
Full Changelog: 0.44.1...0.45.0
0.44.1: BridgeJS MVP
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
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 classin 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.PrintCodeContextby @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
JSUndefinedOrAPIs 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 structby @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
0.43.0
What's Changed
- BridgeJS: Generate Swift doc-comment based on JSDoc by @kateinoigakukun in #596
- BridgeJS: Improve diagnostics and fix-its for macros by @kateinoigakukun in #597
- BridgeJS: Add
JSTypedClosureAPI by @kateinoigakukun in #578
Full Changelog: 0.42.1...0.43.0
0.42.1
What's Changed
Full Changelog: 0.42.0...0.42.1
0.42.0
What's Changed
- [NFC] BridgeJS: Add push/pop JS codegen helpers by @kateinoigakukun in #587
- [NFC] BridgeJS: Remove explicit stack storage captures from enum/struct helpers by @kateinoigakukun in #588
- BridgeJS: Add Dictionary support by @kateinoigakukun in #581
- PackageToJS: Fix skeleton file discovery path for build plugin output by @krodak in #591
- [NFC] BridgeJS: Remove remaining explicit captures from enum/struct helpers by @kateinoigakukun in #589
- Add ts2swift Record to Dictionary mapping by @kateinoigakukun in #582
- BridgeJS: Add missing
functionkeyword for namespace function declarations in TypeScript by @krodak in #592 - [NFC] BridgeJS: Make Stack ABI storage direction agnostic by @kateinoigakukun in #590
Full Changelog: 0.41.0...0.42.0
0.41.0
What's Changed
- BridgeJS: Fix namespace enum with
@JS(namespace:)attribute by @krodak in #562 - BridgeJS: Add intrinsic extensions for stack-based lifting and refactor Swift glue code generation to use them by @krodak in #554
- BridgeJS: Re-organize snapshot test structure by @kateinoigakukun in #561
- BridgeJS: Enforce throws(JSException) on @js protocol methods by @krodak in #563
- Revert "BridgeJS: Enforce throws(JSException) on @js protocol methods" by @kateinoigakukun in #565
- BridgeJS: Add JSObject and @jsclass struct support for arrays and struct by @krodak in #566
- TS2Swift: Skip type checks when translating TS -> Swift by @kateinoigakukun in #567
- BridgeJS: emit typed throws without extra space by @kateinoigakukun in #571
- BridgeJS: Support static @JSFunction imports by @kateinoigakukun in #568
- BridgeJS: T | null and T | undefined support by @kateinoigakukun in #569
- [NFC] BridgeJS: Avoid emitting empty skeletons by @kateinoigakukun in #574
- [NFC] BridgeJS: Omit trailing spaces on empty lines in generated JS code by @kateinoigakukun in #575
- BridgeJS: Perf-tune
SwiftToSkeletonby avoiding unnecessary Syntax node allocation by @kateinoigakukun in #577 - BridgeJS: Add JSValue parameter/return support by @kateinoigakukun in #570
- BridgeJS: Support all missing types as associated values in exported enums by @krodak in #579
- build-examples.sh: re-enable Embedded example package by @MaxDesiatov in #490
- BridgeJS: Import-side Array Support by @krodak in #573
- BridgeJS: Fix throws hint spacing by @kateinoigakukun in #584
- [NFC] BridgeJS: Split out OptionalSupportTests.swift by @kateinoigakukun in #583
- BridgeJS: Fix optional String return handling in generated JS glue code by @kateinoigakukun in #585
- BridgeJS: Add support for
[JSValue]by @kateinoigakukun in #580 - BridgeJS: Skip directories in generate input file processing by @krodak in #586
Full Changelog: 0.40.0...0.41.0