Journal Uxn : un langage assembleur axé sur la frugalité

Posté par  . Licence CC By‑SA.
Étiquettes :
26
2
juil.
2022

Uxn est un écosystème applicatif complet, destiné au développement de petits outils et jeux, sous forme d'une machine virtuelle programmable dans un langage assembleur dédié (uxntal) et possédant seulement 32 instructions, sur le principe d'une machine forth, dont il garde d'ailleurs la syntaxe postpositionnée (postfix), la pile (stack) et la capacité de produire une solution à partir de composants simples et basiques.

Uxn peut être vu comme un processeur, et le reste des périphériques (audio, écran, clavier, souris) est géré par une machine idéale nommée Varvara, les deux systèmes cohabitants parfaitement.

Les logiciels écrits pour Uxn sont portables et destinés à des ordinateurs ayant peu de ressources, dans l'esprit du permacomputing. En effet, seul un compilateur C est nécessaire pour faire fonctionner le coeur CPU (en console). Pour l'accès aux périphériques, il existe des développements et portages vers diverses plate-formes, notamment en SDL2, ce qui lui permet de tourner sur de très nombreux OS (linux, macos, windows, haiku…). De plus il existe des versions spécifiques, citons par exemple la console Game Boy Advance, Nintendo DS, Playdate, DOS, Raspberry Pi Pico, Libretro, Web…

N'espérez pas recréer des jeux en 3D ou le pare-feu d'OpenOffice avec ce système, car les spécifications sont assez frugales, avec notamment 64 ko de mémoire RAM. On retrouve un peu l'esprit de certaines consoles imaginaires (comme TIC-80).

Le développeur principal d'Uxn est Devine Lu Linvega, du couple Hundred Rabbits. Rekka Bellum illustre le site et les outils développés pour Uxn, et contribue donc grandement à l'imaginaire autour de cet écosystème.

Au niveau des outils disponibles développés pour Uxn, on retrouve notamment :

  • 'calc', une calculatrice graphique et centrée sur l'hexadécimal.
  • 'left', un éditeur de texte (pas utf-8 malheureusement, donc il n'est pas adapté à la prose francophone).
  • 'nasu', un éditeur de sprites.
  • 'noodle', un outil de dessin axé pixel-art.
  • 'donsol', un jeu de cartes sous forme de roguelike.
  • 'orca', un séquenceur midi assez incroyable, où les notes sont entrées dans une grille sous forme de code ascii.
  • 'turye', un éditeur de polices de caractères (en pixel, ce n'est pas l'équivalent de fontforge non plus).
  • 'dexe', un éditeur hexadécimal.
  • 'piano', un petit synthé permettant d'être utilisé avec orca par exemple.
  • 'turquoise', un langue de programmation graphique proche de la "turtue" du logo.
  • 'nebu', un tableur / éditeur .csv en 6,2 ko!

Il faut garder à l'esprit que les binaires générés sont extrêmement compacts, par exemple le séquenceur orca ne fait que 11 ko dans la version Unx. Sa version console (pour terminal), écrite en C classique, prend un peu plus de 100 ko, tandis que la version pour Electron, qui a quasi les mêmes fonctionnalités, pèse plus de 400 Mo !

En conclusion, Uxn est un outil original, développé par des passionnés et conçu dans le but de sortir des paradigmes modernes de développement.

  • # VM est non écologique par essence

    Posté par  . Évalué à -2.

    Une VM, c'est une couche de virtualisation supplémentaire et donc des calculs pour "rien". Aussi léger et efficace qu'elle soit. C'est un peu comme un camion pour transporter une voiture, cela consommera toujours plus que la voiture seule.

    Par contre on peut construire un écosystèmes en virtuel pour, un jour faire un vrai processeur Uxn.

    • [^] # Re: VM est non écologique par essence

      Posté par  . Évalué à 3.

      Comparaison n'est pas raison. Les vm compilent de plus en plus souvent en code natif.

      Le fait d'avoir une couche de virtualisation se fait à énormément d'endroits (ton application utilise une mémoire virtuelle par exemple sous linux).

      […] donc des calculs pour "rien".

      C'est tout à fait subjectif et il faut regarder au cas par cas.

      Pour faire ma comparaison, la virtualisation c'est comme la transmission d'un vélo. Aujourd'hui personne n'a les manivelles de pédales directement sur l'axe d'une roue, tu as une roue libre, un couple de roue dentées, etc

      https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: VM est non écologique par essence

        Posté par  (site web personnel) . Évalué à 8.

        La mémoire virtuelle n'a de commun avec une VM que le nom. Cela n'a absolument rien à voir.

        Un langage a vm peut nécessiter une compilation just in time : pourquoi le faire plusieurs fois ?

        "La première sécurité est la liberté"

        • [^] # Re: VM est non écologique par essence

          Posté par  (site web personnel) . Évalué à 2. Dernière modification le 03 juillet 2022 à 12:23.

          Pour faire des optimisations pendant le runtime?

          J'anticipe, pourquoi laisser gérer la mémoire automatiquement : pour pouvoir la défragmenter au runtime? Pour optimiser les accès contiguë, pour éviter des tlb misses, pour faire du prefetch…

          La mémoire virtuelle a à voir, question de point de vue. Certaines plateforme ne gère pas la mémoire virtuelle de façon câblée, elle peut être programmable, elle peut ralentir les accès mémoire (je parle de la gestion de l'adresse, pas du temps d'accès memoire)… Ça n'est pas totalement différent.

          • [^] # Re: VM est non écologique par essence

            Posté par  (site web personnel) . Évalué à 6.

            j'anticipe, pourquoi laisser gérer la mémoire automatiquement : pour pouvoir la défragmenter au runtime? Pour optimiser les accès contiguë, pour éviter des tlb misses, pour faire du prefetch…

            Oui, cela aide, mais cela ne change pas le fait que java est plusieurs fois plus lent que rust par exemple, dans le tap tempo web.

            Certaines plateforme ne gère pas la mémoire virtuelle de façon câblée

            Je ne connais pas de plateforme hardware sans gestion de TLB hardware. Cela serait bien trop lent.

            "La première sécurité est la liberté"

        • [^] # Re: VM est non écologique par essence

          Posté par  . Évalué à 4.

          La mémoire virtuelle n'a de commun avec une VM que le nom. Cela n'a absolument rien à voir.

          C'est une indirection que tu ajoute pour pouvoir faire une tambouille dans le dos de l'utilisateur. Toutes les vm ne font pas des choses très complexes avec la mémoire.

          Un langage a vm peut nécessiter une compilation just in time : pourquoi le faire plusieurs fois ?

          Pour avoir encore plus d'informations au moment de faire les optimisations. gcc et llvm ont aussi des fonctionnalités pour créer des traces puis refaire une compilation avec ces informations en plus. C'est invisible en java, c'est très subtile à faire avec gcc ou llvm (la manière dont tu génère les traces doit correspondre à l'usage réel).

          Je me doute que quand on discute comme ça, tout le monde pense à la jvm, clr ou beam. Mais les machines virtuelles c'est aussi ebpf par exemple.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: VM est non écologique par essence

        Posté par  . Évalué à 3.

        Pour préciser, quand je dis "pour rien", jz n'entends pas qu'il y a aucun intérêt à virtualiser, mais d'un point de vue consommation d'énergie, il y a pertes. Il y a gain en sécurité, en praticité, en maintenance… De même une chaîne de vélo perd de l'énergie, elle à un rendement inférieur à 100%, elle à simplement un intérêt de confort et vitesse car l'humain est incapable de pédaler a 100 tours par minutes efficacement.

        • [^] # Re: VM est non écologique par essence

          Posté par  . Évalué à 4.

          Pour préciser, quand je dis "pour rien", jz n'entends pas qu'il y a aucun intérêt à virtualiser, mais d'un point de vue consommation d'énergie, il y a pertes. Il y a gain en sécurité, en praticité, en maintenance…

          La question n'est pas si simple cette sécurité et maintenance ont un coût énergétique. C'est un peu comme dans l'alimentation. On se plaint souvent des emballages polluants, mais l'objectif des fabricants c'est que tout puisse être mangé. Une nourriture produite mais non consommée représente une pollution importante. Je ne dis pas qu'il n'y a pas de malfaçon et si on peut éviter des emballages c'est le mieux, mais pour des grandes productions c'est une question importante.

          De même une chaîne de vélo perd de l'énergie, elle à un rendement inférieur à 100%, elle à simplement un intérêt de confort et vitesse car l'humain est incapable de pédaler a 100 tours par minutes efficacement.

          Tu perd environ 1% dû aux frictions, mais tu n'arriverais pas à développer le même potentiel sans donc c'est parfaitement virtuel. Si nos corps n'avaient pas la forme qu'ils ont nous pourrions nous en passer et faire mieux oui. Comme si tout était parfait, tu n'utiliserai des logiciels qui n'ont que les fonctionnalités dont tu as besoin qui ne gèrent pas les valeurs de paramètres que tu n'utilise pas et ton CPU ferait éternellement les bonnes prédictions de branchement. Je suis d'accord qu'il faut pas rester sur ses acquis et que c'est bien de remettre en cause des choses par exemple tu as des vélos à courroie qui ont donc moins de frictions, mais il faut garder une vision du contexte par exemple en vélo tu perds bien plus d'énergie dû à ton coefficient de pénétration dans l'air.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: VM est non écologique par essence

        Posté par  (site web personnel) . Évalué à 6. Dernière modification le 07 juillet 2022 à 10:33.

        Pour faire ma comparaison, la virtualisation c'est comme la transmission d'un vélo. Aujourd'hui personne n'a les manivelles de pédales directement sur l'axe d'une roue, tu as une roue libre, un couple de roue dentées, etc

        Je ne vois pas trop en quoi la vacuitécomplexité du modèle de programmation des machines actuelles serait une nécessité technique. J'ai l'impression que c'est surtout qu'avec le ratio coût de l'énergie / coût de l'humain actuel ce n'est plus un enjeux.

        Il serait bien que le poids en charbon de chaque couche d'abstraction, runtime, framework, commence d’apparaître sur les factures. Ça changerai les perspectives, je pense.
        ```

        • [^] # Re: VM est non écologique par essence

          Posté par  . Évalué à 5.

          Ainsi que le poids en équivalent CO2 des bugs et autres failles ainsi que des temps de développement supplémentaires.

          S'il y a bien une idée qui a, il me semble, bien émergé en écologie c'est que l'on ne peut pas prendre un scope très limité et ignorer le cycle de vie total.

          Tu peut tout remettre en cause comme ça. Le coût environnemental de la production de MMU, celui du chiffrement, l'usage des hash cryptographiques qui sont fait pour consommer de la ressource,[…]

          Je ne dis pas que tout est égale, mais que sur ton jugement de "j'aime pas ça" tu tente de le rationalisé, mais c'est bien plus compliqué. Combien de trajets en voiture vers les ciné économisés par l'utilisation de trucs comme les chromecasts qui font tourner des appli en js par exemple ? Avoir une métrique sans en voir les biais c'est problématique.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

          • [^] # Re: VM est non écologique par essence

            Posté par  . Évalué à 4.

            Surtout que une faille qui permet l'exécution de code, ça peut faire vraiment beaucoup de consommation.

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: VM est non écologique par essence

            Posté par  (site web personnel) . Évalué à 4.

            Ou tu lis "j'aime pas ça" ?

            Je dis juste que l'énergie coûte moins cher que le travail et que c'est pour cette raison que tu colles un java / Linux / ARM dans ton frigo (ce qui au passage n'évite ni les bugs, ni les failles), plutôt qu'un Coldfire, un moniteur et du code maison.

            • [^] # Re: VM est non écologique par essence

              Posté par  . Évalué à 2.

              Je dis juste que l'énergie coûte moins cher que le travail et que c'est pour cette raison que tu colles un java / Linux / ARM dans ton frigo (ce qui au passage n'évite ni les bugs, ni les failles), plutôt qu'un Coldfire, un moniteur et du code maison.

              Sachant que je présume que ça reste dans une forme d'hibernation la majorité du temps, sur l'année ça donne quoi comme différence de consommation sur un réfrigérateur complet ?

              https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

    • [^] # Re: VM est non écologique par essence

      Posté par  . Évalué à 4.

      Est-ce écologique de pas réutiliser les machines existantes mais plutôt de recréer tout un écosystème sur un assembleur condamné à rester une niche ?

      • [^] # Re: VM est non écologique par essence

        Posté par  . Évalué à 4. Dernière modification le 03 juillet 2022 à 12:30.

        Qu'est-ce être écologique ? Si être écologique c'est laisser un monde sympathique pour nos enfants avec un climat stable où les conditions de vie resteront sympathiques, j'ai bien peur que notre civilisation actuelle soit à l’antipode de l'écologie.

        D'ailleurs en mai 2022 l’ONU met en garde contre un « effondrement de la société », qui indique que « D’après l’analyse des scénarios… il est évident qu’en l’absence d’une politique ambitieuse ainsi que d’une adoption quasi globale et d’une mise en œuvre couronnée de succès, le monde se rapproche toujours plus du scénario d’effondrement général de la planète. ».

        Les scientifiques ont identifié neuf limites planétaires à ne pas dépasser sous peine de mettre en danger la stabilité du système Terre, dont au moins six ont déjà été dépassées :
        - le climat qui est hors de la zone de stabilité ;
        - les cycles biochimiques qui sont les grands cycles du vivant, notamment les cycles du phosphore et de l'azote on été dépassés, c'est à dire totalement déréglé ;
        - la biodiversité qui est en plein effondrement ;
        - l'usage de l'eau douce ;
        - l'usage des sols gravement dégradés par les activités humaines.

        Comme l'indique Arthur Keller dans sa conférence Écologie, progrès et décroissance donnée avec Aurélien Barrau à la Grande Tribune 2022 : « Notre civilisation est une méga machine qui convertit le monde naturel en déchets, nous prélevons des ressources que nous transformons et de l'énergie puis que nous utilisons sous forme de biens et services, etc. et un certain nombre de choses au sein des sociétés humaines et puis en aval on rejette des déchets et des pollutions dans le monde naturel. » Ou encore : « le problème peut se résumer de la manière suivante en amont on prélève de plus en plus de ressources à un rythme supérieur au taux de renouvellement, pour celle qui se renouvellent, et en aval on génère davantage de pollution que le système peut absorber pour ce qui est absorbable. Et au passage au transforme et on détruit l'environnement, on le transforme plus vite qu'on peut l'adapter, on le détruit plus vite qu'il ne peut se régénérer ».

      • [^] # Re: VM est non écologique par essence

        Posté par  (site web personnel, Mastodon) . Évalué à 5.

        sur un assembleur condamné à rester une niche ?

        C'est triste ton avis sur les "niches".

        • [^] # Re: VM est non écologique par essence

          Posté par  . Évalué à 1.

          j’ai rien contre les niches ! Je pense juste que c’est vraiment hautement improbable qu’on construise un ordinateur sur cette base, et que si on en construit un, ça n’aura pas spécialement d’intérêt écologiquement parlant.

          Pourquoi ? Ça ne fera que se rajouter à tous nos ordis / smartphone / tablettes / console / liseuses qu’on a déjà sans s’y substituer le moins du monde.

      • [^] # Re: VM est non écologique par essence

        Posté par  (site web personnel) . Évalué à 4.

        Les machines virtuelles n'ont qu'un intérêt : permettre la diffusion de logiciels privateurs portables.

        Pour une autre approche : https://github.com/wiz-lang/wiz

        Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: VM est non écologique par essence

      Posté par  . Évalué à 6.

      Dans le cas général, les VM permettent tout de même une mutualisation du hardware très importante.. et donc de la conso électrique !

    • [^] # Re: VM est non écologique par essence

      Posté par  . Évalué à 4.

      oui et non, j'imagine que cela dépend de beaucoup de paramètres. Est-ce que faire tourner un programme en C++ utilisant KDE, Qt ou un autre toolkit un peu lourdingue ne fera pas encore plus de calculs pour rien ?

      On a l'exemple également de machines virtuelles dédiées à certains logiciels, notamment la z-machine d'infocom, spécialisée dans les aventures en mode texte des années 80, et ce n'est pas à voir comme un VM complète avec pleins de processus superfétatoires qui vont consommer énormément de ressources.

      Tout dépend aussi de la manière dont un logiciel donné sera codé, si ça rajoute du temps cpu pour rien…

      « Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher

      • [^] # Re: VM est non écologique par essence

        Posté par  . Évalué à 4.

        On parle à logiciel équivalent d'un point de vue "utilisateur". Il est evident qu'un jeu vidéo 3D hyper realiste consomera normalement plus de ressources qu'un Pacman et que pour consommer moins d'énergie on peut jouer aux cartes avec un ami ;)

  • # permacomputing

    Posté par  . Évalué à 9.

    Merci de m'avoir fait découvrir le terme de permacomputing ! C'est un sujet qui alimente mes réflexions depuis un moment, disposer de ce mot-clé va me permettre de les approfondir davantage.

  • # bon projet

    Posté par  . Évalué à 4.

    Hello,
    pas mal ce projet. Effectivement, on est un peu dans l'esprit de pico-8 ou TIC-80: Spécifications volontairement limitée, du coup il faut faire rentrer ce qu'on veut dans ce qu'on a. Par contre j'aurai un peu de mal à investir dans l'apprentissage d'un assembleur qui ne correspond pas à un "vrai" processeur. En tout cas, le pari de "sortir des paradigmes modernes de développement" est réussi! Je vais quand même tenter le "tuto 7 jours"…

  • # Perso j'ai un peu de mal ...

    Posté par  (site web personnel) . Évalué à 2.

    Perso j'ai un peu de mal à comprendre le concept.

    surtout que je viens de voir au infos le principe d'un colonie pour ados avec le même style de vie que l'on avait au service militaire.

    Mais ou veut il en venir le vieux con l'ancien ?

    Développer des devis imprimeurs sur des machines avec 80ko de RAM et sauvegarde sur cassette audio cela me rappelle de bons souvenirs, celui d'avoir réussi …
    mais aussi les mauvais : être obligé de supprimer des commentaires pour gagner quelques octets et de passer des heures à optimiser l'usage de la RAM et avec le risque de plantage et du message "out of memory …"

    Tout comme le service militaire … obligatoire dans mon cas, et obligé d'aller jouer au soldat (c'est marrant une semaine …) et de passer de 4000 Francs (600 euros) par mois, mon salaire de l'époque, à 500 francs (75 euros) par mois. même nourri logé blanchi c'est pas drôle du tout.

    Nostalgie quand tu nous tiens … n’empêche que à l'époque, a vivre c'était pas drôle tout les jours.

    bref, dans un but pédagogique je veux bien le comprendre et encore il pourrait mettre la mémoire adressable en option, et au final, personne n'est obligé d'envoyer ses gosses dans ce genre de colonie.

    Surtout quand on voit la profusion d'outil, de ressources et de doc à disposition … je peux vous dire que vous avez beaucoup de chance de vivre cette époque. ( tout comme celui de ne pas être obligé de faire son service national pour trouver du boulot …)

    Il y a tellement de choses à faire et accessible en plus …

    Alors c'est vrai que certain aurait besoin de formation sur ces machines, ne serait ce que pour apprendre à faire des applis qui n'ont pas besoin de 100 Go de données 32 go de RAM et 12 CPU … pour l'équivalent d'un tuto de todolist.

    Et peut être que certain ont besoin d’être encadré dans une hiérarchie avec une grosse voix.

    Bref regardez ce que vous avez, plutôt que de regarder ce que vous n'avez pas …

    • [^] # Re: Perso j'ai un peu de mal ...

      Posté par  . Évalué à 3.

      Je pense qu'il ne faux pas y chercher une véritable utilité. Au pire, c'est un projet un peu farfelu et au mieux c'est éducatif pour ceux qui voudraient apprendre à développer un écosystème atypique.

      Ou alors c'est une cabale judéo-maçonnique pour détrôner MultiDeskOS.

      • [^] # Re: Perso j'ai un peu de mal ...

        Posté par  (site web personnel) . Évalué à 1. Dernière modification le 08 juillet 2022 à 17:52.

        C'est vrai qu'après tout on est libre de faire ce que l'on veut, même si cela n'a pour unique but que d'apprendre à le faire.

        J'avais oublié MultiDeskOS ;) Merci …

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.