Infinite Mac OS X
(blog.persistent.info)- ตอนนี้แพลตฟอร์ม Infinite Mac สามารถรัน Mac OS X ซีรีส์รุ่นแรก ๆ (10.1, 10.3) ได้ในเว็บเบราว์เซอร์
- บรรลุผลในการพอร์ตอีมูเลเตอร์ PowerPC อย่าง PearPC ไปยัง Emscripten/WebAssembly เพื่อเพิ่มความเข้ากันได้และเสถียรภาพ
- ปรับปรุงประสิทธิภาพและแก้บั๊กที่หาสาเหตุได้ยากผ่านการเปรียบเทียบกับ DingusPPC พร้อมกระบวนการปรับแต่งเชิงอัลกอริทึม
- สร้างดิสก์อิมเมจ Infinite HD ที่เหมาะกับ Mac OS X ขึ้นใหม่ ทำให้เข้าถึงซอฟต์แวร์และเครื่องมือพัฒนาจากยุค 2000 ได้หลากหลาย
- เสริมประสบการณ์ใช้งานย้อนยุคด้วยการใช้ Aqua style กับ UI และยังคำนึงถึงความเป็นไปได้ในการพัฒนาต่อในอนาคต
สรุป
Infinite Mac ซึ่งเป็นโปรเจ็กต์ที่เปิดให้ทดลองใช้งานระบบเก่าแก่ผ่านออนไลน์บนแพลตฟอร์ม Infinite Mac ได้เพิ่มการรองรับ Mac OS X รุ่นแรก ๆ เช่น 10.1 และ 10.3 ทำให้สามารถรันได้บนเว็บเบราว์เซอร์สมัยใหม่ ในกระบวนการนี้มีการพอร์ตอีมูเลเตอร์ PowerPC อย่าง PearPC และ DingusPPC ไปอยู่บนพื้นฐาน Emscripten/WebAssembly พร้อมทุ่มเทความพยายามหลายด้านเพื่อปรับปรุงประสิทธิภาพและทำให้เสถียรขึ้น ผ่านการปรับแต่งอัลกอริทึมและการแก้บั๊ก จึงช่วยเพิ่มความละเอียดและความน่าเชื่อถือเมื่อเทียบกับฮาร์ดแวร์ดั้งเดิม อีกทั้งยังสร้าง Infinite HD ใหม่ให้บรรจุซอฟต์แวร์และเครื่องมือพัฒนาจากยุคนั้นเพื่อเพิ่มการใช้งานจริง นอกจากนี้ยังนำธีม Aqua มาใช้กับ UI ของเว็บไซต์เพื่อมอบประสบการณ์เชิงอารมณ์ และมองไปถึงการขยายรองรับ OS ที่ย้อนยุคยิ่งกว่าอย่าง A/UX และ Lisa โปรเจ็กต์นี้แสดงให้เห็นความพยายามทางเทคนิคที่ตอบโจทย์หลายด้าน ทั้งการอีมูเลตโปรแกรม การขยายอาร์ไคฟ์โอเพนซอร์ส และการฟื้นฟู UI
การขยายการรองรับ Mac OS X
- ใน Infinite Mac มีการพอร์ตให้สามารถรัน OS X รุ่นแรก ๆ เช่น Mac OS X 10.1 และ 10.3 ได้ในเว็บเบราว์เซอร์
- มีการจำลองประสิทธิภาพที่ช้าบนฮาร์ดแวร์จริงไว้อย่างตรงไปตรงมา และยังสามารถทดลองใช้แอปเด่นในยุคนั้นอย่าง NetNewsWire Lite และ Terminal ได้
- ในดิสก์อิมเมจล่าสุดยังใส่ ซอฟต์แวร์อินดี้ในยุคนั้น บางส่วนไว้ด้วย ทำให้การสำรวจซอฟต์แวร์ย้อนยุคง่ายขึ้น
กระบวนการพอร์ต PearPC
- ตอนแรกมุ่งเน้นไปที่การพอร์ตและแก้ไขอีมูเลเตอร์ DingusPPC แต่ภายหลังเปลี่ยนไปใช้ PearPC เพราะพบปัญหา kernel panic และข้อผิดพลาดด้านกราฟิก
- PearPC เป็น โค้ดเบสข้ามแพลตฟอร์ม ที่ออกแบบมาเพื่อรัน Mac OS X บนระบบ x86 ในช่วงต้นยุค 2000 จึงพอร์ตไปยังเป้าหมาย WebAssembly ได้ค่อนข้างง่ายโดยไม่ต้องแก้งานเพิ่มมากนัก
- เมื่อไม่นานมานี้ผู้ดูแลหลักของ Basilisk II และ SheepShaver ได้สร้าง experimental branch ของ PearPC ขึ้นมา ทำให้สามารถบิลด์บน macOS รุ่นใหม่ได้
- แม้ซอร์สโค้ดจะเก่าและอิงกับ legacy C++ แต่ก็มีลักษณะเฉพาะอย่าง custom string class,
sprintf, GIF decoder เป็นต้น - ด้วยโครงสร้างข้ามแพลตฟอร์ม การออกแบบที่แทบไม่ใช้เธรด และเลเยอร์นามธรรมเชิงโครงสร้าง ทำให้การย้ายระบบเกิดขึ้นอย่างรวดเร็ว
การปรับแต่งประสิทธิภาพและข้อจำกัด
- PearPC มีความน่าเชื่อถือสูงในการบูตและรัน Mac OS X 10.2 แต่ รันช้ากว่า DingusPPC
- ประสิทธิภาพลดลงอย่างมากจากการไม่มี MMU caching เป็นต้น
- มีการย้าย การปรับแต่งเชิงอัลกอริทึม หลายอย่างที่ใช้ใน DingusPPC มายัง PearPC ด้วย ส่งผลให้เวลาบูตสั้นลงบางส่วน
- PearPC รองรับเพียงชุดย่อยของคำสั่ง PowerPC ที่จำเป็น และใช้ “ทางลัด” หลายอย่าง เช่น เฟิร์มแวร์และไดรเวอร์แบบปรับแต่งเอง
- อย่างไรก็ตามยังคงมีความหวังว่าในระยะยาว DingusPPC จะมีอนาคตดีกว่าสำหรับการอีมูเลต Mac OS X ที่ทั้งเร็วและเสถียร
การค้นพบเพิ่มเติม: การจัดการข้อยกเว้น FP
- เมื่อนำ วิธีถอดรหัสแบบรวมศูนย์ มาใช้ในอินเทอร์พรีเตอร์ของ PearPC ได้เกิดข้อผิดพลาดการเรนเดอร์ในการคำนวณ floating-point
- เคอร์เนลของ Mac OS X มีการลงทะเบียนการจัดการข้อยกเว้นตามสถานะของบิต FP ในรีจิสเตอร์ MSI และเมื่อเพิ่มส่วนนี้ลงในโค้ดก็แก้ปัญหาการเรนเดอร์ได้
- ใน DingusPPC ก็พบปัญหาบิต FP หายแบบเดียวกัน ทำให้การเรนเดอร์ข้อความผิดปกติ และหลังแก้ไขแล้วเสถียรภาพดีขึ้นมาก
- จากการจัดการแบบเฉพาะหน้าพัฒนาไปสู่การทำตามหลักที่ถูกต้อง จนท้ายที่สุดทำให้ความน่าเชื่อถือในการรัน 10.1 ดีขึ้นอย่างมาก
- การใช้อีมูเลเตอร์ทั้งสองร่วมกันช่วยขยายการรองรับการรัน OS X หลายเวอร์ชันให้กว้างขึ้น
การสร้างดิสก์อิมเมจ Infinite HD ใหม่
- มีการสร้าง ดิสก์อิมเมจ ใหม่ให้เหมาะกับยุค Mac OS X โดยรวมซอฟต์แวร์อินดี้และเครื่องมือสำหรับนักพัฒนาจำนวนมากจากช่วงเวลานั้นไว้ด้วย
- เนื่องจากไฟล์
.dmgรุ่นเก่าไม่สามารถเมานต์ได้โดยตรงบน macOS รุ่นใหม่ จึงมีการสร้างกระบวนการแปลงและ pipeline อัตโนมัติด้วยเครื่องมืออย่าง dmg2img - แม้จะมีข้อจำกัดบางส่วนจากความต่างระหว่างระบบไฟล์ HFS และ HFS+ แต่ซอฟต์แวร์ส่วนใหญ่ยังทำงานได้ตามปกติ
- มีการอาศัยแหล่งข้อมูลหลายแห่ง เช่น เว็บไซต์คลังไลบรารีและ Wayback Machine เพื่อประกอบสภาพแวดล้อมการรันซอฟต์แวร์ช่วงต้นยุค 2000 ให้สมบูรณ์
- มีการนำเทคนิคสร้างอิมเมจแบบหลายพาร์ทิชันแบบไดนามิกมาใช้ ทำให้เมานต์ได้พร้อมกันสูงสุด 3 โวลุ่ม ได้แก่ บูตดิสก์, Infinite HD และ Saved HD สำหรับจัดเก็บ
UI: ใช้สไตล์ Aqua
- นำธีม Aqua มาใช้กับ UI ของ Infinite Mac เพื่อขับเน้น กลิ่นอายย้อนยุค ให้สูงสุด
- มีการดึงทรัพยากรภาพสไตล์ Mac OS X 10.0/10.1 ออกมาใช้โดยตรง และทำเอฟเฟ็กต์กึ่งโปร่งใสได้ด้วย
- สไตล์ของส่วนควบคุมบนเว็บไซต์ก็จะถูกปรับอัตโนมัติให้เข้ากับรูปลักษณ์ของแต่ละ OS (Classic, Platinum, NeXT เป็นต้น)
- ยังสามารถทำหน้าที่เป็น ‘จุดอ้างอิง’ ของ UI ในอดีต ท่ามกลางการเปลี่ยนแปลง UI ครั้งใหญ่ของ Apple macOS ที่คาดว่าจะเกิดขึ้นในอนาคต
ฟังก์ชันเพิ่มเติมและหมุดหมายสำคัญ
- เพิ่มความสามารถในการเมานต์พาร์ทิชัน Mac OS 9 และรัน สภาพแวดล้อม Classic (รองรับเฉพาะใน 10.1)
- สามารถตรวจสอบความต่างด้าน UX ระหว่าง OS ได้ เช่น พฤติกรรมการคำนวณซ้ำของแอป Calculator รุ่นเก่า
- เปิดใช้งาน โหมดข้อความบูต (Verbose) ที่มีอยู่ใน PearPC และใน DingusPPC ก็มีการทำระบบกำหนดค่าผ่านตัวแปร Open Firmware
- มีความพยายามขยายแบรนด์ผ่านโดเมน
macosx.appเช่นกัน แต่ปัจจุบันโดเมนดังกล่าวยังอยู่ในความครอบครองของผู้อื่น
การขยายต่อในอนาคตและบทสรุป
- การขยายการรองรับ Mac OS X ทำให้ Infinite Mac มี จุดเชื่อมต่อ กับ macOS สมัยใหม่
- ยังมีการกล่าวถึงความเป็นไปได้ในการพอร์ต A/UX, Lisa, Pippin และ Newton เพื่อความย้อนยุคที่ลึกยิ่งขึ้น
- ยังให้ความสนใจกับ QEMU บน WebAssembly (wasm) ในเชิงทดลอง และพบสัญญาณเชิงบวกจากการทดสอบประสิทธิภาพ
- การอีมูเลต Mac OS X บนเว็บมีคุณค่าในหลายสถานการณ์ของวงการ IT/สตาร์ทอัป ทั้งด้านการทดลองใช้งาน การอนุรักษ์ซอฟต์แวร์เก่า และการทดลองสำหรับนักพัฒนา
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
dmgการมี Finder bookmarks การทำงานของ Dock และแม้แต่การมาของ Spotlight ก็มีครบแล้วตั้งแต่ตอนนั้น เมื่อเทียบกับความเปลี่ยนแปลงระหว่าง Windows XP กับ Windows 11 แล้ว ฝั่ง Mac เปลี่ยนไปไม่มากนักwmvหรือdivxอยู่เสมอ และเพราะต้องการทำเครื่องให้ดูสวยจึงแทบไม่มีช่องระบายอากาศ ทำให้มีปัญหาเครื่องร้อนอยู่บ่อย ๆ