zo iNiTiATiON SPEECHES
S01E47 2024-09-13

S01E47 — 13-09-2024.

Du Rust qui tourne dans le navigateur.

jour 47.

Je pensais que j’allais bien galérer pour porter Rust côté JavaScript, finalement le passe-plat a bien fonctionné. J’ai encore des bizarreries qui se déclenchent par moment et des erreurs que je ne gère pas encore, mais dans l’ensemble rien de folichon. C’est de ma faute, je n’ai pas lu la doc wasm-bindgen — la honte negro, tu t’rends compte negro. Je m’y attarderai plus tard, je voulais surtout m’assurer de la conversion Rust vers JavaScript.

Au début, il n’y avait rien qui fonctionnait. Inkwell la caisse que j’utilise pour interagir avec l’API LLVM n’est pas convertible vers le WebAssembly. J’ai contourné le problème en réimplémentant les phases de la compilation séparément. Certes, ça me fait dupliquer du code, mais pas le choix.

En tout cas, c’est rigolo de voir le REPL prendre vie dans le navigateur. À présent, je peux saisir des instructions du type 6 * 7 et voir s’afficher 42.

« Et une étape de faite, UNE ! »

Pour l’instant, tout fonctionne bien localement, c-à-d sur ma machine uniquement. J’espère qu’une fois en production tout ce qui concerne le WebAssembly ne va pas me causer des soucis. En mode, le fichier .wasm ne peut être lu ou je ne sais pas quoi. On verra bien. Je garde ça dans un coin de ma tête et j’me prévois un ou deux jours de sécurité pour m’en occuper avant la mise en prod.

Quand on y pense, c’est grave le turfu comme évolution — pouvoir porter un langage système dans le navigateur. C’est assez in-croy-able. Par curiosité, je me suis demandé qui était derrière tout ça. Bah comme d’hab, toujours les mêmes hein ! C-à-d Mozilla, Google, Microsoft, Apple, W3C. Rien à dire, ils ont fait de l’excellent taf. Cependant, je me demande pourquoi c’est si rapide que ça le WebAssembly. Je t’explique le fond de ma pensée — tu as le système ensuite tu as le WebAssembly et enfin JavaScript :


              +-------------+
              | WebAssembly |
              +-------------+
             /               \
            /                 \
           /                   \
+---------+                     +------------+
| Système |                     | JavaScript |
+---------+                     +------------+

Dans le cas d’un navigateur, chaque interaction doit absolument passer par le WebAssembly qui sert de passe-plat. Je suis ok-ay avec ça. Mais je vois de plus en plus de projet dans lesquels le WebAssembly est utilisé comme un container avec lequel, pour émuler des projets provenant de plusieurs langages. Genre un Docker en WebAssembly, dans ce cas précis et avec ce que je comprends du baye, le WebAssembly est une couche supplémentaire au-dessus du système. On passe par ça pour interagir avec le système alors qu’un langage système peut le faire directement. Là, il y a un truc qui m’échappe dans ce contexte. Passons…

Cette nuit, je m’occupe de la rédaction de la documentation. J’n’ai jamais fait ça donc par où commencer ? C’est une question rhétorique qui restera sans réponse. Je verrai bien comment je me débrouille, il faut bien commencer comme on dit.

« Je suis dans les temps ! »

@invisageable