Forja WASM – Compilador en el Navegador
Archivo: crates/forja-wasm/src/lib.rs
¿Por qué existe?
Expone la funcionalidad central del compilador Forja como un módulo WebAssembly, permitiendo que la comunidad interactúe con el lenguaje directamente desde navegadores sin necesidad de instalar Rust.
Cómo funciona
- Se compila el crate con
wasm-packgenerando.wasmy bindings JavaScript. - Las funciones públicas están decoradas con
#[wasm_bindgen]para ser invocables desde JS. - Funciones clave:
compilar: Transforma código Forja a Rust (fallback) y devuelve el código o un mensaje de error.forja_ejecutar: Compila y ejecuta el programa dentro de la VM, devolviendo la salida.obtener_ejemplos: Provee una lista de ejemplos de código en formato JSON.codificar_url / decodificar_url: Helpers para compartir código mediante URL‑encoding.forja_tokenizar: Tokeniza el código y devuelve un JSON con los tokens.version: Exposición de la versión del compilador.
- El runtime JavaScript carga el
.wasmy conecta los bindings a una UI interactiva (playground).
Estructura del código
Ejemplo: la API WASM expone funciones como compilar, forja_ejecutar, obtener_ejemplos, codificar_url, decodificar_url, forja_tokenizar y version, todas marcadas con #[wasm_bindgen] para ser llamadas desde JavaScript.
Relación con el resto del proyecto
- Reusa la lógica del crate
forja(móduloscompiler_*,vm, etc.) mediante llamadas a la biblioteca principal. - El playground web en
docs/src/pages/playground(si existe) consume estas funciones para ofrecer una experiencia “online”. - El LSP y la CLI pueden usar la misma API interna; el WASM solo expone un subconjunto seguro para el entorno del navegador.