عن المشروع

Bend هي لغة برمجة عالية المستوى مصممة للتوازي الهائل، طورتها HigherOrderCO وتعمل بوقت تشغيل HVM2. تهدف إلى الجمع بين تعبيرية لغات مثل Python وHaskell مع سلوك التوسع لحوسبة وحدات معالجة الرسومات بأسلوب CUDA. تشمل ميزات اللغة المذكورة في README التخصيص السريع للكائنات، والدعم الكامل للدوال عالية الترتيب مع الإغلاقات، والاستدعاء الذاتي غير المقيد، والاستمراريات. التوازي ضمني: يذكر README أنه لا حاجة لإنشاء خيوط أو أقفال أو كائنات مزامنة أو عمليات ذرية. الكود الذي يمكن أن يعمل بالتوازي سيعمل بالتوازي، مع تسارع شبه خطي بناءً على عدد النوى، ويدعي المشروع دعم أكثر من 10000 خيط متزامن. يتم التثبيت عبر cargo الخاص بـ Rust. يقوم المستخدمون بتثبيت وقت تشغيل HVM2 باستخدام `cargo install hvm`، ثم تثبيت اللغة باستخدام `cargo install bend-lang`. تغطي التعليمات Linux وmacOS، مع اقتراح WSL2 لنظام Windows. يتطلب وقت تشغيل CUDA مجموعة أدوات NVIDIA CUDA 12.x، ويشير README إلى أن وحدات معالجة الرسومات NVIDIA فقط مدعومة حاليًا. يمكن تنفيذ البرامج عبر عدة خلفيات: `bend run-rs` يستخدم مترجم Rust تسلسلي، `bend run-c` يستخدم مترجم C متوازي، و`bend run-cu` يستخدم مترجم CUDA متوازي بشكل كبير. يمكن أيضًا تجميع كود Bend إلى ملفات C أو CUDA مستقلة عبر `gen-c` و`gen-cu`، على الرغم من أن README يصف مولد الكود بأنه في مرحلة مبكرة. يقدم العلم `-s` تقارير عن التخفيضات ووقت التشغيل والتفاعلات في الثانية. يستعرض README مثالًا على الجمع التسلسلي مقابل المتوازي لتوضيح كيف يتيح الصياغة بالتقسيم والغزو التنفيذ المتوازي التلقائي. كما يقدم معيارًا لفرز bitonic مع أوقات مبلغ عنها: 12.15 ثانية على معالج Apple M3 Max عبر مترجم Rust، و0.96 ثانية على نفس المعالج عبر مترجم C، و0.21 ثانية على وحدة معالجة رسومات NVIDIA RTX 4090 عبر مترجم CUDA. هذه الأرقام هي قياسات المشروع المبلغ عنها. يحذر README من أن الإصدار الحالي قد يكون له أداء أقل على نواة واحدة، وأن الأداء يجب أن يتحسن مع تقدم تقنيات توليد الكود والتحسين. تشمل الموارد الإضافية ورقة HVM2، وGUIDE.md، وFEATURES.md، ومجلد أمثلة، ومجتمع Discord.