Repository navigation
quest(m1): record the uniffi rename probe and upstream issue - #5473
Conversation
Distinct Rust names renamed back per language only work in Python and Go. Track mozilla/uniffi-rs#3026 as the condition to revisit the split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 45 seconds. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Merge summary: this records the rename probe and links mozilla/uniffi-rs#3026 from Decisions, confirmed by the maintainer:
CI is green (Check, Quest, Test). Codex gave a thumbs-up on head (Written by Claude Opus 5.5) |
Follow-up to #5460, which merged with the no-go. This tested the maintainer's rename idea and filed the upstream issue. The verdict stays no-go until mozilla/uniffi-rs#3026 is resolved.
Rename probe
Same spike harness as #5460: crates
net(namespacemoq) andmedialinked into onelibmoq_ffi.media's colliding types got distinct Rust names (MediaGroupConsumer,MediaFrame) so the bare-nameTypeUniversecheck passes. A per-language rename then mapped them back toGroupConsumerandFrame. UniFFI 0.32.2 has[bindings.{kotlin,swift,python}.rename]built in. The Go, Dart, and C++ forks have no rename option, so I patched each one locally (not pushed) to apply[bindings.<lang>.rename]throughuniffi_bindgen::interface::rename, the same way the Kotlin backend does.moq.GroupConsumer)moq.GroupConsumer)*MediaGroupConsumer)import uniffi.moq.GroupConsumershadows the local class'GroupConsumer' is ambiguousin one module. With one module per crate (plusimport moq), the local type shadows the import (value type 'Frame' cannot have a stored property that recursively contains it)import "moq.dart", so the local type shadows itmedia.GroupConsumer's constructor ends up typed against itself, so a consumer can't pass a netGroupConsumerCyclic dependency detected). Renaming only the object emits its converter into the net namespace (redefinition of moq::uniffi::FfiConverterGroupConsumer)Only the backends that refer to external types through their module (Python, Go) survive the rename. Fixing the rest means changing how each backend references external types, which is the upstream fix.
Upstream
I found no existing issue: the closest are mozilla/uniffi-rs#2732 (same crate, closed), mozilla/uniffi-rs#2153 (Swift/Python visibility), and mozilla/uniffi-rs#2985. So I filed mozilla/uniffi-rs#3026. It has a two-crate repro, the exact
conflicting typeserror fromTypeUniverse::add_known_type, a fix sketch (key by(module_path, name)and qualify cross-crate references per backend), and the Python silent drop. That drop looks fixed on uniffimainby mozilla/uniffi-rs#2985, which no 0.32.x release includes.Change
quest/m1/ffi-shape/README.mdrecords the rename result and links mozilla/uniffi-rs#3026 as the condition for revisiting the split.Decisions
Public API and wire impact
None. Quest files only.
(Written by Claude Opus 5.5)
🤖 Generated with Claude Code