Uxn - La machine virtuelle de 100 lignes qui fait tourner des apps sur votre Game Boy
C’est l’histoire d’un couple d’artistes développeurs qui largue les amarres pour vivre sur un voilier dans le Pacifique Nord. Pas de connexion internet stable, pas d’électricité illimitée, juste l’océan et quelques panneaux solaires…
C’est dans ces conditions que Devine Lu Linvega et Rek Bell de 100 Rabbits ont créé Uxn, une machine virtuelle qui tient en 100 lignes de C et qui fait tourner des applications graphiques complètes sur à peu près n’importe quoi, de votre vieille Game Boy Advance à votre Raspberry Pi Pico.
Le truc vraiment génial avec Uxn, c’est qu’elle ne prend que 64KB en RAM. Pour vous donner une idée, c’est environ 65 000 fois moins que ce que Chrome bouffe juste pour afficher cette page. Et pourtant, avec ces 64KB, vous pouvez faire tourner un éditeur de texte complet, un logiciel de dessin, un environnement de livecoding musical, et même des jeux comme Oquonie ou Donsol.
Sorcellerie me direz-vous ? Et bien non, c’est tout à fait possible en revenant aux fondamentaux de l’informatique et en appliquant les principes du permacomputing.
L’idée du permacomputing, c’est de créer des systèmes informatiques résilients et durables. Au lieu de racheter un nouveau PC tous les 3 ans parce que le dernier Windows rame, vous créez des logiciels qui tourneront encore dans 20 ans sur le matériel d’aujourd’hui. C’est une philosophie qui maximise la durée de vie du hardware et minimise la consommation énergétique. Et Uxn incarne parfaitement cette approche.
Pour programmer sur Uxn, vous devez utilise Uxntal, un langage assembleur basé sur une stack machine avec notation postfixe. Par exemple, au lieu d’écrire 3 + 4
, vous écrivez 3 4 +
. Ça peut paraître bizarre au début, mais c’est redoutablement efficace. Et contrairement à ce qu’on pourrait penser, Uxntal supporte même des concepts avancés comme les fonctions lambda et la programmation fonctionnelle.
Ce qui est vraiment cool avec cet OS, c’est sa portabilité. Le même fichier ROM Uxn peut tourner sur votre PC Linux avec SDL2, sur une Nintendo DS, sur un navigateur web, sur DOS, sur une PlayStation Vita, et même sur des trucs complètement barrés comme un télétypographe ou un STM32. C’est exactement comme les ROMs des vieilles consoles en fait… Vous créez votre programme une fois, et il tourne partout où il y a un émulateur Uxn.
Les applications disponibles sont d’ailleurs impressionnantes. Il y a Left, un éditeur de texte graphique, Noodle qui permet de dessiner, Orca qui est un environnement de livecoding pour créer de la musique, Nasu qui édite des sprites, Turye qui crée des polices de caractères. Et tout ça dans des fichiers de 10 à 15KB maximum.
L’écosystème Uxn est aussi super accessible pour les développeurs. La documentation sur GitHub liste des dizaines d’émulateurs, d’outils et de tutoriels. Il y a même des compilateurs comme Dotal et Funktal qui permettent d’écrire dans des langages de plus haut niveau et de compiler vers Uxntal. La communauté est aussi très active sur IRC (#uxn sur libera.chat) et Discord, et les workshops d’introduction sont excellents pour débuter.
Maintenant, pour installer Uxn sur votre machine, c’est super simple. Sur Linux, vous installez SDL2 (sudo apt install libsdl2-dev
sur Ubuntu), vous téléchargez l’émulateur, et vous lancez vos ROMs. Vous pouvez même développer directement sur Uxn avec Bicycle, un REPL interactif, ou Dexe, un éditeur hexadécimal.
Ce que j’adore avec Uxn, c’est que ça remet en question tout ce qu’on considère comme acquis dans le développement moderne. On n’a pas besoin de 8GB de RAM et d’un framework JavaScript de 500MB pour faire une calculatrice. On peut créer des outils puissants et élégants avec des contraintes extrêmes. Et le fait que tout ça vienne de deux personnes vivant sur un bateau, alimentées par de l’énergie solaire, ça rajoute une dimension poétique au projet.
Donc si vous cherchez une alternative radicale à la course à la puissance, si vous voulez explorer ce qu’on peut faire avec des systèmes minimaux, ou si vous êtes juste curieux de voir comment on peut faire tenir un OS complet dans moins de mémoire qu’une photo Instagram, Uxn vaut vraiment le détour.
Car parfois, c’est bon d’en enlever un peu pour retrouver l’essentiel.