About this project

Ruffle is an open-source emulator for Adobe Flash Player, implemented in Rust. It runs both as a desktop application and in the browser through WebAssembly, and is intended to keep legacy Flash content (SWF files) playable after the official Flash Player was discontinued. What it provides: - ActionScript 1, 2 and 3 support, described by the project as fairly complete but still under development. - A web demo where users can load a local SWF file directly in the browser. - Nightly builds for desktop and web platforms. - Browser extensions for Firefox and Chrome, a Flathub package, an npm package, and an AUR package. - A desktop client built on wgpu-rs, with optional profiling features (Tracy) and render debug labels. - A scanner utility for bulk-parsing collections of SWF files and reporting parse success. - An exporter utility that renders PNG screenshots of a SWF, optionally across multiple frames, and can run headless. Architecture highlights from the README: - core: core emulator and common code - swf: SWF and ActionScript parser - desktop: desktop client - web: web client and browser extension - render: rendering backends for desktop and web - video: video decoding backends - flv: Flash Video decoder - wstr: Flash-compatible string implementation - scanner and exporter: command-line utilities Building from source requires a recent stable Rust toolchain and Java on the PATH (for the built-in ActionScript 3 classes). Linux users need typical development packages such as ALSA, udev, fontconfig, freetype and OpenSSL headers. Desktop builds run via cargo, and a specific SWF can be passed as an argument. macOS users can install a HEAD build through the project's Homebrew tap. Web and extension builds follow instructions in the web directory, and the Android app lives in a separate ruffle-android repository. Licensing is dual Apache-2.0 / MIT, and contributions are accepted under the same terms. The project publishes a code of conduct and welcomes community contributions.