2MJEUX

The day the plugin stopped

What a runtime actually was

Material lifted out: What the terms meanAn independent enthusiast blog
An old optical disc and installer sleeve on a desk
Flash shipped as a separate installation, which is why its removal could be scheduled like a product recall.

Flash was not a file format. It was an execution environment — and that distinction explains why no browser feature could simply absorb its role.

A machine inside the machine

When a browser loaded a .swf file, it handed control to Adobe's Flash Player, a plugin that ran its own bytecode, managed its own memory, and drew pixels to its own compositing surface. The browser knew that something was occupying a rectangle on the page. It did not know what was happening inside it. Flash maintained a separate virtual machine — the ActionScript Virtual Machine, upgraded to AVM2 with ActionScript 3 in 2006 — with its own garbage collector, its own threading model, and its own audio and networking stacks. It was, in a precise technical sense, a runtime environment housed inside a host application.

This architecture was both the source of Flash's power and the reason its removal in 2020 left nothing in place to catch it. A browser engine such as WebKit or Gecko renders HTML and executes JavaScript through its own pipeline; it does not expose hooks into which a foreign virtual machine can simply be swapped. The .swf format encoded compiled bytecode, vector graphics, timeline data and embedded assets in a binary structure that no native browser API was designed to interpret.

A dusty tower PC with its side panel off on a desk
The machine survived the runtime. Opening the case does not get the games back.

The replacements that emerged — Canvas, WebGL, and then WebAssembly — are native browser features, not drop-in equivalents. WebAssembly can execute near-native binary code inside the browser's sandbox, and WebGL gives direct access to GPU-accelerated graphics, but neither speaks ActionScript or parses .swf natively. Preserving Flash content required either re-implementing the entire runtime in software, as the Ruffle project did in Rust compiled to WebAssembly, or archiving the original executables with the games themselves. Both approaches demand that someone rebuild or carry forward the whole machine, not just the files it once played. The content and the runtime were inseparable, which is precisely why Adobe's end-of-life decision deleted so much at once.

Lifted out of the flow

What the terms mean

ActionScript Virtual Machine (AVM2)the bytecode interpreter inside Flash Player from 2006 onward, replacing the earlier AVM1
bytecodecompiled, platform-independent instruction code that a virtual machine executes, distinct from human-readable source code
runtime environmentthe full set of software services (memory management, execution, I/O) a program needs while it is running
.swfthe binary file format carrying Flash content; stands for Small Web Format
A player at a CRT monitor in an unlit room, three-quarter profile, screen light doing all the work
The tab was the whole platform. Nothing had to be installed, and nothing could be kept.
A browser window on a monitor showing a blank content area
The blank rectangle is the whole story: the file is still on the server, and nothing left can read it.

Read next

Elsewhere on the site