Case study
Ruffle: a Rust reimplementation of Adobe Flash Player
Reimplements Adobe Flash Player in Rust so that SWF content, from ActionScript 1/2 (AVM1) to ActionScript 3 (AVM2), runs in a native desktop player or in browsers through WebAssembly, as a self-hosted script or a browser extension. Its contributor guide says behavior comes from observing Flash Player's output or from license-compatible sources such as Adobe's open avmplus code, and forbids decompiling Flash Player, Flash Professional or Animate. Regression tests run contributor-made SWFs and compare their trace output, and optionally rendered images, with captures from the official debug Flash Player.
- Targets
- Game · Website
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: Users supply the SWF files or the pages that embed them. Release assets cover Linux (x86_64, i686 and aarch64), macOS universal and Windows (x86 and x86_64) desktop builds, self-hosted web and browser-extension packages and a reproducible source archive; the README also points to Firefox and Chrome extensions, Flathub, npm and a separate Android project.
- Prerequisites: Building needs the latest stable Rust (the workspace uses the 2024 edition) and Java on PATH to compile the ActionScript 3 built-in classes; Linux builds need ALSA, udev, fontconfig, FreeType and OpenSSL development packages. Web builds also need the wasm32-unknown-unknown target, Node.js with npm 7+, wasm-bindgen-cli 0.2.127 and Binaryen. Bundled scanner and exporter tools bulk-parse SWFs and render PNG screenshots.
- Scope: The README says Ruffle supports ActionScript 1, 2 and 3 pretty well but is not finished. At review, the website's compatibility page reported 99% of the AVM1 language and 82% of its API, and 90% of the AVM2 language and 82% of its API, and acknowledged graphical inaccuracies in AVM1 content. Release at review: v0.7.1, published 2026-10-07 and described as equivalent to v0.7.0 apart from extension-publishing fixes; nightly builds continue, and the reviewed master commit is 73 commits ahead.
- Testing evidence: Contributors are asked to commit each test SWF with its source, and expected trace output and screenshots come from running the debug Flash Player; known failures can be marked in a test's test.toml. These tests check Ruffle's behavior on authored test files.
- License: Dual-licensed MIT or Apache-2.0 (GitHub reports NOASSERTION); LICENSE.md lists third-party dependency licenses, and the repository includes asc.jar from the Flex SDK to compile its ActionScript classes. SWF content keeps its own rights.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · ruffle-rs/ruffle · Revision ea24ef7
- CONTRIBUTING.md#L30-L36 GitHub · ruffle-rs/ruffle · Revision ea24ef7
- CONTRIBUTING.md#L167-L196 GitHub · ruffle-rs/ruffle · Revision ea24ef7
- tests/README.md GitHub · ruffle-rs/ruffle · Revision ea24ef7
- web/README.md#L33-L82 GitHub · ruffle-rs/ruffle · Revision ea24ef7
- core/src/avm2/globals/README.md#L111-L127 GitHub · ruffle-rs/ruffle · Revision ea24ef7
- Cargo.toml GitHub · ruffle-rs/ruffle · Revision ea24ef7
- LICENSE.md GitHub · ruffle-rs/ruffle · Revision ea24ef7
- https://github.com/ruffle-rs/ruffle/releases/tag/v0.7.1
- https://ruffle.rs/compatibility
More in Websites
- Littlebird.ai static home-page rebuild · Case study
- Sheypoor MCP: mapping marketplace APIs from browser traffic · Case study
- ZCode-Android: reconstructing the ZCode remote-control client · Case study
- Power BI API Scraper: decoding a published report query format · Case study
- webcrack · Tool
- humanify · Tool