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

  1. Se compila el crate con wasm-pack generando .wasm y bindings JavaScript.
  2. Las funciones públicas están decoradas con #[wasm_bindgen] para ser invocables desde JS.
  3. 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.
  4. El runtime JavaScript carga el .wasm y 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