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:
– Linux — native Wayland: added Vulkan rendering through a GTK Wayland subsurface and shared EGL contexts for OpenGL, while preserving X11 support. Moving the rendering surface between windows during emulation is restricted on Wayland to avoid a reproduced compositor crash.
– Shader compatibility: implemented missing atomic compare-and-swap instruction, addressing the GPU-thread panic reported in issue #14. Support remains subject to graphics-backend and hardware capabilities.
– Windows memory handling: corrected recovery from reads of uncommitted sparse-vector pages, including fault-address validation and transitions from read-only to writable pages.
– Memory reclamation: ported Eden’s optimization to decommit fully zeroed sparse-vector pages while preserving partially cleared pages and neighboring data. Added regression tests for page reclamation, reuse, and Windows fault recovery. Performance gains in games have not yet been measured.
– Firmware and keys: added a compatibility check before emulation starts in both the graphical and command-line interfaces. When installed firmware cannot be decrypted with the available keys, Ruzu reports the problem before booting. This compatibility error is not shown merely because firmware or prod.keys is absent.


















