Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 15, 2025

This PR contains the following updates:

Package Type Update Change
uniffi_build (source) build-dependencies minor 0.28.3 -> 0.30.0

Release Notes

mozilla/uniffi-rs (uniffi_build)

v0.30.0

Compare Source

⚠️ Breaking Changes ⚠️
  • UDL-based trait interfaces must now be wrapped with the #[uniffi::trait_interface] attribute.
  • Python: Trait interface implementations must now inherit from the trait base class.
    This will look like class PyTraitName(RustTraitName):
What's new?
  • All user-defined types can now be renamed with the proc-macro name = "NewName" attribute (like already supported for methods and constructors) (#​2661)
  • Enums and Records support exporting uniffi traits (ie, Display, Hash, Eq etc) (#​2555)
  • Support for exporting the Ord trait, allowing objects to be ordered by Rust (#​2583).
  • #[uniffi(default)] literals are now optional - eg, #[uniffi(default)] and #[uniffi(default = 0)] are equivalent.
    Similarly for args; #[uniffi::export(default(arg_name))].
    When no literal is specifed, named types (objects, records, etc) can be used as long as they have suitable default values.
    (#​2543).
    Custom types too (#​2603)
  • Custom enum and object types can be used as error type (#​2658)
  • Objects can implement external traits (#​2430)
  • Fix for external errors when error only used externally (#​2641)
  • Kotlin:
    • Switch to JNA direct mapping (#​2229)
    • Support throwing external error (#​2629)
    • The NoPointer placeholder object used to create fake interface instances has been renamed to NoHandle
  • Python:
    • Improved how default values are handled in function signatures etc and more canonical use of Python dataclasses, all towards making mypy happier (#​2552)
    • Methods now have typing annotations for return values (#​2625)
    • Fix relative imports (#​2657)
    • Fix shadowing param names with internal variables in Python (#​2628/#​2645)
    • Don't allow objects to be passed as arguments when traits are expected (#​2649)
  • Swift:
    • All object protocol conformances are public (#​2671)
    • Initialization functions now have a stable ordering when using external types.
      This makes the generated source files deterministic.
⚠️ Breaking Changes for external bindings authors ⚠️
  • uniffi_bindgen::backend has been removed.
  • #[uniffi(default)] changes how defaults are represented.
  • FfiType::RustArcPtr has been removed and the FFI type for objects/interfaces is now a u64.
    Bindings authors will need to update their code to reflect this:
    • Lowering/lifting now uses u64 values
    • The free function inputs a u64 handle rather than a raw pointer
    • The clone function inputs and returns a u64 handle rather than a raw pointer
  • Enums and Records can have methods, so the Method now carries self_type instead of the object name.
    In the templates, for Callable.takes_self() is replaced with Callable.self_type().
  • Trait / Callback interface changes
    • VTable fields are now: free, clone, followed by a field for each interface method.
      Note That free is now at the start of the vtable rather than the end.
    • Trait interface changes:
      • Foreign handles must always have the lowest bit set
      • Both Rust and foreign handles can now be passed across the FFI.
        When Lifting/lowering trait interface handles, check if the handle was generated from Rust or the foreign side.
    • See https://github.com/mozilla/uniffi-rs/pulls/2586 examples of how the builtin bindings here changed.

All changes in v0.30.0.

v0.29.4

Compare Source

⚠️ Breaking Changes ⚠️
  • UDL-based trait interfaces must now be wrapped with the #[uniffi::trait_interface] attribute.
  • Python: Trait interface implementations must now inherit from the trait base class.
    This will look like class PyTraitName(RustTraitName):
What's new?
  • All user-defined types can now be renamed with the proc-macro name = "NewName" attribute (like already supported for methods and constructors) (#​2661)
  • Enums and Records support exporting uniffi traits (ie, Display, Hash, Eq etc) (#​2555)
  • Support for exporting the Ord trait, allowing objects to be ordered by Rust (#​2583).
  • #[uniffi(default)] literals are now optional - eg, #[uniffi(default)] and #[uniffi(default = 0)] are equivalent.
    Similarly for args; #[uniffi::export(default(arg_name))].
    When no literal is specifed, named types (objects, records, etc) can be used as long as they have suitable default values.
    (#​2543).
    Custom types too (#​2603)
  • Custom enum and object types can be used as error type (#​2658)
  • Objects can implement external traits (#​2430)
  • Fix for external errors when error only used externally (#​2641)
  • Kotlin:
    • Switch to JNA direct mapping (#​2229)
    • Support throwing external error (#​2629)
    • The NoPointer placeholder object used to create fake interface instances has been renamed to NoHandle
  • Python:
    • Improved how default values are handled in function signatures etc and more canonical use of Python dataclasses, all towards making mypy happier (#​2552)
    • Methods now have typing annotations for return values (#​2625)
    • Fix relative imports (#​2657)
    • Fix shadowing param names with internal variables in Python (#​2628/#​2645)
    • Don't allow objects to be passed as arguments when traits are expected (#​2649)
  • Swift:
    • All object protocol conformances are public (#​2671)
    • Initialization functions now have a stable ordering when using external types.
      This makes the generated source files deterministic.
⚠️ Breaking Changes for external bindings authors ⚠️
  • uniffi_bindgen::backend has been removed.
  • #[uniffi(default)] changes how defaults are represented.
  • FfiType::RustArcPtr has been removed and the FFI type for objects/interfaces is now a u64.
    Bindings authors will need to update their code to reflect this:
    • Lowering/lifting now uses u64 values
    • The free function inputs a u64 handle rather than a raw pointer
    • The clone function inputs and returns a u64 handle rather than a raw pointer
  • Enums and Records can have methods, so the Method now carries self_type instead of the object name.
    In the templates, for Callable.takes_self() is replaced with Callable.self_type().
  • Trait / Callback interface changes
    • VTable fields are now: free, clone, followed by a field for each interface method.
      Note That free is now at the start of the vtable rather than the end.
    • Trait interface changes:
      • Foreign handles must always have the lowest bit set
      • Both Rust and foreign handles can now be passed across the FFI.
        When Lifting/lowering trait interface handles, check if the handle was generated from Rust or the foreign side.
    • See https://github.com/mozilla/uniffi-rs/pulls/2586 examples of how the builtin bindings here changed.

All changes in v0.30.0.

v0.29.3

Compare Source

  • Fixed a bug where objects with alignment >= 32 could be freed to early (#​2600)

All changes in v0.29.4.

v0.29.2

Compare Source

What's new?
  • HashMaps in UDL now support a default value with an empty map (#​2539).

All changes in v0.29.3.

v0.29.1

Compare Source

What's fixed?
  • Allow uniffi_reexport_scaffolding! macro to work in Rust 2024 (#​2476)

  • Python: fix issues with unusual name capitalization, (#​2464)

  • Swift bindings can now generate automatic conformance to the CaseIterable protocol for simple enums and errors using generate_case_iterable_conformance = true in the configuration.

  • Swift bindings can now generate automatic conformance to the Codable protocol for records, enums and errors using generate_codable_conformance = true in the configuration. Be aware that serialization in Swift may lead to different and incompatible results compared to serialization in Rust.

All changes in v0.29.2.

⚠️ Breaking Changes for external bindings authors ⚠️
  • Some async-related names have changed. Bindings authors may need to update their code to reflect
    the new names. This is a name-change only -- the FFI and semantics are still the same.

    • UniffiForeignFutureFree is now UniffiForeignFutureDroppedCallback
    • UniffiForeignFuture is UniffiForeignFutureDroppedCallbackStruct.
    • RustFuturePoll::MaybeReady is now RustFuturePoll::Wake.

v0.29.0

Compare Source

What's fixed?
  • Bindings support lift and lower for CustomTypes in uniffi.toml to match the docs (#​2438)

  • Python: fix using Vecs and other composite types in tuple enums (#​2445)

  • Kotlin: fix interfaces in sequences and records being not disposed (#​2479)

What's changed?
  • Rust 2024 edition is supported, msrv is 1.82.0

  • The uniffi-bindgen CLI support no longer brings in the clap/color feature, reducing dependencies (#​2435)

  • Protocols generated for Swift now conform to the Sendable protocol. This means that UniFFI traits will too, but
    it also means foreign implemented traits also must when Swift 6 conformance is enabled.
    See the Swift section of the manual for more. (#​2450)

  • You can now optionally specify extra frameworks like CoreBluetooth or CoreFoundation when generating a modulemap file for an xcframework.

All changes in v0.29.1.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - "before 8am every weekday" in timezone America/New_York.

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
Copy link
Contributor Author

renovate bot commented Oct 15, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: SnapX.Core/ScreenCapture/Rust/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path SnapX.Core/ScreenCapture/Rust/Cargo.toml --package [email protected] --precise 0.30.0
    Updating crates.io index
error: failed to select a version for the requirement `uniffi_build = "=0.28.3"`
candidate versions found which didn't match: 0.30.0
location searched: crates.io index
required by package `uniffi v0.28.3`
    ... which satisfies dependency `uniffi = "^0.28.3"` of package `snapxrust v0.2.0 (/tmp/renovate/repos/github/SnapXL/SnapX/SnapX.Core/ScreenCapture/Rust)`

@renovate renovate bot added the macOS Relating to macOS label Oct 15, 2025
@github-actions github-actions bot added dependencies Bumping application dependencies Core Related to SnapX.Core and removed macOS Relating to macOS labels Oct 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Core Related to SnapX.Core dependencies Bumping application dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant