- Ideal wasm output?
- Manual gc polyfilling
- How does the runtime interface with the garbage collector?
- Is CMM too low level for wasm.gc instructions?
- Aggregate allocators provided by wasm gc
- Closures
- Mutable records?
- Packed records
- Nullability?
- tagged ints
https://github.com/SanderSpies/ocaml-wasm-gc-experimenting
- Changes need?
- How does runtime track alloc made in the backend?
There's a nagging question in my head and it really worries me about Tuples and Records
type r = {foo: string; bar: int}
let process_rec r = print_endline r.foo
let () = process_rec {foo= "foo-bar-string"; bar= 6}
lambda IR
(seq
(let
(process_rec/1011 =
(function r/1012
(apply (field 30 (global Pervasives!)) (field 0 r/1012))))
(setfield_imm 0 (global Foo!) process_rec/1011))
(let (match/1016 = (apply (field 0 (global Foo!)) [0: "foo-bar-string" 6]))
0a)
0a)
(data int 768 global "camlFoo" "camlFoo":)
(data int 3068 "camlFoo__1": string "foo-bar-string" skip 1 byte 1)
(data int 2816 "camlFoo__2": addr "camlFoo__1" int 13)