{
  "added_at": "2026-10-20",
  "additional_evidence_urls": [
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/CONTRIBUTING.md#L30-L36",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/CONTRIBUTING.md#L167-L196",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/tests/README.md",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/web/README.md#L33-L82",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/core/src/avm2/globals/README.md#L111-L127",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/Cargo.toml",
    "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/LICENSE.md",
    "https://github.com/ruffle-rs/ruffle/releases/tag/v0.7.1",
    "https://ruffle.rs/compatibility"
  ],
  "category": "reconstruction-cases",
  "description_en": "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.",
  "description_zh": "用 Rust 重新实现 Adobe Flash Player，使从 ActionScript 1/2（AVM1）到 ActionScript 3（AVM2）的 SWF 内容能在原生桌面播放器中运行，或通过 WebAssembly 以自托管脚本或浏览器扩展的形式在浏览器中运行。其贡献指南称，行为依据对 Flash Player 输出的观察或 Adobe 开源的 avmplus 等许可兼容来源确定，并禁止反编译 Flash Player、Flash Professional 或 Animate。回归测试运行贡献者自制的 SWF，将其 trace 输出（以及可选的渲染图像）与官方调试版 Flash Player 的记录进行比较。",
  "entry_url": "https://awesomerea.org/resources/ruffle-flash-player-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/ruffle-flash-player-case/",
  "evidence_url": "https://github.com/ruffle-rs/ruffle/blob/ea24ef78aa6c898e8170c1a603a496dd1131bd6c/README.md",
  "group": "cases",
  "id": "ruffle-flash-player-case",
  "json_url": "https://awesomerea.org/resources/ruffle-flash-player-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/ruffle-flash-player-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/ruffle-flash-player-case/index.md",
  "name": "Ruffle: a Rust reimplementation of Adobe Flash Player",
  "name_zh": "Ruffle：用 Rust 重新实现的 Adobe Flash Player",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "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.",
    "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.",
    "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.",
    "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.",
    "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."
  ],
  "requirements_zh": [
    "README 称 Ruffle 对 ActionScript 1、2、3 的支持已相当不错，但远未完成。审阅时，网站的兼容性页面报告 AVM1 语言支持 99%、API 82%，AVM2 语言支持 90%、API 82%，并承认 AVM1 内容存在一些图形不准确之处。审阅时的版本为 v0.7.1，发布于 2026-10-07，说明称除修复扩展发布问题外与 v0.7.0 相同；夜间构建仍在持续，所审阅的 master 分支提交比该版本多 73 个提交。",
    "使用者需自行提供 SWF 文件或嵌入它们的网页。发布资源包括 Linux（x86_64、i686 和 aarch64）、macOS 通用版和 Windows（x86 与 x86_64）桌面构建、自托管网页包和浏览器扩展包，以及可复现的源码归档；README 还提到 Firefox 和 Chrome 扩展、Flathub、npm，以及独立的 Android 项目。",
    "构建需要最新稳定版 Rust（工作区使用 2024 edition），并需在 PATH 中提供 Java 以编译 ActionScript 3 内置类；Linux 构建需要 ALSA、udev、fontconfig、FreeType 和 OpenSSL 开发包。网页构建还需要 wasm32-unknown-unknown 目标、Node.js 与 npm 7+、wasm-bindgen-cli 0.2.127 以及 Binaryen。附带的 scanner 和 exporter 工具可批量解析 SWF 并生成 PNG 截图。",
    "贡献者被要求将每个测试 SWF 与其源文件一同提交，预期的 trace 输出和截图来自运行调试版 Flash Player 的结果；已知失败可在测试的 test.toml 中标注。这些测试检验 Ruffle 在自制测试文件上的行为。",
    "采用 MIT 或 Apache-2.0 双许可（GitHub 显示为 NOASSERTION）；LICENSE.md 列出第三方依赖的许可证，仓库还附带来自 Flex SDK 的 asc.jar，用于编译其 ActionScript 类。SWF 内容保留各自权利。"
  ],
  "targets": [
    "game",
    "website"
  ],
  "url": "https://github.com/ruffle-rs/ruffle",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
