1 puntos por GN⁺ 2025-06-21 | 1 comentarios | Compartir por WhatsApp
  • Infinite Mac ahora puede ejecutar versiones tempranas de Mac OS X en el navegador, y actualmente 10.1 y 10.3 son las mejor soportadas
  • Cuando la ruta anterior con DingusPPC se topó con kernel panics y problemas gráficos, el proyecto cambió de rumbo hacia un port de PearPC creado con el objetivo de emular Mac OS X de inicios de los 2000
  • El rendimiento sigue siendo lento: Mac OS X 10.2 tarda casi 2 minutos en quedar completamente funcional, y las optimizaciones solo lograron recortar unos 15 segundos
  • Un bug por omitir la verificación del bit FP en el manejo de punto flotante de PowerPC provocaba problemas en el renderizado del Dock y en las ventanas del Finder, y al corregirlo también mejoró la estabilidad de DingusPPC
  • Infinite HD fue reorganizado para incluir software indie de la era inicial de Mac OS X y herramientas de los Developer CD, aunque siguen existiendo limitaciones por las diferencias entre HFS/HFS+ y la compatibilidad con .dmg antiguos

Ejecutar las primeras versiones de Mac OS X en el navegador

  • Infinite Mac ahora puede ejecutar versiones tempranas de Mac OS X
    • Mac OS X 10.1 y Mac OS X 10.3 son las versiones mejor soportadas
    • La velocidad de ejecución no es rápida, pero la sensación es cercana a recordar que el hardware real de aquella época tampoco era mucho mejor
  • Infinite HD, que también incluye software acorde a la época, fue reorganizado de nuevo con foco en software indie del periodo inicial de Mac OS X

Cambio de rumbo hacia un port de PearPC

  • Al principio se intentó ejecutar Mac OS X en Infinite Mac con DingusPPC, pero desde el verano pasado no se pudo avanzar más allá de kernel panics y fallas gráficas
    • Se intentó acotar el problema con un modo de ejecución determinista, pero el siguiente paso no estaba claro
  • Como alternativa se eligió PearPC
    • PearPC fue creado para emular Mac OS X en máquinas x86 con Windows y Linux de inicios de los 2000
    • Tras la transición a Intel, perdió interés y pasó a considerarse en la práctica una base de código detenida
  • El punto de partida del port fue que kanjitalk755 había creado una rama experimental de PearPC que compila y corre en macOS moderno
  • PearPC tenía una base de código multiplataforma y no usaba de forma extensa conceptos difíciles de portar, como los hilos, así que resultó más fácil de llevar a WebAssembly/Emscripten y al runtime de Infinite Mac
    • En unos pocos días se avanzó en compilación, salida de video, carga de imágenes de disco y conexión de entradas de mouse y teclado
    • Como resultado, Mac OS X 10.2 pudo ejecutarse en el navegador con mayor estabilidad que antes

Optimización de rendimiento y cuellos de botella pendientes

  • PearPC ejecutaba Mac OS X 10.2 con más estabilidad, pero se sentía más lento que DingusPPC
  • Se llevó el harness de benchmark de DingusPPC a PearPC y se repitieron en PearPC optimizaciones ya aplicadas antes a DingusPPC
    • Ambos emuladores son intérpretes puros basados en tablas de búsqueda, así que el trabajo fue relativamente directo
    • Se logró recortar unos 15 segundos del tiempo de arranque de Mac OS X 10.2
  • Incluso después de optimizar, tarda casi 2 minutos en llegar a un estado completamente usable
    • Se añadió una advertencia en la interfaz de Infinite Mac indicando que el arranque de Mac OS X puede ser lento
  • El cuello de botella más grande es la ausencia de caché MMU en PearPC
    • Cada operación de load/store pasa por cálculos complejos de direcciones y por eso resulta costosa
    • DingusPPC cuenta con una caché jerárquica más madura que parece ser efectiva
  • PearPC puede ser más estable que DingusPPC al ejecutar 10.2~10.4, pero su base de código es menos rigurosa
    • Usa firmware y controladores de video personalizados
    • Solo implementa parte de las instrucciones PowerPC necesarias para Mac OS X
    • A largo plazo, se espera que DingusPPC termine siendo la opción rápida, estable y correcta

Verificación del bit FP y bug de renderizado

  • Mientras se aplicaba al intérprete de PearPC un enfoque de “tabla de decodificación unificada” por familias de opcode, apareció una regresión al modificar el manejo de operaciones de punto flotante
    • Se produjo un glitch en el renderizado del Dock
    • Las ventanas del Finder no se abrían
  • El despacho de los grupos de opcode 59 y 63 no debía limitarse a una búsqueda simple, sino que primero tenía que verificar el bit FP del Machine State Register
    • Si el bit FP no estaba activado, debía lanzarse la excepción “floating point unavailable”
  • Los chips PowerPC usados en las Mac de esa época sí tenían FPU, pero durante el arranque de Mac OS X esa excepción ocurre con frecuencia
    • En el código fuente del kernel xnu de esa época están el lugar donde se limpia el bit FP y el manejador de la excepción
    • Parece ser una optimización para evitar guardar y restaurar los registros de la FPU en los cambios de contexto
  • Al implementar esa misma verificación de FP en el código de despacho optimizado, desaparecieron los problemas de renderizado
  • El mismo bug también seguía presente en DingusPPC
    • DingusPPC siempre dejaba pasar las instrucciones de punto flotante sin verificar el bit FP
    • Al hacer una corrección rápida para generar la excepción, desaparecieron los glitches de renderizado de Mac OS X
    • Luego se añadió una implementación formal junto con ajustes para evitar pérdida de rendimiento, y la estabilidad de DingusPPC mejoró mucho
  • Al combinar ambos emuladores se amplió el rango de versiones tempranas de Mac OS X que pueden ejecutarse
    • DingusPPC puede ejecutar 10.1 de forma estable
    • PearPC no puede ejecutar 10.1 de forma estable
    • 10.0 sigue siendo inestable y la Public Beta entra en kernel panic de inmediato

Reorganización de Infinite HD

  • Uno de los atractivos de Infinite Mac es que monta junto al sistema un Infinite HD con software acorde a la época
  • Con el soporte para Mac OS X, se creó una versión separada que va más allá de las apps clásicas de Mac de los 80 y 90 para incluir software de la era inicial de Mac OS X
    • Además de apps preferidas a nivel personal, se amplió la lista con sugerencias recibidas
  • La imagen de disco se genera extendiendo el sistema de automatización existente
    • Como en el periodo inicial de Mac OS X se usaban mucho las imágenes de disco, se agregó una función para importar .dmg a una carpeta adicional dentro de la imagen generada
  • Los .dmg antiguos tenían varias variantes aunque compartieran la misma extensión, así que no siempre se montaban con hdiutil en macOS moderno
    • Al final se optó por extraer primero la partición raw con dmg2img
    • Después se usó una solución indirecta: recrear una nueva imagen de disco que sí pudiera montarse y copiarse desde macOS moderno
  • En la práctica, reunir software fue difícil porque el software de Mac OS X de inicios y mediados de los 2000 era un punto ciego
    • Hay parte en Macintosh Garden, pero no con alta prioridad
    • En muchos casos ya era tan antiguo que había desaparecido del proveedor original
    • Se recurrió mucho a la Wayback Machine
  • También se instalaron los Developer CD correspondientes a cada versión de Mac OS X para poder usar herramientas como Project Builder e Interface Builder

Sistema de archivos y montaje de múltiples discos

  • El proceso de construcción de discos se centra en HFS, pero el formato por defecto en ese periodo era HFS+
    • HFS+ ofrece funciones más avanzadas, como nombres de archivo más largos y caracteres Unicode arbitrarios
    • Los archivos de imagen de disco que dependen de funciones de HFS+ no pueden convertirse sin pérdida
    • Para la mayoría del software esto no representó un problema grave
  • Para montar hasta tres unidades —el disco de arranque, Infinite HD y Saved HD— se tomó prestado el enfoque de un fork de DingusPPC
    • Al iniciar, se genera al vuelo una imagen de disco con múltiples particiones a partir de una cantidad arbitraria de imágenes de partición especificadas

Modo Aqua e interfaz del sitio

  • Para completar la incorporación de Mac OS X, también se añadió un modo Aqua a los controles del sitio de Infinite Mac
    • Antes ya existían las apariencias classic, Platinum y NeXT
  • Para el diseño Aqua se eligió el estilo de 10.0/10.1
    • Aunque se prefieren las versiones más sobrias de 10.3 y 10.4, se consideró que la nostalgia por 10.0/10.1 era mayor
  • Para usar los mismos recursos gráficos que el sistema operativo, se extrajeron los recursos originales en lugar de usar capturas de pantalla
    • Como los recursos de Aqua usan muchos elementos semitransparentes, una captura común no era suficiente
    • Se usaron resource_dasm y pxm2tga para extraer los recursos originales desde Extras.rsrc

Ejecutar Classic, modo verbose y pequeños hallazgos

  • Como se pueden montar varias imágenes, también es posible colocar una partición de Mac OS 9 y arrancar el entorno de compatibilidad Classic
    • Esta función solo funciona en 10.1
    • PearPC no soportaba Classic
    • Como resultado, es posible emular apps clásicas de Mac dentro de un Mac OS X emulado dentro de una máquina virtual WebAssembly
  • Con las imágenes de Mac OS X también se pudo observar un cambio en el comportamiento de Calculator
    • Hasta 10.3 no existía la acción de presionar = repetidamente
    • En 10.4 sí existía
  • Como el arranque de Mac OS X es lento, se expuso el modo verbose para mostrar mejor el progreso
    • PearPC ya tenía un método integrado
    • En DingusPPC se añadió una función para establecer variables de Open Firmware al inicio
    • En el cuadro de diálogo de instancias personalizadas de Infinite Mac se expone como un interruptor de “Debug Mode”
  • También se intentó conseguir el dominio macosx.app, pero ya estaba registrado
    • Ese dominio redirige a un video específico de YouTube
    • El YouTuber del video respondió que él no lo había registrado

Próximos candidatos y posibilidad de QEMU

  • Con el soporte para Mac OS X, Infinite Mac llegó a un punto cercano al macOS moderno
    • Aun así, todavía quedan dos transiciones más de CPU y varios cambios menores
    • Tiger ya tiene una forma que incluso los usuarios actuales de macOS reconocerían de inmediato
  • Como objetivos de retrocomputación más profundos o más específicos, siguen pendientes A/UX, Lisa, Pippin y Newton
    • A/UX es un sistema contemporáneo del classic Mac OS y vale la pena compararlo con NeXTStep
    • Shoebill ejecuta A/UX y su base de código también parece portable
    • Lisa, Pippin y Newton vía Einstein también siguen como candidatos
  • Antes se consideraba que portar QEMU a WebAssembly era un proyecto demasiado grande, y el rendimiento de qemu.js tampoco parecía prometedor
  • Recientemente, gracias a qemu-wasm y a una presentación en FOSDEM, volvió a verse como algo posible
    • El rendimiento mostrado en demos con Linux como invitado resulta alentador
    • En un benchmark improvisado calculando el checksum MD5 de 100MB de datos, qemu-wasm tardó 8 segundos, DingusPPC 13 segundos y PearPC 18 segundos
    • Todavía existe una gran brecha cuando se trata de un sistema gráfico invitado como Mac OS X

1 comentarios

 
GN⁺ 2025-06-21
Comentarios en Hacker News
  • Es cierto que PearPC aguantó bien durante algunos años, pero perdió casi todo su impulso después de que su mantenedor original muriera en un accidente de tren
    En ese entonces era un usuario entusiasta y miembro de la comunidad, y todavía se me salen las lágrimas cuando lo recuerdo
    https://www.wired.com/2004/07/pearpc-coauthor/

    • Cuando grandes desarrolladores fallecen de repente, muchas veces ni siquiera hay un obituario y parece que solo otro desarrollador sabe algo, así que a veces dan ganas de creer que los alienígenas pensaron que eran demasiado valiosos para dejarlos en la Tierra y se los llevaron
    • Alguien copió su trabajo y lo vendió con el nombre de cherryos
    • Este artículo está detrás de un muro de pago
  • Infinite Mac es una colección de versiones y software de Macintosh clásico y sistemas NeXT, puesta al alcance fácilmente desde un navegador web
    https://infinitemac.org/

    • El artículo del blog debería haber enlazado o definido Infinite Mac para que pudiera entenderse por sí solo
    • Qué bueno que enlazaron esta página. Es una omisión importante del autor del blog, y si no fuera por este comentario probablemente no habría encontrado este excelente sitio
  • Una de las partes más interesantes del artículo fue el enlace a un emulador de CPU PPC de menos de 700 líneas
    https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
    Uno ve este tipo de concisión en emuladores de 6502, pero no es tan común en arquitecturas relativamente modernas

    • Como es RISC, no resulta tan sorprendente. Los emuladores de MIPS también andan más o menos por ese tamaño
  • No puedo imaginar qué sentiría alguien fan de la tecnología que hoy tenga 20 años al encontrarse con OS X 10.4 o 10.5, 10.6
    Con cierta amargura, me viene la imagen de una persona de la Edad Oscura frente a una estatua clásica pensando: “¿Cómo pudo la humanidad hacer algo así alguna vez?”
    Aunque los gustos cambian. Quizá una persona real de la Edad Oscura habría pensado “¿qué es esta decadencia pagana?”, y hoy podrían verlo como “¡qué cursis esos íconos fotorrealistas!”

    • 10.4 se ve y funciona básicamente casi igual que cualquier macOS actual. Aunque exista Liquid Glass, se comporta de forma parecida
      Instalar apps sigue siendo “arrastrar la app desde un dmg estilo IKEA”, y a veces hay zip o pkg. Las ventanas de Finder ya tienen marcadores en la barra lateral izquierda y el Dock funciona igual. Hubo una etapa rara con el Dock 3D, que creo que fue en Leopard
      No hay Mac App Store, pero hoy en día casi nadie la usa tampoco, y Spotlight apareció por primera vez en Tiger. Es mucho más fácil de reconocer que la diferencia entre Windows XP y 11. XP sí funciona bastante distinto a 11
    • Tengo 20 años, y me da nostalgia porque tengo recuerdos borrosos de haber usado 10.5 o 10.6 cuando era niño
    • Empecé como desarrollador en la época de 10.4/10.5. Era sobre todo una etapa de probar cosas y meter mano a temas para que todo se viera como un modo oscuro a medias
      En ese tiempo tocar las carpetas del sistema no era tan complicado como ahora
    • No entiendo lo de la “Edad Oscura”. No fue tanto que desapareciera la capacidad, sino más bien que el Imperio gastaba dinero en unas cosas y los reinos independientes en otras
      Incluso en la Alta Edad Media hubo muchos objetos y construcciones hermosas. No sobreviven demasiados, pero incluso de los que he visto personalmente hay ejemplos, como el entierro en barco de Sutton Hoo o las iglesias anglosajonas
  • Las capturas de pantalla son realmente sorprendentes. Personalmente, Mac OS X me parece mucho mejor visualmente que el Mac OS de hoy
    Se ve claro y ordenado, y transmite una sensación de “ok, ¡en este entorno sí puedo trabajar!”
    El Mac OS actual me da más una sensación de “ayuda, me caí en una bolsa de dulces, ¿cómo salgo de aquí?”. Me pregunto si alguien más lo siente así

    • Siento que me estoy volviendo fan de las interfaces grises de antes (Windows 95, macOS 9). Igual que una calculadora es solo una herramienta, esas UI también se sienten como herramientas, y eso resulta cómodo
    • La verdad, no tanto. En la práctica, la UI que uno realmente ve y usa se limita a la barra de menú, los tres puntitos y de vez en cuando la barra de Spotlight
      En Windows pasa lo mismo. Casi nunca trabajas dentro del sistema operativo como tal, y las apps nativas son raras; la mayoría son basadas en navegador o apps multiplataforma con sistemas de diseño de terceros
    • En realidad no hay ninguna razón por la que el MacOS moderno no pueda ofrecer esta misma apariencia y sensación. Si hay una razón obvia, sería un diseño de software deficiente y poco modular
      Ya cansa que las empresas de software finjan que saben hacer buen software
    • Lo que más me gusta es la mezcla de Aqua y metal cepillado de 10.3 Panther
      10.4 Tiger era parecido, pero con el tiempo dejó de gustarme la barra de menú superior brillante. 10.5 Leopard tenía ese Dock 3D recargado y medio cursi, la barra de menú superior transparente y gradientes más modernos
      En su momento se veía bien, pero los gradientes no eran tan geniales como el metal cepillado y Aqua. Después de eso, todo se volvió un poco aburrido
    • Las rayas en las ventanas sí eran un poco demasiado, y me alegró bastante cuando desaparecieron
  • Me sorprende que lo hayan logrado con el proyecto pearpc, que no tenía un último commit desde hace más de 10 años: https://github.com/sebastianbiallas/pearpc
    Su fork está en https://github.com/mihaip/pearpc
    Parece que añadió un objetivo para WebAssembly, pero también mantuvo el soporte para x86-64
    Además, también escribió en el blog sobre cómo metió NextStep en Infinite Mac: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...

  • Estas cosas son realmente geniales. En ese entonces Aqua era como una revelación

    • Todos los gestores de ventanas de Linux tenían un tema Aqua. Apple realmente lanzó el sistema operativo que la gente del “año del escritorio Linux” llevaba años intentando hacer y sigue intentando hacer
      Era un Unix mainstream con una usabilidad que hasta tu abuela podía manejar, y además soportaba apps importantes de terceros, así que fue un jonrón total
    • Aqua sigue pareciendo una revelación incluso hoy. Hemos retrocedido mucho en la capacidad de identificar los controles de ventana de un vistazo
      Espero que algo de eso regrese con Liquid Glass, pero, siendo sincero, Aqua todavía se ve bien
      Lo que las imitaciones como Windows Vista o los temas de Linux no lograron captar fue lo consistente y utilizable que era todo. Se veía genial, pero más importante aún, realmente funcionaba muy bien
    • Steve Jobs dijo: “Durante los últimos 18 meses hemos estado diseñando en secreto una interfaz de usuario completamente nueva, que lleva el legado de Apple al próximo siglo. Llamamos a esta nueva UI Aqua. Porque es líquida. Uno de los objetivos de diseño era que al verla te dieran ganas de lamerla”
    • Liquid Glass parece hacer recordar aquella época
  • Da gusto ver interfaces que uno recuerda. Extraño Platinum, de la era de Macintosh OS 8, y la UI de MacOS X tan "lamible" de la época de OS X 10.3 y 10.4
    También me vienen a la mente OpenLook de SunOS/Slowlaris, la UI de NeXTStep/OpenStep, Microsoft Windows 2000 como el punto más alto antes de Winblows XP, cuando jamás debieron mezclar naranja y verde, y también el placer de SGI IRIX y todo lo relacionado con Motif
    Los elementos de la UI casi siempre eran distinguibles, comprensibles y consistentes. Si usabas un control estándar de la UI, sabías exactamente qué iba a pasar antes de ejecutarlo, y en la práctica pasaba exactamente eso
    Parece que el resultado de volver todo personalizable, tematizable, reemplazable y “más bonito” es lo que tenemos hoy

  • Los primeros años de OS X fueron la verdadera edad de oro de la Mac. El hardware competía bastante bien con x86, y el sistema operativo estaba entre lo mejor que ha habido
    Al final ambos empezaron a fallar, pero ahora estamos en una segunda edad de oro del hardware, así que uno puede soñar con que quizá pronto Mac OS vuelva a ser excelente
    Eso sí, incluso en esta nueva edad dorada del hardware, el rendimiento de emulación aquí está cerca de ser casi inutilizable en M1 y Safari

    • No creo que Mac OS vaya camino a volverse excelente otra vez
    • Usé los primeros modelos x86, y en precio no eran competitivos, y OS X tampoco era tan bueno como se piensa
      Había kernel panics todos los días, y QuickTime solía caerse con errores de segmentación mientras veías video
      Para reproducir formatos como wmv o divx había que embarcarse en una quest para encontrar e instalar el códec correcto
      También había sobrecalentamiento porque, por hacerlos bonitos, no les pusieron buenas ventilas para el flujo de aire
    • He usado Macs en modo Think Different™ desde 68k hasta PPC, Intel y Silicon. Los mayores saltos de rendimiento fueron las dos transiciones de CPU más recientes, tanto en rendimiento absoluto como en rendimiento por watt
      La M4 mini básica de entrada es una maravilla. Toda la computadora consume menos energía que una sola GPU x86 de rendimiento similar
    • El mismo problema de siempre. El hardware te da rendimiento, y el software te lo quita
  • Dark Castle! Cuando era niño, mi padre tenía una Apple Lisa. La tenía porque desarrollaba una suite de contabilidad para Apple y Apple amablemente le había proporcionado la máquina
    En ese momento daba por sentado esa máquina increíble y solo la usaba para juegos y MacPaint. Entre la colección de discos de 3.5 pulgadas de mi padre había uno que decía “Dark Castle”, pero por alguna razón que no recuerdo no funcionaba en la Lisa
    Supuse que era un juego, pero me frustraba muchísimo no poder jugarlo, y ese disco misterioso me fascinaba
    Llegó 2025 y ejecuté el emulador Infinite Mac de System 7: https://infinitemac.org/1991/System%207.0
    Se me aceleró el corazón. Ahí mismo, dentro de la carpeta “Games”, estaba Dark Castle
    Después de 30 años, por fin puedo jugar este juego. Los gráficos tienen mucho encanto, y se le sienten elementos de clásicos de Sierra como King’s Quest y Prince of Persia
    https://en.wikipedia.org/wiki/Dark_Castle
    Ya quedó decidido mi plan para esta noche