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

Abierto
#112 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
go, wasm

Línea de trabajo

Comienza revisando el código existente de ABI, lifting y lowering en wit y wit/bindgen; después, compara sus supuestos sobre los punteros con el soporte propuesto para wasm64 en la especificación del Component Model. El trabajo estará terminado cuando un tipo de puntero entero tenga un tamaño y una alineación dependientes de la arquitectura, y el código Go generado admita anchos de puntero de 32 bits y 64 bits sin suposiciones sobre un layout fijo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.
Lenguaje dominante
Go
Estrellas
148
Forks
20
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bytecodealliance/go-modules

Todos los issues de bytecodealliance/go-modules

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.