{"id":137476,"date":"2026-10-02T11:10:27","date_gmt":"2026-10-02T09:10:27","guid":{"rendered":"https:\/\/www.emu-france.com\/?p=137476"},"modified":"2026-10-02T11:10:27","modified_gmt":"2026-10-02T09:10:27","slug":"consoles-de-salon-ruzu-v0-1-1-rc3","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=137476","title":{"rendered":"[Consoles de salon] Ruzu v0.1.1 RC3"},"content":{"rendered":"<p>Ruzu est un \u00e9mulateur Nintendo Switch \u00e9crit en Rust, d\u00e9velopp\u00e9 comme une exp\u00e9rience visant \u00e0 d\u00e9terminer si l&rsquo;IA, via des mod\u00e8les de langage (LLM), pouvait r\u00e9aliser le portage complet d&rsquo;un projet logiciel de tr\u00e8s grande taille de C++ vers Rust.<br \/>\n&nbsp;<\/p>\n<p>Le projet est bas\u00e9 sur le code de yuzu\/Eden et repr\u00e9sente environ 500 000 lignes de code port\u00e9es exclusivement avec l&rsquo;aide de LLM, sur une p\u00e9riode d&rsquo;environ six mois. L&rsquo;objectif n&rsquo;\u00e9tait pas simplement d&rsquo;obtenir un programme fonctionnel, mais de conserver au maximum la structure du projet original, avec une correspondance entre les fichiers et les diff\u00e9rentes parties du code C++ et Rust.<br \/>\n&nbsp;<br \/>\n<a href=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-scaled.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-136634\" src=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-scaled.png\" alt=\"\" width=\"477\" height=\"134\" srcset=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-scaled.png 2560w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-300x84.png 300w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-1024x288.png 1024w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-768x216.png 768w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-1536x432.png 1536w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2026\/09\/ruzu-2048x576.png 2048w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/a><br \/>\n&nbsp;<br \/>\nRuzu int\u00e8gre 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\u00e9e par rdynarmic, un portage Rust de Dynarmic, avec des backends natifs x86-64 et ARM64. Le projet comprend \u00e9galement rxbyak, un portage Rust de Xbyak pour la g\u00e9n\u00e9ration de code machine x86-64.<br \/>\n&nbsp;<br \/>\nL&rsquo;\u00e9mulateur est d\u00e9j\u00e0 capable de d\u00e9marrer et d&rsquo;ex\u00e9cuter des jeux commerciaux, avec l&rsquo;objectif affich\u00e9 d&rsquo;atteindre les performances de l&rsquo;impl\u00e9mentation C++ originale. Le projet reste toutefois en d\u00e9veloppement.<br \/>\n&nbsp;<br \/>\nRuzu dispose \u00e9galement d&rsquo;un frontend graphique ainsi que d&rsquo;un frontend en ligne de commande, et peut \u00eatre compil\u00e9 sous Windows, Linux, macOS et plusieurs syst\u00e8mes BSD.<br \/>\n&nbsp;<br \/>\nLes changements sont:<br \/>\n<em>&#8211; Stability: fixed a memory\/GPU\/scheduler deadlock investigated in issue #20. Guest-memory access no longer holds an exclusive memory lock while waiting for GPU work that needs kernel scheduling to complete.<br \/>\n&#8211; Memory-copy performance: copies between processes now use an explicit page table without allocating a temporary memory object or changing the table used by the CPU. Existing GPU caches and scratch buffers are reused.<br \/>\n&#8211; Shader error handling: unsupported or invalid translator operands now produce handled shader exceptions instead of terminating the GPU thread and leaving synchronization waits blocked. Affected draws may still be skipped; this does not add support for those operands.<br \/>\n&#8211; CPU\/GPU sync: corrected tracking of images backed by non-contiguous memory to address texture corruption. Removed a whole-image download path that could overwrite reused guest memory, and restored GPU notifications for exclusive CPU writes.<br \/>\n&#8211; JIT performance: diagnostic environment settings are cached in release builds instead of being queried repeatedly while compiling CPU blocks, reducing compilation overhead. Actual improvements depend on the game and hardware.<br \/>\n&#8211; Testing and diagnostics: added regression coverage for shared memory access, process-specific page-table copies, and shader errors. Windows guest-thread diagnostics can now produce a shorter report without the full profiling history.<\/em><br \/>\n&nbsp;<\/p>\n<p class=\"p_telecharger_icone_zip\"><p class=\"p_telecharger_icone_zip\"><a class=\"telecharger_icone_zip\" href=\"https:\/\/www.emu-france.com\/?wpfb_dl=8403\" title=\"Download Ruzu\">T\u00e9l\u00e9charger Ruzu v0.1.1 RC4 (48.7 Mo)<\/a><\/p><\/p>\n<p class=\"p_site_officiel\"><a class=\"site_officiel\" href=\"https:\/\/github.com\/vricosti\/ruzu-emu\" target=\"_blank\" rel=\"noopener\">Site Officiel<\/a><\/p>\n<p class=\"p_en_savoir_plus\"><a class=\"en_savoir_plus\" href=\"https:\/\/www.emu-france.com\/emulateurs\/5-consoles-de-salon\/467-nintendo-switch-console\/\">En savoir plus&#8230;<\/a><\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=137476\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Ruzu est un \u00e9mulateur Nintendo Switch \u00e9crit en Rust, d\u00e9velopp\u00e9 comme une exp\u00e9rience visant \u00e0 d\u00e9terminer si l&rsquo;IA, via des mod\u00e8les de langage (LLM), pouvait r\u00e9aliser le portage complet d&rsquo;un projet logiciel de tr\u00e8s grande taille de C++ vers Rust. &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-137476","post","type-post","status-publish","format-standard","hentry","category-par-defaut","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pKi2R-zLm","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/137476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=137476"}],"version-history":[{"count":1,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/137476\/revisions"}],"predecessor-version":[{"id":137477,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/137476\/revisions\/137477"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=137476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=137476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=137476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}