案例

Ruffle:用 Rust 重新实现的 Adobe Flash Player

用 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 的记录进行比较。

使用条件与局限

  • 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 在自制测试文件上的行为,并不证明它在所有内容上都与 Flash Player 等价;本次审阅未运行任何测试。
  • 采用 MIT 或 Apache-2.0 双许可(GitHub 显示为 NOASSERTION);LICENSE.md 列出第三方依赖的许可证,仓库还附带来自 Flex SDK 的 asc.jar,用于编译其 ActionScript 类。SWF 内容保留各自权利。所审来源未确立 REA 或 AI 使用。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏 · 网站

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  2. CONTRIBUTING.md#L30-L36 GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  3. CONTRIBUTING.md#L167-L196 GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  4. tests/README.md GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  5. web/README.md#L33-L82 GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  6. core/src/avm2/globals/README.md#L111-L127 GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  7. Cargo.toml GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  8. LICENSE.md GitHub · ruffle-rs/ruffle · 修订 ea24ef7
  9. https://github.com/ruffle-rs/ruffle/releases/tag/v0.7.1
  10. https://ruffle.rs/compatibility