Zero Native: قاتل Electron الذي لم يتوقعه أحد من Vercel

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00هذا هو Xero Native، وهو أداة لبناء التطبيقات الأصلية تعتمد على لغة Zig من تطوير Vercel، ويمكنه استخدام عرض الويب الخاص بالنظام
00:00:05أو حزم محرك Chromium بالكامل تمامًا مثل Electron لتطبيقات سطح المكتب أو الهاتف المحمول، مما يوفر ملفات ثنائية صغيرة جدًا
00:00:12وإعادة بناء فورية أثناء عملية التطوير.
00:00:14ولكن هل ستؤدي ضرورة معرفة القليل عن لغة Zig لاستخدامه بشكل صحيح إلى إبعاد مطوري JavaScript؟
00:00:18اشترك في القناة دعونا نكتشف ذلك.
00:00:20على الرغم من أن فريق BUN يبتعد عن Zig وينتقل إلى Rust، إلا أنها لا تزال لغة رائعة جدًا
00:00:28بدون مدقق ملكية (borrow checker) ولا فترات حياة (lifetimes)، ويمكنها استدعاء لغة C مباشرة، مما يعني أن أي مكتبة C تبعد عنك استيرادًا واحدًا فقط
00:00:35دون الحاجة إلى أي كود وسيط (glue code).
00:00:37وهي مقروءة بما يكفي ليتعلمها مطورو JavaScript.
00:00:39في الواقع، إذا أردتم مشاهدتي وأنا أتعلم البرمجة بلغة Zig من الصفر، فأخبروني في التعليقات.
00:00:44أعتقد أن ذلك سيكون أمرًا ممتعًا للغاية.
00:00:46ولكن في الأساس، Xero Native هو غلاف رفيع بلغة Zig يستضيف عرض ويب (web view) يعرض واجهة أمامية
00:00:51تستخدم جسور JSON لكي تتمكن لغة JavaScript في عرض الويب من التواصل مع طبقة Zig الأصلية والعكس صحيح،
00:00:58وهذه هي الطريقة التي تمكنه من الوصول إلى واجهات برمجة تطبيقات مستوى نظام التشغيل.
00:01:01وإذا كنتم تعتقدون أن هذا يبدو مثل ElectroBUN، حسنًا، هو كذلك نوعًا ما.
00:01:04ولكن مع فارق كبير واحد، سنتحدث عنه لاحقًا في الفيديو.
00:01:07لكن في الوقت الحالي، دعونا ننتقل إلى عرض تجريبي بسيط للغاية.
00:01:10لبدء الاستخدام، تحتاج أولاً إلى تثبيت Zig، وهو ما فعلته باستخدام Miez.
00:01:13ولكن يمكنك أيضًا استخدام Brew، ثم تثبيت Xero Native.
00:01:16وبعد القيام بهذين الأمرين، يمكنك تشغيل الأمر Xero Native init لإنشاء هيكل مشروع جديد.
00:01:22هذا هو اسم مشروعي، ولكن يمكن أن يكون أي اسم تريده.
00:01:25سأستخدم علامة front end مع React، مما سيؤدي إلى تثبيت مشروع Vite React.
00:01:30ولكن يمكن أن يكون أيضًا Svelte أو Vue أو Nex أو حتى Vite فقط.
00:01:34لذا إذا ضغطت على Enter، سيقوم Xero Native بإضافة بعض المجلدات.
00:01:37إذا انتقلنا إلى مشروع التجريبي، سنرى ملف app zig object notation، والذي سأشرحه لاحقًا.
00:01:43لدينا أصول (assets) لأشياء مثل الأيقونات وغيرها، وملف build zig،
00:01:48وهو مخصص لرسم بياني لبناء Zig، وجسر JS ومحرك الويب ومجلد الواجهة الأمامية الذي يحتوي على الكود الخاص بنا.
00:01:54في الواقع، إذا دخلنا إليه، سنرى أنه يحتوي على ملفات اعتدنا رؤيتها كمطوري JavaScript.
00:01:58الآن، في هذه المرحلة، إذا قمنا بتشغيل zig build run، فسيؤدي ذلك إلى تثبيت جميع التبعيات وفتح تطبيقنا في نافذة جديدة.
00:02:04ملاحظة، إذا كنت ترغب في تثبيت Xero Native على مشروع JavaScript موجود،
00:02:08أوصي باستخدام Vite، وهو إصدار مبسط، ثم تغيير كل شيء في مجلد الواجهة الأمامية ليحتوي على كود تطبيقك.
00:02:15يمتلك Xero Native أيضًا خادم تطوير رائعًا يدير دورة حياة الواجهة الأمامية بالكامل.
00:02:19لذا إذا قمنا بتشغيل zig build dev، فسيقوم ذلك بتجميع الملف الثنائي وتشغيل خادم تطوير Xero Native.
00:02:24لذا إذا قمت بتعديل بعض الكود، سنرى تطبيقنا الأصلي يتحدث في الوقت الفعلي.
00:02:28يمكنني حتى تشغيل zig build package، والذي سيقوم ببناء التطبيق الأصلي بحيث يمكنني توزيعه.
00:02:33ويمكننا رؤيته هنا داخل مجلد zig out package بحجم 2.9 ميجابايت فقط، وهو صغير جدًا.
00:02:39وقد تمكن بعض الأشخاص من تقليص حجمه إلى أقل من 1 ميجابايت.
00:02:43ولكن ماذا لو أردت تغيير أيقونة التطبيق، أو الاسم، أو محرك الويب؟
00:02:46حسنًا، هنا يأتي دور ملف app zon، حيث يمكنني القيام بأشياء مثل تغيير اسم الأيقونة، واسم المشروع، وحتى المحرك الذي يعمل عليه التطبيق، بالإضافة إلى حجم النافذة.
00:02:55وهذه نظرة عامة سريعة جدًا على Xero Native.
00:02:58هناك الكثير من الأشياء التي لم يتسنَّ لي التطرق إليها، مثل أيقونات لوحة النظام، وتوقيع الكود، والتطبيقات المدمجة لنظامي iOS وAndroid.
00:03:05في الواقع، أحتاج لقضاء المزيد من الوقت معه، وهو ما قد يؤدي إلى فيديو آخر.
00:03:09ولكن بقدر روعة Xero Native، كيف يقارن بشيء مثل Electrobun، الذي ينشئ أيضًا تطبيقات صغيرة وسريعة تستخدم عرض الويب الأصلي للنظام؟
00:03:17حسنًا، مع Electrobun، يعتبر bun نفسه هو بيئة التنفيذ لأنه يتعين عليك كتابة TypeScript للعملية الرئيسية.
00:03:24لذا على الرغم من أن ملف Zig ثنائي يبدأ التطبيق، إلا أن الكود يعمل داخل web worker الخاص بـ bun، والذي يتواصل مع واجهات برمجة التطبيقات الأصلية عبر FFI الخاص بـ bun، والذي يمر عبر طبقة C++ وObjective-C.
00:03:37لكن مع Xero Native، كل ما تحتاجه هو ملف Zig الثنائي، لا يوجد JavaScript، ولا bun، فقط Zig، يتواصل مع واجهات برمجة تطبيقات نظام التشغيل وأي مكتبات C من خلال استيراد C بسيط.
00:03:50وهذا يؤدي إلى الحصول على أنحف غلاف أصلي ممكن مقارنة بـ Electrobun.
00:03:54ولكن في الوقت الحالي قد تضطر لكتابة القليل جدًا من Zig للحصول على كل ما تريده من Xero Native أو على الأقل تغيير بعض الإعدادات في ملف zig object notation.
00:04:03أيضًا، Xero Native ليس غنيًا بالميزات مثل Electrobun، الذي سمح لي بتغيير نمط شريط العنوان وحتى إضافة بعض عناصر القائمة المخصصة.
00:04:11وهذه الأشياء، للأسف، غير مدعومة حاليًا في ملف app zon.
00:04:15اضطررت أيضًا لتقديم بلاغ عن مشكلة لأن بناء حزمة على نظام MacOS لم يعمل معي بشكل جيد في المرة الأولى، ولكن قد يكون ذلك نقص خبرة من جانبي.
00:04:22ومع ذلك، أنا متأكد من أن الفريق يعمل بجد لإضافة المزيد من الميزات وإصلاح بعض هذه المشكلات، بالإضافة إلى إضافة دعم رائع للهاتف المحمول.
00:04:29وإذا كنت لا تستطيع انتظار أي من تلك الميزات، حسنًا، إنه مفتوح المصدر.
00:04:32لذا فقط أعطِ الكود لـ Claude، وأخبره بما تريد وأنا متأكد من أنه يمكنه إضافة تلك الميزات لك، أليس كذلك؟

Key Takeaway

تستخدم أداة Xero Native لغة Zig لإنشاء غلاف أصلي فائق النحافة لتطبيقات الويب، مما ينتج ملفات ثنائية أصغر من 3 ميجابايت وتواصلًا مباشرًا مع واجهات نظام التشغيل دون الحاجة لوسيط JavaScript في العملية الرئيسية.

Highlights

  • تعتمد أداة Xero Native على لغة Zig لإنشاء تطبيقات أصلية بملفات ثنائية يبدأ حجمها من 2.9 ميجابايت وقد تنخفض إلى أقل من 1 ميجابايت.

  • يسمح المحرك باستخدام عرض الويب الخاص بنظام التشغيل أو حزم محرك Chromium بالكامل لبناء تطبيقات سطح المكتب والهاتف المحمول.

  • توفر الأداة خاصية إعادة البناء الفوري أثناء التطوير عبر خادم تطوير مدمج يدير دورة حياة الواجهة الأمامية بالكامل.

  • يتواصل JavaScript داخل عرض الويب مع طبقة Zig الأصلية باستخدام جسور JSON للوصول إلى واجهات برمجة تطبيقات نظام التشغيل.

  • تتفوق الأداة على Electrobun بعدم حاجتها لبيئة عمل JavaScript أو Bun في العملية الرئيسية، حيث يعمل ملف Zig الثنائي بشكل مباشر ومستقل.

  • يدعم نظام البناء دمج أطر عمل شهيرة مثل React وSvelte وVue وNext.js وVite عبر أوامر تهيئة بسيطة.

Timeline

مفهوم Xero Native وبنية لغة Zig

  • يستخدم Xero Native لغة Zig لإنتاج ملفات ثنائية صغيرة الحجم وتطبيقات أصلية سريعة.
  • تتميز لغة Zig بغياب مدقق الملكية وفترات الحياة مع القدرة على استدعاء مكتبات C مباشرة دون كود وسيط.
  • تمثل الأداة غلافًا رفيعًا يستضيف عرض الويب لواجهة التطبيق الأمامية.

تعتمد الفلسفة التصميمية للأداة على كفاءة لغة Zig في التعامل مع الموارد وتكاملها السلس مع لغة C. يتيح هذا النهج للمطورين بناء تطبيقات بأداء أصلي مع الحفاظ على مرونة تطوير الويب. تعتمد آلية التواصل بين الواجهة الأمامية والنظام على جسور JSON التي تربط JavaScript بطبقة Zig.

إعداد المشروع وتجربة التطوير

  • تبدأ عملية التطوير عبر أمر تهيئة يدعم أطر عمل مثل React وSvelte وVue عبر Vite.
  • يتكون هيكل المشروع من ملفات app.zon للإعدادات، ورسم بياني لبناء Zig، ومجلد الواجهة الأمامية.
  • يؤدي تشغيل أمر البناء إلى تثبيت التبعيات وفتح التطبيق في نافذة أصلية جديدة فورًا.

تتسم تجربة المطور بالبساطة حيث يتم تثبيت Zig أولاً ثم الأداة، متبوعًا بأمر إنشاء المشروع. يتضمن المشروع ملفات مألوفة لمطوري JavaScript، مما يقلل من حاجز التعلم. يمكن للمطورين تحويل مشاريع Vite الحالية إلى Xero Native بسهولة عبر استبدال كود مجلد الواجهة الأمامية.

التوزيع والأداء والتحكم في الإعدادات

  • يوفر خادم التطوير تحديثات فورية للكود داخل التطبيق الأصلي أثناء العمل.
  • تنتج عملية الحزم ملفًا نهائيًا بحجم 2.9 ميجابايت فقط داخل مجلد zig-out.
  • يتحكم ملف app.zon في هوية التطبيق بما في ذلك الأيقونة والاسم ومحرك الويب وحجم النافذة.

يعد صغر حجم الملف النهائي من المزايا التنافسية للأداة مقارنة ببدائل مثل Electron. يسهل ملف الإعدادات app.zon تخصيص جوانب تقنية وجمالية للتطبيق دون الحاجة لكتابة كود Zig معقد. تغطي الأداة أيضًا احتياجات متقدمة مثل توقيع الكود وأيقونات لوحة النظام وتطبيقات الهواتف الذكية.

مقارنة Xero Native مع Electrobun والوضع الحالي

  • يتفوق Xero Native على Electrobun بإزالة الاعتماد على Bun أو JavaScript في العملية الرئيسية.
  • يفتقر Xero Native حاليًا لبعض ميزات تخصيص واجهة المستخدم مثل تخصيص شريط العنوان.
  • تعد الأداة مشروعًا مفتوح المصدر يستهدف إضافة دعم أوسع للهواتف المحمولة وتحسين استقرار بناء الحزم.

يكمن الفرق الجوهري في أن Electrobun يتطلب تشغيل TypeScript داخل بيئة Bun للتواصل مع النظام، بينما يتواصل Xero Native مباشرة عبر Zig. واجهت الأداة بعض المشكلات التقنية في بناء الحزم على نظام MacOS، مما يشير إلى أنها لا تزال في مراحل التطوير والتحسين. يمكن للمطورين المساهمة في تطوير الأداة أو استخدام أدوات الذكاء الاصطناعي لإضافة الميزات المفقودة نظرًا لطبيعتها المفتوحة.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video