عن المشروع
LAMINARIA (سلسلة أدوات Rust Nim الموحدة) هي مشروع بحث وتطوير يستكشف نموذجاً حوسبياً وسلسلة أدوات موحدة للغتي Rust و Nim. بدلاً من التعامل مع Cargo و rustc و Nimble و Nim و LLVM و LTO والروابط (linkers) وأدوات WebAssembly كأوامر غامضة يتم ربطها بواسطة نص بناء خارجي، يقوم المشروع بتفكيك المسار من المصدر إلى الملف التنفيذي إلى رسم بياني صريح للإجراءات:
رسم المصدر البياني ← مسار المترجم ← رسم البرنامج الموحد البياني ← رسم المتغيرات/المنتجات البياني ← رسم مسار الخلفية البياني ← رسم الإجراءات البياني ← نواة تخطيط Nim ← مجدول تشغيل Rust
يدرس المشروع مراحل مترجم Rust مثل HIR و MIR و monomorphization و codegen units و rustc_codegen_ssa، وخلفيات LLVM و Cranelift و GCC، و LTO، وتوليد الكائنات والربط، جنباً إلى جنب مع واجهة Nim الأمامية، والمعالجة الدلالية، وتوليد كود الخلفية، والترجمة الأصلية والربط. يتم التعامل مع LLVM كمسار توليد كود قابل للاختيار من بين عدة مسارات بدلاً من كونه أساساً ثابتاً، ويتم نمذجة WebAssembly كمسار مستهدف (توليد الكود، wasm-ld، تحسين ما بعد الربط، WIT/adapters، التجزئة إلى مكونات) بدلاً من قيمة خلفية.
يتم التعامل مع إصدار المترجم كبعد أساسي في الرسم البياني. يهدف التصميم إلى دعم عدة سلاسل أدوات Rust دقيقة بالإضافة إلى Nim 2 و Nim 3/Nimony، مع حل قيود الحزم ومساحات العمل إلى سلسلة أدوات مختارة مع الحفاظ على هوية المترجم المنتج في قرارات التشغيل والإجراء والمنتج والتخزين المؤقت والتوافق. ونظراً لأن مساحة المتغيرات الداخلية يمكن أن تكون كبيرة، يركز المشروع على ملفات تعريف سلاسل الأدوات المصدقة (Validated Toolchain Profiles) المدعومة بالأدلة، مثل: الموصى بها، والأحدث المصادق عليها، وطويلة الأمد، والمعاينة، حيث يتم حل أسماء الملفات التعريفية إلى مراجعات حزم دقيقة غير قابلة للتغيير، بالإضافة إلى إعدادات مسبقة للقصد وقيود بيانية من الخبراء.
تعتبر سهولة استخدام الأدوات هدفاً للمشروع: المسار الطبيعي المقصود هو حل القيود وتقليمها أولاً، يليه مجموعة صغيرة مرتبة من الخطط القابلة للتنفيذ والمدعومة بالأدلة، ثم التنفيذ، مع الاحتفاظ بعدم التوافق المعروف كمعرفة سلبية مهيكلة حتى لا تضطر لإعادة اكتشاف الإخفاقات المماثلة. ومن المقصود أن يظل الاستكشاف الواسع القائم على القوة الغاشمة وضعاً بحثياً صريحاً وليس التجربة الافتراضية.
من الناحية المعمارية، يتم التقسيم حسب المسؤولية وليس حسب اللغة: تتولى نواة تخطيط Nim (Nim Planning Kernel) معالجة تطبيع الرسم البياني، وحل القيود، والحل التوليفي، ونشر طلب المنتجات، والتقليم، وتحليل المسار الحرج، بينما يتولى مجدول تشغيل Rust (Rust Runtime Scheduler) التعامل مع واجهة السطر البرمجي (CLI)، واكتشاف سلسلة الأدوات، والتفاعل مع نظام التشغيل، وتنفيذ العمليات، ومحاسبة الموارد، والتخزين المؤقت/CAS، وخدمات الـ daemon، والقياس والتتبع، والجدولة.
ما يتوفر في المستودع اليوم هو طبقة البيئة وهوية سلسلة الأدوات. يتم حل قفل سلسلة الأدوات المتعددة المملوك للمستودع (toolchains.lock.toml) بواسطة أمر doctor إلى سجلات EnvironmentFingerprint و ToolchainFingerprint دقيقة:
يقوم scripts/bootstrap.sh بالإبلاغ عن الأدوات المفقودة مقابل ملف القفل؛ كما يقوم --install بتثبيتها (macOS/Homebrew بالإضافة إلى rustup). يفضل نص bootstrap المصادر الدقيقة التي لا تعتمد على مدير حزم النظام حيثما توفرت (سلاسل أدوات rustup مع llvm-tools، و choosenim لإصدارات Nim الدقيقة، و cargo install --version لأدوات CLI المكتوبة بـ Rust الصرفة)، مع الرجوع إلى مدير حزم النظام فقط للأدوات التي لا تملك بديلاً، مثل clang/llvm-config و wasm-opt من Binaryen.
يقوم الأمر cargo run -p laminaria-cli -- doctor بطباعة تقرير بيئة قابل للقراءة البشرية، ويقوم --json بإصدار بصمات قابلة للقراءة آلياً. ويقوم docker/bootstrap.Dockerfile بتشغيل نفس الحزمة في حاوية لضمان فحوصات bootstrap قابلة للتكرار؛ ووفقاً لوثائق القياس، فإن هذا مخصص فقط لإعادة إنتاج الصحة، ويسجل doctor أن environment_class = "container" حتى لا يتم مقارنة عمليات الحاوية بصمت مع الخطوط المرجعية الأصلية.
تتوفر الوثائق باللغتين الإنجليزية واليابانية، وتغطي تجربة مستخدم سلسلة الأدوات الموجهة للوكلاء والتخطيط المحدود، وملفات تعريف سلاسل الأدوات المصدقة والتكوين التدريجي، وسياسة سلاسل أدوات Rust/Nim متعددة الإصدارات، وأساس القياس واستراتيجية البيئة/التتبع، والشفافية في مسار الخلفية، والأسس البحثية، والبرنامج البحثي وسياسة الأدلة، والربط الأصلي بين Rust و Nim، وسياسة البحث القائمة على المقاييس أولاً، وخطة المشكلات ومقترح المشروع.
الترخيص مزدوج: Apache License 2.0 أو MIT، حسب خيار المستخدم، مع بقاء مكونات الطرف الثالث تحت تراخيصها الخاصة. يقدم ملف README العمل كبرنامج بحثي يؤسس لعمود فقري للقياس قبل التحسين، لذا فإن ادعاءات القدرات هنا تعكس نية التصميم وأدوات هوية البيئة الملتزم بها حالياً بدلاً من أداء بناء تم التحقق منه.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.