العودة إلى المدونة

Rune: بيئة تطوير متكاملة مفتوحة المصدر مكتوبة بلغة Go

Rune بيئة تطوير متكاملة ومُضاعِف طرفيات يُرسم عبر GPU، مكتوب بالكامل تقريبًا بلغة Go ومفتوح المصدر برخصة GPLv3 منذ سبتمبر 2026. ماذا يفعل، وكيف بُني، وأين يقصر.

Rune: بيئة تطوير متكاملة مفتوحة المصدر مكتوبة بلغة Go

Rune بيئة تطوير متكاملة (IDE) ومُضاعِف طرفيات (terminal multiplexer) يُدار من لوحة المفاتيح، من تطوير Unstable Build، ونحو 97.6% من كوده مكتوب بلغة Go (GitHub languages API، 2026). يرسم نافذته بنفسه على الـ GPU، عبر OpenGL على Linux وMetal على macOS، بلا Electron وبلا محرك متصفح. أصبح الكود المصدري متاحًا للعموم برخصة GPLv3 في 12 سبتمبر 2026 (مدونة Rune، 2026). يعمل على macOS وLinux، وتنزيله مجاني. يمكن لمطوري Go أن ينظروا إليه من زاويتين. فهو محرر يمكنك تجربته، وهو أيضًا قاعدة كود Go كبيرة وسهلة القراءة تتعامل مع العرض عبر الـ GPU ومحاكاة الطرفية والإضافات دون أن تغادر Go.

الخلاصة

  • Rune بيئة تطوير متكاملة تعمل واجهتها مثل مُضاعِف طرفيات. تحصل على تسع خانات لمساحات العمل، وعدد غير محدود من الطرفيات والألسنة والنوافذ، وسطر أوامر واحد يدعم البحث التقريبي (fuzzy search) ويتحكم في كل شيء.
  • اختار المؤلف Go من أجل سرعة التطوير والتكرار. ثم نقل التحليل (profiling) الطرفيةَ من تأخر بنحو رتبتين عشريتين خلف Alacritty وGhostty وKitty إلى أداء منافس، دون اللجوء إلى cgo في المسار الحرج (مدونة Rune، 2026).
  • يعرض الواجهة باستخدام Ebitengine، ويحلل الصياغة باستخدام tree-sitter، ويتواصل مع الإضافات عبر gRPC فوق Unix socket، ويقرأ إعداداته من Starlark، ويدير التحكم في الإصدارات باستخدام go-git.
  • يناسب مطوري Go وPython على macOS أو Linux ممن يعملون أصلًا في Vim أو Emacs أو Helix أو tmux. لا توجد نسخة لـ Windows.
  • في شجرة internal/ أنماط يمكنك إعادة استخدامها في كودك، مثل إضافات تعمل في عمليات منفصلة ويمكن أن تنهار دون أن تُسقط المحرر معها.

ما هو Rune؟

يصف Rune نفسه بأنه «بيئة تطوير متكاملة ومُضاعِف طرفيات سريع ومُسرَّع عبر الـ GPU وكامل الميزات» (README الخاص بـ Rune، 2026). الجزء الذي يستحق الانتباه هو مُضاعِف الطرفيات، لأن الواجهة تبدو وتتصرف مثل tmux أكثر مما تشبه VS Code. تقسّم الشاشة إلى نوافذ، وتحمل كل نافذة مخزنًا مؤقتًا للمحرر أو طرفية، وتتنقل بين تسع خانات لمساحات العمل من لوحة المفاتيح.

عند التشغيل الأول تختار واحدًا من أربعة إعدادات مسبقة لاختصارات المفاتيح: standard أو vim أو emacs أو helix (توثيق Rune، 2026). ينطبق اختيارك في كل مكان، بما في ذلك الطرفيات وحقول الإدخال ومستكشف الملفات، فيحصل مستخدمو vim على التحرير النمطي (modal editing) داخل الـ shell أيضًا.

أما بقية قائمة الميزات فهي قائمة بيئة تطوير متكاملة كاملة:

  • Go وPython لغتان من الدرجة الأولى (Tier 1)، مع LSP وفهرس للرموز وسير عمل خاص بمنظومة كل لغة. Rust وZig في مرحلة تجريبية، وTypeScript على خارطة الطريق (اللغات المدعومة في Rune، 2026). وتحصل أكثر من 300 لغة أخرى على تلوين الصياغة والبحث البنيوي عبر حزم قواعد tree-sitter.
  • مُنقّح أخطاء (debugger). يتحدث Rune بروتوكول Debug Adapter Protocol عبر google/go-dap، وتتحكم فيه من الـ console.
  • console، وهو REPL طويل العمر تثبّت منه الحزم، وتضبط النماذج، وتدير الإضافات والعمليات.
  • Rune Agent، وكيل برمجة مدمج يستعلم عن مساحة العمل عبر LSP وtree-sitter بدلًا من البحث عن الرموز باستخدام grep.
  • Rune Network. تنضم كل نسخة من Rune إلى شبكة نظير إلى نظير مشفّرة، فيمكنك فتح مساحة عمل على حاسوبك المكتبي من حاسوبك المحمول عبر رابط rune://.

وهناك أيضًا وضع rune --tui الذي يعمل داخل طرفية موجودة، ووضع rune --headless للأجهزة التي لا تملك شاشة.

لماذا كُتب Rune بلغة Go؟

الجواب المختصر هو سرعة التطوير. في إعلان فتح المصدر، يرى المؤسس Ernest Romero Climent أن بيئات التطوير المتكاملة «إما مكتوبة بلغات بطيئة في الكتابة والترجمة، مثل Rust وC/C++، أو مبنية على بيئات تشغيل يصعب تطويعها لأحمال العمل الحساسة للأداء» مثل Electron (مدونة Rune، 2026). تُترجم Go بسرعة وتسهل قراءتها، ومع ذلك تمنحك تحكمًا كافيًا في الذاكرة والجدولة لتلاحق الأداء حين تحتاج إليه.

محاكي الطرفية في Rune مكتوب بلغة Go، ويقول المقال إنه «كان في البداية أبطأ بنحو رتبتين عشريتين» في إنتاجية PTY مقارنة بـ Alacritty وGhostty وKitty. تطلّب سد هذه الفجوة أربعة تغييرات، ولم يكن أي منها إعادة كتابة بلغة أخرى:

  1. خوارزميات أفضل.
  2. توزيع العمل على الـ goroutines بكفاءة أكبر.
  3. موازنة إيقاظ الـ goroutines حتى لا يقوم مُجدول Go بعمل لا حاجة إليه.
  4. الانتقال من حلقة الإطارات في الثانية التي يستخدمها محرك الألعاب إلى نموذج قائم على الأحداث، وهو ما خفّض زمن الاستجابة.

يحرص الفريق على تحديد ما يثبته ذلك. يقولون إن مخططات vtebench «لا تُظهر أن Go بسرعة Rust أو Zig». ما تُظهره هو أن التحليل والهندسة المتأنية في Go كانا كافيين لجعل الطرفية منافسة في أحمال العمل تلك. وهذا يطابق مسار معظم أعمال تحسين الأداء في Go. تبدأ بالتحليل، وغالبًا ما تقع الإصلاحات في الخوارزمية وفي طريقة تسليم الـ goroutines العمل لبعضها.

والمشروع أقدم بكثير من مستودعه العام. في مقال طويل عن تاريخه، يؤرخ المؤلف أول نموذج أولي لـ vi بـ commit في 3 أغسطس 2017 (مدونة Rune، 2026). بدأ بديلًا لـ Vim في عمله الشخصي بلغة Go. كان اسمه Six في 2019، ثم أصبح Ox في 2024 (حين انتقل إلى Ebitengine ليحصل على نافذة GPU)، ثم أُعيدت تسميته إلى Rune في أواخر 2025. وكل نسخة منه كانت مكتوبة بلغة Go.

كيف بُني Rune؟

مخطط معماري لـ Rune: عملية Go أساسية مع محرك عرض Ebitengine على الـ GPU، ومخازن مؤقتة على شكل شبكة خلايا، وعملاء tree-sitter وLSP، تتواصل عبر gRPC فوق Unix socket مع عمليات إضافات منفصلة مثل دعم Go ودعم Python وRune Agent

ملف go.mod خريطة جيدة للبنية المعمارية. يصرّح بالإصدار Go 1.26.6، وتنقسم الاعتماديات إلى عدد قليل من المهام:

المهمةالاعتمادية
نافذة الـ GPU والعرضgithub.com/hajimehoshi/ebiten/v2 (Ebitengine)، go-text/typesetting
الطرفية وواجهة TUIنسخة متفرعة (fork) من tcell/v3، unstablebuild/pty
أشجار الصياغةgithub.com/tree-sitter/go-tree-sitter
الإضافاتgoogle.golang.org/grpc، unstablebuild/rune-go-sdk
الإعداداتgo.starlark.net، gopkg.in/yaml.v3
التحكم في الإصداراتgithub.com/go-git/go-git/v6
تنقيح الأخطاءgithub.com/google/go-dap
الشبكاتgithub.com/gliderlabs/ssh، pion/webrtc/v4
نماذج الذكاء الاصطناعيanthropic-sdk-go، openai-go/v2، AWS Bedrock SDK

Ebitengine محرك ألعاب ثنائي الأبعاد، ويستخدمه Rune طبقةً للـ GPU. يبني ملف Makefile المحرر مع CGO_ENABLED=1، لأن خط معالجة الرسوميات الأصلي يرتبط بـ OpenGL وMetal. الإعداد الافتراضي سكربت Starlark (rune.star)، وهي لغة صغيرة شبيهة بـ Python مصممة للإعدادات. تحصل على جمل if وحلقات في ملف إعداداتك، وتُسلَّم النتيجة إلى المُحمِّل بيانات عادية.

أظهر استنساخ سطحي (shallow clone) في 27 سبتمبر 2026 نحو 316,000 سطر من كود Go غير الاختباري (عُدّت باستخدام wc -l، بما في ذلك الكود المولّد). تشكل Go نسبة 97.6% من البايتات. واللغة التالية حجمًا، Starlark، تشكل 0.5%.

مخطط أعمدة لتوزيع اللغات في مستودع Rune: Go بنسبة 97.6%، وStarlark بنسبة 0.5%، وShell بنسبة 0.5%، وMakefile بنسبة 0.4%، وكل ما تبقى بنسبة 1.0%

الإضافات عمليات منفصلة

يُبقي Rune نواته صغيرة ويدفع الميزات إلى الإضافات. دعم لغة Go ودعم Python والبحث التقريبي وRune Agent كلها إضافات، و«لا توجد فئة منفصلة من الإضافات المدمجة» (توثيق الإضافات في Rune، 2026).

كل إضافة ملف تنفيذي مستقل. يشغّلها Rune كعملية فرعية، ويسلّمها بيانات الاعتماد عبر الإدخال والإخراج القياسيين، ثم يتواصل معها عبر gRPC فوق Unix domain socket. يمكنك رؤية ذلك في internal/extension/extensionv2/runner.go، الذي ينشئ مستمع Unix وgrpc.NewServer. تحصل كل مساحة عمل على مجموعتها الخاصة من عمليات الإضافات، وكل قدرة (المحرر، ونظام الملفات، والتخزين، والأوامر) محمية بإذن يجب على الإضافة أن تطلبه.

المكسب الأساسي هو عزل الانهيارات. الـ panic في إضافة ما يُنهي عمليتها وحدها، ويَعِد التوثيق بأن انهيار إضافة «لا يُسقط المحرر معها أبدًا». ولأن العقد قائم على gRPC، يمكن كتابة الإضافات بأي لغة لها SDK خاص بـ Rune. الـ SDK الخاص بـ Go مكتمل، وبدأ العمل على SDK لـ Python. ولإضافات Go ميزة أخرى: كل منها يُبنى في ملف تنفيذي ثابت (static binary) واحد يضعه pkg install في مجلد بياناتك.

نقطة الدخول في الـ SDK استدعاء واحد. تصرّح إضافة Go ببياناتها الوصفية وأذوناتها، ثم تمرر دالة إلى extensionapi.ServeWorkspaceExtension، التي تتولى دورة حياة العملية (توثيق Go SDK في Rune، 2026). إنه الشكل نفسه الذي تجده في http.ListenAndServe: أنت تقدّم المعالج، والمكتبة تشغّل الحلقة. مر البروتوكول بإعادة كتابة واحدة. بنى المؤلف الإضافات أولًا على go-plugin من HashiCorp، ثم استبدلها بمصافحة أبسط، لأن كل SDK بلغة غير Go كان سيضطر إلى إعادة تنفيذ بروتوكول go-plugin (مدونة Rune، 2026).

إذا كانت فكرة الـ goroutines التي تغذي بعضها عبر الـ channels والـ sockets جديدة عليك، فإن دليل الكلمة المفتاحية chan يغطي النصف الذي يجري داخل العملية من هذا النمط.

Rune مقابل VS Code وZed وNeovim + tmux

راهن منافسو Rune رهانات مختلفة جدًا في اللغة والعرض والإضافات:

RuneVS CodeZedNeovim + tmux
اللغة الرئيسيةGoTypeScriptRustC وLua
العرضشبكة خلايا على الـ GPU (OpenGL أو Metal)Electron (Chromium)GPU (GPUI)محاكي الطرفية الذي تستخدمه
نموذج الإضافاتعمليات منفصلة عبر gRPCمضيف إضافات Node.jsWebAssemblyLua داخل العملية، إضافة إلى إضافات RPC
مُضاعِف طرفيات مدمجنعملوحة طرفيةلوحة طرفيةيتولاه tmux
الرخصةGPLv3MIT (Code - OSS)GPLv3 (المحرر)Apache 2.0 وISC
المنصاتmacOS، LinuxWindows، macOS، LinuxWindows، macOS، Linuxكل مكان

أقرب مقارنة هي Neovim مع tmux، وهو الإعداد الذي كان مؤلف Rune يستبدله. يدمج Rune الاثنين في برنامج واحد بنافذة GPU حقيقية، فتُعرض الخطوط بالشكل نفسه أيًا كان محاكي الطرفية الذي تستخدمه. Zed هو الأقرب روحًا من حيث الأداء، لكنه مكتوب بلغة Rust ويرسم واجهة رسومية تقليدية بدلًا من شبكة محارف. ويملك VS Code أكبر منظومة إضافات بفارق كبير، وRune لا يحاول مجاراته فيها.

كيف تثبّت Rune؟

يعمل سكربت التثبيت الرسمي على macOS وLinux:

example.bashbash
curl -fsSL https://rune.build/install.sh | sh

يمكنك أيضًا تنزيل نسخة مبنية من صفحة الإصدارات على GitHub. يأتي الإصدار v1.2.1 الصادر في 11 سبتمبر 2026 بملفات .dmg لأجهزة Mac العاملة بمعالجات Apple Silicon وIntel، وبأرشيفات .tar.gz لنظام Linux على amd64 وarm64.

لتشغيله من الكود المصدري، استنسخ المستودع واستخدم أدوات Go:

example.bashbash
git clone https://github.com/unstablebuild/rune.git
cd rune
go run ./cmd/rune

على Linux ستحتاج إلى glibc 2.28 أو أحدث، وإلى مكتبات OpenGL وX11 الخاصة بالنظام. ويعمل على Wayland عبر XWayland (توثيق Rune، 2026). يشغّل الأمر make test مجموعة الاختبارات مع كاشف السباقات (race detector)، وهي طريقة جيدة لترى كيف ينظم مشروع Go كبير اختباراته.

تنزيل Rune واستخدامه مجانيان. يكلف Rune Pro مبلغ $10 شهريًا، ويرفع حد Rune Network من جهازين متصلين إلى 10 أجهزة (أسعار Rune، 2026). المحرر ودعم اللغات والوكيل لا تتطلب هذا الاشتراك.

أين يقصر Rune؟

Rune مشروع عام حديث العهد، وهناك بعض القيود التي تستحق المعرفة قبل أن تنتقل إليه:

  • لا توجد نسخة لـ Windows. تغطي الإصدارات macOS 13.3 أو أحدث وLinux فقط.
  • يحتاج المحرر بنافذته الرسومية على Linux إلى glibc، لذا لا تُدعم Alpine وغيرها من التوزيعات المبنية على musl. ويحتاج أيضًا إلى مكتبات X11 أو إلى XWayland. أما وضعا TUI وheadless فلا يحتاجان إلى ذلك.
  • Go وPython وحدهما تحصلان على الدعم الكامل اليوم. Rust وZig في مرحلة تجريبية، وTypeScript ليست في Tier 1 بعد. وهذا يستبعد Rune كمحرر رئيسي لكثير من مطوري الواجهات الأمامية ومطوري JVM.
  • نموذج سطر الأوامر والـ console سريع حين تعتاد عليه، لكن الوصول إلى ذلك يستغرق وقتًا أطول من فتح VS Code والنقر هنا وهناك. ويساعد على ذلك دليل تعليمي موجّه يعمل داخل بيئة التطوير عند التشغيل الأول.
  • المستودع العام جديد. أُنشئ مستودع GitHub في 10 سبتمبر 2026. وكان لديه 1,184 نجمة و87 تفرعًا (fork) في 27 سبتمبر (GitHub API، 2026). الكود قيد الاستخدام اليومي منذ نحو 2022، لكن مجتمع المساهمين لا يتجاوز عمره بضعة أسابيع.

حصد إطلاق المصدر المفتوح 224 نقطة و70 تعليقًا على Hacker News، وحصد الإصدار 1.1 السابق 100 نقطة (Hacker News، 2026). هذا اهتمام كبير لمستودع بهذه الحداثة، لكن منظومة الإضافات ومجتمع المساهمين كليهما لم يتجاوز عمرهما بضعة أسابيع.

أين يأتي دور LevelUpGo

يعرف معظم الناس Go من البنية التحتية السحابية وأدوات سطر الأوامر وخدمات الواجهة الخلفية (backend)، كما يوضح مقال أين تُستخدم Go؟. ويُظهر Rune أنها قادرة أيضًا على تشغيل تطبيق سطح مكتب يُعرض عبر الـ GPU. إذا أعجبتك فكرة Go بدلًا من Electron في مقالنا عن Wails، فإن Rune يذهب أبعد من ذلك ويتخلى عن الـ webview أيضًا.

قراءة قاعدة كود مثل Rune أسهل حين تصبح الأساسيات تلقائية لديك. تغطي دورة Go Basics على LevelUpGo الدوال والـ structs والـ slices ومعالجة الأخطاء التي ستراها في كل ملف. وتغطي Concurrency Fundamentals الـ goroutines والـ channels التي يقوم عليها عمل Rune على إنتاجية الطرفية. وإذا جذبك أسلوب Rune القائم على لوحة المفاتيح أولًا، فإن Command Line Basics تبني عادات الـ shell التي يفترضها. وتُظهر خارطة طريق Go موقع كل دورة.

الأسئلة الشائعة

هل Rune مجاني؟

نعم. تنزيل Rune مجاني على macOS وLinux، والكود المصدري كاملًا متاح برخصة GPLv3. يكلف Rune Pro مبلغ $10 شهريًا، ويرفع عدد الأجهزة التي يمكنك ربطها عبر Rune Network من 2 إلى 10. وهناك أيضًا خطة للمؤسسات موجهة إلى الفرق.

هل Rune مفتوح المصدر؟

نعم. نشرت Unstable Build الكود المصدري على GitHub برخصة GNU GPLv3 في 12 سبتمبر 2026. يحتفظ المساهمون بحقوق النشر على أعمالهم ولا يوقّعون اتفاقية CLA. وتخطط الشركة أيضًا لبرنامج يتقاسم جزءًا من إيرادات Rune مع المساهمين.

هل يعمل Rune على Windows؟

لا. يدعم Rune نظام macOS 13.3 أو أحدث على Apple Silicon وIntel، ونظام Linux على x86_64 وarm64 مع glibc 2.28 أو أحدث. لا يوجد إصدار لـ Windows، ولا يذكر التوثيق موعدًا له.

ما اللغات التي يدعمها Rune؟

Go وPython لغتان من الدرجة الأولى، مع LSP وفهرس للرموز وسير عمل خاص بمنظومة كل لغة. دعم Rust وZig في مرحلة تجريبية، وTypeScript على خارطة الطريق. وتحصل أكثر من 300 لغة أخرى على تلوين الصياغة والبحث البنيوي عبر حزم قواعد tree-sitter.

هل Rune مكتوب بلغة Rust؟

لا. نحو 97.6% من كود Rune مكتوب بلغة Go. يُبنى المحرر مع تفعيل cgo لربط خط معالجة الرسوميات الأصلي الخاص بـ OpenGL وMetal، لكن المحرر نفسه ومحاكي الطرفية والإضافات الرسمية كلها مكتوبة بلغة Go. كان اسم المشروع Six ثم Ox قبل أن يصبح Rune.

المصادر

اكتب Go كما يكتبها مهندس أول

دروس تفاعلية في متصفحك. الدروس الأولى مجانية.

جرّب درسًا مجانيًاأو أنشئ حسابًا مجانيًا