العودة
Neomacs: نسخة معدلة من GNU Emacs بـRust ورسم بالـGPU
SiTech AI Team3 წთ. საკითხავი

Neomacs: نسخة معدلة من GNU Emacs بـRust ورسم بالـGPU

نشر المطور Eval Exec على GitHub مشروع Neomacs، وهو تفرع صلب قيد التطوير من GNU Emacs. أُعيدت كتابة نواة C التي تضم نحو 300 ألف سطر بلغة Rust، وانتقل العرض إلى معالج الرسوميات عبر wgpu. الهدف المعلن هو توافق كامل مع الإعدادات والحزم الحالية.

مشروع NEO Emacs، أو Neomacs، هو تفرع قيد التطوير من GNU Emacs نشره المطور Eval Exec على GitHub. يحافظ المشروع على كل ما اعتاد عليه المستخدمون: ملف init.el والحزم الحالية وعادات لوحة المفاتيح. أما البنية الداخلية فقد أُعيد بناؤها: العرض يعمل على معالج الرسوميات، وأُعيدت كتابة نواة C التي تضم نحو 300 ألف سطر بلغة Rust.

بحسب المستودع، لم تبقَ أي نواة بلغة C في الملف التنفيذي neomacs: مُفسِّر Elisp وآلة البايت كود وجامع القمامة والتفريغ المحمول والمخازن والنوافذ ومعالجة لوحة المفاتيح والعمليات والتخطيط والعرض كلها مكتوبة بلغة Rust. ويُحتفظ بمجلد lisp، أي الجزء الخاص بلغة Elisp من المحرر، من GNU Emacs ويُزامَن مع خط تطوير emacs-31.

محرك عرض على GPU في خيط منفصل

تقسم البنية العمل بين خيطين: خيط Emacs يملك بيئة Elisp وحالة المحرر، وخيط العرض يملك معالج الرسوميات. بُني محرك العرض على wgpu، الذي يغطي Vulkan وMetal وDX12 وOpenGL، ويحل نحو أربعة آلاف سطر من Rust محل نحو 50 ألف سطر من xdisp.c. ويمكن عرض الوسائط داخل المخازن: فيديو 4K مدمج عبر GStreamer مع تكامل VA-API على Linux، وصور مفكوكة الترميز على GPU، ومتصفح WPE WebKit، وطرفية على GPU. وتقدم طبقة رسوم متحركة منفصلة ثمانية أنماط للمؤشر و21 تأثير تمرير وعشر انتقالات بين المخازن، تُعرض بمعدل تحديث الشاشة ويمكن ضبطها من Elisp.

لماذا تفرع وليس كتابة من الصفر

يصف قسم الأسئلة الشائعة Emacs بأنه قاعدة كود بلغة C عمرها 40 عامًا لم تواكب العتاد الحديث. وتشمل المشاكل المذكورة عرضًا يعمل على المعالج فقط وصُمم لطرفيات نصية من الثمانينيات، وبطء التعامل مع الصور الكبيرة، وغياب تشغيل الفيديو المدمج، وغياب المؤثرات البصرية السلسة، ومعالج رسوميات يبقى خاملًا. ويقول المشروع إن Elisp يفتقر إلى التخزين المؤقت المضمن وتحسين JIT أثناء التشغيل، وإن جامع القمامة يوقف البرنامج بأكمله. ولأن Elisp يعمل في خيط واحد، فإن أي استدعاء بطيء يجمّد المحرر كله. وتبقى الملفات الكبيرة والأسطر الطويلة مشكلة منفصلة: يُخزَّن الملف كاملًا في مخزن فجوي واحد، لذا فإن ملفًا مُصغَّرًا من سطر واحد أو سجلًا بحجم مئات الميغابايت لا يزال يوقف المحرر رغم التخفيفات المضافة في Emacs 29.

اختيار التفرع بدلًا من الكتابة من الصفر قرار مقصود. يبقى GNU Emacs في المشروع مرجعًا ومقياسًا للاختبار: تجرّب مجموعات اختبار وأدوات مقارنة شبكة TUI وفحوص تكافؤ الواجهة الرسومية Neomacs باستمرار مع GNU Emacs، بحيث يمكن التحقق من أن كل جزء أُعيدت كتابته بلغة Rust ينتج السلوك نفسه. ووفق المشروع، التغييرات أعمق من أن تُقبل يومًا في المشروع الأصلي، ولهذا يُوصف Neomacs بأنه تفرع صلب.

الحالة والتوافق

يُصنَّف Neomacs صراحةً بأنه إصدار ألفا وقيد العمل: يحذر ملف README من حواف خشنة وتغييرات كاسرة وميزات ناقصة، ويطلب إرسال تقارير عن الأخطاء. والوعد المعلن هو توافق بنسبة 100% في السلوك الملحوظ، أي الدلالات والوظائف والعرض المنطقي، مع حرية التحسين تحت هذا الخط، مثل سرعة بدء التشغيل. والهدفان التاليان هما Elisp حقيقي متعدد الخيوط وجامع قمامة متزامن بلا توقف. ويقدم الملف التنفيذي نفسه العرض على GPU أو في الطرفية عبر neomacs -nw، ونُشرت صور جاهزة لمعماري amd64 وarm64 على Docker Hub وGitHub Container Registry. وكان للمستودع نحو 1177 نجمة و47 تفرعًا وقت كتابة المقال.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.