04/09/2025

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

Par admin

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

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…

Source : korben.info