عن المشروع
Hum هو تصميم أولي (إصدار 0.0.1 pre-alpha) للغة برمجة أنظمة. هدفها المعلن هو الجمع بين القوى المنخفضة المستوى على غرار Rust/C++ مع قابلية القراءة الشبيهة بـ Python، والأنواع الثابتة، والتأثيرات الصريحة، وأمان الذاكرة الافتراضي، والسياق المُنشأ بواسطة المترجم والمُوجه للبشر ووكلاء البرمجة على حد سواء.
الفكرة المركزية هي أن العقود التي تُكتب عادةً كتعليقات تصبح وعودًا مُتحققًا منها. يمكن للمهمة أن تُعلن أقسامًا مثل `why` (السبب)، `targets` (الأهداف)، `uses` (الاستخدامات)، `changes` (التغييرات)، `needs` (الاحتياجات)، `ensures` (الضمانات)، `protects` (الحماية)، `trusts` (الثقة)، `fails when` (الفشل عند)، `watch for` (المراقبة)، `cost` (التكلفة)، `allocates` (التخصيص)، `avoids` (التجنب)، `tradeoffs` (المقايضات)، `optimizes` (التحسين)، `tests` (الاختبارات)، و `does` (الفعل). يتضمن المستودع نموذجًا تخريبيًا متعمدًا حيث أن `ensures: result == a + b` يُنتهك بواسطة نص `return a - b`؛ يؤدي تشغيله إلى إنتاج تشخيص يلوم تنفيذ المهمة وليس المُستدعي.
كلمات الملكية (`borrow` (الاقتراض)، `change` (التغيير)، `consume` (الاستهلاك)) تُعامل أيضًا كوعود مُتحققًا منها. النطاقات المحلية ضيقة: إقراض حقل يُلغى صلاحيته بكتابة لاحقة لذلك الحقل، وإقراض عنصر قائمة يُلغى صلاحيته بالنمو اللاحق. صيغة الاسم المستعار القابل للكتابة (`let alias = change record.field`) تكتب من خلاله وتكون نشطة فقط حتى آخر استخدام نحوي مستقيم لها. الإبلاغ عن الاستخدام بعد النقل يكون مع تسمية موقع النقل. `old(...)` يلتقط قيمة المُعامل عند دخول المهمة، لذا فإن التبادل الذي لا يحدث يُكتشف من خلال عقده الخاص.
ملف README صريح بشأن القيود: أسطر `cost:` (التكلفة)، `allocates:` (التخصيص)، `protects:` (الحماية)، و `trusts:` (الثقة) هي نوايا مُسجلة، وحقائق بيانية، والتزامات مُولدة حاليًا، وليست براهين مُنفذة. يُصدر المُتحقق قائمة واضحة غير مُدعاة بحيث تظل الحدود بين المُتحقق والمُعلن مرئية.
الحالة: واجهة أمامية لمترجم Rust لمرحلة البناء (Milestone 0)، مع بدء مرحلة التنفيذ (Milestone 1) عبر `hum run` لتفسير أول نماذج Core الرسمية. أول شريحة أصلية قانونية هي `programs/integer_sign.hum`، تُشغل بـ `hum run --native --allow stdout.write ... --args -7`، والذي يتحقق من المصدر، ويتحقق من حقائق النهاية الخلفية، ويطبع عبر Cranelift على أنظمة Windows و Linux المدعومة. يصف ملف README هذا كشكل برنامج محدود، وليس ترجمة عامة للغة.
المستودع غني بالتوثيق: العمارة، مرجع اللغة، القواعد النحوية، مخططات لسطح الصياغة، القدرات، حقائق الهدف، تقارير الأدلة، الالتزامات الرياضية، تقارير الموارد، Core Hum (العقد/المعاينة/الخفض/التحقق)، فحص النوع/التأثير/الملكية/الموارد، عقد واستعداد IR، إدخال/استقصاء/عقد النهاية الخلفية، قدرات LSP، دكتور، بالإضافة إلى سجلات القرار، نموذج الأمان، سياسة عدم الأمان، التشغيل البيني وقابلية النقل، نموذج أمان الذاكرة، استراتيجية وقت التجميع، استراتيجية stdlib، ملفات وقت التشغيل، استراتيجية النهاية الخلفية، خارطة الطريق، الحوكمة، وملاحظات بحثية. تشمل الأدوات قواعد نحوية لـ TextMate، ومُنسق مخطط (`humfmt`)، وخطة مدير حزم (Nectar)، وأوامر CLI مثل `check`، `version`، `explain`، `diagnostics`، `capabilities`، `target-facts`، `core-contract`، `core-preview`، `core-lower`، `core-verify`، و `full-type-check`، العديد منها بمخرجات JSON.
مترجم البناء (bootstrap) مكتوب بـ Rust ويمنع التعليمات البرمجية غير الآمنة افتراضيًا، مع حد واحد مراجع ومُسمح به محليًا لاستدعاء JIT غير آمن وخمس تبعيات ذات إصدار ثابت لـ Cranelift. Cargo هو مسار البناء والتثبيت الحالي، على الرغم من أن ملف README يُلاحظ أن Hum لا ينبغي وضعه على أنه "مجرد صندوق Cargo" على المدى الطويل.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.