- Core: Update bindgen to UniFFI v0.31.0. Minimum Rust version is now
1.87 - Core: BREAKING Interfaces cross the FFI as a
uint64_thandle instead of avoid * - Core: BREAKING Trait interfaces declared without
WithForeignnow generate an abstract base class<Name>and a concrete<Name>Impl - Core: BREAKING Passing a Rust-implemented trait object back to Rust now clones its handle, so the reference count on the Rust side is one higher than before
- Core: Add methods on records and enums
- Core: Add uniffi traits (
Display,Debug,Eq,Hash,Ord) on records, enums and errors - Core: Enums whose variants have no fields are generated as a C++
enum class, which cannot have member functions, so their methods and uniffi traits become free functions - Core: Add support for objects implementing external traits
- Core: Add support for custom types used as error types
- Core: Add renaming through the
uniffi.tomlfile - Core: Add
#[uniffi(default)]without a literal, for primitives,String,Bytes, optionals, sequences, maps, custom types, objects with a constructor that takes no arguments, and records whose fields all have a default or a type safe to zero - Core: Fix cases that aborted generation or produced invalid C++: optional fields with a non-null default, enum variants with unnamed fields, arguments named with C++ keywords, methods returning their own type, and error types passed as arguments or returned from a callback interface.
- Add support for external types
- Core: Fix optional compound type flattening not applying to default value assignment
- Core: Update bindgen to UniFFI v0.29.4
- Core: Expand the set of names for which
_is appended to include few commonly used macros
- Core: Append
_to field names which use c++ reserved keywords
- Core: Remove
_uniffi_internalprefix from thethrow_underlyingfunction
- Core: Generate used code only in the scaffolding header
- Core: Update bindgen to UniFFI v0.28.3
- Core: Explicitly include
vectorin the generated wrapper header - Core: Explicitly include
algorithmin the generated wrapper header
- Core: Forward-declare non-flat uniffi enums #46
- Core: Fix invalid allocation_size code generation when dealing with empty records #45
- Core: Fix constructor argument ordering for
RustStream - Core: Fix topological sorting not taking into account structurally recursive types #43
- Core: Added header guard for internal FFI structs in scaffolding header
- Core: Added ability to customize enum variant naming styles
- Core: BREAKING Changed default enum variant naming style to
kEnumVariant
- Core: POTENTIALLY BREAKING changed
timestamptype fromtime_point<system_clock>, totime_point<system_clock, nanoseconds>
- Scaffolding: Add support for custom types
- Scaffolding: Allow multiple scaffolding implementations to exist in a compiled library/executable
- Scaffolding: Add support for errors
- Scaffolding: Add internal ref counts for object types
- Scaffolding: Add support for associated enums
- Core: Change the underlying type of
RustStreamandRustStreamBuffertocharfromuint8_t
- Scaffolding: Decorate public functions with
__declspec(dllexport)under Windows and__attribute__((visibility("default")))on other platforms - Core: Make complex function arguments be passed by
const&for non-callback functions - Core: Write enums based on variant instead of casting to uint during conversion
- Add experimental C++ scaffolding generation option
- Dereference optional objects in the generated bindings
- IMPORTANT: Fix callback code generation
- Implement checksum verifition for the generated bindings.
- Fix incorrect macro invocation in object bindings.
- Move bindgen config under the
bindings.cppsection in the config. - Add virtual destructors to callback and error abstract classes.
- Implement destructors for objects.
- Wrap objects in
std::shared_ptrinstead ofstd::unique_ptr. - Expose access to complex enum variants in the generated bindings.
- Add docstrings to the generated bindings.
- Remove assignment operators and copy constructors for objects to prevent misuse.
- Add generated trait methods (Display, Debug, Eq, Hash) from Rust in ojbects.
- Add support for custom types.
- Initial release.