Skip to content

chore(deps): update rsbinder requirement from 0.10.0 to 0.11.0 - #5

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/rsbinder-0.11.0
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/rsbinder-0.11.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 1, 2026

Copy link
Copy Markdown

Updates the requirements on rsbinder to permit the latest version.

Release notes

Sourced from rsbinder's releases.

v0.11.0

The largest release so far: two new ways to declare an interface and to reach one, working shared memory, parcels as a storage format, and a wire that no longer depends on the host's byte order.

Kernel binder on Android 10–17 (API 29–37) and Linux; RPC transport on Linux, Android and macOS.

Highlights

The parcel wire is little-endian on every host. It used to be whatever the CPU was — nothing said so and nothing checked it, so a big-endian build compiled clean and then produced parcels no other machine could read. No little-endian build emits a different byte than before (to_le_bytes is the identity there); a big-endian host pays a swap and gains parcels its peers can read. Verified against goldens captured before the change, on x86_64 and on s390x under qemu-user. The BC_*/BR_* command stream and the UAPI structs stay host-native, since the kernel driver parses those with native loads.

Declare an interface as a Rust trait. #[rsbinder::interface], with #[derive(Parcelable)] and #[derive(BinderEnum)] for its data types — no .aidl file, no build.rs. It is not a second code generator: it fills the same render structs the AIDL front-end fills and runs the same templates, so the emitted code is byte-for-byte what .aidl produces, and that equality is golden-tested. .aidl stays canonical for anything Android tooling or another language reads. Behind the new macros feature, in the new rsbinder-macros crate.

One bootstrap for either transport. rsbinder::serve(uri) and rsbinder::connect::<dyn I>(uri) select kernel binder or RPC from a URI: serve("binder://")?.add(name, binder)?.run()? is an entire kernel service, and the same three calls with unix:///path are an RPC server. Options that do not fit a URI go through ServeOptions / ClientOptions. This replaces the rsbinder::service facade, which is gone.

Shared memory is a working implementation rather than a trait skeleton: MemoryHeapBase (memfd_create on Linux/Android, shm_open on macOS), MappedHeap, MemoryDealer (AOSP's SimpleBestFitAllocator), HeapCache, and the handwritten AOSP IMemory / IMemoryHeap wire — exercised in both directions against real libbinder.

Parcels as a storage format. to_bytes / from_bytes give the generated codec somewhere to write other than a transaction, so an AIDL definition can be a file format instead of a project maintaining a second description in protobuf or serde. The bytes are the IPC bytes, and with the wire now fixed little-endian a value carrying no object reads back on any architecture. Binders and file descriptors are refused where they are written, before any dup. Behind the rpc feature.

A binder belonging to the other IPC stack is refused at write time with

... (truncated)

Changelog

Sourced from rsbinder's changelog.

Migrating from 0.11.0

  • Endpoint::Kernel gained an mmap_size field (see Added). It is not #[non_exhaustive], so a struct literal or a match arm naming every field no longer compiles; add mmap_size: None for the previous behavior. Matching with .. and endpoints obtained from serve / Client::open are unaffected.
  • A kernel option serve / Client::open cannot honor is now BadValue. binder://?threads=, ?driver=, ServeOptions::threads and ClientOptions::driver are fixed by whoever initializes ProcessState first; a later different value used to log a warning and now returns StatusCode::BadValue (omitting it or repeating the value still works). Likewise ClientOptions::driver / mmap_size must agree with the URI's ?driver= / ?mmap=.
  • An RPC session refuses a connection whose transport differs from its founding one (fd passing or local peer) with BadType at attach. A manual attach (add_{outgoing,incoming}_connection_with_config) over such a transport is refused before its header goes out, so the session stays up; a hand-assembled session (e.g. RpcServer::serve_connection) can hit it too.
  • StatusCode::from(ExceptionCode::ServiceSpecific) is ServiceSpecific(0), not Ok, as in AOSP; StatusCode::from(status) for such a Status now yields ServiceSpecific(0), not FailedTransaction.
  • rsbinder-aidl now rejects .aidl that AOSP's aidl also rejects (see Added). An rsbinder-only contract relying on the missing validation now fails, with a diagnostic naming the rule.
  • render::ConstMember and render::EnumMember gained a trailing deprecation element; pass String::new() to keep the previous output. The #[non_exhaustive] render structs' new deprecated field needs no change.
  • error::SemanticError is now #[non_exhaustive] and gained FixedSizeNonFixedField and VintfStabilityLeak; add a _ => … arm.
  • A declaration nested in a @VintfStability type is now VINTF-stable (see Fixed): a ParcelableHolder records VINTF stability for it, and ParcelableHolder::set_parcelable returns BadValue for a payload without VINTF stability. Nothing in the build warns.
  • #[deprecated] codegen can break a downstream -D warnings build: an existing /** @deprecated … */ javadoc now generates #[deprecated]. Drop the tag, or allow the lint at the call site.
  • #[rsbinder::interface] and the derives now refuse shapes .aidl cannot express, so moving an interface to .aidl stays a no-op. The diagnostic names the .aidl form to use instead. Refused: directions and nullability AIDL lacks (out String, Option<i32>, a bare out binder or fd); in spellings .aidl never renders (&String, &Vec<T>, &i32, a by-value String or binder); array-element Options spelled the other way (&mut Vec<Option<Cfg>>, Option<&[String]>) and i8 in an array element; scalars AIDL has no type for (u32, u64, usize, u128, char); and other shapes such as BinderResult<T, E>, () or &mut [T] arguments, duplicate names, receiver attributes, an empty descriptor, and on #[derive(Parcelable)] a bare binder or fd field.
  • The tokio feature no longer enables tokio/full, only tokio/rt and tokio/rt-multi-thread. A crate that received tokio/net, time, signal, fs, io-util or macros through rsbinder must declare them in

... (truncated)

Commits
  • abe4c5a chore(release): publish rsbinder-macros, and date 0.11.0 as today
  • f1361ee Merge pull request #203 from hiking90/release/0.11.0-docs
  • 3d154bc docs: prepare the 0.11.0 release
  • 8bb3aa8 Merge pull request #202 from hiking90/feat/le-wire-contract
  • 061dc7b fix(parcel): satisfy clippy on the session-bytes gate in append_from
  • ceb2ad9 test(thread_state): keep the freeze-observer pins that actually hold
  • a75f34e test(parcel): assert checked_array_layout on both pointer widths
  • bd580f1 fix(binder): name the command the driver refused, and abort on a short write
  • ffaf9a7 fix(binder): rewind only this transaction's commands when a reply panics
  • 313bb7c test(mesh): let the RPC mesh suite run on a device, like its kernel twin
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Updates the requirements on [rsbinder](https://github.com/hiking90/rsbinder) to permit the latest version.
- [Release notes](https://github.com/hiking90/rsbinder/releases)
- [Changelog](https://github.com/hiking90/rsbinder/blob/master/CHANGELOG.md)
- [Commits](hiking90/rsbinder@v0.10.0...v0.11.0)

---
updated-dependencies:
- dependency-name: rsbinder
  dependency-version: 0.11.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants