Ruzu est un émulateur Nintendo Switch écrit en Rust, développé comme une expérience visant à déterminer si l’IA, via des modèles de langage (LLM), pouvait réaliser le portage complet d’un projet logiciel de très grande taille de C++ vers Rust.
Le projet est basé sur le code de yuzu/Eden et représente environ 500 000 lignes de code portées exclusivement avec l’aide de LLM, sur une période d’environ six mois. L’objectif n’était pas simplement d’obtenir un programme fonctionnel, mais de conserver au maximum la structure du projet original, avec une correspondance entre les fichiers et les différentes parties du code C++ et Rust.

Ruzu intègre notamment un kernel HLE avec ordonnanceur, fibres, IPC et services, un processeur de commandes GPU, un recompilateur de shaders et un JIT. La recompilation dynamique du code ARM est assurée par rdynarmic, un portage Rust de Dynarmic, avec des backends natifs x86-64 et ARM64. Le projet comprend également rxbyak, un portage Rust de Xbyak pour la génération de code machine x86-64.
L’émulateur est déjà capable de démarrer et d’exécuter des jeux commerciaux, avec l’objectif affiché d’atteindre les performances de l’implémentation C++ originale. Le projet reste toutefois en développement.
Ruzu dispose également d’un frontend graphique ainsi que d’un frontend en ligne de commande, et peut être compilé sous Windows, Linux, macOS et plusieurs systèmes BSD.
Les changements sont:
– Controls configuration: assigning a keyboard key or mouse button to a controller input now works. Previously the capture timed out without recording the binding.
– No more freeze in Configure Game / Controls after a game used amiibo (NFC): controller notifications are now delivered without holding the controller lock.
– Stopping a game now fully releases its system services. Previously some of them survived until the emulator was closed, which could freeze later configuration changes.
– Memory layout settings are now applied when the emulation starts.
– Vulkan: turbo mode stops cleanly when emulation ends.
macOS (Metal): a GPU hang no longer leaves the emulator stuck. Ruzu reports the device loss in the log and exits, as it does with Vulkan.
– Fixes to the debugger and the random number generator, plus broader test coverage of CPU, video and applet settings.
– Automatic text scaling: adjusts interface text to the Windows DPI setting for each window.
– Auto / Manual modes: use automatic sizing or choose your preferred text size. Switching to Manual starts with the value calculated by Auto.
– Improved readability: scaling applies to menus, dialogs, the game list, and the status bar.
– Existing custom text-size settings are preserved. Mixed-DPI, multi-monitor behavior still needs broader testing—feedback is welcome!

