Skip to content

wit, wit/bindgen: support abstract "pointer" type, size, and alignment #112

@ydnar

Description

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 a variant type with a string or list<T>, the flattened pointers resolve to a uintptr in Go.
  • Thread this flexible width concept through the ABI, lifting, and lowering code in wit and wit/bindgen.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions