Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
77de6f0
chore(quest): claim quest/m3/ts-unsafe/raw-behind-ref.md
kixelated Nov 7, 2026
3478933
feat(ts): translate a raw pointer behind a reference
kixelated Nov 7, 2026
19345e1
style(ts): format
kixelated Nov 7, 2026
0e8bd26
Merge remote-tracking branch 'origin/main' into fix/raw-pointer-refer…
kixelated Nov 7, 2026
71cd733
test(ts): regenerate the census fixture after merging main
kixelated Nov 7, 2026
5a40085
docs(quest): the census at the pin after a raw pointer behind a refer…
kixelated Nov 7, 2026
30e8b12
fix(ts): keep an Arc's value's pointer its one place, and read an enu…
kixelated Nov 7, 2026
437a61a
test(ts): snapshot the Arc pointers' case
kixelated Nov 7, 2026
bce76b5
fix(ts): tell a tag outside every UnsafeCell by the value's layout
kixelated Nov 7, 2026
43b8b2b
Merge remote-tracking branch 'origin/main' into fix/raw-pointer-refer…
kixelated Nov 7, 2026
65927ee
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
0766fe4
chore(ts): regenerate the pointer snapshots for rs.String
kixelated Nov 7, 2026
3a423f4
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
694c6e1
chore(ts): regenerate the pointer snapshots after merging main
kixelated Nov 7, 2026
f45cfbc
quest: recount the census after merging main
kixelated Nov 7, 2026
e58dcda
fix(ts): move a copy out of a pointer from a &mut to an object
kixelated Nov 7, 2026
4af334c
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
0916afe
chore(ts): regenerate the snapshots after merging main
kixelated Nov 7, 2026
9bfcf27
style(ts): format
kixelated Nov 7, 2026
92a40b7
Merge remote-tracking branch 'origin/main' into raw-behind-ref
kixelated Nov 7, 2026
28c5450
fix(ts): copy every value a pointer read moves out, library objects i…
kixelated Nov 7, 2026
925f1bc
fix(ts): copy what a cell or lock holds inline when moving it out
kixelated Nov 7, 2026
d4531da
fix(ts): copy a range's ends and a borrowed cell's value when moving …
kixelated Nov 7, 2026
8955797
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
501e113
fix(ts): refuse moving out a library object whose inline state only i…
kixelated Nov 7, 2026
7362511
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
20c188d
fix(ts): copy a Weak moved out through a pointer as the handle it is
kixelated Nov 7, 2026
f275248
chore(ts): recount the census, name the inline-state alias, format
kixelated Nov 7, 2026
b117c7e
fix(ts): copy a Vec's or VecDeque's storage on a move-out read, clear…
kixelated Nov 7, 2026
0b375b8
chore(ts): format, regenerate the conversions snapshot
kixelated Nov 7, 2026
742b2bd
docs(ts): note storage copies and unfixed offsets from a lone place
kixelated Nov 7, 2026
c77552a
fix(ts): keep a place's accessors on a whole write, refuse unfixed wr…
kixelated Nov 7, 2026
07fda2b
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
bc03ffc
Merge remote-tracking branch 'origin/main' into iterate-621b
kixelated Nov 7, 2026
e2a5e8c
feat(ts): refuse unsplit collection moves and offsets off a lone place
kixelated Nov 7, 2026
3d5165c
test(ts): refuse a collection's ptr::copy within a Vec
kixelated Nov 7, 2026
44bfc2a
fix(ts): check reads one past a lone place, not the pointer
kixelated Nov 7, 2026
521d901
style(ts): format
kixelated Nov 7, 2026
3312df3
Merge remote-tracking branch 'origin/main' into iterate-621b
kixelated Nov 7, 2026
8ca09a4
fix(ts): check only accessed pointers, and none to a value of no bytes
kixelated Nov 7, 2026
8079dea
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
1a767f3
quest: finish the ts-unsafe epic
kixelated Nov 7, 2026
a720343
Merge remote-tracking branch 'origin/main' into iterate-621b
kixelated Nov 7, 2026
a37bd0b
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
0af963e
fix(ts): address the automated reviews of the merged head
kixelated Nov 7, 2026
3281e7d
fix(ts): refuse a branch-joined reference pointer's stray, and fold n…
kixelated Nov 7, 2026
bbab54f
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 7, 2026
5114982
fix(ts): follow every assignment of a pointer to the arrays of one it…
kixelated Nov 7, 2026
3be3d33
revert(ts): drop the join tracking of pointers from a reference
kixelated Nov 8, 2026
0f51992
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 8, 2026
513169a
quest: name a joined reference pointer's offset_from among the run-ti…
kixelated Nov 8, 2026
b26afb6
fix(ts): copy what a Pin or transparent wrapper holds as uninitialize…
kixelated Nov 8, 2026
419105d
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 8, 2026
993b76c
quest: recount the model census after #644
kixelated Nov 8, 2026
f47c117
docs(ts): name interior-mutable shared references and nonempty byte s…
kixelated Nov 8, 2026
52a10e9
fix(ts): refuse a move-out read of a closure or coroutine whose copy …
kixelated Nov 8, 2026
8c53bc9
style(ts): format
kixelated Nov 8, 2026
56ee890
fix(ts): refuse a move-out read of a closure whose captures its copy …
kixelated Nov 8, 2026
0f97786
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 8, 2026
45f045b
style(ts): format
kixelated Nov 8, 2026
80c7495
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 8, 2026
357cf8a
quest: recount the model census
kixelated Nov 8, 2026
aa033e2
fix(ts): refuse an opaque library object only where an unsafe move re…
kixelated Nov 8, 2026
9424175
style(ts): format
kixelated Nov 8, 2026
a15788d
Merge remote-tracking branch 'origin/main' into quest/m3/ts-unsafe/ra…
kixelated Nov 8, 2026
e4c0cdb
Merge base into pr-621 and preserve both pointer analyses
Nov 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions quest/m2/ts-model/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,23 @@ Decided with the maintainer on 2026-10-27, from a census of the model's 22 publi
the translator is specific to moq: dependencies follow general rules, and moq's own
changes (to its `unsafe` and its address keys, dropping or binding `hashlink`, `slab`, and
`smallvec`) are one research-tier quest in moq's tree.
- A dependency containing `unsafe` is bound by the consumer until
[unsafe code the translator can model](/quest/m3/ts-unsafe/README.md) translates it: decided
- A dependency containing `unsafe` is bound by the consumer unless it uses only the
`unsafe` [m3's unsafe policy](/quest/m3/README.md) translates: decided
with the maintainer on 2026-10-27, a stock crate translates with no annotations or config.
Only true platform boundaries (clocks and DEFLATE) stay bound.
- Each child measures this target by the census of `ts/moq/model.toml`, rooted at those
types with the boundaries bound, which nightly reports beside the whole crate.
- The end-to-end work stays here: the model's roots, its differential harness, and the
`frames.ts` workload. moq writes the binding files `model.toml` names, in its own tree.

The census at the pin on 2026-11-07: 51 refusals. `Timestamp` alone refuses nothing, and
The census at the pin on 2026-11-07: 45 refusals. `Timestamp` alone refuses nothing, and
the [model fixture](/ts/README.md#tests)'s harness runs it against native moq-net at the
pin; each case it adds as a type translates. Every other root reaches the rest of the
model, all of it moq's, for its research quest: kio's `log.rs` reads bytes as its segments
and retires them through crossbeam-epoch, whose tagged pointers and inline closures (36
refusals) translation refuses for good, and smallvec's union over a type parameter and
raw parts (10) wait on [unsafe](/quest/m3/ts-unsafe/README.md), so moq rewrites or drops
them, as it does the `unsafe` slice of `model/frame.rs`'s `Filled`.
raw parts (4) stay refused under [m3's unsafe policy](/quest/m3/README.md), so moq
rewrites or drops them, as it does the `unsafe` slice of `model/frame.rs`'s `Filled`.

Decided with the maintainer on 2026-11-04, from a census at the bumped pin
(moq-dev/rust2#390): the refusals no quest owned became child quests, since finished.
Expand All @@ -71,6 +71,6 @@ or pointers whose comparison disagreed with Rust after an address was reused:
addresses (`model/cache.rs`, `model/frame.rs`).
- ✅ moq gives its `unsafe` no `cfg(rust2_ts)` twins; it decides per item, when its quest
starts, whether to rewrite one in safe Rust for both builds or wait for this translator.
Rejected: twins until [unsafe](/quest/m3/ts-unsafe/README.md) translates them.
Rejected: twins until rust2-ts translates them, which [m3's unsafe policy](/quest/m3/README.md) mostly refuses.

Public API: the translator's output for moq-net's model.
1 change: 0 additions & 1 deletion quest/m3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ memory model for values whose address is reinterpreted, without a consumer.

- [Retrial Cranelift on moq's tests](/quest/m3/cranelift-unwind.md) - waits on upstream: moq's tests pass under Cranelift, so its CI can weigh it again
- [Relink without rebuilding](/quest/m3/relink.md) - measure upstream's skip of dependency-only rebuilds on moq's edits once it reaches nightly
- [Unsafe code the translator can model](/quest/m3/ts-unsafe/README.md) - a dependency using only `unsafe` the translator can model translates from source
- [Waiting: drop the lang fixture's mul_add allowance](/quest/m3/ts-fma-allowance.md) - the differential fails on any `mul_add` difference again once wasm32's `fma` rounds exactly
- [Waiting: type-check in process with tsrs](/quest/m3/ts-tsrs.md) - rust2-ts checks bindings through tsrs instead of `tsc` once it is a stable library
- [Throw only where Rust panics](/quest/m3/ts-runtime-throws.md) - no runtime `rust2-ts:` error where native Rust goes on: exact, or refused at translation
Expand Down
7 changes: 3 additions & 4 deletions quest/m3/ts-runtime-throws.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ only because translation can't see where a pointer came from:
`AtIndex.reach`, raw slices of a field's byte, and `Bytes::slice_ref` of copied bytes,
safe code with no exact answer while a `&str` stays a JS string. AGENTS.md allows the
unsafe ones under m3's [unsafe policy](/quest/m3/README.md).
Two pointers made from one reference, one through a branch or loop, may each be in
an array of one of its own; keep the loud check rather than trace joins (decided
2026-11-07 in [#621](https://github.com/moq-dev/rust2/pull/621)).
- Rejected: refusing all of them at translation, which refuses pointer arithmetic on any
pointer parameter; keeping all as run-time checks.

Expand Down Expand Up @@ -52,7 +55,3 @@ What remains:
follow-ups).

Public API: the translator's output, and which crates translate.

## Related

- [Unsafe code the translator can model](/quest/m3/ts-unsafe/README.md) - the raw-pointer model several of these throws guard; its 2026-11-01 run-time failures now follow this quest's rule
81 changes: 0 additions & 81 deletions quest/m3/ts-unsafe/README.md

This file was deleted.

23 changes: 0 additions & 23 deletions quest/m3/ts-unsafe/raw-behind-ref.md

This file was deleted.

Loading