Repository navigation
feat(ffi): export moq-net's origin roots and request paths - #71
Conversation
Quest-Claim: ee13fd7b38456bde
Bump the moq pin to moq-dev/moq@88448d9, past moq-dev/moq#6808, so origin root(), absolute(), and Request::path() return PathOwned and export. moq.c drives root and absolute, and takes create_broadcast's new Publication. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0115AT2ue6x9cT5e5J9SZtCn
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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 7949d26
No actionable bugs found. The pin/census update is a focused way to expose owned origin paths without adding handwritten wrappers or weakening the exporter's borrowed-return rules. The C fixture uses the existing clone-to-new-handle convention and adapts to Publication ownership; broader lifetime-free Path support remains an explicit follow-up.
Verification: static inspection of the four-file change, exporter lowering, and C/build recipes only. I did not independently run the census, C/TS builds, tests, or benchmarks; the reported checks and timings are author results.
Slice of quest/m1/ffi-export.md.
Problem
moq-net's origin
root(),absolute(), andRequest::path()returned aPath<'_>borrowed from the handle, so the census refused all seven of them. moq-dev/moq#6808 has merged and returns thePathOwnedthey hold or build.Approach
ts/justfile'smoq_rev) to current moq main, moq-dev/moq@88448d9.ffi/moq/ffi.toml's exclude list with the census's list at the new pin. The seven path entries are gone. moq's own API also drifted, which the stale-entry check enforces:Epoch::time,Path::next_part,Version::names,broadcast::Finish::poll_closed,broadcast::Lister::poll_{used,unused},cache::Pool::gc,stats::Registry::exclude,time::now, andstats::Refusal::ALL(nowstats::RefusalKind::ALL).Client::with_url(url::Url),server::Handshake::with_deadlineandcache::Pool::poll(moq_clock::Instant), andannounce::Consumer::poll_synced(kio::Waiter).moq/moq.creads an origin producer'srootandabsolute, and a consumer'sabsolute.create_broadcastnow returns aPublication, so the test takes its broadcast from that.Path), still open. A census against its head shows the bump would exportPath::new,strip_prefix, andRelative::new, and leave onlyPath::from_staticrefused. The quest'smoq-nativementions are nowmoq-tokio, its new name.rootis always empty in the test: onlyscopesets one, and it takesPatterns, which the census still refuses.Impact
moq_origin_producer_root,moq_origin_request_path, ...).Checks
just check,just test: pass.just ffi moq,just ffi census,just ts moq,just ts censusat the new pin: pass.just ffi bench: passes at the new pin (export 232 to 269 ns per frame against moq-c 226 to 242).Alternatives
Follow-ups
(written by Opus 5.5)
🤖 Generated with Claude Code
https://claude.ai/code/session_0115AT2ue6x9cT5e5J9SZtCn