Infinite Mac OS X
(blog.persistent.info)- La plateforme Infinite Mac permet désormais d’exécuter les premières versions de la série Mac OS X (10.1, 10.3) dans un navigateur web
- Le portage de l’émulateur PowerPC PearPC vers Emscripten/WebAssembly a permis d’améliorer la compatibilité et la stabilité
- La comparaison avec DingusPPC a conduit à des améliorations de performances et à la correction de bugs inexpliqués, au prix d’un travail d’optimisation algorithmique
- Une image disque Infinite HD adaptée à Mac OS X a aussi été reconstruite, donnant accès à divers logiciels et outils de développement des années 2000
- L’adoption du style Aqua pour l’interface renforce l’expérience rétro, tout en laissant entrevoir de futures évolutions
Résumé
Infinite Mac, le projet qui permet d’essayer en ligne d’anciens systèmes historiques sur la plateforme Infinite Mac, peut désormais exécuter dans les navigateurs web modernes les premières versions de Mac OS X comme 10.1 et 10.3. Pour y parvenir, des émulateurs PowerPC comme PearPC et DingusPPC ont été portés vers Emscripten/WebAssembly, avec de nombreux efforts consacrés aux performances et à la stabilité. Grâce à l’optimisation des algorithmes et à la correction de bugs, la résolution et la fiabilité ont été améliorées par rapport au matériel d’origine, tandis qu’Infinite HD a aussi été reconstitué avec les logiciels et outils de développement de l’époque pour renforcer son utilité pratique. Le site adopte également un thème Aqua afin d’offrir une expérience plus évocatrice, et envisage à terme une extension vers des OS encore plus rétro comme A/UX ou Lisa. Le projet illustre ainsi une tentative technique aux objectifs multiples, mêlant émulation logicielle, extension d’archives open source et reconstitution d’interface.
Extension de la prise en charge de Mac OS X
- Infinite Mac a été porté de façon à permettre l’exécution dans le navigateur des premières versions d’OS X, comme Mac OS X 10.1 et 10.3
- Il reproduit la lenteur des performances du matériel réel, tout en permettant d’essayer des applications emblématiques de l’époque comme NetNewsWire Lite et Terminal
- Les images disque récentes incluent aussi une partie des logiciels indépendants de l’époque, ce qui facilite l’exploration des logiciels rétro
Processus de portage de PearPC
- Au départ, le travail s’est concentré sur le portage et la modification de l’émulateur DingusPPC, mais des problèmes de kernel panic et de corruption graphique ont conduit à un changement de cap vers PearPC
- PearPC est une base de code multiplateforme conçue au début des années 2000 pour exécuter Mac OS X sur x86, ce qui a rendu le portage vers WebAssembly relativement simple sans travail supplémentaire majeur
- Récemment, le principal mainteneur de Basilisk II et SheepShaver a créé une branche expérimentale de PearPC, rendant sa compilation possible sur les versions modernes de macOS
- Le code source est ancien et repose sur du C++ legacy, avec des particularités comme une classe
stringmaison,sprintf, un décodeur GIF, etc. - Grâce à son architecture multiplateforme, à une conception utilisant très peu les threads et à des couches d’abstraction structurelles, le portage a pu être mené rapidement
Optimisations de performances et limites
- Dans PearPC, la fiabilité du démarrage et de l’exécution de Mac OS X 10.2 était élevée, mais la vitesse d’exécution restait inférieure à celle de DingusPPC
- La dégradation des performances est notamment importante en raison de l’absence de cache MMU
- Diverses optimisations algorithmiques appliquées à DingusPPC ont aussi été reportées sur PearPC, ce qui a permis de réduire partiellement les temps de démarrage
- PearPC n’implémente qu’un sous-ensemble des instructions PowerPC nécessaires et s’appuie sur plusieurs « cheats » comme un firmware et des pilotes personnalisés
- L’espoir demeure qu’à long terme, DingusPPC soit plus prometteur pour une émulation Mac OS X à la fois rapide et stable
Découverte annexe : gestion des exceptions FP
- Lors de l’introduction d’un mode de décodage unifié dans l’interpréteur de PearPC, des erreurs d’affichage sont apparues dans les calculs en virgule flottante
- Le noyau de Mac OS X enregistre la gestion des exceptions selon l’état du bit FP dans le registre MSI ; une fois ce comportement implémenté dans le code, les problèmes de rendu ont été résolus
- Le même oubli du bit FP dans DingusPPC provoquait aussi un rendu incorrect du texte, et sa correction a fortement amélioré la stabilité
- Le traitement est ainsi passé d’un bricolage à une implémentation « dans les règles », améliorant au final de façon notable la fiabilité d’exécution de 10.1
- La combinaison des deux émulateurs élargit l’éventail des versions d’OS X pouvant être exécutées
Reconstruction de l’image disque Infinite HD
- Une nouvelle image disque adaptée à l’ère Mac OS X a été construite, avec de nombreux logiciels indépendants et outils pour développeurs de cette période
- Les anciens fichiers
.dmgne pouvant pas être montés directement sur les versions récentes de macOS, un pipeline automatisé de conversion a été mis en place avec des outils comme dmg2img - Malgré certaines limites liées aux différences entre les systèmes de fichiers HFS et HFS+, la plupart des logiciels fonctionnent normalement
- Un environnement logiciel du début des années 2000 a été reconstitué à partir de sources variées, comme des bibliothèques en ligne et la Wayback Machine
- Une technique de génération dynamique d’images multi-partitions permet de monter jusqu’à trois volumes : disque de démarrage, Infinite HD et Saved HD pour le stockage
Interface : application du style Aqua
- Le thème Aqua a aussi été adopté dans l’interface d’Infinite Mac afin de pousser au maximum la sensibilité rétro
- Les ressources graphiques de style Mac OS X 10.0/10.1 ont été extraites directement afin de reproduire jusqu’aux effets de transparence
- Le style des contrôles du site s’adapte automatiquement à l’apparence propre à chaque OS (Classic, Platinum, NeXT, etc.)
- Alors qu’Apple prépare de grands changements d’interface pour macOS, le site peut aussi servir de « point de référence » pour les interfaces du passé
Fonctions supplémentaires et jalons
- Ajout du montage de partition Mac OS 9 et de l’exécution de l’environnement Classic (prise en charge uniquement sur 10.1)
- Il devient possible de documenter les différences d’UX entre OS, comme le comportement des opérations répétées dans l’ancienne application Calculator
- Activation du mode messages de démarrage (Verbose) intégré à PearPC, et implémentation dans DingusPPC d’une méthode de définition des variables Open Firmware
- Une extension de marque via le domaine macosx.app est aussi envisagée, même s’il appartient actuellement à un tiers
Extensions futures et conclusion
- En élargissant la prise en charge de Mac OS X, Infinite Mac établit un lien avec le macOS moderne
- Pour aller plus loin dans le rétro, des portages potentiels d’A/UX, Lisa, Pippin ou Newton sont également évoqués
- Un intérêt expérimental existe aussi pour QEMU basé sur WebAssembly (wasm), avec des signaux positifs observés lors des tests de performances
- L’émulation web de Mac OS X offre de la valeur dans divers scénarios IT/startup, qu’il s’agisse d’expérimentation, de préservation des logiciels legacy ou de tests de développement
1 commentaires
Réactions sur Hacker News
dmg, signets Finder, comportement du Dock, arrivée de Spotlight ; par comparaison avec l’écart entre Windows XP et Windows 11, le Mac a moins changéwmv,divx), et les machines surchauffaient souvent à cause d’un design sans aérations pensé avant tout pour être joli