Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[spectec] SpecTec interpreter: array.new_data and array.init_data fail on arrays of v128

Cerrado Apto para principiantes
#2,285 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Ya se ha fusionado un pull request relacionado.

  • #2293 de @rossberg — fusionado

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
wasm
Área
testing

Línea de trabajo

Empieza en el intérprete de SpecTec, en inv_zbytes, y compara cómo maneja los valores vectoriales con inv_cbytes, que ya deriva V128 a inv_vbytes. Ejecuta spectec specification/wasm-3.0/*.spectec --interpreter con el módulo proporcionado; el trabajo estará terminado cuando tanto array.new_data como array.init_data devuelvan los valores de lane esperados sin ArgMismatch.

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

Descripción

(module
  (type $av (array (mut v128)))
  (data $d "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f")
  (func (export "new") (result i32)
    (i32x4.extract_lane 3 (array.get $av (array.new_data $av $d (i32.const 0) (i32.const 1)) (i32.const 0))))
  (func (export "init") (result i32)
    (local $x (ref $av))
    (local.set $x (array.new_default $av (i32.const 1)))
    (array.init_data $av $d (local.get $x) (i32.const 0) (i32.const 0) (i32.const 1))
    (i32x4.extract_lane 1 (array.get $av (local.get $x) (i32.const 0)))))
(assert_return (invoke "new") (i32.const 0x0f0e0d0c))
(assert_return (invoke "init") (i32.const 0x07060504))

The reference interpreter passes. spectec specification/wasm-3.0/*.spectec --interpreter fails both:

$ARRAY.NEW_DATA: Backend_interpreter.Exception.ArgMismatch("inv_nbytes: [V128, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]]")

array.new_data-num and array.init_data-num decode the segment with $zbytes_(zt, c). In the interpreter, inv_zbytes handles I8 and I16 and passes everything else to inv_nbytes, which has no V128 case. inv_cbytes already sends V128 to inv_vbytes; inv_zbytes needs the same case.

Tested at 340650f.

Lenguaje dominante
WebAssembly
Estrellas
3.5k
Forks
540
Merge medio
23 h 36 min
PR fusionados (30 d)
26

Preparar el entorno

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 WebAssembly/spec

Todos los issues de WebAssembly/spec

Issues similares

Más issues de Testing & QA

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.