1 pontos por GN⁺ 2025-06-21 | 1 comentários | Compartilhar no WhatsApp
  • O Infinite Mac agora consegue executar versões iniciais do Mac OS X no navegador, e no momento 10.1 e 10.3 são as versões com melhor suporte
  • Quando o caminho anterior com DingusPPC emperrou em kernel panic e problemas gráficos, a direção mudou para um port do PearPC criado com o objetivo de emular o Mac OS X do início dos anos 2000
  • O desempenho ainda é lento: o Mac OS X 10.2 leva quase 2 minutos para ficar totalmente funcional, e mesmo após otimizações a redução foi de cerca de 15 segundos
  • Um bug por não verificar o bit FP no tratamento de ponto flutuante do PowerPC causava problemas na renderização do Dock e nas janelas do Finder, e a correção também melhorou a estabilidade do DingusPPC
  • O Infinite HD foi reorganizado para incluir software indie da era inicial do Mac OS X e ferramentas dos Developer CDs, mas diferenças entre HFS/HFS+ e compatibilidade com .dmg antigos ainda continuam sendo limitações

Executando o Mac OS X inicial no navegador

  • O Infinite Mac agora pode executar o Mac OS X inicial
    • Mac OS X 10.1 e Mac OS X 10.3 são as versões com melhor suporte
    • A velocidade de execução não é alta, mas a sensação é de que o hardware real da época também não era tão melhor assim
  • O Infinite HD, que acompanha software adequado à época, também foi reorganizado com foco em software indie do período inicial do Mac OS X

Mudança de direção para um port do PearPC

  • No começo, a ideia era executar o Mac OS X no Infinite Mac com DingusPPC, mas por volta do verão passado o progresso travou em kernel panic e glitches gráficos
    • Tentou-se reduzir o escopo do problema com um modo de execução determinístico, mas o próximo passo não estava claro
  • Como alternativa, foi escolhido o PearPC
    • O PearPC foi criado no início dos anos 2000 para emular o Mac OS X em máquinas x86 com Windows e Linux
    • Depois da transição para Intel, o interesse diminuiu, e ele passou a ser tratado como uma base de código praticamente parada
  • O fato de kanjitalk755 já ter criado um branch experimental do PearPC que compila e roda no macOS moderno serviu como ponto de partida para o port
  • O PearPC tinha uma base de código multiplataforma e não usava de forma ampla conceitos difíceis de portar, como threads, então foi mais fácil levá-lo para WebAssembly/Emscripten e para o runtime do Infinite Mac
    • Em alguns dias, foi possível avançar até compilação, saída de vídeo, carregamento de imagens de disco e conexão de entrada de mouse e teclado
    • Como resultado, o Mac OS X 10.2 passou a rodar no navegador de forma mais estável do que antes

Otimização de desempenho e gargalos restantes

  • O PearPC executava o Mac OS X 10.2 com mais estabilidade, mas parecia mais lento que o DingusPPC
  • O benchmark harness do DingusPPC foi levado para o PearPC, e o mesmo trabalho anterior de otimização do DingusPPC foi repetido no PearPC
    • Os dois emuladores são interpretadores puros baseados em tabelas de consulta, então o trabalho foi relativamente direto
    • Houve redução de cerca de 15 segundos no tempo de boot do Mac OS X 10.2
  • Mesmo após as otimizações, ainda leva quase 2 minutos para chegar a um estado totalmente utilizável
    • A interface do Infinite Mac passou a incluir um aviso de que o boot do Mac OS X pode ser lento
  • O maior gargalo é a ausência de cache de MMU no PearPC
    • Todo load/store passa por um cálculo complexo de endereços, o que torna o processamento caro
    • O DingusPPC tem um cache hierárquico mais maduro, que parece funcionar bem
  • O PearPC pode ser mais estável que o DingusPPC ao executar 10.2 a 10.4, mas sua base de código é menos criteriosa
    • Usa firmware e driver de vídeo customizados
    • Implementa apenas parte das instruções PowerPC necessárias para o Mac OS X
    • No longo prazo, a expectativa é que o DingusPPC se torne a opção mais rápida, estável e correta

Verificação do bit FP e bugs de renderização

  • Enquanto o método de “tabela de decodificação unificada” era aplicado ao interpretador do PearPC por família de opcode, surgiu uma regressão numa mudança relacionada a operações de ponto flutuante
    • Apareceram glitches na renderização do Dock
    • As janelas do Finder não abriam
  • O despacho dos grupos de opcode 59 e 63 não podia fazer apenas uma consulta simples: era preciso verificar antes o bit FP no Machine State Register
    • Se o bit FP não estiver definido, deve ser lançada a exceção “floating point unavailable”
  • Os chips PowerPC usados nos Macs da época tinham FPU, mas essa exceção ocorria com frequência durante a inicialização do Mac OS X
    • O código-fonte do kernel xnu da época mostra onde o bit FP é limpo e o handler da exceção
    • Isso parece ser uma otimização para evitar salvar e restaurar registradores de FPU durante troca de contexto
  • Depois de implementar a mesma verificação de FP no código de despacho otimizado, os problemas de renderização desapareceram
  • O mesmo bug também ainda existia no DingusPPC
    • O DingusPPC deixava instruções de ponto flutuante passarem sempre, sem verificar o bit FP
    • Ao fazer uma correção rápida para gerar a exceção, os glitches de renderização do Mac OS X desapareceram
    • Depois entrou uma implementação oficial com ajustes para evitar perda de desempenho, e a estabilidade do DingusPPC melhorou bastante
  • Combinando os dois emuladores, a faixa de versões iniciais do Mac OS X que pode ser executada aumentou
    • O DingusPPC consegue executar o 10.1 com estabilidade
    • O PearPC não consegue executar o 10.1 com estabilidade
    • O 10.0 continua instável e o Public Beta ainda sofre kernel panic imediatamente

Reorganização do Infinite HD

  • Um dos atrativos do Infinite Mac é que ele monta junto o Infinite HD, com software apropriado para a época
  • Com o suporte ao Mac OS X, foi criada uma versão separada contendo software da era inicial do Mac OS X, além dos apps clássicos de Mac dos anos 80 e 90
    • Além de apps de preferência pessoal, a lista foi ampliada com sugestões
  • As imagens de disco são geradas por uma extensão da automação já existente
    • Como o uso de imagens de disco era muito comum no início da era Mac OS X, foi adicionada a função de importar .dmg para uma pasta extra dentro da imagem gerada
  • .dmg antigos, mesmo com a mesma extensão, tinham várias variações e nem sempre podiam ser montados com hdiutil no macOS moderno
    • No fim, foi usado o dmg2img para extrair primeiro a partição raw
    • Depois, foi adotado um desvio: recriar uma nova imagem de disco que o macOS moderno pudesse montar e copiar
  • Na coleta real de software, o software de Mac OS X do início a meados dos anos 2000 era um ponto cego
    • Parte dele existe no Macintosh Garden, mas não é uma prioridade alta
    • Em muitos casos, ele já havia saído do ar no fornecedor original por ser antigo demais
    • A Wayback Machine foi muito usada
  • Os Developer CDs correspondentes a cada versão do Mac OS X também foram instalados, permitindo usar ferramentas como Project Builder e Interface Builder

Sistema de arquivos e montagem de múltiplos discos

  • O processo de build dos discos é centrado em HFS, mas o padrão da época era HFS+
    • O HFS+ oferece recursos mais avançados, como nomes de arquivo mais longos e caracteres Unicode arbitrários
    • Arquivos de imagem de disco que dependem de recursos do HFS+ não podem ser convertidos sem perda
    • Para a maior parte do software, isso não foi um grande problema
  • Para montar até três drives — disco de boot, Infinite HD e Saved HD — foi aproveitada a abordagem de um fork do DingusPPC
    • Na inicialização, uma imagem de disco com múltiplas partições é gerada na hora a partir de um número arbitrário de imagens de partição especificadas

Modo Aqua e interface do site

  • Para completar a adição do Mac OS X, os controles do site do Infinite Mac também ganharam um modo Aqua
    • Antes, já existiam os visuais classic, Platinum e NeXT
  • Foi escolhido o estilo do Aqua do 10.0/10.1
    • Embora as versões mais sóbrias do 10.3 e 10.4 sejam preferidas, concluiu-se que o lado nostálgico do 10.0/10.1 falava mais alto
  • Para usar os mesmos recursos visuais do sistema operacional, foram extraídos os recursos originais em vez de usar screenshots
    • Como os recursos do Aqua usam muitos elementos semitransparentes, screenshots comuns não eram suficientes
    • Foram usados resource_dasm e pxm2tga para extrair os recursos originais de Extras.rsrc

Executando Classic, modo verbose e pequenas descobertas

  • Como é possível montar várias imagens, também dá para manter uma partição do Mac OS 9 e iniciar o ambiente de compatibilidade Classic
    • Esse recurso só funciona no 10.1
    • O PearPC não dava suporte ao Classic
    • Com isso, passa a ser possível emular apps clássicos de Mac dentro de um Mac OS X emulado dentro de uma máquina virtual WebAssembly
  • Com as imagens do Mac OS X, também foi possível observar mudanças no Calculator
    • Até o 10.3, não existia o comportamento de repetir = várias vezes
    • No 10.4, esse comportamento já existia
  • Como o boot do Mac OS X é lento, o modo verbose foi exposto para mostrar melhor o progresso
    • O PearPC já tinha um mecanismo embutido
    • No DingusPPC, foi adicionada uma função para definir variáveis do Open Firmware na inicialização
    • Na caixa de diálogo de instância customizada do Infinite Mac, isso aparece como a chave “Debug Mode”
  • Também houve tentativa de obter o domínio macosx.app, mas ele já estava registrado
    • O domínio redireciona para um determinado vídeo do YouTube
    • O YouTuber do vídeo respondeu que não foi ele quem registrou o domínio

Próximos candidatos e possibilidade com QEMU

  • Com o suporte ao Mac OS X, o Infinite Mac chegou a um ponto mais próximo do macOS moderno
    • Ainda restam duas transições de CPU e várias mudanças menores depois disso
    • O Tiger já tem, por padrão, uma aparência reconhecível até para usuários atuais de macOS
  • Como alvos de computação retrô mais profundos ou específicos, ainda restam A/UX, Lisa, Pippin e Newton
    • O A/UX é um sistema contemporâneo ao Mac OS clássico e vale comparação com o NeXTStep
    • O Shoebill executa A/UX, e sua base de código parece portável
    • Lisa, Pippin e Newton via Einstein também continuam como candidatos
  • Antes, o QEMU era visto como um projeto grande demais para portar para WebAssembly, e o desempenho do qemu.js também parecia pouco promissor
  • Recentemente, qemu-wasm e uma apresentação no FOSDEM voltaram a indicar que isso pode ser viável
    • O desempenho demonstrado com guest Linux é animador
    • Num benchmark improvisado de cálculo de checksum MD5 de 100MB de dados, o qemu-wasm levou 8 segundos, o DingusPPC 13 segundos e o PearPC 18 segundos
    • Ainda existe uma grande distância em relação a um guest gráfico como o Mac OS X

1 comentários

 
GN⁺ 2025-06-21
Opiniões no Hacker News
  • É verdade que o PearPC resistiu bem por alguns anos, mas perdeu grande parte do impulso depois que o mantenedor original morreu em um acidente de trem
    Eu era um usuário entusiasmado e membro da comunidade na época, e ainda hoje fico com lágrimas nos olhos ao lembrar
    https://www.wired.com/2004/07/pearpc-coauthor/

    • Muitas vezes, desenvolvedores brilhantes morrem de repente sem nem um obituário, e só um outro desenvolvedor parece saber de algo; às vezes dá vontade de acreditar que alienígenas decidiram que eles eram preciosos demais para deixá-los na Terra e os levaram embora
    • Alguém copiou o trabalho dele e vendeu com o nome cherryos
    • Este artigo está atrás de um paywall
  • Infinite Mac é uma coleção de versões de sistemas e softwares do Macintosh clássico e do NeXT, disponibilizada de forma fácil pelo navegador web
    https://infinitemac.org/

    • O post do blog deveria ter linkado ou definido o Infinite Mac para que pudesse ser entendido de forma independente
    • Que bom que você linkou esta página. Foi uma grande falha do autor do blog, e sem este comentário eu provavelmente não teria encontrado este excelente site
  • Uma das partes mais interessantes do texto foi o link para um emulador de CPU PPC com menos de 700 linhas
    https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
    Vemos esse tipo de concisão em emuladores de 6502, mas é raro em arquiteturas relativamente modernas

    • Por ser RISC, não chega a ser tão surpreendente. Emuladores de MIPS também têm mais ou menos esse tamanho
  • Não consigo imaginar como seria para um entusiasta de tecnologia de 20 anos hoje se deparar com o OS X 10.4, 10.5 ou 10.6
    De um jeito meio amargo, isso me lembra alguém da Idade das Trevas diante de uma escultura clássica pensando: “Como a humanidade um dia conseguiu fazer algo assim?”
    Mas gostos mudam. Pessoas reais da Idade das Trevas talvez pensassem “Que decadência pagã é essa?”, e hoje alguém poderia ver isso como “Ícones fotográficos? Que brega!”

    • O 10.4, basicamente, tem quase a mesma aparência e funciona quase do mesmo jeito que qualquer macOS atual. Mesmo com Liquid Glass, ele funciona de forma parecida
      Instalar apps ainda é “arrastar o app para fora de um dmg estilo IKEA”, com um zip ou pkg de vez em quando. As janelas do Finder já têm favoritos na barra lateral esquerda, e o Dock funciona do mesmo jeito. Houve aquele período estranho do Dock 3D, acho que foi no Leopard
      Não existe Mac App Store, mas hoje em dia quase ninguém usa mesmo; e o Spotlight era novidade no Tiger. É muito mais reconhecível do que a diferença entre o Windows XP e o 11. O XP funciona de um jeito bem diferente do 11
    • Tenho 20 anos e tenho lembranças vagas de ter usado o 10.5 ou 10.6 quando criança, então parece nostálgico
    • Comecei como desenvolvedor na época do 10.4/10.5. Era uma fase em que eu ficava rodando coisas e mexendo em temas, principalmente para tentar deixar tudo parecendo meio modo escuro
      Naquela época, mexer nas pastas do sistema não era tão complicado quanto hoje
    • Não sei o que querem dizer com “Idade das Trevas”. Em vez de uma perda de capacidade, foi mais uma diferença entre em que o império gastava dinheiro e em que os reinos independentes gastavam dinheiro
      Mesmo no início da Idade Média havia muitos artefatos e construções belos. Não restou tanta coisa, mas há exemplos que eu mesmo vi, como o sepultamento em navio de Sutton Hoo ou igrejas anglo-saxãs
  • As capturas de tela são realmente impressionantes. Pessoalmente, acho o Mac OS X muito mais bonito do que o Mac OS atual
    É claro e organizado, dando a sensação de “beleza, neste ambiente eu consigo trabalhar!”
    O Mac OS de hoje parece mais “socorro, caí dentro de um saco de balas, como eu saio daqui?”. Fico curioso se outras pessoas também sentem isso

    • Sinto que estou virando fã das antigas interfaces cinza (Windows 95, macOS 9). Assim como uma calculadora é apenas uma ferramenta, essas UIs também parecem ferramentas, e isso é confortável
    • Sinceramente, não. Na prática, a UI que você vê e usa fica limitada à barra de menus, aos três pontinhos e, às vezes, à barra do Spotlight
      No Windows é a mesma coisa. Quase nunca se trabalha no sistema operacional em si; apps nativos também são raros, e a maioria é baseada no navegador ou é app multiplataforma que usa sistemas de design de terceiros
    • Não há praticamente nenhum motivo para que o MacOS moderno não possa oferecer essa aparência e sensação. O motivo óbvio seria apenas um péssimo projeto de software sem modularidade
      Também estou cansado de empresas de software fingirem que fazem software bem
    • O meu favorito é a mistura de Aqua e metal escovado do 10.3 Panther
      O 10.4 Tiger é parecido, mas a barra de menus superior era brilhante e, com o tempo, isso ficou menos agradável. O 10.5 Leopard tinha aquele Dock 3D chamativo e cafona, a barra de menus superior transparente e gradientes mais modernos
      Na época era legal, mas os gradientes não eram tão bons quanto o metal escovado e o Aqua. Depois disso, tudo ficou meio sem graça
    • As listras nas janelas eram meio exageradas, e fiquei bem feliz quando desapareceram
  • É surpreendente que tenham conseguido sucesso com o projeto pearpc, que não tinha um commit final havia mais de 10 anos: https://github.com/sebastianbiallas/pearpc
    O fork dele está em https://github.com/mihaip/pearpc
    Ele adicionou um alvo WebAssembly, mas parece também manter o suporte a x86-64
    Além disso, ele também escreveu no blog sobre o processo de colocar o NextStep no Infinite Mac: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...

  • Esse tipo de coisa é realmente ótimo. Na época, o Aqua parecia uma revelação

    • Todo gerenciador de janelas do Linux tinha um tema Aqua. A Apple realmente lançou o sistema operacional que o pessoal do “ano do desktop Linux” vinha tentando criar havia anos, e ainda tenta criar hoje
      Era um Unix mainstream com usabilidade que até sua avó poderia usar, e ainda tinha suporte aos principais apps de terceiros, então foi um golaço
    • O Aqua ainda parece uma revelação. Houve um grande retrocesso na capacidade de identificar de relance os controles das janelas
      Espero que alguns desses elementos voltem no Liquid Glass, mas, sinceramente, o Aqua ainda é bonito
      O que imitações como Windows Vista ou temas de Linux não captaram foi o quanto tudo era consistente e usável. Parecia incrível, mas, mais importante que isso, funcionava muito bem
    • Steve Jobs disse: “Nos últimos 18 meses, projetamos em segredo uma interface de usuário totalmente nova, que leva o legado da Apple para o próximo século. Chamamos essa nova UI de Aqua, porque é líquida. Um dos objetivos de design era fazer você querer lambê-la no instante em que a visse”
    • Liquid Glass parece evocar de novo aquela época
  • É bom rever UIs guardadas na memória. Sinto falta do Platinum da época do Macintosh OS 8 e daquela UI lambível do MacOS X por volta do OS X 10.3 e 10.4
    Também gostava do OpenLook do SunOS/Slowlaris, da UI do NeXTStep/OpenStep, do Microsoft Windows 2000, que foi o auge antes do Winblows XP, quando nunca deveriam ter misturado laranja e verde, e também lembro com carinho do IRIX da SGI e das alegrias da linhagem Motif
    Os elementos de UI quase sempre eram distinguíveis, compreensíveis e consistentes. Ao acionar um controle padrão de UI, você sabia exatamente o que aconteceria antes mesmo de executar, e era exatamente isso que acontecia
    Parece que o resultado de torná-los customizáveis, tematizáveis, substituíveis e mais estilosos é o que temos hoje

  • O começo do OS X foi a verdadeira era de ouro do Mac. O hardware era bastante competitivo com x86, e o sistema operacional estava entre os melhores de todos os tempos
    No fim, os dois começaram a dar sinais de desgaste, mas agora estamos numa segunda era de ouro do hardware, então dá para sonhar que talvez, em breve, o Mac OS volte a ser excelente
    Ainda assim, mesmo nesta nova era de ouro do hardware, o desempenho da emulação aqui é quase inutilizável no M1 e no Safari

    • Não acho que o Mac OS esteja caminhando para voltar a ser excelente
    • Usei os primeiros modelos x86 e, em termos de preço, eles não eram competitivos, e o OS X também não era tão bom quanto eu imaginava
      Havia kernel panic todo dia, e o QuickTime morria com erro de segmentação enquanto eu assistia a vídeos
      Para reproduzir formatos de arquivo como wmv ou divx, era preciso embarcar numa missão para encontrar e instalar o codec certo
      Também havia superaquecimento, porque não colocaram aberturas adequadas de ventilação para o fluxo de ar, em nome da estética
    • Venho usando de forma Think Different™ desde 68k, passando por PPC, Intel e Silicon. Os maiores ganhos de desempenho vieram nas duas transições de CPU mais recentes, tanto em desempenho absoluto quanto em desempenho por watt
      O M4 mini básico de entrada é impressionante. O computador inteiro consome menos energia que uma única GPU x86 de desempenho parecido
    • É o mesmo problema de sempre. O hardware entrega desempenho, e o software o toma para si
  • Dark Castle! Quando eu era criança, meu pai tinha um Apple Lisa. Ele estava desenvolvendo um pacote de contabilidade para Apple, então a Apple gentilmente forneceu a máquina
    Na época, eu dava aquela máquina incrível como garantida e a usava só para jogos e MacPaint. Na coleção de discos de 3,5 polegadas do meu pai havia um disco escrito “Dark Castle”, mas, por algum motivo de que não me lembro, ele não funcionava no Lisa
    Eu imaginava que fosse um jogo, mas fiquei muito frustrado por não conseguir jogá-lo, e aquele disco misterioso me fascinava
    Chegando a 2025, rodei o emulador Infinite Mac System 7: https://infinitemac.org/1991/System%207.0
    Meu coração deu um salto. Lá estava Dark Castle, bem dentro da pasta “Games”
    Depois de 30 anos, finalmente posso jogar esse jogo. Os gráficos são charmosos, e também sinto elementos dos clássicos da Sierra, King’s Quest, e de Prince of Persia
    https://en.wikipedia.org/wiki/Dark_Castle
    A programação desta noite já está definida