[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5416":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},5416,"ruffle","ruffle-rs\u002Fruffle","ruffle-rs","A Flash Player emulator written in Rust","https:\u002F\u002Fruffle.rs",null,"Rust",18160,1037,156,5568,0,4,23,97,18,44.05,"Other",false,"master",true,[27,28,29,30,31,32],"emulator","flash","hacktoberfest","reimplementation","rust","swf","2026-06-12 02:01:09","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fruffle.rs\">\u003Cimg alt=\"Ruffle\" src=\"https:\u002F\u002Fruffle.rs\u002Flogo.svg\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Factions\">\u003Cimg alt=\"Rust Build Status\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fruffle-rs\u002Fruffle\u002Ftest_rust.yml?label=Rust%20Build&logo=github&branch=master\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Factions\u002Fworkflows\u002Ftest_web.yml\">\u003Cimg alt=\"Web Build Status\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fruffle-rs\u002Fruffle\u002Ftest_web.yml?label=Web%20Build&logo=github&branch=master\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fflathub.org\u002Fapps\u002Frs.ruffle.Ruffle\">\u003Cimg alt=\"Ruffle Flathub\" src=\"https:\u002F\u002Fimg.shields.io\u002Fflathub\u002Fv\u002Frs.ruffle.Ruffle?color=007acc&logo=flathub\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@ruffle-rs\u002Fruffle\">\u003Cimg alt=\"Ruffle npm\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@ruffle-rs\u002Fruffle?color=007acc&logo=npm\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fruffle-nightly-bin\">\u003Cimg alt=\"Ruffle AUR\" src=\"https:\u002F\u002Fimg.shields.io\u002Faur\u002Fversion\u002Fruffle-nightly-bin?logo=archlinux\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fruffle\">\u003Cimg alt=\"Ruffle Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F610531541889581066?label=&color=7389d8&labelColor=6a7ec2&logoColor=ffffff&logo=discord\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcrowdin.com\u002Fproject\u002Fruffle\">\u003Cimg alt=\"Ruffle translations\" src=\"https:\u002F\u002Fbadges.crowdin.net\u002Fruffle\u002Flocalized.svg\" \u002F>\u003C\u002Fa>\n  \u003Cbr \u002F>\n  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fruffle.rs\">website\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fruffle.rs\u002Fdemo\">demo\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Freleases\">nightly builds\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Fwiki\">wiki\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n# Ruffle\n\nRuffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both the desktop and the web using WebAssembly.\n\n## Table of Contents\n* [Project status](#project-status)\n* [Using Ruffle](#using-ruffle)\n* [Building from source](#building-from-source)\n  * [Prerequisites](#prerequisites)\n  * [Linux prerequisites](#linux-prerequisites)\n  * [Desktop](#desktop)\n    * [Build](#build)\n    * [macOS](#macos)\n  * [Web or Extension](#web-or-extension)\n  * [Android](#android)\n  * [Scanner](#scanner)\n  * [Exporter](#exporter)\n* [Structure](#structure)\n* [Sponsors](#sponsors)\n* [License](#license)\n* [Contributing](#contributing)\n\n\n## Project status\n\nRuffle supports ActionScript 1, 2 and 3 pretty well, but it's still not finished by any means. Please report any issues in the [Issue Tracker](https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Fissues).\n\n## Using Ruffle\n\nThe easiest way to try out Ruffle is to visit the [web demo page](https:\u002F\u002Fruffle.rs\u002Fdemo\u002F), then click the \"Select File\" button to load a SWF file of your choice.\n\n[Nightly builds](https:\u002F\u002Fruffle.rs\u002Fdownloads#nightly-releases) of Ruffle are available for desktop and web platforms.\n\nFor more detailed instructions, see our [wiki page](https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle\u002Fwiki\u002FUsing-Ruffle).\n\n## Building from source\n\n### Prerequisites\n\n* Latest stable channel of [Rust](https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall)\n* Java, available on your PATH as `java` (required for building the library containing the builtin Flash classes for ActionScript 3)\n\n### Linux prerequisites\n\nThe following are typical dependencies for Linux:\n\n* Ubuntu\u002FDebian:\n  ```shell\n  sudo apt install pkg-config libasound2-dev libudev-dev default-jre-headless g++\n  ```\n\n* Fedora\u002FRHEL:\n  ```shell\n  sudo dnf install pkgconf-pkg-config alsa-lib-devel systemd-devel java-latest-openjdk-headless gcc-c++\n  ```\n\n### Desktop\n\n#### Build\n\nUse the following command to build and run the desktop app:\n\n`cargo run --release --package=ruffle_desktop`\n\nTo run a specific SWF file, pass the SWF path as an argument:\n\n`cargo run --release --package=ruffle_desktop -- test.swf`\n\nTo build in debug mode, simply omit `--release` from the command.\n\n#### macOS\n\nRuffle desktop can be built from our [Homebrew Tap](https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fhomebrew-ruffle\u002F):\n\n`brew install --HEAD ruffle-rs\u002Fruffle\u002Fruffle`\n\n_Note: because it is HEAD-only, you'll need to run `brew upgrade --fetch-HEAD ruffle` each time you want to update._\n\n### Web or Extension\n\nFollow [the instructions in the web directory](web\u002FREADME.md#building-from-source) for building\neither the web or browser extension version of Ruffle.\n\nThis project is tested with BrowserStack.\n\n### Android\n\nFollow the [instructions](https:\u002F\u002Fgithub.com\u002Fruffle-rs\u002Fruffle-android\u002Fblob\u002Fmain\u002FCONTRIBUTING.md#building-from-source) in the `ruffle-android` project for building the Android application of Ruffle.\n\n### Scanner\n\nIf you have a collection of \"real world\" SWFs to test against, the scanner may be used to benchmark\nruffle's parsing capabilities. Provided with a folder and an output filename, it will attempt to read\nall of the Flash files and report on the success of such a task.\n\n`cargo run --release --package=ruffle_scanner -- scan folder\u002Fwith\u002Fswfs\u002F results.csv`\n\n### Exporter\n\nIf you have a SWF file and would like to capture an image of it, you may use the exporter tool.\nThis currently requires hardware acceleration, but can be run headless (with no window).\n\n- `cargo run --release --package=exporter -- path\u002Fto\u002Ffile.swf`\n- `cargo run --release --package=exporter -- path\u002Fto\u002Ffile.swf path\u002Fto\u002Fscreenshots --frames 5`\n\n## Structure\n\n- `core` - core emulator and common code\n- `swf` - SWF and ActionScript parser\n- `desktop` - desktop client (uses `wgpu-rs`)\n- `web` - web client and browser extension (uses `wasm-bindgen`)\n- `render` - various rendering backends for both desktop and web\n- `video` - video decoding backends\n- `flv` - Flash Video decoder\n- `wstr` - a Flash-compatible implementation of strings\n- `scanner` - a utility to bulk parse SWF files\n- `exporter` - a utility to generate PNG screenshots of a SWF file\n\n## Sponsors\n\nYou can support the development of Ruffle via [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fruffle-rs). Your sponsorship will help to ensure the accessibility of Flash content for the future. Thank you!\n\nSincere thanks to the diamond level sponsors of Ruffle:\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.newgrounds.com\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fnewgrounds.png\" alt=\"Newgrounds.com\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.cpmstar.com\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fcpmstar.png\" alt=\"CPMStar\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdeepnight.net\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fdeepnight.png\" alt=\"Sébastien Bénard\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.crazygames.com\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fcrazygames.png\" alt=\"Crazy Games\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.coolmathgames.com\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fcoolmathgames.png\" alt=\"Cool Math Games\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.nytimes.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fnyt.png\" alt=\"The New York Times\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.armorgames.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Farmorgames.png\" alt=\"Armor Games\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.ondaeduca.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fondaeduca.png\" alt=\"Onda Educa\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.twoplayergames.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Ftwoplayergames.png\" alt=\"TwoPlayerGames.org\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.wowgame.jp\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fwowgame.png\" alt=\"wowgame.jp\">\u003C\u002Fa>\n  \u003Ca href=\"http:\u002F\u002Fkupogames.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fmattroszak.png\" alt=\"Matt Roszak\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.dolldivine.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fdolldivine.png\" alt=\"Doll Divine\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fmovavi.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fmovavi.svg\" alt=\"Movavi\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.kongregate.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fkongregate.svg\" alt=\"Kongregate\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.bubbleshooter.net\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fbubble-shooter.png\" alt=\"Bubble Shooter\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.neopets.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fruffle.rs\u002Fsponsors\u002Fneopets.png\" alt=\"Neopets\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n## License\n\nRuffle is licensed under either of\n\n- Apache License, Version 2.0 (http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0)\n- MIT License (http:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\nat your option.\n\nRuffle depends on third-party libraries under compatible licenses. See [LICENSE.md](LICENSE.md) for full information.\n\n### Contributing\n\nRuffle welcomes contribution from everyone. See [CONTRIBUTING.md](CONTRIBUTING.md) for help getting started.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you shall be dual licensed as above, without any\nadditional terms or conditions.\n\nThe entire Ruffle community, including the chat room and GitHub project, is expected to abide by the [Code of Conduct](https:\u002F\u002Fwww.rust-lang.org\u002Fpolicies\u002Fcode-of-conduct) that the Rust project itself follows.\n","Ruffle 是一个用 Rust 编程语言编写的 Adobe Flash Player 模拟器，旨在为桌面和 Web 平台提供支持。它通过 WebAssembly 技术在浏览器中运行，能够很好地支持 ActionScript 1、2 和 3。Ruffle 的主要特点是其跨平台能力和对旧版 Flash 内容的兼容性。该项目适用于需要继续访问或展示基于 Flash 的内容但又受限于现代浏览器不再支持 Flash 的场景，如教育材料、游戏或多媒体应用等。",2,"2026-06-11 03:03:11","top_language"]