chore: bump mopro-ffi/cli to 0.3.6, pin template to fix Kotlin CI#706
Merged
Conversation
Crates.io's `mopro-ffi 0.3.5` was published from the `v0.3.5` side-branch, which is based on a pre-PR-#658 main and still depends on `uniffi =0.29.0`. The `mopro init` template (cli/src/init/write_toml.rs) depends on `mopro-ffi = "0.3.4"`, which Cargo resolves to that broken 0.3.5 release. uniffi 0.29's Kotlin generator emits `this.len.toLong()` on a value that is already `Long` (fixed upstream in 0.31's RustBufferTemplate.kt:50). A recent GitHub Actions runner-image refresh bumped kotlinc to a version that flags this as a "redundant call of conversion method" warning, and uniffi's `bindgen-tests` feature runs `kotlinc -Werror`, so every `cli_template_tests` job has been red on main since 2026-03-16. Workspace main is already on `uniffi =0.31.0`. Bumping mopro-ffi and mopro-cli to 0.3.6 (skipping the poisoned 0.3.5 slot), publishing to crates.io, and pinning the template to `=0.3.6` fixes CI and prevents the same class of breakage from a future poisoned release. Note: cli/src/bindgen.rs:166-167 still references a stale `0.3.2` / `features = ["uniffi"]` literal that no longer matches what the template emits — that's an unrelated witnesscalc-adapter bug to address separately.
Deploying mopro with
|
| Latest commit: |
20f5eff
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://0d461d53.mopro.pages.dev |
| Branch Preview URL: | https://chore-bump-mopro-ffi-0-3-6.mopro.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mopro-ffiandmopro-clifrom0.3.4→0.3.6(skipping the poisoned0.3.5slot on crates.io).mopro inittemplate (cli/src/init/write_toml.rs) tomopro-ffi = "=0.3.6"(exact-version pin) so a future bad release in the 0.3.x range cannot silently break the template again.Why
Every
cli_template_testsmatrix job onmainhas been red since 2026-03-16 with:Root cause:
uniffi = "=0.31.0"(PR chore: update dependencies and refactor uniffi integration #658). UniFFI 0.31 fixed the redundant.toLong()inRustBufferTemplate.kt:50(0.29 emitsthis.len.toLong(), 0.31 emitsthis.len).mopro initdepends onmopro-ffi = "0.3.4"(cli/src/init/write_toml.rs:19,35,43). Cargo resolves that to the latest published0.3.xon crates.io, which ismopro-ffi 0.3.5— released on 2026-03-08 from theorigin/v0.3.5branch (based on a pre-chore: update dependencies and refactor uniffi integration #658 main), still locked touniffi =0.29.0. Verified via the crates.io dependency API.bindgen-testsfeature runskotlinc -Werror. A recent GitHub Actions runner-image refresh bumped kotlinc to a release that flags the redundant.toLong()as a warning — which becomes a fatal error under-Werror.Regression bisect confirms the break is environmental, not source: last green run was
ef60c27(2026-03-03), first red run was6e59bac(2026-03-16), and the only intermediate commit onmainis a docs-only blog post (#702).cli_build_android(gradle) is unaffected; only the Kotlin UniFFI foreign-language test incli_template_testsfails. The Swift sibling test (…_test_ffi_hello_world_swift) passes.Publishing (post-merge)
There's no release workflow in this repo; previous releases were manual. After merge:
Then verify on crates.io that
mopro-ffi 0.3.6listsuniffi 0.31.xunder Dependencies.Out of scope
cli/src/bindgen.rs:166-167still references a stalemopro-ffi = { version = "0.3.2", features = ["uniffi"] }literal that no longer matches whatwrite_toml.rsemits — this silently breaks the witnesscalc-adapter path. Unrelated to the Kotlin CI failure; flagging here so it doesn't get lost.Test plan
cli_template_tests(5 adapters × 2 OSes) goes green onmainaftermopro-ffi 0.3.6is published.cargo install --path cli && mopro init testproj && cd testproj && cargo test --all --all-featuressucceeds end-to-end.curl -s https://crates.io/api/v1/crates/mopro-ffi/0.3.6/dependenciesshowsuniffi 0.31.x, not=0.29.0.🤖 Generated with Claude Code