Infinite Mac OS X
(blog.persistent.info)- Na plataforma Infinite Mac, agora é possível executar versões iniciais da série Mac OS X (10.1, 10.3) no navegador
- O emulador PowerPC PearPC foi portado para Emscripten/WebAssembly, alcançando melhorias de compatibilidade e estabilidade
- Em comparação com o DingusPPC, houve melhorias de desempenho e correções de bugs de causa desconhecida, passando por um processo de otimização algorítmica
- Também foi reconstruída uma imagem de disco Infinite HD adequada ao Mac OS X, permitindo acesso a diversos softwares e ferramentas de desenvolvimento dos anos 2000
- Com a aplicação do estilo Aqua na UI, a experiência retrô foi reforçada, mantendo em vista possibilidades de evolução futura
Resumo
O projeto Infinite Mac, que permite experimentar online sistemas legados há muito tempo, passou a suportar versões iniciais como Mac OS X 10.1 e 10.3, tornando possível executá-las em navegadores modernos. Nesse processo, emuladores PowerPC como PearPC e DingusPPC foram portados com base em Emscripten/WebAssembly, com vários esforços para melhorar o desempenho e garantir a estabilidade. Por meio de otimizações algorítmicas e correções de bugs, a resolução e a confiabilidade foram elevadas em relação ao hardware original, enquanto o Infinite HD, contendo softwares e ferramentas de desenvolvimento da época, também foi reconstituído para ampliar a utilidade. Além disso, o tema Aqua foi aplicado à interface do site para oferecer uma experiência nostálgica, e a expansão futura para sistemas ainda mais retrô, como A/UX e Lisa, também está sendo considerada. O projeto demonstra uma tentativa técnica de atingir múltiplos objetivos, como emulação de programas, expansão de arquivos open source e restauração de UI.
Expansão do suporte ao Mac OS X
- No Infinite Mac, versões iniciais do OS X, como Mac OS X 10.1 e 10.3, foram portadas para rodar no navegador
- Reproduzindo o desempenho lento do hardware real, também é possível experimentar aplicativos representativos da época, como NetNewsWire Lite e Terminal
- As imagens de disco mais recentes incluem parte do software indie da época, facilitando a exploração de softwares retrô
Processo de port do PearPC
- No início, o foco estava em portar e modificar o emulador DingusPPC, mas a direção mudou para o PearPC por causa de problemas de kernel panic e falhas gráficas
- O PearPC é uma base de código multiplataforma projetada para executar Mac OS X em sistemas x86 do início dos anos 2000, o que tornou relativamente fácil portá-lo para WebAssembly sem trabalho adicional significativo
- Recentemente, o principal mantenedor de Basilisk II e SheepShaver criou um branch experimental do PearPC, permitindo build em versões modernas do macOS
- O código-fonte é antigo e baseado em C++ legado, mas traz particularidades como uma string class personalizada,
sprintfe um decodificador GIF - Graças à estrutura multiplataforma, ao design com quase nenhum uso de threads e às camadas estruturais de abstração, a migração foi concluída rapidamente
Otimização de desempenho e limitações
- No PearPC, a confiabilidade no boot e execução do Mac OS X 10.2 era alta, mas a velocidade de execução era inferior à do DingusPPC
- A perda de desempenho causada pela ausência de cache de MMU era significativa
- Várias otimizações baseadas em algoritmos aplicadas no DingusPPC também foram levadas ao PearPC, obtendo algum ganho na redução do tempo de boot
- O PearPC implementa apenas o subconjunto necessário de instruções PowerPC e utiliza vários “truques”, como firmware e drivers customizados
- Ainda há a expectativa de que, no longo prazo, o DingusPPC seja mais promissor para uma emulação de Mac OS X rápida e estável
Descoberta paralela: tratamento de exceções FP
- Ao introduzir um método de decodificação unificado no interpretador do PearPC, surgiram falhas de renderização em operações de ponto flutuante
- Como o kernel do Mac OS X registra o tratamento de exceções de acordo com o estado do bit FP no registrador MSI, o problema de renderização foi resolvido ao implementar isso no código
- No DingusPPC, o mesmo problema de ausência do bit FP também causava anomalias na renderização de texto, e a estabilidade melhorou bastante após a correção
- A implementação evoluiu de um tratamento improvisado para uma abordagem mais correta, melhorando bastante também a confiabilidade da execução do 10.1
- Combinando os dois emuladores, o suporte foi ampliado para executar uma variedade maior de versões do OS X
Reconstrução da imagem de disco Infinite HD
- Foi criada uma nova imagem de disco adequada à era do Mac OS X, incluindo muitos softwares indie e ferramentas para desenvolvedores daquele período
- Como arquivos
.dmgantigos não são montados diretamente no macOS atual, foi montado um pipeline automatizado de conversão com ferramentas como dmg2img - Há algumas limitações por causa das diferenças entre os sistemas de arquivos HFS e HFS+, mas a maior parte dos softwares funciona normalmente
- O ambiente de execução de softwares do início dos anos 2000 foi completado com diversas fontes, como sites de bibliotecas e o Wayback Machine
- Com a adoção de uma técnica de geração dinâmica de imagens multipartição, é possível montar até 3 volumes: disco de boot, Infinite HD e Saved HD para armazenamento
UI: aplicação do estilo Aqua
- O tema Aqua também foi adotado na UI do Infinite Mac para maximizar a nostalgia retrô
- Os assets de imagem do estilo Mac OS X 10.0/10.1 foram extraídos manualmente, chegando a reproduzir até os efeitos de translucidez
- O estilo dos controles do site também é aplicado automaticamente de acordo com a aparência de cada OS (Classic, Platinum, NeXT etc.)
- Em sintonia com a expectativa de grandes mudanças futuras na UI do Apple macOS, isso também serve como um “ponto de referência” da UI do passado
Recursos adicionais e marcos
- Adição do recurso de montar partições do Mac OS 9 e executar o ambiente Classic (suportado apenas no 10.1)
- Também é possível verificar diferenças de UX entre OSes, como o comportamento de operações repetidas no antigo app Calculator
- O modo mensagens de boot (Verbose) embutido no PearPC foi ativado, e no DingusPPC foi implementada a forma de definir variáveis do Open Firmware
- A expansão da marca por meio do domínio macosx.app também está sendo tentada, mas no momento ele está em posse de outra pessoa
Expansão futura e encerramento
- Com a expansão do suporte ao Mac OS X, o Infinite Mac criou uma ponte com o macOS moderno
- Para um retrô mais profundo, também são mencionadas possibilidades de port para A/UX, Lisa, Pippin e Newton
- Há interesse experimental também no QEMU baseado em WebAssembly (wasm), com sinais positivos observados em testes de desempenho
- A emulação de Mac OS X via web oferece valor em diversos cenários de TI/startups, como experimentação, preservação de software legado e testes de desenvolvimento
1 comentários
Comentários do Hacker News
.dmg, favoritos do Finder, comportamento do Dock e até a introdução do Spotlight já estavam presentes naquela época, e que, comparado à mudança entre Windows XP e Windows 11, o Mac mudou poucowmvoudivx) fazia parte da rotina, e o superaquecimento também era frequente porque, para parecer bonito, os aparelhos nem tinham saídas de ventilação