عن المشروع

Block هي لغة برمجة محلية أولاً ومحرك تنفيذ متعدد اللغات يسمح للمطورين بتأليف سير عمل عبر عدة بيئات تشغيل مضيفة داخل مستند واحد قابل للقراءة. بدلاً من لصق بايثون وجافاسكربت ولوا وPHP وSQL وروبي وباورشيل وغيرها معاً باستخدام سكربتات شيل أو ملفات مؤقتة، يستخدم Block بناء جملة قائماً على الوسوم (مثل py وjs وsql) حيث تحتفظ كل كتلة لغوية بصيغتها الأصلية بينما يدير Block التنفيذ التسلسلي والتسلسل ونقل الحالة عبر حدود العمليات. كيف يعمل: يُحلَّل مستند Block ويُتحقق منه، ثم تُشغَّل كل مرحلة لغوية كعملية مضيفة منفصلة. يمرر Block تمثيلاً مُعداً للحالة المشتركة القابلة للتسلسل من مرحلة إلى التالية. هذا يعني أن مقابض الملفات المفتوحة والاتصالات وقواعد البيانات الحية والمراجع الدائرية لا يمكن تمريرها بين الكتل؛ فقط أنواع البيانات البسيطة مثل الأعداد الصحيحة والعائمة والسلاسل والقيم المنطقية والمصفوفات والقواميس. نموذج حدود العمليات يجعل سير العمل قابلاً للفحص والنقل لكنه يتطلب تصميماً مقصوداً للحالة. الإصدارات وصيغ الملفات: ثلاثة إصدارات متاحة: - Lite (.blkl): سكربتات محلية خفيفة متعددة اللغات مع كتل لغوية أساسية. - Standard (.blk): للاستخدام التطويري العام، يضيف الواردات واكتشاف المشاريع وتدفق التحكم الأصلي ودعم الخادم المحلي. - Plus (.blkp): سطح الميزات الكامل بما فيه تعريفات وقت تشغيل مخصصة وتنسيق وتدقيق لغوي وتوليد توثيق وتكاملات موسعة. الأوامر التنفيذية: block-lite وblock وblock-plus. اللغات المدعومة: يفوض Block إلى بيئات التشغيل المضيفة الموجودة في PATH. الوسوم الشائعة تشمل py للبايثون، وjs لجافاسكربت/Node.js، وphp وlua وruby وps لباورشيل وsql لـSQLite وhtml وjson لمخرجات القوالب، إضافة إلى go وrust وzig وts وcs وkotlin وdart وperl وr وc وcpp حيثما تتوفر مترجمات. ليست كل الوسوم مفعلة في كل إصدار. خط أنابيب الحالة المشتركة: الميزة المركزية هي الحالة القابلة للتسلسل التي تمرر بين الكتل. مثال: كتلة بايثون تحسب total = 40 + 2، ثم كتلة جافاسكربت تطبع total، ثم كتلة html تعرض total. القيم المنتجة في كتلة تصبح متاحة في التالية. أفضل ممارسة هي إنتاج كائن نتيجة صريح صغير بدلاً من الاعتماد على تصدير كل متغير محلي. تدفق التحكم الأصلي: تشمل جميع الإصدارات نواة لغة أصلية حتمية ومعزولة تدعم الإسناد، if/elif/else، حلقات while وfor، range()، والدوال، وتراكيب القوائم والقواميس، والفهرسة، والدوال المضمنة مثل len وstr وint وsum وkeys. تفتقر هذه النواة عمداً إلى واجهات برمجة للملفات أو الشبكة أو العمليات أو الحزم؛ استخدم كتلة بيئة تشغيل مضيفة عند الحاجة. الخادم المحلي: إصدارا Standard وPlus يمكنهما إعلان مسارات وخدمة ملفات ثابتة. تتطلب المسارات ترويسة X-Api-Token افتراضياً. هذا الخادم مخصص للتطوير المحلي فقط. إدارة المشاريع: تُهيأ المشاريع عبر block project init وتُدار عبر block.project.json. يمكن ضبط جذر مساحة عمل مرة واحدة لإعدادات متعددة المشاريع. تستخدم الواردات مسارات نسبية مع حدود دليل معزولة وسقوف لعمق التكرار وكشف الاستيراد الدائري. أوامر سطر الأوامر: الأوامر الرئيسية: block لتنفيذ ملف، وblock check لتحليل بدون تشغيل، وblock plan --json لمعاينة تنفيذ للقراءة فقط، وblock errors لرموز التشخيص، وblock ast لأشجار الصياغة المهيكلة، وblock runtimes لكشف المضيفات المثبتة، وblock doctor لتشخيص البيئة، وblock-plus fmt/doc للتنسيق والتوثيق في Plus. الأمان والعزل: الواردات محصورة في أدلة معزولة بحدود عدد الملفات وحجمها. حظر عبور الدلائل عبر ../ خارج جذر المشروع. تعطيل تنفيذ باورشيل افتراضياً في الإعدادات الجديدة. نواة تدفق التحكم الأصلية للقراءة فقط دون وصول للملفات أو الشبكة. مثبت آمن يتحقق من SHA-256 ولا يستدعي Winget أو Chocolatey أو سكربتات مُنزلة. دعم المحررات: يتوفر امتداد VS Code ومكوّن Acode. تتعرف الامتدادات على .block و.blocklite و.blockplus إلى جانب الامتدادات الأساسية. الإصدار والبناء: الإصدار الحالي 2.7.5. يُبنى إصدار ويندوز من كود C# عبر مترجم .NET Framework من خلال build.ps1 وينتج block.exe وblock-lite.exe وblock-plus.exe. توفير توقيع رمز مجاني عبر SignPath.io؛ إصدارات ويندوز الحالية قيد المراجعة وغير موقعة. ما ليس Block: Block ليس بديلاً عن بايثون أو جافاسكربت أو Rust أو أي لغة ناضجة. لا يحاكي صياغتها ولا يحزم بيئات التشغيل المضيفة. ينسق بيئات التشغيل المحلية ويجعل حدود البيانات بين المراحل مرئية. أخطاء المحلل اللغوي تخص Block؛ أما بيئات التشغيل المفقودة وأخطاء الحزم والمسائل الخاصة بلغة ما فتعود إلى البيئة المضيفة. الترخيص: رخصة MIT. مستودع المصدر والتوثيق والأمثلة جميعها مفتوحة.