- Infinite Mac permet désormais d’exécuter les premières versions de Mac OS X dans le navigateur, avec une prise en charge actuellement optimale de 10.1 et 10.3
- Comme la piste DingusPPC existante butait sur des kernel panics et des problèmes graphiques, le projet s’est réorienté vers un portage de PearPC, créé au début des années 2000 pour émuler Mac OS X
- Les performances restent lentes : il faut près de 2 minutes pour que Mac OS X 10.2 soit pleinement utilisable, et les optimisations n’ont réduit ce temps que d’environ 15 secondes
- Un bogue lié à l’absence de vérification du bit
FPdans le traitement des nombres à virgule flottante PowerPC provoquait des problèmes de rendu du Dock et de fenêtres Finder ; sa correction a aussi amélioré la stabilité de DingusPPC - Infinite HD a été réorganisé pour inclure des logiciels indépendants et des outils Developer CD de l’époque des premiers Mac OS X, mais les différences HFS/HFS+ et la compatibilité des anciens
.dmgrestent des limites
Exécuter les premiers Mac OS X dans le navigateur
- Infinite Mac peut désormais exécuter les premières versions de Mac OS X
- Mac OS X 10.1 et Mac OS X 10.3 sont les versions les mieux prises en charge
- L’exécution n’est pas rapide, mais l’expérience rappelle que le matériel réel de l’époque ne faisait pas énormément mieux
- Infinite HD, qui fournit des logiciels adaptés à l’époque, a lui aussi été réorganisé autour des logiciels indépendants des débuts de Mac OS X
Changement de cap vers un portage de PearPC
- Au départ, l’objectif était d’exécuter Mac OS X dans Infinite Mac avec DingusPPC, mais vers l’été dernier, les kernel panics et les corruptions graphiques ont bloqué les progrès
- Le mode d’exécution déterministe a permis de réduire le périmètre du problème, sans rendre évidente l’étape suivante
- L’alternative retenue a été PearPC
- PearPC a été créé au début des années 2000 pour émuler Mac OS X sur des machines x86 Windows et Linux
- Après la transition vers Intel, l’intérêt a diminué et la base de code a fini par être considérée comme pratiquement à l’arrêt
- Le point de départ du portage a été une branche expérimentale de PearPC, créée par kanjitalk755, qui se compilait et s’exécutait sur macOS moderne
- PearPC reposait sur une base de code multiplateforme et n’utilisait pas massivement des concepts difficiles à porter, comme les threads, ce qui l’a rendu plus facile à transférer vers WebAssembly/Emscripten et le runtime d’Infinite Mac
- En quelques jours, la compilation, la sortie vidéo, le chargement d’images disque et la connexion des entrées souris/clavier ont été mis en place
- Résultat : Mac OS X 10.2 peut désormais s’exécuter dans le navigateur de manière plus stable qu’auparavant
Optimisations de performances et goulets d’étranglement restants
- PearPC exécutait Mac OS X 10.2 plus sûrement, mais paraissait plus lent que DingusPPC
- Le harnais de benchmark de DingusPPC a été porté vers PearPC, puis les optimisations déjà appliquées à DingusPPC ont été répétées sur PearPC
- Les deux émulateurs étant des interpréteurs purs fondés sur des tables de correspondance, le travail a été relativement direct
- Environ 15 secondes ont été gagnées sur le temps de démarrage de Mac OS X 10.2
- Même après optimisation, il faut encore près de 2 minutes pour atteindre un état pleinement utilisable
- L’interface d’Infinite Mac affiche désormais un avertissement indiquant que le démarrage de Mac OS X peut être lent
- Le principal goulet d’étranglement est l’absence de cache MMU dans PearPC
- Chaque load/store passe par un calcul d’adresse complexe et coûteux
- DingusPPC dispose d’un cache hiérarchique plus mature, qui semble efficace
- PearPC peut être plus stable que DingusPPC pour exécuter les versions 10.2 à 10.4, mais sa base de code est moins rigoureuse
- Il utilise un firmware et un pilote vidéo personnalisés
- Il n’implémente qu’une partie des instructions PowerPC nécessaires à Mac OS X
- À long terme, l’espoir est que DingusPPC devienne l’option rapide, stable et exacte
Vérification du bit FP et bug de rendu
- Lors de l’application, famille d’opcodes par famille d’opcodes, de l’approche de « table de décodage unifiée » à l’interpréteur PearPC, une régression est apparue dans les changements liés aux opérations en virgule flottante
- Des glitches de rendu sont apparus dans le Dock
- Les fenêtres du Finder ne s’ouvraient plus
- Le dispatch des groupes d’opcodes 59 et 63 ne devait pas se contenter d’une simple table : il devait d’abord vérifier le bit
FPdu Machine State Register- Si le bit
FPn’est pas défini, une exception « floating point unavailable » doit être levée
- Si le bit
- Les puces PowerPC utilisées dans les Mac de l’époque disposaient bien d’une FPU, mais cette exception se produisait fréquemment pendant le démarrage de Mac OS X
- Le code source du kernel xnu de l’époque contient l’endroit où le bit
FPest effacé ainsi que le gestionnaire d’exception - Il s’agit vraisemblablement d’une optimisation visant à éviter de sauvegarder et restaurer les registres FPU lors des changements de contexte
- Le code source du kernel xnu de l’époque contient l’endroit où le bit
- Une fois la même vérification du bit
FPimplémentée dans le code de dispatch optimisé, les problèmes de rendu ont disparu - Le même bug subsistait aussi dans DingusPPC
- DingusPPC ne vérifiait pas le bit
FPet laissait toujours passer les instructions en virgule flottante - Une correction rapide déclenchant l’exception a fait disparaître les glitches de rendu de Mac OS X
- Ensuite, une implémentation officielle et une correction évitant les pertes de performances ont nettement amélioré la stabilité de DingusPPC
- DingusPPC ne vérifiait pas le bit
- En combinant les deux émulateurs, le périmètre des premières versions de Mac OS X exécutables s’est élargi
- DingusPPC peut exécuter 10.1 de façon stable
- PearPC ne peut pas exécuter 10.1 de façon stable
- 10.0 reste instable, et Public Beta provoque immédiatement un kernel panic
Réorganisation d’Infinite HD
- L’un des attraits d’Infinite Mac est que Infinite HD, rempli de logiciels correspondant à l’époque, est monté en même temps
- Avec la prise en charge de Mac OS X, une version distincte a été créée, au-delà des apps Mac classiques des années 80 et 90, avec des logiciels de l’époque des premiers Mac OS X
- La liste a été étendue à partir de suggestions, en plus des apps personnellement appréciées
- Les images disque sont générées en étendant l’automatisation existante
- Comme les images disque étaient très utilisées aux débuts de Mac OS X, une fonction a été ajoutée pour importer les
.dmgdans un dossier supplémentaire de l’image générée
- Comme les images disque étaient très utilisées aux débuts de Mac OS X, une fonction a été ajoutée pour importer les
- Les anciens
.dmg, malgré la même extension, existaient en plusieurs variantes et ne se montaient pas toujours avechdiutilsur macOS moderne- La solution finale a consisté à extraire d’abord la partition brute avec dmg2img
- Puis à recréer une nouvelle image disque que macOS moderne peut monter et copier
- Dans la collecte réelle des logiciels, les logiciels Mac OS X du début au milieu des années 2000 se sont révélés être un angle mort
- Macintosh Garden en propose certains, mais ils n’y sont pas une priorité élevée
- Chez les éditeurs d’origine, ils ont souvent disparu car trop anciens
- La Wayback Machine a beaucoup servi
- Le Developer CD associé à chaque version de Mac OS X a aussi été installé, afin de rendre disponibles des outils comme Project Builder et Interface Builder
Système de fichiers et montage de plusieurs disques
- Le processus de construction des disques est centré sur HFS, alors que le standard de cette période était HFS+
- HFS+ offre des fonctionnalités plus avancées, comme des noms de fichiers plus longs et des caractères Unicode arbitraires
- Les fichiers d’images disque dépendant de fonctionnalités HFS+ ne peuvent pas être convertis sans perte
- Pour la plupart des logiciels, cela n’a pas posé de gros problème
- Pour monter jusqu’à trois disques — le disque de démarrage, Infinite HD et Saved HD — la méthode du fork de DingusPPC a été reprise
- Au démarrage, une image disque multipartition est générée à la volée à partir d’un nombre arbitraire d’images de partitions spécifiées
Mode Aqua et interface du site
- Pour finaliser l’ajout de Mac OS X, un mode Aqua a aussi été ajouté aux contrôles du site Infinite Mac
- Jusqu’ici, les apparences classic, Platinum et NeXT étaient disponibles
- Le style Aqua de 10.0/10.1 a été choisi
- La version plus sobre de 10.3 et 10.4 est préférée, mais l’aspect 10.0/10.1 a été jugé plus nostalgique
- Pour utiliser les mêmes ressources graphiques que l’OS, les ressources originales ont été extraites plutôt que de recourir à des captures d’écran
- Les éléments Aqua utilisent beaucoup la translucidité, ce qui rendait les captures d’écran ordinaires insuffisantes
- resource_dasm et pxm2tga ont été utilisés pour extraire les ressources originales depuis
Extras.rsrc
Classic, mode verbose et petites découvertes
- La possibilité de monter plusieurs images permet de placer aussi une partition Mac OS 9 et de lancer l’environnement de compatibilité Classic
- Cette fonctionnalité ne marche qu’avec 10.1
- PearPC ne prenait pas Classic en charge
- Au final, il est possible d’émuler des apps Mac classiques à l’intérieur d’un Mac OS X émulé, lui-même dans une machine virtuelle WebAssembly
- Les images Mac OS X permettent aussi d’observer les changements de comportement de Calculator
- Jusqu’à 10.3, appuyer plusieurs fois sur
=ne produisait pas le comportement correspondant - Dans 10.4, ce comportement était présent
- Jusqu’à 10.3, appuyer plusieurs fois sur
- Comme le démarrage de Mac OS X est lent, le mode verbose a été exposé pour afficher davantage la progression
- PearPC disposait d’un mécanisme intégré
- Pour DingusPPC, une fonction permettant de définir au démarrage des variables Open Firmware a été ajoutée
- Dans la boîte de dialogue d’instance personnalisée d’Infinite Mac, cela apparaît sous la forme d’un interrupteur “Debug Mode”
- Une tentative a aussi été faite pour obtenir le domaine
macosx.app, mais il était déjà enregistré- Ce domaine redirige vers une vidéo YouTube précise
- Le YouTuber de la vidéo a répondu qu’il ne l’avait pas enregistré lui-même
Prochaines pistes et possibilité QEMU
- Avec la prise en charge de Mac OS X, Infinite Mac arrive à un point proche de macOS moderne
- Il reste ensuite deux transitions de CPU et plusieurs changements plus modestes
- Tiger a déjà une forme globalement reconnaissable pour les utilisateurs actuels de macOS
- Parmi les cibles de rétro-informatique plus profondes ou plus spécifiques restent A/UX, Lisa, Pippin et Newton
- Par le passé, QEMU était considéré comme un projet trop vaste pour être porté vers WebAssembly, et les performances de qemu.js semblaient trop faibles pour être utilisables
- Récemment, qemu-wasm et une présentation au FOSDEM ont amené à réévaluer cette possibilité
- Les performances de la démo avec un invité Linux sont encourageantes
- Dans un benchmark rapide calculant la somme de contrôle MD5 de 100 Mo de données, qemu-wasm prend 8 secondes, DingusPPC 13 secondes et PearPC 18 secondes
- L’écart reste important avec un invité graphique comme Mac OS X
1 commentaires
Avis sur Hacker News
PearPC a bien tenu quelques années, mais il a perdu l’essentiel de son élan après la mort dans un accident de train de son mainteneur d’origine
J’étais à l’époque un utilisateur enthousiaste et membre de la communauté, et j’en ai encore les larmes aux yeux quand j’y repense
https://www.wired.com/2004/07/pearpc-coauthor/
Infinite Mac est une collection de versions système et de logiciels Macintosh classique et NeXT, rendue facilement accessible depuis un navigateur web
https://infinitemac.org/
L’un des passages les plus intéressants de l’article était le lien vers un émulateur CPU PPC de moins de 700 lignes
https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
On voit ce genre de concision dans les émulateurs 6502, mais c’est rare pour une architecture relativement moderne
J’ai du mal à imaginer ce que ressentirait un passionné de tech de 20 ans aujourd’hui face à OS X 10.4, 10.5 ou 10.6
Amèrement, ça me fait penser à quelqu’un du Moyen Âge se tenant devant une statue classique et se disant : « Comment l’humanité a-t-elle pu un jour créer quelque chose comme ça ? »
Cela dit, les goûts changent. Les gens du vrai Moyen Âge auraient peut-être pensé : « C’est quoi cette décadence païenne ? », et aujourd’hui on pourrait se dire : « Des icônes photoréalistes, quelle gêne ! »
L’installation d’apps reste le « glisser-déposer depuis un dmg façon IKEA », avec parfois un zip ou un pkg. Les fenêtres du Finder ont déjà les signets dans la barre latérale gauche, et le Dock fonctionne de la même façon. Il y a bien eu cette étrange période du Dock 3D, je crois que c’était Leopard
Il n’y a pas de Mac App Store, mais de nos jours presque personne ne l’utilise vraiment non plus, et Spotlight est apparu avec Tiger. C’est beaucoup plus facile à reconnaître que l’écart entre Windows XP et 11. XP fonctionne assez différemment de 11
À l’époque, toucher au dossier système n’était pas aussi compliqué qu’aujourd’hui
Le haut Moyen Âge a aussi produit beaucoup de beaux objets et bâtiments. Il n’en reste pas énormément, mais rien que parmi ce que j’ai vu en personne, il y a des exemples comme la sépulture navale de Sutton Hoo ou les églises anglo-saxonnes
Les captures d’écran sont vraiment étonnantes. Personnellement, je trouve que Mac OS X est bien plus beau que le Mac OS d’aujourd’hui
C’est clair et ordonné, ça donne l’impression : « OK, avec cet environnement, je peux travailler ! »
Le Mac OS actuel me donne plutôt l’impression : « À l’aide, je suis tombé dans un sac de bonbons, comment j’en sors ? » Je me demande si d’autres ressentent ça aussi
C’est pareil sous Windows. On travaille rarement avec le système d’exploitation lui-même, les apps natives sont rares, et la plupart sont soit basées sur le navigateur, soit des apps multiplateformes utilisant des design systems tiers
J’en ai assez que les éditeurs de logiciels fassent semblant de bien concevoir leurs logiciels
10.4 Tiger est similaire, mais la barre de menus supérieure brillante a fini par me déplaire avec le temps. 10.5 Leopard avait ce Dock 3D tape-à-l’œil et kitsch, une barre de menus supérieure transparente et des dégradés plus modernes
À l’époque c’était cool, mais les dégradés n’étaient pas aussi réussis que le métal brossé et Aqua. Tout ce qui a suivi est un peu ennuyeux
C’est surprenant qu’il ait réussi avec le projet pearpc, qui n’avait pas eu de dernier commit depuis plus de dix ans : https://github.com/sebastianbiallas/pearpc
Son fork est ici : https://github.com/mihaip/pearpc
Il a ajouté une cible WebAssembly, mais semble aussi conserver la prise en charge de x86-64
Il a aussi écrit un billet sur le processus d’ajout de NextStep à Infinite Mac : https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...
J’adore vraiment ce genre de choses. À l’époque, Aqua avait quelque chose d’une révélation
Un Unix grand public, utilisable même par une grand-mère, avec en plus la prise en charge des principales apps tierces : c’était un coup de maître absolu
J’espère que certains de ces éléments reviendront avec Liquid Glass, mais franchement, Aqua a encore fière allure
Ce que les imitations comme Windows Vista ou les thèmes Linux ont raté, c’est à quel point tout était cohérent et utilisable. C’était beau, mais surtout, ça fonctionnait vraiment bien
C’est agréable de revoir des UI dont on se souvient. Le Platinum de l’époque de Macintosh OS 8, et l’UI MacOS X léchable des environs d’OS X 10.3 et 10.4 me manquent
J’aimais aussi OpenLook de SunOS/Slowlaris, les UI NeXTStep/OpenStep, Microsoft Windows 2000 — sommet d’avant Winblows XP, qui n’aurait jamais dû mélanger orange et vert —, ainsi que les plaisirs de SGI IRIX et de la famille Motif
Les éléments d’UI étaient presque toujours distinguables, compréhensibles et cohérents. Quand on actionnait un contrôle standard, on savait exactement ce qui allait se passer avant même l’exécution, et c’est exactement ce qui se passait
Il semble que les rendre personnalisables, thémables, remplaçables et « plus jolis » nous ait menés à ce que nous avons aujourd’hui
Les débuts d’OS X ont été le véritable âge d’or du Mac. Le matériel était assez compétitif face au x86, et le système d’exploitation était parmi les meilleurs jamais conçus
Les deux ont fini par se mettre à grincer, mais comme nous vivons aujourd’hui un deuxième âge d’or du matériel, on peut rêver qu’un jour prochain Mac OS redevienne excellent
Cela dit, même dans ce nouvel âge d’or matériel, les performances d’émulation ici sont presque inutilisables sur M1 et Safari
J’avais des kernel panics tous les jours, et QuickTime plantait avec une erreur de segmentation pendant que je regardais des vidéos
Pour lire des formats comme wmv ou divx, il fallait partir en quête du bon codec à trouver et installer
Il y avait aussi de la surchauffe, parce qu’ils n’avaient pas mis de vraies aérations pour le flux d’air afin de préserver l’esthétique
Le M4 mini d’entrée de gamme est impressionnant. L’ordinateur entier consomme moins qu’un seul GPU x86 aux performances comparables
Dark Castle ! Quand j’étais enfant, mon père avait un Apple Lisa. Il développait une suite de comptabilité pour Apple, et Apple lui avait gentiment fourni la machine
À l’époque, je tenais cette machine incroyable pour acquise et je ne l’utilisais que pour les jeux et MacPaint. Dans la collection de disquettes 3,5 pouces de mon père, il y en avait une marquée « Dark Castle », mais pour une raison dont je ne me souviens pas, elle ne fonctionnait pas sur le Lisa
Je supposais que c’était un jeu, mais j’étais tellement déçu de ne pas pouvoir y jouer, et cette disquette mystérieuse me fascinait
En 2025, j’ai lancé l’émulateur Infinite Mac System 7 : https://infinitemac.org/1991/System%207.0
Mon cœur a fait un bond. Dans le dossier « Games », Dark Castle était là
Trente ans plus tard, je peux enfin jouer à ce jeu. Les graphismes sont charmants, et on y sent aussi des éléments de classiques de Sierra comme King’s Quest et Prince of Persia
https://en.wikipedia.org/wiki/Dark_Castle
Mon programme de ce soir est tout trouvé