TESTER

Version WASM

#RichnouLang vient de faire un grand pas en avant, avec la mise en place d'une version WebAssembly, c'est à dire utilisable dans le navigateur!!!

Dans le navigateur !

Première version ouverte, même si très expérimentale.

Pour tester https://wasm.richnou.ovh

Tout n'est pas encore terminé (on en est loin) mais au moins ça tourne. Quelques exemples accessibles directement.

La doc est chargeable (mais minimaliste), et bien sûr les fonctions de chargement/sauvegarde de fichiers non opérationnelles du fait des limitations du navigateur... Ce qui va me forcer à ajouter des fonctionnalités pour charger des éléments depuis des urls...

Ce qui me fait penser qu'il va falloir créer un plugin pour CodeMirror... et highlightjs...

Dans le navigateur !

Pour l'aspect technique, la version WASM est finalement incroyablement facile à faire.

Il "suffit" de rediriger les entrées/sorties depuis et vers le JavaScript, un fichier wasm_exec.js se chargeant de faire le pont entre le fichier main.wasm.

sequenceDiagram
    participant DOM as DOM
    participant JS as App Logic<br/>(JS)
    participant WE as wasm_exec.js
    participant WA as main.wasm<br/>(Go)

    DOM->>JS: User input / Event
    JS->>WE: Call exported Go function
    WE->>WA: Invoke wasm function
    WA-->>WA: Execute Go code
    WA->>WE: Return result
    WE->>JS: Resolve/Parse result
    JS->>DOM: Update UI / Output

Dis comme ça... mais cela montre quand même que (toute modestie mise à part) le code GO du RichnouLang est plutôt bien organisé.

Performances

Côté performances, cela tient la route la plupart du temps, même si moins performant que la version cli.

J'ai pour l'instant peu testé cet aspect, mais deux hypothèses:

  • j'ai testé sur la génération de grandes images, et c'est le transert de l'image qui est lent.
  • c'est juste plus lent...

A suivre.