An anonymous reader quotes a report from Ars Technica:
What makes the [“Infinite Mac”] project unique isn’t necessarily the fact that it’s browser-based; it has been possible to run old DOS, Windows, and Mac OS versions in browser windows for quite a while now. Instead, it’s the creative solutions that developer Mihai Parparita has come up with to enable persistent storage, fast download speeds, reduced processor usage, and file transfers between the classic Mac and whatever host system you’re running it on. Parparita details some of his work in this blog post.
Beginning with a late 2017 browser-based port of the Basilisk II emulator, Parparita wanted to install old apps to more faithfully re-create the experience of using an old Mac, but he wanted to do it without requiring huge downloads or running as a separate program as the Macintosh.js project does. To solve the download problem, Parparita compressed the disk image and broke it up into 256K chunks that are downloaded on demand rather than up front. “Along with some old fashioned web optimizations, this makes the emulator show the Mac’s boot screen in a second and be fully booted in 3 seconds, even with a cold HTTP cache,” Parparita wrote.
CPU usage was another issue. Old operating systems and processors didn’t really distinguish between active and idle processor states – your computer was either on or off. So when you emulate these old systems, they’ll ramp one of your CPU cores to 100% whether you’re actually using the emulator or not. Parparita used existing Basilisk II features to reduce CPU usage, only requiring full performance when “there was user input or a screen refresh was required.” Infinite Mac won’t run later releases of classic Mac OS (including 8.5, 8.6, and 9) because those releases ran exclusively on PowerPC Macs, dropping support for the old Motorola 68000-based processors. Emulators like QEMU are capable of emulating PowerPC Macs, but (at least as far as I am aware) there are no easy browser-based implementations that exist. Not yet, anyway.