Ruffle 0.4.0 fixes ActionScript bugs to save more Flash games
The open-source Flash emulator just pushed a major update fixing ActionScript logic, keeping the internet's weirdest gaming era playable.
Edmund McMillen's original Meat Boy was a free web game long before it became a console darling. The same goes for The Behemoth's Alien Hominid, Ironhide's Kingdom Rush, and the first iteration of The Binding of Isaac. They all lived inside a proprietary Adobe plugin that officially died on December 31, 2020. We now rely on open-source emulators to keep that massive catalog of internet history accessible.
The most prominent of those projects is Ruffle. The development team released version 0.4.0 on July 18, 2026. It includes a long list of technical fixes for the underlying ActionScript virtual machines that power those classic games.
I spent way too much time on Newgrounds
Flash was the ultimate democratized game engine. Anyone could make a game and upload it to portals like Kongregate or Armor Games. That low barrier to entry created a bizarre ecosystem of experimental art, tower defense games, and crude stick figure animations.
Many of today's massive indie hits started as rough Flash prototypes. Alien Hominid launched on Newgrounds in 2002 as a chaotic run-and-gun shooter created by Tom Fulp and Dan Paladin. The game was so popular that they formed The Behemoth and rebuilt it for the PlayStation 2 and GameCube. It proved that web games could transition to retail boxes.
Meat Boy followed a similar path in 2008. Edmund McMillen and Jonathan McEntee built a punishing platformer about a cube of meat. It was a massive hit on Newgrounds. McMillen later teamed up with Tommy Refenes to create Super Meat Boy for the Xbox 360. That console release helped kick off the modern indie game boom.
When Adobe pulled the plug on Flash Player, all of that early history was suddenly orphaned. Ruffle started in 2019 to solve that exact problem. It is an emulator written in Rust that compiles to WebAssembly. That lets it run natively inside modern web browsers without requiring users to install sketchy security liabilities on their computers.
Rebuilding the ActionScript virtual machine
The version 0.4.0 release focuses heavily on ActionScript logic. Flash games rely on two different virtual machines. AVM1 handles older ActionScript 1 and 2 content. AVM2 handles the more complex ActionScript 3 games from the later years of the platform.
AVM1 was notoriously loose with its rules. Developers could write terrible code, and the original Adobe plugin would usually just guess what they meant and keep running. Emulating that exact brand of leniency is incredibly difficult. If an emulator is too strict, the game crashes. If it is too loose, the game behaves unpredictably.
According to the changelog, AVM1 now properly implements FileReferenceList. The update also fixes a recursion limit bug that occurred when calling watchers. These sound like minor backend tweaks, but they are the exact type of logic errors that cause complex games to crash right before a boss fight. The team also overhauled error handling and type coercion printing.
Locking down the build pipeline
The update cleans up how the emulator is distributed. The continuous integration pipeline now only publishes stable versions of the browser extension. Users will no longer accidentally pull a broken nightly build when trying to play Bloons Tower Defense.
The developers modified the build process to use cargo --locked where possible. This ensures that the automated build servers use the exact same dependency versions as the developers' local machines. It prevents random upstream code changes from breaking the emulator right before a release.
The team also bumped several underlying dependencies to clear out security advisories like RUSTSEC-2026-0190. Rust is inherently memory-safe, but keeping dependencies updated is just good housekeeping.
Playing Flash games in 2026 requires a bit of translation layer magic. Ruffle continues to make that translation invisible to the user.
Comments ()