Infinite Mac OS X
(blog.persistent.info)- Auf der Plattform Infinite Mac lassen sich jetzt frühe Versionen der Mac-OS-X-Reihe (10.1, 10.3) im Webbrowser ausführen
- Durch die Portierung des PowerPC-Emulators PearPC auf Emscripten/WebAssembly wurden Fortschritte bei Kompatibilität und Stabilität erzielt
- Im Vergleich mit DingusPPC wurden Performance und schwer erklärbare Bugs verbessert, begleitet von algorithmischen Optimierungen
- Zudem wurde ein neues Infinite HD-Disk-Image für Mac OS X aufgebaut, das Zugriff auf verschiedene Software und Entwicklerwerkzeuge aus den 2000er Jahren ermöglicht
- Mit der Übernahme des Aqua-Stils für die UI wurde das Retro-Erlebnis verstärkt, zugleich bleiben weitere künftige Ausbaumöglichkeiten im Blick
Zusammenfassung
Infinite Mac, ein Projekt, mit dem sich alte Legacy-Systeme online erleben lassen, unterstützt auf der Infinite-Mac-Plattform nun frühe Versionen wie Mac OS X 10.1 und 10.3 und macht sie damit in modernen Webbrowsern lauffähig. Dafür wurden PowerPC-Emulatoren wie PearPC und DingusPPC auf Basis von Emscripten/WebAssembly portiert, begleitet von zahlreichen Arbeiten zur Leistungsverbesserung und Stabilisierung. Durch algorithmische Optimierungen und Bugfixes konnten Auflösung und Zuverlässigkeit gegenüber der Originalhardware verbessert werden; außerdem wurde mit Infinite HD ein Datenträgerabbild neu zusammengestellt, das damalige Software und Entwicklerwerkzeuge enthält und so den praktischen Nutzen erhöht. Zusätzlich sorgt ein Aqua-Theme in der Website-UI für ein stimmungsvolles Nutzungserlebnis, während auch eine spätere Erweiterung auf noch retroartigere Betriebssysteme wie A/UX oder Lisa erwogen wird. Das Projekt zeigt damit einen technischen Versuch mit mehreren Zielen zugleich: Programmemulation, Ausbau von Open-Source-Archiven und Wiederherstellung historischer UI-Erfahrungen.
Ausbau der Mac-OS-X-Unterstützung
- In Infinite Mac wurden frühe OS-X-Versionen wie Mac OS X 10.1 und 10.3 so portiert, dass sie im Webbrowser laufen
- Die langsame Performance auf echter Hardware wird dabei originalgetreu nachvollzogen, und typische Anwendungen der Zeit wie NetNewsWire Lite und Terminal lassen sich ebenfalls ausprobieren
- Im aktuellen Disk-Image ist auch ein Teil der damaligen Indie-Software enthalten, was die Erkundung von Retro-Software erleichtert
Der Portierungsprozess von PearPC
- Zunächst lag der Fokus auf der Portierung und Anpassung des DingusPPC-Emulators, wegen Kernel Panics und Grafikfehlern wurde der Kurs jedoch auf PearPC geändert
- PearPC ist eine plattformübergreifende Codebasis, die Anfang der 2000er dafür entworfen wurde, Mac OS X auf x86-Systemen auszuführen, und ließ sich daher vergleichsweise leicht ohne zusätzliche Sonderarbeiten auf WebAssembly portieren
- Ein wichtiger aktueller Maintainer von Basilisk II und SheepShaver hat kürzlich einen experimentellen PearPC-Branch erstellt, sodass Builds auf modernem macOS wieder möglich wurden
- Der Quellcode ist alt und basiert auf Legacy-C++, weist aber Besonderheiten wie eine eigene String-Klasse,
sprintfund einen GIF-Decoder auf - Dank der plattformübergreifenden Struktur, des fast vollständigen Verzichts auf Threads und struktureller Abstraktionsschichten ging die Portierung schnell voran
Performance-Optimierung und Grenzen
- Die Zuverlässigkeit beim Booten und Ausführen von Mac OS X 10.2 war in PearPC hoch, die Ausführung ist aber langsamer als in DingusPPC
- Ein wesentlicher Grund für den Leistungsverlust ist das Fehlen von MMU-Caching
- Verschiedene algorithmische Optimierungen, die bereits in DingusPPC eingesetzt wurden, wurden auch nach PearPC übernommen und verkürzten die Bootzeit teilweise
- PearPC implementiert nur den benötigten Teilmengen-Satz der PowerPC-Befehle und nutzt mehrere „Cheats“ wie angepasste Firmware und Treiber
- Langfristig bleibt die Hoffnung, dass DingusPPC für schnelle und stabile Mac-OS-X-Emulation letztlich vielversprechender ist
Nebenbefund: FP-Ausnahmebehandlung
- Bei der Einführung eines vereinheitlichten Decoding-Verfahrens im Interpreter von PearPC traten bei Gleitkommaoperationen Rendering-Fehler auf
- Der Mac-OS-X-Kernel registriert Ausnahmebehandlung abhängig vom FP-Bit-Status im MSI-Register; nach der Implementierung dieses Verhaltens im Code wurde das Rendering-Problem gelöst
- Auch in DingusPPC führte dasselbe fehlende FP-Bit zu fehlerhaftem Textrendering; nach der Korrektur verbesserte sich die Stabilität deutlich
- Aus einer behelfsmäßigen Behandlung wurde eine „saubere“ Implementierung, wodurch am Ende auch die Zuverlässigkeit beim Ausführen von 10.1 stark anstieg
- Durch die Kombination beider Emulatoren wurde die Unterstützung für verschiedene OS-X-Versionen erweitert
Neuaufbau des Infinite-HD-Disk-Images
- Für die Mac-OS-X-Ära wurde ein neues Disk-Image erstellt, das zahlreiche Indie-Programme und Entwicklerwerkzeuge aus dieser Zeit enthält
- Alte
.dmg-Dateien lassen sich auf aktuellem macOS nicht direkt mounten, daher wurden Konvertierung und eine automatisierte Pipeline mit Werkzeugen wie dmg2img aufgebaut - Wegen der Unterschiede zwischen den Dateisystemen HFS und HFS+ gibt es einige Einschränkungen, die meisten Programme funktionieren jedoch normal
- Über Bibliotheksseiten, die Wayback Machine und weitere Quellen wurde eine lauffähige Software-Umgebung der frühen 2000er vervollständigt
- Mithilfe einer Technik zur dynamischen Erzeugung von Multi-Partition-Images lassen sich bis zu drei Volumes mounten: Boot-Disk, Infinite HD und die Speicherplatte Saved HD
UI: Anwendung des Aqua-Stils
- Das Aqua-Theme wurde auch für die Infinite-Mac-UI übernommen, um das Retro-Gefühl zu maximieren
- Bild-Assets im Stil von Mac OS X 10.0/10.1 wurden direkt extrahiert, inklusive halbtransparenter Effekte
- Der Stil der Bedienelemente der Website wird zudem automatisch an das jeweilige Erscheinungsbild des OS angepasst (Klassisch, Platinum, NeXT usw.)
- Mit Blick auf angekündigte größere UI-Änderungen bei Apple macOS dient die frühere UI auch als eine Art „Referenzpunkt“
Zusätzliche Funktionen und Meilensteine
- Hinzugekommen ist das Mounten von Mac-OS-9-Partitionen und die Ausführung der Classic-Umgebung (nur in 10.1 unterstützt)
- Auch Unterschiede in der UX zwischen Betriebssystemen, etwa beim wiederholten Rechnen in der früheren Calculator-App, lassen sich nachvollziehen
- In PearPC wurde der integrierte Boot-Messages-(Verbose)-Modus aktiviert, während in DingusPPC die Festlegung über Open-Firmware-Variablen umgesetzt wurde
- Eine Ausweitung des Brandings über die Domain macosx.app wird ebenfalls versucht, derzeit befindet sie sich jedoch im Besitz einer anderen Person
Künftige Erweiterungen und Abschluss
- Mit dem Ausbau der Mac-OS-X-Unterstützung schafft Infinite Mac eine Verbindung zum modernen macOS
- Für noch tiefere Retro-Unterstützung werden auch Portierungsmöglichkeiten für A/UX, Lisa, Pippin und Newton erwähnt
- Auch WebAssembly-basiertes QEMU (wasm) stößt experimentell auf Interesse; Leistungstests zeigen positive Signale
- Webbasierte Mac-OS-X-Emulation bietet Nutzen für Erlebnisszenarien, die Bewahrung von Legacy-Software und Entwicklerexperimente in verschiedenen IT- und Startup-Kontexten
1 Kommentare
Hacker-News-Kommentare