
متصفح ويب حديث لنظام Classic Mac OS 9 على معمارية PowerPC. دعم حقيقي لـ CSS3، وجافا سكريبت ES5، وHTTPS أصلي. مُطوَّر باستخدام CodeWarrior على واجهة Carbon API.
الويب الحديث، على جهاز ماك عمره 25 عامًا.
MacSurf هو متصفح ويب لنظام Classic Mac OS 9 على معمارية PowerPC. يدعم CSS3 وJavaScript ES5 وصور PNG بقناة ألفا — يعمل على جهاز iMac بمعالج G3.
MacSurf مشروعٌ يُعمل عليه بدوام كامل. إذا أعاد هذا المشروع جهاز Mac القديم إلى الويب، فكل دولار يساعد في استمرار التطوير. كما يمكنك متابعة التقدّم على Patreon من خلال سجلات التطوير.[!NOTE] ألفا مبكر — يعمل ويعرض ويتحدث TLS 1.3 بشكل أصلي على G3 بتردد 233 MHz، لكن معظم الويب الحديث لن يعمل فيه بعد. توقّع صفحات مبنية يدويًا ومواقع بنمط رجعي (retro) والإثارة الغريبة لـ JavaScript ES5 على PowerPC. لا تتوقع تصفحًا سلسًا في المواقع الحديثة العشوائية، أو الفيديو، أو أي شيء يعتمد بكثافة على React.
إذا كان لديك Power Mac G3 أو G4 في مكان ما، فحمّله عليه وجرّبه لترى ما يتعطل — تقارير الأخطاء ولقطات الشاشة من أجهزة حقيقية هي بالضبط ما يحتاجه هذا المشروع. راجع docs/status.md للاطلاع على قائمة النواقص الحالية.
تجاوز الويب نظام Classic Mac OS قبل عشرين عامًا. ثم قضى عليه HTTPS الحديث نهائيًا نحو عام 2016. أخرج اليوم جهاز G3 أو G4 من الخزانة ولن يصل إلا بالكاد إلى موقع ويب واحد حي.
MacSurf محاولة لإصلاح ذلك على الجهاز نفسه — لا وكيل لقطات شاشة، ولا حيلة طرفية بعيدة. متصفح أصلي مبني بالأدوات الموجودة أصلًا على المنصة: CodeWarrior وCarbon وQuickDraw وOpen Transport. تخطيطات CSS3 حقيقية وJavaScript حقيقية، تعمل داخل حد الذاكرة الأدنى البالغ 64 ميجابايت لجهاز iMac من عام 1999. منذ أواخر مايو 2026 يتحدث TLS 1.2 مباشرةً إلى الويب الحديث عبر macTLS، وهي حزمة مبنية على BearSSL مضمّنة داخل ثنائي المتصفح مع 121 نقطة ثقة من حزمة مراجع Mozilla CA. لم تعد هناك حاجة إلى أي وكيل بعد الآن.
على حد علمنا، هذا أول منفذ جاد لـ NetSurf إلى Classic Mac OS، وأول متصفح يُطرح على Mac OS 9 على الإطلاق مع دعم أصلي لـ CSS Grid وخصائص CSS المخصصة وJavaScript ES5.
كل لقطة أدناه معلم حقيقي، ملتقطة على Power Macintosh G3 يعمل بنظام Mac OS 9. إشارات أرقام الإصلاحات تطابق سجل الالتزامات في هذا المستودع.
أحدث إصدار هو MacSurf 1.68 — "macQJS" (2026-07-07): تم استبدال محرك JavaScript — من Duktape (ES5) إلى macQJS (QuickJS, ES2023)، فأصبحت JavaScript الحديثة تعمل بشكل أصلي على Mac OS 9. بالإضافة إلى إدخال نصي يعمل (مؤشر الكتابة / التحديد / Tab)، وجلسات تسجيل دخول محفوظة، وقائمة إشارات مرجعية + مدير تنزيلات، وإصلاح عرض شريط التمرير المنقسم، ورسوم أيقونات خطوط ويب قابلة للتنزيل، وتمريرة أداء كبيرة (إقلاع شبه فوري، وذاكرة تخزين مؤقت على القرص للصور والخطوط، وتحميل كسول للصور في منفذ العرض). سُمّي تكريمًا لـ 68kmla.org، المجتمع الذي قاد دورة التطوير. الملاحظات الكاملة: release-notes/MacSurf-1.68.md.
الإصدار السابق MacSurf v1.4 — Open House (2026-06-01): أُغلق ماراثون JavaScript. انتقلت 23 مشكلةً من جسر JavaScript من حالة مفتوحة إلى مغلقة في إصدار واحد — setTimeout / setInterval / requestAnimationFrame، وwindow.location، وwindow.history، وURL، وURLSearchParams، وclassList، وstyle، ومُنشئات Event، وMutationObserver، وDOMParser، وFormData، وlocalStorage، و، وحدثَي / ، بالإضافة إلى تبديل / . سجّلت مجموعة الفحوصات الجديدة على G3 iMac. الصفحات التشخيصية تعمل مباشرةً: و و و كلها تعرض عدّادات حقيقية. ميزة عرض المصدر (View Source) تعرض النص داخل الصفحة نفسها، والبحث في الصفحة يفتح حوار Carbon حقيقيًا. الإصدار السابق جاء بـTLS 1.3 متعدد المنحنيات؛ و كان أول TLS 1.3 أصلي على Classic Mac OS؛ و سدّ ثغرة العشوائية؛ و كان إصدار إعادة تصميم الواجهة؛ و كان تسريع الإقلاع البارد (mactrove.com من 30+ ثانية إلى ~2-3 ثوانٍ)؛ وأول ألفا مرقّم عند .
browser/netsurf/frontends/macos9/MacSurf.mcp في CodeWarrior 8 واختر Build. من يبني v1.4 على مساحة عمل v1.3.1 عليه إضافة ملف مصدري جديد واحد إلى المشروع: browser/netsurf/desktop/search.c (يوفر browser_window_search لحوار البحث الجديد؛ وcontent/textsearch.c موجود مسبقًا). macTLS لم يتغيّر منذ v1.3.1. من يبني v1.3 على مساحة عمل v1.2 عليه إضافة أربعة ملفات macTLS خاصة بـTLS 1.3: bearssl/src/ec/ec_c25519_m15.c وos9/ostls_tls13_keysched.c وos9/ostls_tls13_record.c وos9/ostls_tls13_handshake.c. من يبني v1.2 على مساحة عمل 1.0 يحتاج إلى desktop/download.c. أقدم إصدار يأتي مع لقطة BuildPack.sit بمشروع CW8 مُجهّز مسبقًا، لكن البناءات الحالية تعمل مباشرةً من استنساخ نظيف.ملاحظات ألفا الأقدم إن أردت السياق: docs/release-notes/MacSurf-0.1a1.md.
بناء المتصفحيُبنى MacSurf على Mac OS 9 باستخدام CodeWarrior 8 Pro (تحديث 8.3). المصدر نظيف من أخطاء الترجمة المتقاطعة مع Retro68 PowerPC GCC، وهو ما نستخدمه لإجراء فحوصات بناء الجملة السريعة على لينكس. |
![]() v0.2: JavaScript على Mac OS 9 أول صفحة حقيقية تحمل JavaScript. Duktape 2.7.0 ES5 ينفّذ مباشرةً: Math.sqrt وJSON وطرق المصفوفات في ES5.
|
![]() fixes73: تحويلات CSS دعم أصلي لـ transform: rotate() / scale() / translate(). جدول sin/cos بعدد صحيح Q15 دون اعتماد على FPU، وزوايا عشوائية على QuickDraw.
|
![]() fixes74d: التدرّجات الشعاعية تدرّجات شعاعية بنقطتي توقف عبر تكديس PaintOval متحد المركز. 16 مستوى تُدمج عند فك الترميز. مع تحليل الكلمات المفتاحية للشكل والموضع.
|
![]() fixes77: حركات CSS مشغّل حركات خطي بنمط الكرة بين نقطتين فوق دوران fixes73. اهتزاز وتأرجح ودوران كامل من 0° إلى 359°. |
![]() fixes79b: شفافية PNG مستورد رسومات QuickTime يغذّي معالج محتوى الصور في NetSurf. PNG + GIF + BMP، كلها بشفافية حقيقية. |
![]() fixes136: word-break / overflow-wrap word-break: break-all وkeep-all وwhite-space: nowrap وword-wrap: break-word القديمة. التفاف عنيف بأسلوب عناوين URL.
|
![]() fixes147: سياقات التكديس ترتيب الرسم حسب CSS 2.1. الشفافية والتحويلات و z-index الصريح كلها تُنشئ سياقات تكديس جديدة، تُرسم بشكل صحيح على أجهزة حقيقية.
|
![]() fixes151: تحديد موقع الأعمدة في CSS Grid grid-column: span N، وعنصر hero بعرض الصف الكامل عبر 1 / -1، وstart / end الموضعية، وspan مع الالتفاف التلقائي. تخطيط Grid حقيقي على OS 9.
|
![]() v1.0: العرض شريط الأدوات الجديد بحزام الأدوات، وحقل عنوان فائق الوضوح، وأيقونات مصقولة تعرض home.macsurf.org على G3 iMac يعمل بنظام OS 9.2.2. HTTPS أصلي عبر macTLS مباشرةً إلى الخادم الأصلي، وبوابة مُصيّرة من جهة الخادم، وصور بألوان حقيقية من البداية إلى النهاية. | |
| المكوّن | اللغة | الغرض |
|---|---|---|
browser/ | C (C89, CW8) | تفرّع من NetSurf بواجهة macos9. Carbon للواجهة، QuickDraw للرسم، Open Transport للشبكات، Duktape لـ JavaScript. |
proxy/ | Go (المكتبة القياسية فقط) | وكيل HTTP القديم الذي يزيل TLS. أصبح شبه متقاعد الآن بعد أن يعمل macTLS بشكل أصلي، لكنه ما يزال مفيدًا كخيار احتياطي أو على الأجهزة التي لا تحتوي على CarbonLib. يرسل Mac HTTP عاديًا، ويجلب الوكيل عبر HTTPS، ثم يعيد HTTP عاديًا. |
macTLSمستودع شقيق | C (CW8) | مكتبة TLS 1.2 أصلية لنظام OS 9 — HTTPS حديث مباشرةً من Mac دون الحاجة إلى وكيل. BearSSL في الأساس، مع تضمين 121 نقطة ثقة. |
|
خط أنابيب العرض
CSS — نحو 150 خاصية تُستخدم في التخطيط
|
JavaScript — Duktape 2.7.0، ES5 كامل
الصور — التنسيقات الخمسة كلها
الشبكات
واجهة المتصفح
|
fetchloadDOMContentLoaded<details><summary>JS 19/19 pass, 0 failabout:cacheabout:memoryabout:configabout:perf