{"id":13441188,"url":"https://github.com/ruffle-rs/ruffle","last_synced_at":"2026-04-12T02:03:00.677Z","repository":{"id":37390537,"uuid":"183483988","full_name":"ruffle-rs/ruffle","owner":"ruffle-rs","description":"A Flash Player emulator written in Rust","archived":false,"fork":false,"pushed_at":"2026-03-13T00:07:57.000Z","size":173028,"stargazers_count":17834,"open_issues_count":5676,"forks_count":983,"subscribers_count":154,"default_branch":"master","last_synced_at":"2026-03-13T06:55:29.146Z","etag":null,"topics":["emulator","flash","hacktoberfest","reimplementation","rust","swf"],"latest_commit_sha":null,"homepage":"https://ruffle.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruffle-rs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"ruffle"}},"created_at":"2019-04-25T17:53:32.000Z","updated_at":"2026-03-13T05:56:15.000Z","dependencies_parsed_at":"2026-03-13T02:04:18.632Z","dependency_job_id":null,"html_url":"https://github.com/ruffle-rs/ruffle","commit_stats":{"total_commits":13214,"total_committers":206,"mean_commits":64.14563106796116,"dds":0.8353261692144696,"last_synced_commit":"e353fdc1c3e47939807e1d9b109050ed68ca5d62"},"previous_names":[],"tags_count":1669,"template":false,"template_full_name":null,"purl":"pkg:github/ruffle-rs/ruffle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruffle-rs%2Fruffle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruffle-rs%2Fruffle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruffle-rs%2Fruffle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruffle-rs%2Fruffle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruffle-rs","download_url":"https://codeload.github.com/ruffle-rs/ruffle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruffle-rs%2Fruffle/sbom","scorecard":{"id":48762,"data":{"date":"2025-08-04","repo":{"name":"github.com/ruffle-rs/ruffle","commit":"b44fac3cd920852e4ad5fc0e362cf5fdfff4c5e5"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":5.1,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 14 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Code-Review","score":8,"reason":"Found 5/6 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/release_nightly.yml:363","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/release_nightly.yml:364","Info: jobLevel 'actions' permission set to 'read': .github/workflows/release_nightly.yml:358","Info: jobLevel 'checks' permission set to 'read': .github/workflows/release_nightly.yml:360","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release_nightly.yml:361","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/release_nightly.yml:517","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/release_nightly.yml:518","Info: jobLevel 'actions' permission set to 'read': .github/workflows/release_nightly.yml:512","Info: jobLevel 'checks' permission set to 'read': .github/workflows/release_nightly.yml:514","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release_nightly.yml:515","Warn: no topLevel permission defined: .github/workflows/download_translations.yml:1","Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/release_nightly.yml:1","Warn: no topLevel permission defined: .github/workflows/test_extension_dockerfile.yml:1","Warn: no topLevel permission defined: .github/workflows/test_rust.yml:1","Warn: no topLevel permission defined: .github/workflows/test_web.yml:1","Warn: no topLevel permission defined: .github/workflows/upload_texts.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release_nightly.yml:506"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact nightly-2025-08-10 not signed: https://api.github.com/repos/ruffle-rs/ruffle/releases/238811497","Warn: release artifact nightly-2025-08-09 not signed: https://api.github.com/repos/ruffle-rs/ruffle/releases/238727521","Warn: release artifact nightly-2025-08-08 not signed: https://api.github.com/repos/ruffle-rs/ruffle/releases/238462534","Warn: release artifact nightly-2025-08-07 not signed: https://api.github.com/repos/ruffle-rs/ruffle/releases/238135892","Warn: release artifact nightly-2025-08-06 not signed: https://api.github.com/repos/ruffle-rs/ruffle/releases/237818430","Warn: release artifact nightly-2025-08-10 does not have provenance: https://api.github.com/repos/ruffle-rs/ruffle/releases/238811497","Warn: release artifact nightly-2025-08-09 does not have provenance: https://api.github.com/repos/ruffle-rs/ruffle/releases/238727521","Warn: release artifact nightly-2025-08-08 does not have provenance: https://api.github.com/repos/ruffle-rs/ruffle/releases/238462534","Warn: release artifact nightly-2025-08-07 does not have provenance: https://api.github.com/repos/ruffle-rs/ruffle/releases/238135892","Warn: release artifact nightly-2025-08-06 does not have provenance: https://api.github.com/repos/ruffle-rs/ruffle/releases/237818430"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: core/build_playerglobal/asc.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/download_translations.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/download_translations.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/download_translations.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/download_translations.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/download_translations.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/download_translations.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/download_translations.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/download_translations.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:332: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:337: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:367: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:372: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:379: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:393: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:451: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:472: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:486: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:521: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:526: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:533: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:547: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:628: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:653: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:661: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:689: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:702: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:707: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:713: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:730: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:135: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:140: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:217: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:233: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:238: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:243: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_nightly.yml:248: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/release_nightly.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_extension_dockerfile.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_extension_dockerfile.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_rust.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_rust.yml:163: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:166: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:169: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:172: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_rust.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_rust.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_rust.yml:94: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_rust.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:110: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:117: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:148: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:165: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:168: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:175: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_web.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_web.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/test_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_texts.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/upload_texts.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_texts.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/upload_texts.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/upload_texts.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/ruffle-rs/ruffle/upload_texts.yml/master?enable=pin","Warn: containerImage not pinned by hash: web/docker/Dockerfile:5: pin your Docker image by updating node:22 to node:22@sha256:3218f0d1b9e4b63def322e9ae362d581fbeac1ef21b51fc502ef91386667ce92","Warn: downloadThenRun not pinned by hash: web/docker/Dockerfile:14","Info:   0 out of  38 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  36 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2024-0436","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-14T23:18:37.604Z","repository_id":37390537,"created_at":"2025-08-14T23:18:37.604Z","updated_at":"2025-08-14T23:18:37.604Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30522820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-14T19:51:21.629Z","status":"ssl_error","status_checked_at":"2026-03-14T19:51:12.959Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emulator","flash","hacktoberfest","reimplementation","rust","swf"],"created_at":"2024-07-31T03:01:30.900Z","updated_at":"2026-03-15T03:56:47.207Z","avatar_url":"https://github.com/ruffle-rs.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ruffle.rs\"\u003e\u003cimg alt=\"Ruffle\" src=\"https://ruffle.rs/logo.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ruffle-rs/ruffle/actions\"\u003e\u003cimg alt=\"Rust Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/ruffle-rs/ruffle/test_rust.yml?label=Rust%20Build\u0026logo=github\u0026branch=master\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ruffle-rs/ruffle/actions/workflows/test_web.yml\"\u003e\u003cimg alt=\"Web Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/ruffle-rs/ruffle/test_web.yml?label=Web%20Build\u0026logo=github\u0026branch=master\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://flathub.org/apps/rs.ruffle.Ruffle\"\u003e\u003cimg alt=\"Ruffle Flathub\" src=\"https://img.shields.io/flathub/v/rs.ruffle.Ruffle?color=007acc\u0026logo=flathub\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@ruffle-rs/ruffle\"\u003e\u003cimg alt=\"Ruffle npm\" src=\"https://img.shields.io/npm/v/@ruffle-rs/ruffle?color=007acc\u0026logo=npm\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://aur.archlinux.org/packages/ruffle-nightly-bin\"\u003e\u003cimg alt=\"Ruffle AUR\" src=\"https://img.shields.io/aur/version/ruffle-nightly-bin?logo=archlinux\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/ruffle\"\u003e\u003cimg alt=\"Ruffle Discord\" src=\"https://img.shields.io/discord/610531541889581066?label=\u0026color=7389d8\u0026labelColor=6a7ec2\u0026logoColor=ffffff\u0026logo=discord\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://crowdin.com/project/ruffle\"\u003e\u003cimg alt=\"Ruffle translations\" src=\"https://badges.crowdin.net/ruffle/localized.svg\" /\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cstrong\u003e\u003ca href=\"https://ruffle.rs\"\u003ewebsite\u003c/a\u003e | \u003ca href=\"https://ruffle.rs/demo\"\u003edemo\u003c/a\u003e | \u003ca href=\"https://github.com/ruffle-rs/ruffle/releases\"\u003enightly builds\u003c/a\u003e | \u003ca href=\"https://github.com/ruffle-rs/ruffle/wiki\"\u003ewiki\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\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://github.com/ruffle-rs/ruffle/issues).\n\n## Using Ruffle\n\nThe easiest way to try out Ruffle is to visit the [web demo page](https://ruffle.rs/demo/), then click the \"Select File\" button to load a SWF file of your choice.\n\n[Nightly builds](https://ruffle.rs/downloads#nightly-releases) of Ruffle are available for desktop and web platforms.\n\nFor more detailed instructions, see our [wiki page](https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle).\n\n## Building from source\n\n### Prerequisites\n\n* Latest stable channel of [Rust](https://www.rust-lang.org/tools/install)\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* libasound2-dev\n* libxcb-shape0-dev\n* libxcb-xfixes0-dev\n* libgtk-3-dev\n* libudev-dev\n* libxcb-xinput-dev\n* libxcb-xkb-dev\n* libxcb-cursor-dev\n* default-jre-headless\n* cmake\n* g++\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://github.com/ruffle-rs/homebrew-ruffle/):\n\n`brew install --HEAD ruffle-rs/ruffle/ruffle`\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/README.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://github.com/ruffle-rs/ruffle-android/blob/main/CONTRIBUTING.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/with/swfs/ 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/to/file.swf`\n- `cargo run --release --package=exporter -- path/to/file.swf path/to/screenshots --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://github.com/sponsors/ruffle-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\"\u003e\n  \u003ca href=\"https://www.newgrounds.com\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/newgrounds.png\" alt=\"Newgrounds.com\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.cpmstar.com\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/cpmstar.png\" alt=\"CPMStar\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://deepnight.net\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/deepnight.png\" alt=\"Sébastien Bénard\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.crazygames.com\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/crazygames.png\" alt=\"Crazy Games\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.coolmathgames.com\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/coolmathgames.png\" alt=\"Cool Math Games\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.nytimes.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/nyt.png\" alt=\"The New York Times\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.armorgames.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/armorgames.png\" alt=\"Armor Games\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.ondaeduca.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/ondaeduca.png\" alt=\"Onda Educa\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.twoplayergames.org/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/twoplayergames.png\" alt=\"TwoPlayerGames.org\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.wowgame.jp/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/wowgame.png\" alt=\"wowgame.jp\"\u003e\u003c/a\u003e\n  \u003ca href=\"http://kupogames.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/mattroszak.png\" alt=\"Matt Roszak\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.dolldivine.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/dolldivine.png\" alt=\"Doll Divine\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://movavi.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/movavi.svg\" alt=\"Movavi\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.kongregate.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/kongregate.svg\" alt=\"Kongregate\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.bubbleshooter.net/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/bubble-shooter.png\" alt=\"Bubble Shooter\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.neopets.com/\"\u003e\u003cimg src=\"https://ruffle.rs/sponsors/neopets.png\" alt=\"Neopets\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## License\n\nRuffle is licensed under either of\n\n- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n- MIT License (http://opensource.org/licenses/MIT)\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://www.rust-lang.org/policies/code-of-conduct) that the Rust project itself follows.\n","funding_links":["https://opencollective.com/ruffle","https://github.com/sponsors/ruffle-rs"],"categories":["Other miscellaneous emulators and projects","HarmonyOS","Rust","ActionScript","Applications","Languages","Rust 程序设计","Adobe Flash emulators","Video Players \u0026 Playback Libraries","应用程序 Applications","rust","swf"],"sub_categories":["Adobe Flash emulators","Windows Manager","Emulators","Rust","网络服务_其他","Atari Lynx","Desktop Players","模拟器 Emulators"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruffle-rs%2Fruffle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruffle-rs%2Fruffle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruffle-rs%2Fruffle/lists"}