Ruffle est un émulateur Adobe Flash Player essentiel pour exécuter du contenu Flash hérité (jeux, animations, applications et bannières SWF). Il fonctionne comme une application autonome sur tous les systèmes d'exploitation (y compris Windows, macOS et Linux) et s'intègre dans les navigateurs via WebAssembly.
Ruffle fournit des versions distinctes pour Windows, macOS et Linux qui fonctionnent comme des programmes classiques : il suffit d'exécuter l'exécutable et d'ouvrir le fichier SWF souhaité à l'intérieur.
Ruffle exploite la sécurité mémoire du langage Rust et le sandbox du navigateur moderne. Cela permet d'exécuter d'anciens contenus potentiellement risqués sans risque d'infection du système ou de fuite de données.
L'émulateur combine la prise en charge à la fois de l'AVM1 plus ancienne (ActionScript 1 et 2, utilisée jusqu'en 2006) et de l'AVM2 plus complexe (ActionScript 3). Ceci est nécessaire pour le bon fonctionnement de pratiquement tout contenu Flash, des animations du début des années 2000 aux jeux et applications complexes sortis juste avant l'arrêt de la technologie.
Liens de téléchargement :
Tous les liens mènent vers des sources officielles : les versions pour Windows (x86_64), macOS (universelle pour Intel et Apple Silicon), Linux (x86_64 et ARM64 pour Raspberry Pi et appareils ARM) sont distribuées via le dépôt GitHub du projet Ruffle, tandis que la version Linux au format Flatpak est disponible via le catalogue officiel Flathub avec signatures numériques et isolation de l'application.
- Principales caractéristiques de Ruffle
- 12 capacités techniques méconnues de Ruffle
- Installation de la version bureau de Ruffle
- Installation de Ruffle comme extension de navigateur
- Installation sur Chrome / Chromium
- Installation sur Firefox
- Installation sur Safari
- Installation de Ruffle sur un site web
- Vérification du fonctionnement
- Dépannage
Principales caractéristiques de Ruffle
Intégration via WebAssembly. Pour le fonctionnement dans le navigateur, Ruffle est compilé en WebAssembly (Wasm) — un bytecode de bas niveau exécuté dans le sandbox isolé du navigateur avec des performances proches du natif. Cela permet à l'émulateur de charger et de traiter des graphismes Flash complexes et leur logique sans avoir besoin d'installer des plugins NPAPI/PPAPI obsolètes et peu sécurisés.
Détection automatique et polyfill du contenu Flash. La version web de Ruffle inclut un détecteur JavaScript qui analyse la structure DOM de la page à la recherche d'éléments object, embed et applet, ainsi que de fichiers avec l'extension .swf. Lors de la détection de ce contenu, Ruffle le remplace automatiquement par son propre lecteur, corrigeant ainsi de manière transparente la page pour l'utilisateur et restaurant la fonctionnalité des éléments Flash.
Double mode de fonctionnement (application bureau et extension web). Ruffle offre aux utilisateurs une grande flexibilité : il peut être utilisé comme une application de bureau autonome pour la lecture locale de SWF (il suffit d'associer les fichiers à l'exécutable Ruffle) ou comme une extension de navigateur qui s'intègre à l'environnement de navigation web, fournissant le support Flash sur n'importe quel site.
Support d'ActionScript 1.0 et 2.0 (AVM1). Ruffle implémente la machine virtuelle AVM1, garantissant la compatibilité avec une vaste quantité de contenus créés avant 2006 et jusqu'en 2013. Le niveau de compatibilité actuel pour les constructions du langage AVM1 atteint 99%, et pour les API — 81%, assurant le bon fonctionnement de la grande majorité des jeux et animations Flash anciens.
Support d'ActionScript 3.0 (AVM2). Pour le contenu créé après 2006, Ruffle inclut une implémentation d'AVM2. Bien que le travail de compatibilité soit activement en cours, l'émulateur fournit déjà un niveau de support suffisant pour exécuter de nombreux jeux et applications complexes écrits en ActionScript 3, en élargissant constamment la couverture des API et les capacités du langage.
Sécurité au niveau du langage Rust. L'un des principaux avantages architecturaux de Ruffle est son utilisation du langage Rust. Rust garantit la sécurité mémoire au moment de la compilation, éliminant complètement des classes entières de vulnérabilités qui affligeaient le lecteur Flash original d'Adobe, telles que les débordements de tampon, les doubles libérations et les erreurs use-after-free.
Isolation dans le sandbox du navigateur. Lorsqu'il fonctionne dans un environnement web, Ruffle (via WebAssembly) se conforme entièrement à la politique de sécurité du navigateur. Cela ajoute une couche d'isolation supplémentaire : l'émulateur n'a pas d'accès direct au système de fichiers de l'utilisateur ni à d'autres processus système, ce qui rend son exploitation extrêmement difficile par rapport au plugin Flash classique.
Gestion efficace de la mémoire. Contrairement au lecteur Flash original, qui utilisait un ramasse-miettes avec des pauses non déterministes, Ruffle hérite du modèle de propriété stricte de Rust. Cela permet une utilisation plus prévisible de la mémoire, réduisant la fragmentation et éliminant les fuites de mémoire qui entraînaient souvent un comportement instable du navigateur.
Support de la ligne de commande. La version bureau de Ruffle offre une interface en ligne de commande entièrement fonctionnelle. Les utilisateurs peuvent exécuter l'émulateur avec des paramètres, par exemple : ruffle nomfichier.swf pour un fichier local, ou ruffle https://exemple.com/nomfichier.swf pour lire un SWF depuis une URL. La commande ruffle --help affiche une liste complète de tous les arguments et paramètres disponibles.
Code source ouvert et transparence du développement. Ruffle est distribué sous les licences Apache 2.0 et MIT. La complète ouverture du code source signifie que tout développeur peut auditer la sécurité de l'émulateur, contribuer à des correctifs et participer à son développement, éliminant la possibilité de fonctionnalités cachées ou de vulnérabilités qui pourraient être introduites par des développeurs d'entreprise.
Compatibilité avec une large gamme de navigateurs. Grâce à la technologie WebAssembly, Ruffle est supporté par tous les navigateurs modernes, y compris Google Chrome, Mozilla Firefox, Microsoft Edge, Safari, Opera, Brave et Vivaldi. Cela garantit une expérience cohérente avec le contenu Flash, quelles que soient les préférences de l'utilisateur en matière de moteurs de navigateur (Chromium, Gecko ou WebKit).
Support des navigateurs mobiles (iOS et Android). Contrairement au lecteur Flash original d'Adobe, qui n'a jamais été officiellement supporté sur iOS et ne l'était que partiellement sur Android, Ruffle fonctionne sur les plateformes mobiles. Cela permet aux jeux et animations Flash de tourner sur les smartphones et tablettes directement via le navigateur mobile, ouvrant l'accès aux contenus archivés pour le public mobile.
Aucune configuration requise. Ruffle est conçu selon le principe "installer et oublier". Après l'installation de l'extension ou le lancement de l'application bureau, l'émulateur ne nécessite aucune configuration complexe. Il détecte automatiquement les paramètres de lecture tels que la taille de la scène, le taux d'images et le type d'interaction, appliquant des réglages optimaux sans intervention de l'utilisateur.
Protection contre les vulnérabilités zero-day. Parce que Ruffle n'est pas un plugin, n'utilise pas d'API obsolètes et que son code est écrit en Rust en mettant l'accent sur la sécurité, il est immunisé contre les attaques qui étaient caractéristiques d'Adobe Flash Player. Cela en fait une solution idéale pour les organisations qui doivent maintenir l'accès à des contenus hérités sans pouvoir risquer une compromission du système.
Compatibilité avec diverses méthodes d'installation. Ruffle propose plusieurs méthodes de déploiement. Les développeurs web peuvent l'installer comme une extension statique dans les navigateurs basés sur Chromium (via le mode développeur) ou comme un module complémentaire temporaire dans Firefox (via about:debugging). L'intégration par l'insertion de code JavaScript simple côté serveur est également disponible.
Lecture de contenu en ligne et hors ligne. La version bureau de Ruffle permet d'ouvrir et de lire des fichiers SWF enregistrés localement sur l'ordinateur. Cela rend l'émulateur un outil indispensable pour les collectionneurs, les archivistes et les chercheurs travaillant avec des archives locales de jeux et d'animations Flash.
Performances de rendu élevées. Ruffle utilise des API graphiques modernes (telles que OpenGL, Vulkan, DirectX ou WebGL) via des bibliothèques multiplateformes. Cela fournit une accélération matérielle pour le rendu des graphismes vectoriels et bitmap, permettant une lecture fluide même sur des appareils plus faibles où le lecteur Flash original pouvait être saccadé.
Développement actif et mises à jour fréquentes. Le projet est en développement actif. Les versions sortent régulièrement et incluent à la fois des corrections de bogues critiques et un support élargi des API ActionScript. Par exemple, les versions récentes ont corrigé des cas particuliers dans les méthodes String.indexOf et lastIndexOf, et gèrent correctement les indices négatifs dans Array.indexOf.
Intégration avec les principales archives et plateformes. Ruffle a été choisi comme lecteur officiel pour la lecture de contenu Flash par des géants tels que l'Internet Archive, Newgrounds, Coolmath Games et Armor Games. Cela confirme le haut degré de fiabilité et de compatibilité de l'émulateur, ainsi que sa capacité à fonctionner sous de fortes charges dans des conditions réelles.
Support des sauvegardes et de l'état des jeux. Comme le lecteur Flash original, Ruffle supporte les Local Shared Objects (LSO), que de nombreux jeux utilisent pour sauvegarder la progression. L'émulateur émule correctement les mécanismes de lecture et d'écriture des données vers ce stockage, garantissant l'intégrité des sauvegardes pendant l'exécution de l'application.
Émulation précise des temporisations et du taux d'images. Ruffle émule avec précision la minuterie interne du Flash Player, ce qui est critique pour la logique des jeux et des animations. Cela assure une synchronisation correcte des événements, du son et du mouvement des objets, évitant les situations où un jeu tourne plus lentement ou plus rapidement que l'original.
Support de l'interaction DOM et JavaScript (ExternalInterface). Pour les applications web complexes qui utilisaient l'API ExternalInterface pour échanger des données entre ActionScript et JavaScript, Ruffle implémente un pont compatible. Cela permet à l'émulateur de gérer correctement les appels de fonction et le transfert de données, préservant ainsi l'interactivité du contenu avec la page web environnante.
Mise à l'échelle automatique et adaptation de la résolution. Lors de la lecture de contenu Flash créé pour une résolution spécifique (par exemple 800x600), Ruffle applique automatiquement des algorithmes de mise à l'échelle pour s'adapter à la taille actuelle de la fenêtre du navigateur ou de l'application de bureau. Il préserve les proportions et la qualité de l'image, et gère correctement les zones d'interaction de la souris.
Support de divers formats multimédia. L'émulateur supporte le décodage de divers formats multimédia pouvant être intégrés dans les fichiers SWF, y compris MP3 pour l'audio et la compression vidéo utilisée dans les versions ultérieures de Flash. Le décodage est effectué via des bibliothèques hautes performances écrites en Rust, réduisant la charge système.
Débogage et journalisation avancés. Pour les développeurs et les utilisateurs avancés, Ruffle offre la possibilité d'activer des journaux détaillés du fonctionnement des machines virtuelles AVM1/AVM2. Cela permet de diagnostiquer les problèmes de compatibilité, de suivre les erreurs dans le code ActionScript et de comprendre les processus internes de l'émulation pour un réglage plus précis.
Émulation du curseur et des éléments interactifs. Ruffle gère correctement les changements de style de curseur spécifiés par le contenu Flash. Par exemple, pour les éléments interactifs comme LoaderDisplay, l'émulateur change automatiquement le curseur standard en pointeur, imitant le comportement du lecteur Flash original et fournissant une navigation familière pour l'utilisateur.
Support des versions Nightly pour un accès anticipé. En plus des versions stables, l'équipe Ruffle donne accès à des versions expérimentales quotidiennes (Nightly builds). Ces versions contiennent les derniers correctifs et innovations non encore inclus dans la version stable.
Préservation du patrimoine culturel numérique. Ce n'est pas seulement une fonction technique, mais un objectif fondamental du projet. Ruffle a été créé comme un outil pour préserver le contenu historique d'Internet. Grâce à sa capacité à fonctionner dans les navigateurs modernes sans compromettre la sécurité, des millions de jeux Flash, animations et applications qui auraient été définitivement perdus après l'arrêt d'Adobe Flash Player restent accessibles pour les générations futures.
12 capacités techniques méconnues de Ruffle
-
Utilisation de WGPU comme moteur de rendu principal. Contrairement à de nombreux émulateurs qui reposent sur OpenGL hérité, Ruffle utilise la bibliothèque WGPU — une API graphique moderne, sûre et multiplateforme. Sur bureau, WGPU sélectionne automatiquement le backend bas niveau le plus optimal : Vulkan, DirectX 12 ou Metal. Dans le navigateur, il peut fonctionner via WebGPU (là où c'est disponible) ou émuler le fonctionnement via WebGL avec une perte de performance minimale.
-
Support WebGPU dans le navigateur pour des performances maximales. Pour les utilisateurs de navigateurs modernes (par exemple, les dernières versions de Chrome et Edge), Ruffle peut utiliser l'API de pointe WebGPU. Cela réduit considérablement le temps de compilation des shaders et diminue la surcharge par rapport au backend WebGL standard, ce qui est critique pour les graphismes 3D complexes et les applications Stage3D.
-
Réglage fin du moteur de rendu (
canvas,webgl,wgpu-webgl). Peu de gens savent que le comportement de rendu peut être contrôlé manuellement. En plus duwgpu-webglstandard, il existe une option pour forcer l'activation :-
webgl— un backend classique qui s'initialise plus rapidement et peut être utile pour un contenu simple ne nécessitant pas d'effets bitmap complexes. -
canvas— le backend le plus lent, mais le plus précis. C'est le seul qui met correctement à l'échelle les traits de contour fins dans les graphiques vectoriels, qui peuvent apparaître trop épais lors de l'utilisation de l'accélération matérielle.
-
-
Émulation de
Stage3Det compilation d'AGALversWGSL. Ruffle supporte non seulement les graphismes 2D mais aussi l'accélération 3D via l'APIStage3D(Context3D). Les shaders écrits en AGAL (Adobe Graphics Assembly Language) sont compilés "à la volée" en WGSL (WebGPU Shading Language) ou GLSL moderne. Cela permet d'exécuter des jeux et applications 3D complexes créés pour Flash Player 11 et versions ultérieures, en utilisant un pipeline complet de shaders programmables. -
Support de
fscommandpour la rétrocompatibilité. Ruffle a conservé le support du mécanismefscommand, ancien mais important. Cela permet aux anciennes animations Flash (créées avant ExternalInterface) d'interagir avec JavaScript sur la page, en envoyant des commandes et arguments arbitraires. Dans l'implémentation moderne de Ruffle, ces commandes sont traitées viaonFSCommand, permettant la fonctionnalité même pour des contenus web très anciens. -
Double tampon pour Context3D. Lorsqu'il travaille avec du contenu 3D, Ruffle utilise un mécanisme sophistiqué de double tampon (back buffer / front buffer). Il s'agit d'une technique standard mais cruciale pour les performances, permettant de rendre l'image suivante dans le tampon arrière pendant que l'image actuelle est affichée à l'écran, éliminant les artefacts visuels (déchirure d'image) dans les jeux dynamiques.
-
Outils de benchmarking :
ruffle_scanneretexporter. Dans le dépôt Ruffle, il existe des outils utilitaires non inclus dans la version standard mais disponibles pour les développeurs :-
ruffle_scanner— permet de tester la compatibilité de l'émulateur avec un dossier entier de fichiers SWF, générant un rapport CSV sur le succès de l'analyse. -
exporter— un outil pour générer en masse des captures d'écran PNG à partir de fichiers SWF, qui peut fonctionner en mode headless (sans interface graphique), utile pour les tests automatisés et la création d'aperçus.
-
-
Isolation complète via le sandbox Flatpak. Pour les utilisateurs Linux, il existe une version officielle de Ruffle au format Flatpak. Ce n'est pas seulement une méthode d'installation, mais une couche de sécurité supplémentaire : l'application s'exécute dans un environnement isolé où toutes les sauvegardes, configurations et journaux sont stockés strictement dans le répertoire home de Flatpak (
~/.var/app/rs.ruffle.Ruffle/), sans accès au reste du système. -
Support d'intégration via Homebrew et Scoop. Pour les utilisateurs expérimentés, Ruffle offre des méthodes d'installation avancées au-delà du téléchargement manuel. Sur macOS, il peut être installé via Homebrew (
brew install --HEAD ruffle-rs/ruffle/ruffle), permettant des mises à jour automatiques vers la dernière version nightly. Sur Windows, le gestionnaire de paquets Scoop remplit une fonction similaire. -
Système de stockage de données transparent (SharedObjects). Ruffle émule avec précision le système de stockage local Flash (LSO — Local Shared Objects). Cependant, contrairement au lecteur propriétaire, l'emplacement de ces fichiers est standardisé et transparent pour l'utilisateur. Sous Windows, ils se trouvent dans
%AppData%\Local\Ruffle\SharedObjects\, sous Linux — dans~/.local/share/ruffle/SharedObjects/. Cela permet une sauvegarde manuelle des sauvegardes de vieux jeux. -
Configuration via l'API JavaScript et les paramètres globaux. Pour les développeurs web, Ruffle fournit une puissante API JavaScript, permettant non seulement d'intégrer le lecteur mais aussi de contrôler son état. Des méthodes sont disponibles pour charger un SWF par programme (
load), contrôler le volume (volume), mettre en pause (suspend/resume), et intercepter les sortiestrace()d'ActionScript pour le débogage viatraceObserver. -
Signature automatique et notarisation des versions macOS. Dans le processus CI/CD, toutes les versions nightly de Ruffle pour macOS subissent une signature de code et une notarisation par Apple. Cela signifie que même les versions instables de l'émulateur ne seront pas bloquées par Gatekeeper comme logiciels non sécurisés, assurant un fonctionnement sans problème sur les dernières versions de macOS où les exigences de sécurité sont strictes.