This repository was archived by the owner on Aug 12, 2026. It is now read-only.
Repository navigation
Commit 137d8f5
committed
own<T> transfer works: the host was freeing the handle before wasmtime read it
The prediction recorded before looking was that the guest was at fault, on the
reasoning that the host writes identical bytes for own and borrow -- kind 21
and a pointer -- so it had no way to differ. That was wrong, and reading the
built component said so: consume takes (own 8) and [constructor]counter returns
(own 8), the same exported type. The component was correct all along.
transfer! called resource_any_delete during lowering. func_call reads the
pointer the argument val holds, so the host freed it before wasmtime read it,
and wasmtime called that "mismatched resource types" -- an error about the
wrong thing entirely, which is why the guest looked guilty. Deletes are now
collected per call and run after it, in the same finally that releases the
in-call flag. One atom per instance suffices because 0014 D forbids concurrent
calls into a store.
So 0016 is complete: a handle is opaque and AutoCloseable, close is
try { drop } finally { delete } and idempotent, lowering an own transfers and
leaves with-open able to exit cleanly over the body's value, lowering into a
borrow leaves the handle live, and the instance closes handles the caller never
destructured before deleting the store their context points into.
cljwit.host now marshals every 0012 row a component can express today. What is
left -- map, list<T,N>, stream/future, error-context -- is not in a shipped
release.
The error text is what made this a bounded question rather than a guess.
Before ok! read wasmtime's message it was "call ... failed".
176 assertions.
Claude-Session: https://claude.ai/code/session_01XF5Hfq4Ca2N2XYEzWQQuHt1 parent ec54a22 commit 137d8f5
4 files changed
Lines changed: 52 additions & 48 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
| 3 | + | |
| 4 | + | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
| |||
150 | 149 | | |
151 | 150 | | |
152 | 151 | | |
153 | | - | |
| 152 | + | |
154 | 153 | | |
155 | | - | |
156 | | - | |
157 | | - | |
| 154 | + | |
158 | 155 | | |
159 | 156 | | |
160 | 157 | | |
161 | 158 | | |
162 | 159 | | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
179 | 175 | | |
180 | 176 | | |
181 | 177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
23 | 20 | | |
24 | 21 | | |
25 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
258 | | - | |
| 258 | + | |
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
| |||
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
277 | | - | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
278 | 283 | | |
279 | 284 | | |
280 | 285 | | |
281 | | - | |
| 286 | + | |
282 | 287 | | |
283 | 288 | | |
284 | 289 | | |
| |||
447 | 452 | | |
448 | 453 | | |
449 | 454 | | |
450 | | - | |
| 455 | + | |
| 456 | + | |
451 | 457 | | |
452 | 458 | | |
453 | 459 | | |
| |||
689 | 695 | | |
690 | 696 | | |
691 | 697 | | |
692 | | - | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
693 | 704 | | |
694 | 705 | | |
695 | 706 | | |
| |||
713 | 724 | | |
714 | 725 | | |
715 | 726 | | |
716 | | - | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
717 | 732 | | |
718 | 733 | | |
719 | 734 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
309 | 309 | | |
310 | 310 | | |
311 | 311 | | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
324 | 320 | | |
325 | 321 | | |
326 | 322 | | |
| |||
0 commit comments