Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Thunk - Une lib pour faire tourner du code Rust flambant neuf sous Windows XP

Par : Korben
4 septembre 2025 à 19:05

Ce serait pas foufou quand même si votre vieux PC sous Windows XP pouvait faire tourner des applications Rust compilées en 2025 ?

Bah c’est totalement ce que permet de faire Thunk , un outil qui réconcilie le passé et le présent pour les dev Rust qui veulent que leur app fonctionne partout, y compris sur de vieux Windows.

L’histoire commence avec ce constat simple : des millions de machines tournent encore sous Windows XP. Usines, hôpitaux, distributeurs automatiques, systèmes industriels… Ces dinosaures refusent de mourir, principalement parce qu’ils font tourner des logiciels critiques impossibles à migrer. Du coup, le souci c’est qu’il est impossible de développer de nouvelles applications pour ces systèmes avec les outils modernes.

Enfin, c’était impossible avant Thunk.

Car le créateur de Thunk, connu sous le pseudo felixmaker sur GitHub, a eu une idée trop cool. Plutôt que de forcer les développeurs à utiliser de vieux compilateurs et des langages datés, pourquoi ne pas adapter les outils modernes pour qu’ils produisent du code compatible avec les anciens systèmes ?

Son astuce repose sur deux bibliothèques chinoises méconnues : VC-LTL5 et YY-Thunks . La première, VC-LTL5, fait quelque chose de très utile puisqu’au lieu d’embarquer toutes les dépendances runtime dans votre exécutable (ce qui le rend énorme), elle se branche directement sur les DLL système de Windows comme msvcrt.dll ou ucrtbase.dll. Du coup, vos binaires perdent entre 30 et 50% de leur taille.

La seconde bibliothèque, YY-Thunks, c’est la MacGyver des API Windows. Quand votre application appelle une fonction qui n’existe pas sur Windows XP (comme GetTickCount64 par exemple), YY-Thunks intercepte l’appel et propose une alternative. Comme ça, si la fonction existe, elle l’utilise. Sinon, elle improvise avec ce qui est disponible. C’est du bricolage, certes mais c’est intelligent et ça fonctionne vraiment bien.

L’atout dans la manche de Thunk c’est donc sa simplicité d’utilisation. Il est juste disponible sous 2 formes. Soit en ligne de commande, soit comme dépendance dans votre projet.

Ensuite, pour compiler une application Rust pour Windows XP, trois lignes suffisent :

cargo new build_for_xp
cd build_for_xp
thunk --os xp --arch x86 -- --release

Et voilà, votre application moderne tournera sans souci sur une machine de 2001. C’est presque de la magie noire, sauf que c’est documenté et surtout open source. Et vous savez comme j’aime l’open source !

Bien sûr, felixmaker prévient dans sa documentation : “USE AT YOUR OWN RISK!” en majuscules car il n’y a aucune garantie que tout fonctionne. Certaines fonctionnalités modernes peuvent rester inaccessibles, et les performances peuvent varier d’une machine à l’autre et d’un programme à l’autre. Mais pour beaucoup de cas d’usage, notamment dans l’industrie où la stabilité prime sur les dernières nouveautés, c’est un compromis, je trouve, acceptable.

L’outil supporte surtout une impressionnante gamme de systèmes : Windows XP (x86 et x64), Vista, Windows 7, 8 et même Windows 10. Oui, vous pouvez optimiser vos applications Windows 10 pour qu’elles soient plus légères ce qui est particulièrement intéressant pour les applications embarquées ou tous les systèmes avec peu de ressources.

Bref, Thunk répond à un réel besoin notamment des entreprises. C’est aussi pour ça que je vous en parle, parce que j’imagine que dans vos entreprises, vous avez peut-être des vieux bazars que vous aimeriez faire évoluer sans tout péter. Donc c’est l’occasion de faire du code propre qui tournera sous XP, Vista et j’en passe. Et pour les copains passionnés de rétrocomputing, c’est aussi l’occasion de créer des applications modernes pour vos machines vintage

Maintenant pour l’installer, il vous faudra Rust :

cargo install thunk-cli

pour la version ligne de commande, ou

cargo add thunk-rs --build

pour l’intégrer sous forme de lib dans vos projets. Il vous faudra aussi télécharger les binaires de VC-LTL5 et YY-Thunks et configurer quelques variables d’environnement, mais la documentation explique tout clairement.

Voilà, je trouve ça plutôt cool que Rust, un langage créé en 2010, puisse maintenant produire du code pour un système d’exploitation sorti en 2001. C’est un genre de pont temporel qui défie la logique habituelle de l’obsolescence programmée.

On fait du neuf avec du vieux . Ou l’inverse. Je m’y perds un peu j’avoue…

Microsoft libère enfin le code source du BASIC 6502

Par : Korben
4 septembre 2025 à 16:09

Allez, on va jouer à un jeu !

Tapez “STORD0” dans un vieil émulateur Commodore et regardez ce qui se passe. Non, ce n’est pas une commande documentée mais bien un Easter egg planqué dans Microsoft BASIC depuis 1977.

Et si je vous parle de ça, c’est parce que j’ai une bonne nouvelle. En effet, Microsoft vient de libérer le code source de ce BASIC 6502 historique sous licence MIT. Quarante-sept ans après sa création donc, on peut enfin fouiller dans les entrailles du programme qui a fait tourner des millions de machines mythiques de l’ère 8-bits. Et croyez-moi, c’est une mine d’or pour comprendre comment deux jeunes de 20 ans ont posé les fondations de ce qui deviendrait plus tard, le plus gros empire logiciel de la planète.

L’histoire commence donc en 1975 . Gates et Allen viennent de créer Microsoft (encore avec un tiret à l’époque : Micro-Soft) et leur premier produit, c’est un interpréteur BASIC pour l’Altair 8800. Le truc, c’est qu’ils n’avaient même pas la machine, du coup, ils ont développé l’émulateur sur un PDP-10 de Harvard, en se basant uniquement sur les specs du processeur Intel 8080. Et quand ils ont finalement testé leur code sur une vraie machine, ça a marché du premier coup.

La chance des débutants, on va dire ^^.

Deux ans plus tard, le MOS 6502 débarque. Moins cher que l’Intel 8080, plus simple, il va devenir LE processeur de la révolution micro-informatique. Chuck Peddle, son créateur chez MOS Technology, avait un objectif simple qui était de concevoir un processeur à 25 dollars au lieu de 300 pour l’Intel 8080. Mission accomplie évidemment… et devinez qui voulait absolument un BASIC pour accompagner son nouveau processeur ?

Commodore, qui venait de racheter MOS Technology.

La négociation entre Jack Tramiel (le légendaire patron de Commodore) et Bill Gates est même devenue mythique dans l’industrie. Tramiel, survivant de l’Holocauste devenu roi de la calculatrice puis de l’informatique, était réputé pour être un négociateur impitoyable. Sa philosophie c’était “Business is war” … Je vous laisse imaginer la mentale du bonhomme.

Et face à lui, Bilou Gates, 22 ans, lunettes énormes, qui demandait initialement 3 dollars par machine vendue. Tramiel a ri et proposé un deal unique : 25 000 dollars cash pour une licence perpétuelle. Gates a accepté…

Aujourd’hui, si Microsoft avait gardé les royalties à 3 dollars par unité comme Gates le voulait initialement, avec 17 millions de Commodore 64 vendus selon Guinness World Records , ils auraient touché plus de 50 millions de dollars rien que sur cette machine.

Mais le génie de Gates et Allen, c’était pas forcement le commerce, c’était surtout leurs capacités technique car adapter un BASIC conçu pour l’Intel 8080 au 6502, c’était pas de la tarte. Les deux processeurs avaient des architectures complètement différentes. L’Intel 8080 avait plus de registres, le 6502 compensait avec sa page zéro ultra-rapide. L’équipe Microsoft (qui comptait alors une dizaine de personnes) a dû réécrire une bonne partie du code en assembleur 6502, optimiser chaque routine pour tenir dans la mémoire limitée de l’époque… Je vous parle quand même de machines avec 4 Ko de RAM, hein, pas 4 Go !

Le code source qu’on peut consulter aujourd’hui révèle tous ces détails fascinants sur ces optimisations. Par exemple, la routine de multiplication utilise une technique de décalage et addition super élégante pour économiser des cycles processeur. Les chaînes de caractères sont gérées avec un système de garbage collection rudimentaire mais efficace. Chaque octet comptait, chaque cycle processeur était précieux. C’est de l’artisanat pur du code, à des années-lumière de nos frameworks JavaScript de 500 Mo.

L’impact de ce BASIC 6502 sur l’industrie a d’ailleurs été monumental. Steve Wozniak s’en est inspiré pour créer Integer BASIC puis Applesoft BASIC sur l’Apple II. Atari l’a utilisé comme base pour son Atari BASIC. Le TRS-80 Color Computer de Tandy/Radio Shack tournait avec. Des millions d’enfants et d’adolescents dont je fais parti, ont appris à programmer avec, tapant leurs premiers “10 PRINT HELLO” et “20 GOTO 10” sur ces machines.

Microsoft explique dans l’annonce officielle que cette libération fait partie d’un effort plus large pour préserver l’histoire de l’informatique. Certes, le Computer History Museum avait déjà publié certaines versions en 2014, mais là, c’est Microsoft directement qui ouvre ses archives. Le dépôt GitHub contient plusieurs versions historiques, incluant celles pour l’OSI Challenger 1P, le KIM-1, et bien sûr les différentes révisions Commodore.

Pour les nostalgiques et les curieux, le code est donc un vrai régal. Les commentaires en assembleur racontent une histoire. On voit l’évolution des bugs corrigés, les optimisations ajoutées version après version. Le fameux Easter egg STORD0/STORDO dont je vous parlais en intro est là aussi dans le code source. C’est un simple saut conditionnel vers une routine qui affiche “MICROSOFT!”, probablement ajouté lors d’une session de coding nocturne, quand Gates et Allen se permettaient un peu de fun dans leur code ultra-sérieux.

Au-delà de la nostalgie, cette libération a une vraie valeur éducative. Les étudiants en informatique peuvent étudier comment on programmait quand chaque byte comptait. Les développeurs d’émulateurs peuvent corriger des bugs vieux de 40 ans. Les historiens de l’informatique ont accès aux sources primaires d’un moment clé de notre industrie. C’est comme si on ouvrait les carnets de Léonard de Vinci, mais pour les geeks.

Microsoft a également choisi la licence MIT, ultra-permissive donc vous pouvez forker, modifier, vendre, faire ce que vous voulez avec ce code.

C’est un peu ironique quand on pense que Gates avait écrit sa fameuse “Open Letter to Hobbyists” en 1976 , se plaignant du piratage de son BASIC Altair. Le jeune Bill qui pestait contre le partage gratuit de logiciels se serait bien marré en voyant Microsoft open-sourcer son travail aujourd’hui.

Ce qui est fou, c’est quand même de réaliser que ce petit bout de code a généré une industrie de plusieurs trilliards de dollars. Sans ce BASIC 6502, pas de Commodore 64 (la machine la plus vendue de l’histoire), pas d’Apple II tel qu’on le connaît, pas de génération de programmeurs formés dans les années 80. Microsoft aurait peut-être mis la clé sous la porte sans ces revenus initiaux et l’histoire de l’informatique personnelle aurait été complètement différente.

L’équipe de Microsoft en 1978

Maintenant, pour ceux qui veulent jouer avec, le code compile toujours avec les assembleurs modernes comme ca65. Vous pouvez donc le faire tourner dans n’importe quel émulateur 6502. Certains ont déjà commencé à créer des versions modernisées, ajoutant des commandes, corrigeant des bugs historiques, ou portant le code sur des architectures modernes. Le projet est donc hyper vivant sur GitHub, avec déjà des dizaines de forks et de pull requests.

Un détail amusant c’est que ce code révèle que Microsoft avait prévu dès le départ la possibilité d’étendre le langage avec des commandes custom. Une architecture modulaire en 1977, c’est fort ! Certains constructeurs comme Commodore ont d’ailleurs ajouté leurs propres extensions pour gérer les sprites, le son, les graphismes. Et le code BASIC de Microsoft, solide comme un roc, continuait de tourner de la même façon sur toutes les machines.

Cette libération arrive également à un moment symbolique car l’informatique rétro n’a jamais été aussi populaire. Des projets comme le Commander X16 de David Murray tentent de recréer l’esprit des machines 8-bits avec du hardware moderne et ce BASIC 6502 open source pourrait devenir la base de nouveaux projets éducatifs, de nouvelles machines rétro, ou simplement servir à comprendre d’où on vient.

Alors oui, c’est juste du vieux code. Mais c’est LE vieux code. Celui qui a permis à une génération entière de découvrir la programmation. Celui qui a transformé Microsoft de startup dans un garage en empire mondial. Celui qui cache encore, 47 ans plus tard, des Easter eggs et des secrets.

Donc, si vous avez 5 minutes, allez jeter un œil au repo GitHub . C’est un voyage dans le temps, à l’époque où 16 Ko de RAM c’était le futur, et où deux jeunes pouvaient changer le monde avec quelques milliers de lignes d’assembleur.

Source

❌
❌