✨ What's New ✨
-
Records and enums now support methods in TypeScript bindings, tracking uniffi 0.31's new value-type methods feature. Flat enums use direct method calls; tagged enums use a factory pattern (#347).
-
Add support for opting out of generating TypeScript interfaces:
bindings.typescript.strictObjectTypesin
uniffi.toml(#341 by
@SimonThormeyer). -
Optional fields in record types no longer need to be explicitly passed as
undefined(#358). Thank you @Psycarlo!
🦊 What's Changed
- Bump
uniffi-rsto 0.31.0. - Replace deprecated
SwiftBindingGenerator/KotlinBindingGeneratorwithbindings::generatefor iOS and Android native bindings. - Pin
wasm-bindgento 0.2.100 to avoid a compile-time regression injs-sys. - Enable the
wasm-unstable-single-threadedfeature ofuniffi_corein the runtime crate, fixing aSendbound error when building WASM projects (#356). Thank you @SimonThormeyer! - Fix Windows path separators in generated
CMakeLists.txt, which was preventing bindings generation on Windows (#352). Thank you @DavJCosby! - Rename the WASM template
Cargo.tomltoCargo.toml.txtso Cargo doesn't pick it up when traversing dependencies (#354). Thank you @marc2332! - Stop emitting
[profile.release]in generated WASM crates that live inside a workspace (#350). - Canonicalize relative paths before comparing them, fixing path resolution issues on some setups (#349).
- Split the shared codegen extensions into separate modules for each target language (TypeScript, C++, Rust), preparing for the uniffi pipeline API (#353).
- Replace
xtask runwith a proc-macro test harness so fixture tests run withcargo test(#355).
⚠️ Breaking Changes
- uniffi 0.31 changes method checksums (the self type is no longer included), so bindings compiled against 0.30.x are not compatible with 0.31.x. Regenerate your bindings after upgrading.
Full Changelog: 0.30.0-1...0.31.0-2