wasm-tools-go
wasm-tools-go copied to clipboard
wit, wit/bindgen: support abstract "pointer" type, size, and alignment
In order to support wasm64
, with 64-bit wide pointers, we need to relax the constraint in the Component Model and Canonical ABI that pointer types fit in 32 bits.
Ideally the generated Go code for a component can handle pointer widths of either 32 or 64 bits without baking assumptions into the precise memory layout of structures into the lifting and lowering code.
Tasks
- [ ] Reconcile this with proposed
wasm64
support in the Component Model spec. - [ ] Introduce "integer pointer" type (e.g.
uintptr
) with size/alignment that varies based on arch. For instance, when flattening avariant
type with astring
orlist<T>
, the flattened pointers resolve to auintptr
in Go. - [ ] Thread this flexible width concept through the ABI, lifting, and lowering code in
wit
andwit/bindgen
.