Ir al contenido

Tu primer componente

Este ejemplo es la guía Quickstart de 5 minutos de Wasma. Empieza directamente con Semantic IR para aislar el recorrido de verificación y ejecución. No usa generación por IA ni requiere credenciales. Solo necesitas la CLI wasma instalada (mediante paquete precompilado o compilada desde fuente) y un directorio vacío para los archivos del tutorial.

Guarda este bloque completo como identity.json en el directorio de trabajo. Es una función sin imports que devuelve su único argumento entero.

identity.json
{
"ir_version": "0.1",
"spec_version": 1,
"functions": [
{
"name": "identity",
"export": true,
"params": [{ "name": "value", "type": "i32" }],
"returns": "i32",
"requirements": ["SMOKE-001"],
"body": { "op": "param", "name": "value" }
}
]
}

La versión del fixture reproduce el contrato mínimo de cli_e2e.rs. No representa una promesa de estabilidad de todas las formas futuras de Semantic IR.

Ejecuta desde el mismo directorio. Estos comandos funcionan sin continuaciones de línea tanto en PowerShell como en shells Unix.

Ventana de terminal
wasma verify identity.json
wasma build identity.json --output identity.wasm

Ambos deben terminar con código de salida 0; el segundo crea identity.wasm. verify comprueba la entrada semántica. No verifica firmas de binarios.

Ventana de terminal
wasma run --component identity.wasm --function identity --fuel 100000 42

El resultado esperado es el entero 42 y código de salida 0. El presupuesto de fuel limita el trabajo guest; su valor aquí es un presupuesto, no una medición publicada.

Guarda esta suite como identity.yaml:

identity.yaml
suite: identity-tutorial
spec_version: 1
cases:
- id: identity-42
requirement: SMOKE-001
function: identity
args: [42]
expected: 42
Ventana de terminal
wasma test --suite identity.yaml --component identity.wasm

La suite debe pasar con código 0. Para observar un error de contrato, solicita una exportación que no existe:

Ventana de terminal
wasma run --component identity.wasm --function missing 42

Este último comando debe fallar con código 1. Un error explícito es preferible a un resultado silencioso por defecto. No significa que todo error sea de dominio: argumentos inválidos o archivos ausentes pueden terminar con código 2.

Entrada → verificación → compilación → invocación en sandbox determinista (salida 42) → pruebas de aceptación. Todo el recorrido se ejecuta de forma autónoma, sin conexión de red y sin requerir claves de API. Para avanzar hacia la generación asistida por modelos, consulta los modos de CLI, y antes de ejecutar artefactos externos revisa seguridad.