Repository navigation
feat(cpp)!: generate unprefixed names and one moq::expected - #5727
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
uniffi.toml sets the generator fork's new `strip_type_prefix = "Moq"`, so moq-ffi's `MoqClient` is generated as `moq::Client` and moq.hpp drops its alias list and the `just cpp check` audit of it. The fork also makes `uniffi::expected` the bundled `tl::expected` at every C++ standard, so the MOQ_ABI link guard and the "C++ standard" docs go away, and `value()` on an error aborts with a message instead of being undefined. The check now builds the probe at C++23 over bindings at C++17 to prove they link. The generator pin is the head of kixelated/uniffi-bindgen-cpp#4 until that PR is released as v0.11.0-kixelated.5+v0.32.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Quest outcome: implemented end to end. The PR stays a draft until the fork is released and the pin moves to the tag (see "Before merge" above). Checks run locally:
Not run: the CI matrix (macOS, Windows, OBS), which runs on this PR. (Written by Claude Opus 5.5) |
…4940c4958a2 # Conflicts: # cpp/moq/include/moq/moq.hpp # quest/m1/cpp-package-check.md # quest/m1/ffi-shape/layers-guide.md
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 2 minutes. View limit details
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe C++ UniFFI generator pin advances to Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to
|
…4940c4958a2 # Conflicts: # cpp/moq/include/moq/moq.hpp # doc/lib/cpp/index.md # flake.nix # quest/m1/ffi-shape/layers-guide.md
|
Merging with the maintainer's approval.
(Written by Claude Opus 5.5) |
…9564940c4958a2 # Conflicts: # quest/m1/README.md # quest/m2/release/cpp-release.md
…9564940c4958a2 # Conflicts: # sh/cpp/check.sh
…9564940c4958a2 # Conflicts: # cpp/moq/include/moq/moq.hpp # quest/m1/README.md # quest/m1/cpp-package-check.md # quest/m2/release/cpp-release.md
Conflicts: - cpp/moq/include/moq/moq.hpp: take main's #5727, which generates unprefixed names, dropping the alias list (and this branch's Anchor/Order/Range aliases, now generated directly). - rs/moq-net/src/model/track.rs: keep both appended test sets (subscription ranges here, rewind refusal from #5803). Semantic follow-ups for callers main added against the old API: - rs/moq-net/tests/integration/received_rewind.rs: with_start(group 0) becomes with_groups(0..), as this branch migrated other callers. - py/moq-rs/tests/test_testing_clock.py: group_start=0 becomes an absolute group-0 range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Completes quest/m1/cpp-generated-shape: before the first
cpp-v*release, each C++ type has one name andmoq::expectedis one type.Generator changes: kixelated/uniffi-bindgen-cpp#4, released as
v0.11.0-kixelated.5+v0.32.2.Changes
cpp/moq/uniffi.tomlsets the fork's newstrip_type_prefix = "Moq", somoq::Clientis the generated type itself.moq.hppdrops the ~100-line alias list, andjust cpp checkdrops the audit of it.tl::expected, somoq.hppandsrc/moq.cppdrop theMOQ_ABIlink guard, and the "C++ standard" sections leavedoc/lib/cpp/index.mdandcpp/moq/README.md. With exceptions off,value()on an error now aborts with a message, so the docs' "undefined" warning now covers only*result.sh/cpp/check.shreplacestest-target-23withtest-mixed: the bindings at C++17 under a probe target at C++23. It fails to link without this change, so it is the regression test for the goal.v0.11.0-kixelated.5+v0.32.2inflake.nix(version, source hash, andcargoHash, which moved with the fork'sCargo.lockversion bump), four workflows (including feat(cpp): reuse validated shared FFI native inputs #5740'srelease-shared-ffi.yml),rs/moq-ffi/build.sh, andcpp/moq/README.md. Theflake.nixcomment lists them and dropsobs.yml, which never named the tag.quest/m1/ffi-shape.Public API
C++ only, and unreleased (no
cpp-v*tag yet), so there is no upgrade note.moq::MoqFoonames are gone;moq::Foois the generated type. The short names users already wrote still compile.moq::expectedistl::expectedat C++23 too, no longerstd::expected. It has the same members.MOQ_ABI,MOQ_ABI_NAME, andMOQ_IMPLEMENTATIONare gone.Wire: none.
Checks
main, including feat(ffi)!: namespace native codecs #5694's new codec types (named by the prefix strip with no alias list), feat(cpp): reuse validated shared FFI native inputs #5740's shared FFI reuse, Migrate network timing onto moq-clock #5681, and feat(net)!: let live announcements renew their auth #5695.just checkpasses.nix build .#uniffi-bindgen-cppwith the tag pin passes.just cpp checkwith the.5generator from the dev shell: C++17, C++23, C++23 over C++17 bindings, pkg-config, and doc samples all pass.quest checkpasses.Decisions
test-mixed, proving C++23 code links against C++17 bindings / deletetest-target-23as the quest said.tl::expectedin the fork: ✅ unconditional, since an option would keep the mismatch as a footgun / behind an option.moq_log_level,moq_mint_epoch): ✅ keep their prefix here, somoq.hppstill wraps them / strip them in this PR.Follow-ups
moq_prefix from generated free functions too (for examplestrip_function_prefix), which would letmoq.hppdrop itslog_level/mint_epochwrappers. Recommend a small quest after the fork moves to moq-dev/uniffi.MoqClientConfig). This is cosmetic and shared with every binding. Recommend leaving it.using CongestionControl = MoqCongestionControl;to the alias list this PR deletes. Whichever lands second drops that line; the prefix strip generatesmoq::CongestionControl.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code