- Infinite Mac अब ब्राउज़र में शुरुआती Mac OS X चला सकता है, और फिलहाल 10.1 और 10.3 का सपोर्ट सबसे बेहतर है
- मौजूदा DingusPPC रास्ता kernel panic और graphics समस्याओं में अटक जाने के बाद, 2000 के दशक की शुरुआत वाले Mac OS X emulation को लक्ष्य बनाकर बनाए गए PearPC port की ओर रुख किया गया
- performance अभी भी धीमी है; Mac OS X 10.2 को पूरी तरह काम करने लायक होने में लगभग 2 मिनट लगते हैं, और optimization के बाद भी समय केवल लगभग 15 सेकंड तक ही घटा
- PowerPC floating-point handling में
FPbit check छूट जाने वाले bug ने Dock rendering और Finder window समस्याएँ पैदा कीं, और इसे ठीक करने की प्रक्रिया में DingusPPC stability भी बेहतर हुई - Infinite HD को शुरुआती Mac OS X दौर के indie software और Developer CD tools शामिल करने के लिए फिर से बनाया गया, लेकिन HFS/HFS+ अंतर और पुराने
.dmgcompatibility अब भी सीमाएँ बने हुए हैं
ब्राउज़र में शुरुआती Mac OS X चलाना
- Infinite Mac अब शुरुआती Mac OS X चला सकता है
- Mac OS X 10.1 और Mac OS X 10.3 सबसे बेहतर सपोर्ट वाले version हैं
- चलने की speed तेज नहीं है, लेकिन उस समय के असली hardware भी इससे बहुत बेहतर नहीं थे
- उस दौर के अनुकूल software के साथ आने वाला Infinite HD भी शुरुआती Mac OS X काल के indie software केंद्रित रूप में फिर से तैयार किया गया है
PearPC port की ओर दिशा परिवर्तन
- शुरुआत में DingusPPC के साथ Infinite Mac में Mac OS X चलाने की कोशिश की गई, लेकिन पिछले गर्मियों के आसपास kernel panic और graphics corruption से आगे बढ़ना संभव नहीं हो सका
- deterministic execution mode के जरिए समस्या की सीमा कम करने की कोशिश हुई, लेकिन अगला कदम स्पष्ट नहीं था
- विकल्प के रूप में PearPC चुना गया
- PearPC को 2000 के दशक की शुरुआत में x86 Windows और Linux मशीनों पर Mac OS X emulate करने के लिए बनाया गया था
- Intel transition के बाद इसमें रुचि कम हो गई और इसे लगभग रुका हुआ codebase माना जाने लगा
- kanjitalk755 ने modern macOS पर build और run होने वाली PearPC experimental branch बनाई थी, और वही porting का शुरुआती आधार बनी
- PearPC एक multi-platform codebase था, और इसमें threads जैसी porting को कठिन बनाने वाली अवधारणाओं का बहुत अधिक उपयोग नहीं था, इसलिए इसे WebAssembly/Emscripten और Infinite Mac runtime में ले जाना आसान रहा
- कुछ दिनों में build, video output, disk image loading, और mouse/keyboard input wiring तक काम आगे बढ़ गया
- नतीजतन Mac OS X 10.2 को ब्राउज़र में पहले से अधिक स्थिर रूप से चलाया जा सका
performance optimization और बचे हुए bottleneck
- PearPC ने Mac OS X 10.2 को अधिक स्थिर रूप से चलाया, लेकिन यह DingusPPC से धीमा महसूस हुआ
- DingusPPC के benchmark harness को PearPC में लाया गया, और DingusPPC पर किए गए पुराने optimization कामों को PearPC पर भी दोहराया गया
- दोनों emulator lookup table आधारित pure interpreter हैं, इसलिए यह काम अपेक्षाकृत सीधा था
- Mac OS X 10.2 boot time में लगभग 15 सेकंड की कमी आई
- optimization के बाद भी पूरी तरह उपयोग योग्य स्थिति तक पहुँचने में लगभग 2 मिनट लगते हैं
- Infinite Mac UI में यह सूचना जोड़ी गई कि Mac OS X boot धीमा हो सकता है
- सबसे बड़ा bottleneck PearPC में MMU cache की अनुपस्थिति है
- हर load/store जटिल address calculation से गुजरता है, इसलिए महँगा पड़ता है
- DingusPPC में अधिक परिपक्व hierarchical cache है, जो प्रभावी दिखती है
- 10.2~10.4 चलाने में PearPC, DingusPPC से अधिक स्थिर हो सकता है, लेकिन उसका codebase कम सिद्धांतपरक है
- यह custom firmware और video driver का उपयोग करता है
- Mac OS X के लिए जरूरी PowerPC instructions का केवल कुछ हिस्सा implement करता है
- लंबे समय में उम्मीद है कि DingusPPC तेज, स्थिर और अधिक सटीक विकल्प बनेगा
FP bit check और rendering bug
- PearPC interpreter में opcode family के हिसाब से “unified decoding table” तरीका लागू करते समय floating-point operation बदलाव में regression आ गया
- Dock rendering glitch हुआ
- Finder window नहीं खुल रही थी
- opcode group 59 और 63 की dispatch केवल साधारण lookup नहीं थी; पहले Machine State Register के
FPbit की जाँच करनी पड़ती थी- अगर
FPbit set न हो, तो “floating point unavailable” exception फेंका जाता है
- अगर
- उस समय के Mac में इस्तेमाल हुए PowerPC chip में FPU था, लेकिन Mac OS X startup के दौरान यह exception अक्सर आता था
- उस दौर के xnu kernel source में
FPbit को clear करने की जगह और exception handler मौजूद हैं - यह context switch के समय FPU register save/restore से बचने वाली optimization लगती है
- उस दौर के xnu kernel source में
- optimized dispatch code में वही
FPcheck लागू करने पर rendering समस्या गायब हो गई - यही bug DingusPPC में भी मौजूद था
- DingusPPC
FPbit की जाँच किए बिना floating-point instructions को हमेशा पास होने देता था - exception उत्पन्न करने वाला तेज fix लगाने पर Mac OS X rendering glitch गायब हो गया
- बाद में formal implementation और performance गिरावट से बचने वाले fix आने पर DingusPPC की stability काफी बेहतर हो गई
- DingusPPC
- दोनों emulator को मिलाकर शुरुआती Mac OS X के चलने योग्य दायरे को बढ़ाया गया
- DingusPPC 10.1 को स्थिर रूप से चला सकता है
- PearPC 10.1 को स्थिर रूप से नहीं चला पाता
- 10.0 अब भी अस्थिर है, और Public Beta में तुरंत kernel panic होता है
Infinite HD का पुनर्गठन
- Infinite Mac की आकर्षक बातों में से एक यह है कि इसके साथ उस दौर के software वाला Infinite HD भी mount होकर आता है
- Mac OS X support के अनुसार 80~90 के दशक के classic Mac apps से आगे बढ़कर शुरुआती Mac OS X दौर के software वाला अलग version बनाया गया
- व्यक्तिगत रूप से पसंद किए गए apps के अलावा सुझाव लेकर सूची को बढ़ाया गया
- disk image को पुरानी automation पद्धति का विस्तार करके बनाया गया
- शुरुआती Mac OS X काल में disk image का उपयोग बहुत अधिक था, इसलिए
.dmgको generated image के भीतर अतिरिक्त folder के रूप में लाने की सुविधा जोड़ी गई
- शुरुआती Mac OS X काल में disk image का उपयोग बहुत अधिक था, इसलिए
- पुराने
.dmgमें extension एक जैसा होने पर भी कई variant थे, इसलिए modern macOS काhdiutilउन्हें हमेशा mount नहीं कर पाता था- अंततः dmg2img से पहले raw partition निकाला गया
- फिर modern macOS द्वारा mount और copy किए जा सकने वाले नए disk image को दोबारा बनाने वाला workaround अपनाया गया
- वास्तविक software जुटाने में शुरुआती से मध्य 2000 के दशक का Mac OS X software एक blind spot साबित हुआ
- Macintosh Garden में कुछ सामग्री है, लेकिन उसकी प्राथमिकता बहुत ऊँची नहीं है
- मूल vendor की साइटों से बहुत कुछ इतना पुराना होने के कारण हट चुका था
- Wayback Machine का बहुत उपयोग किया गया
- हर Mac OS X version के साथ आने वाले Developer CD भी install किए गए, ताकि Project Builder और Interface Builder जैसे tools का उपयोग किया जा सके
file system और multi-disk mount
- disk build प्रक्रिया HFS केंद्रित है, लेकिन उस समय का default HFS+ था
- HFS+ लंबी file names और arbitrary Unicode characters जैसी अधिक उन्नत सुविधाएँ देता है
- HFS+ सुविधाओं पर निर्भर disk image files को बिना नुकसान convert नहीं किया जा सकता
- अधिकांश software के लिए यह बड़ी समस्या नहीं थी
- boot disk, Infinite HD, और Saved HD तक अधिकतम 3 drives mount करने के लिए DingusPPC fork की विधि अपनाई गई
- startup पर निर्दिष्ट मनचाही संख्या के partition images से multi-partition disk image तुरंत बनाई जाती है
Aqua mode और साइट UI
- Infinite Mac में Mac OS X जोड़ने का काम पूरा करने के लिए साइट controls में Aqua mode भी जोड़ा गया
- पहले classic, Platinum, और NeXT appearance मौजूद थे
- Aqua design में 10.0/10.1 style चुना गया
- 10.3 और 10.4 के अधिक संयमित version पसंद हैं, लेकिन 10.0/10.1 वाले रूप के लिए nostalgia अधिक है
- OS जैसी image assets इस्तेमाल करने के लिए screenshot की जगह मूल resources निकाले गए
- Aqua assets में बहुत से translucent elements हैं, इसलिए सामान्य screenshot पर्याप्त नहीं थे
- resource_dasm और pxm2tga का उपयोग करके
Extras.rsrcसे मूल assets निकाले गए
Classic चलाना, verbose mode, और छोटे-छोटे निष्कर्ष
- कई images mount कर पाने की वजह से Mac OS 9 partition को साथ रखकर Classic compatibility environment शुरू किया जा सकता है
- यह सुविधा केवल 10.1 में काम करती है
- PearPC Classic को support नहीं करता था
- परिणामस्वरूप WebAssembly virtual machine के भीतर emulate किए गए Mac OS X के अंदर classic Mac apps भी emulate किए जा सकते हैं
- Mac OS X images से Calculator के व्यवहार में बदलाव भी देखा जा सकता है
- 10.3 तक
=को बार-बार दबाने वाला व्यवहार नहीं था - 10.4 में यह व्यवहार मौजूद था
- 10.3 तक
- Mac OS X boot धीमा होने के कारण प्रगति अधिक दिखाने के लिए verbose mode को उजागर किया गया
- PearPC में इसका built-in तरीका था
- DingusPPC में startup पर Open Firmware variables निर्दिष्ट करने की सुविधा जोड़ी गई
- Infinite Mac के custom instance dialog में इसे “Debug Mode” switch के रूप में दिखाया गया
macosx.appdomain लेने की भी कोशिश की गई, लेकिन वह पहले से registered था- वह domain एक खास YouTube video पर redirect होता है
- उस video के YouTuber ने जवाब दिया कि registration उसने नहीं किया
अगले उम्मीदवार और QEMU की संभावना
- Mac OS X support के साथ Infinite Mac अब modern macOS के काफी करीब पहुँच गया है
- इसके बाद भी CPU के दो और transition और कई छोटे बदलाव बाकी हैं
- Tiger ऐसा रूप है जिसे आज के macOS users भी मूल रूप से पहचान सकते हैं
- और गहरे या अधिक विशिष्ट retro computing targets के रूप में A/UX, Lisa, Pippin, और Newton बचे हैं
- पहले QEMU को WebAssembly में port करना बहुत बड़ा project माना गया था, और qemu.js का performance भी उपयोगी नहीं लगता था
- हाल में qemu-wasm और FOSDEM presentation के जरिए इसकी संभावना फिर से दिखी
- Linux guest demo का performance उत्साहजनक है
- 100MB data का MD5 checksum निकालने वाले तत्काल benchmark में qemu-wasm ने 8 सेकंड, DingusPPC ने 13 सेकंड, और PearPC ने 18 सेकंड लिए
- graphics guest वाले Mac OS X से अब भी काफी दूरी बनी हुई है
1 टिप्पणियां
Hacker News की राय
PearPC ने कई साल तक अच्छी तरह टिके रहना सही है, लेकिन मूल maintainer की ट्रेन दुर्घटना में मौत के बाद इसने अपनी ज़्यादातर गति खो दी
उस समय मैं इसका उत्साही user और community member था, और आज भी सोचकर आंखें भर आती हैं
https://www.wired.com/2004/07/pearpc-coauthor/
Infinite Mac classic Macintosh और NeXT system releases और software का एक collection है, जिसे web browser में आसानी से access किया जा सकता है
https://infinitemac.org/
लेख के सबसे दिलचस्प हिस्सों में से एक 700 lines से कम के PPC CPU emulator का link था
https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
6502 emulators में ऐसी सादगी दिखती है, लेकिन तुलनात्मक रूप से modern architecture में यह आम नहीं है
कल्पना नहीं कर सकता कि आज 20 साल का कोई tech enthusiast जब OS X 10.4 या 10.5, 10.6 देखेगा तो उसे कैसा लगेगा
कड़वी बात है, लेकिन यह दृश्य याद आता है कि Dark Ages का कोई व्यक्ति किसी classical statue के सामने खड़े होकर सोच रहा हो, “इंसानियत कभी ऐसा कैसे बना पाई होगी?”
हालांकि taste बदलता है. असली Dark Ages के लोग शायद सोचते, “यह pagan decadence क्या है?” और आज कोई इसे “photo-जैसे icons, कितना cringe!” भी मान सकता है
app install करना आज भी “IKEA-style dmg से app drag-and-drop” ही है, और कभी-कभी zip या pkg मिलते हैं. Finder window में पहले से left sidebar bookmarks हैं और Dock भी उसी तरह काम करता है. बीच में अजीब 3D Dock वाला दौर आया था, शायद Leopard था
Mac App Store नहीं है, लेकिन आज भी लगभग कोई उसका इस्तेमाल नहीं करता, और Spotlight Tiger में नया आया था. यह Windows XP और 11 के फर्क से कहीं ज़्यादा आसानी से पहचान में आता है. XP, 11 से व्यवहार में काफी अलग है
तब system folders से छेड़छाड़ करना आज जितना जटिल नहीं था
early medieval दौर में भी खूबसूरत artifacts और architecture बहुत थे. बहुत कुछ बचा नहीं है, लेकिन Sutton Hoo ship burial या Anglo-Saxon churches जैसे उदाहरण मैंने खुद देखे हैं
screenshots सचमुच चौंकाने वाले हैं. निजी तौर पर मुझे Mac OS X आज के Mac OS से कहीं बेहतर दिखता है
यह साफ़ और व्यवस्थित है, जिससे “ठीक है, इस environment में मैं काम कर सकता हूं!” जैसा एहसास होता है
मौजूदा Mac OS ऐसा लगता है, “बचाओ, मैं candy के बोरे में गिर गया हूं, बाहर कैसे निकलूं?” उत्सुक हूं कि क्या और लोग भी ऐसा महसूस करते हैं
Windows में भी यही है. OS के साथ सीधे काम करना बहुत कम होता है, native apps भी दुर्लभ हैं, और ज़्यादातर browser-based या third-party design systems इस्तेमाल करने वाले cross-platform apps हैं
software companies का यह दिखावा करते-करते थक गया हूं कि वे software अच्छा बनाती हैं
10.4 Tiger भी वैसा ही था, लेकिन top menu bar glossy था, जो समय के साथ कम पसंद आने लगा. 10.5 Leopard में flashy और भड़कीला 3D Dock, transparent top menu bar, और ज़्यादा modern gradients थे
उस समय यह cool लगा था, लेकिन gradients brushed metal और Aqua जितने अच्छे नहीं हैं. उसके बाद सब कुछ थोड़ा boring है
हैरानी है कि 10 साल से ज़्यादा समय से आखिरी commit न होने वाले pearpc project से सफलता मिली: https://github.com/sebastianbiallas/pearpc
उसका fork यहां है: https://github.com/mihaip/pearpc
WebAssembly target जोड़ा गया है, लेकिन लगता है x86-64 support भी बनाए रखा गया है
इसके अलावा NextStep को Infinite Mac में जोड़ने की प्रक्रिया पर भी blog में लिखा है: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...
ऐसी चीज़ें सच में बहुत अच्छी लगती हैं। उस समय Aqua किसी रहस्योद्घाटन जैसा था
यह ऐसा mainstream Unix था जिसकी usability दादी भी इस्तेमाल कर सकें, और major third-party apps तक का support था, इसलिए यह पूरी तरह home run था
उम्मीद है कि Liquid Glass में ऐसे कुछ तत्व वापस आएँगे, लेकिन सच कहूँ तो Aqua अब भी अच्छा दिखता है
Windows Vista या Linux themes जैसी नकलों ने जो बात मिस की, वह यह थी कि सब कुछ कितना consistent और usable था। यह शानदार दिखता था, लेकिन उससे भी अहम यह था कि यह सचमुच बहुत अच्छे से काम करता था
खुशी की बात है कि यादों वाले UI दिखते हैं। Macintosh OS 8 के आसपास का Platinum, OS X 10.3 और 10.4 के आसपास का चाटने लायक MacOS X UI याद आता है
SunOS/Slowlaris का OpenLook, NeXTStep/OpenStep UI, Microsoft Windows 2000 भी अच्छा था—Winblows XP से पहले का शिखर, जिसमें नारंगी और हरा कभी मिलाना ही नहीं चाहिए था—और SGI के IRIX और Motif परिवार वाली खुशियाँ भी याद आती हैं
UI elements लगभग हमेशा अलग पहचाने जा सकते थे, समझ में आते थे, और consistent थे। standard UI controls चलाने पर, execute करने से पहले ही ठीक-ठीक पता होता था कि क्या होगा, और असल में वही होता भी था
customizable, theme लगाने योग्य, replaceable, और “और शानदार” बनाने के नतीजे शायद वही हैं जो आज हमारे पास हैं
शुरुआती OS X का दौर Mac का असली स्वर्ण युग था। hardware x86 से काफी competitive था, और operating system अब तक के बेहतरीन स्तरों में था
आखिरकार दोनों ही लड़खड़ाने लगे, लेकिन अब hardware का दूसरा स्वर्ण युग है, इसलिए सपना देख सकते हैं कि शायद जल्द ही कभी Mac OS फिर से शानदार हो जाए
हालांकि नए hardware स्वर्ण युग में भी यहाँ emulation performance M1 और Safari पर लगभग इस्तेमाल न कर पाने लायक है
kernel panic रोज़ होते थे, और video देखते समय QuickTime segmentation fault से crash हो जाता था
wmv या divx जैसी file formats चलाने के लिए सही codec ढूँढकर install करने की quest करनी पड़ती थी
सुंदर बनाने के चक्कर में airflow vents ठीक से नहीं लगाए गए थे, इसलिए overheating भी होती थी
entry-level basic M4 mini कमाल है। पूरा computer समान performance वाले एक x86 GPU से भी कम बिजली खाता है
Dark Castle! बचपन में मेरे पिता के पास Apple Lisa था। वे Apple के लिए accounting suite बना रहे थे, इसलिए Apple ने मेहरबानी करके उन्हें वह machine दी थी
तब इस अद्भुत machine को मैंने सामान्य बात मान लिया था, और इसे सिर्फ games और MacPaint के लिए इस्तेमाल किया। पिता के 3.5-inch disks के collection में “Dark Castle” लिखा हुआ एक disk था, जो किसी वजह से, जो मुझे याद नहीं, Lisa पर काम नहीं करता था
अंदाज़ा था कि यह game होगा, लेकिन खेल नहीं पाने के कारण बहुत अफसोस हुआ, और उस रहस्यमयी disk ने मुझे मोहित कर लिया था
2025 में Infinite Mac System 7 emulator चलाया: https://infinitemac.org/1991/System%207.0
दिल धक से रह गया। “Games” folder के अंदर ठीक वहीं Dark Castle था
30 साल बाद आखिरकार यह game खेल पाऊँगा। graphics आकर्षक हैं, और Sierra classics King’s Quest और Prince of Persia के elements भी महसूस होते हैं
https://en.wikipedia.org/wiki/Dark_Castle
आज शाम का कार्यक्रम इसी से तय हो गया