تخطَّ إلى المحتوى

ما يستطيعه برنامج ميم على جهازك

منقول من الكتاب المرجعي: docs/handbook/language/11-security.md · الإيداع 7a52f6c

القاعدة. برنامج ميم يعمل بصلاحيات من يشغّله كاملة، بلا عزل، كأي برنامج. لا تشغّل برنامجاً لا تثق بمصدره. (السجلّ الكامل في v1-readiness.md (وثيقة في مستودع المجمّع)، القسم 5.)

القدرة عبر ما يمنعها اليوم
قراءة الملفات وكتابتها وحذفها، وإنشاء المجلدات وسردها ملفات --no-system (منذ 0.7.0)
قراءة متغيرات البيئة والوسائط نظام --no-system (منذ 0.7.0)
أي دالة C في أي مكتبة (شبكة، تشغيل أوامر…) خارجي --no-ffi (لبرنامج المستخدم)
إفساد الذاكرة وسلوك غير معرَّف خطر، بلا_فحص --no-unsafe
استهلاك المعالج والذاكرة بلا حد حلقة حدود نظام التشغيل وحدها
كتابة رموز تحكم إلى الطرفية اطبع لا شيء

--no-ffi و--no-unsafe يمنعان بخطأ ترجمة قبل أي تنفيذ:

مثال
خطر:
م = احجز_خام(عدد, 1)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0

لا مخرجات.

المثال أعلاه يعمل بلا الخيارين ولا يطبع شيئاً. مع --no-unsafe يرفضه المجمّع برمز 2:

[خطأ دلالي] سطر 1:1 - المنطقة 'خطر' ممنوعة بالخيار --no-unsafe

وتصريح خارجي مع --no-ffi:

[خطأ دلالي] سطر 1:1 - تصريح 'خارجي' ممنوع بالخيار --no-ffi

وتصريح استورد ملفات أو استورد نظام مع --no-system، في الملف الرئيسي أو في ملف يستورده:

[خطأ دلالي] برنامج.م:1:1 - الوحدة 'ملفات' ممنوعة بالخيار --no-system

القيود المعروفة. الخيارات الثلاثة تخص برنامج المستخدم لا المكتبة القياسية. ولا شيء في المجمّع يحدّ المعالج والذاكرة: الملعب يحدّهما بالحاوية (playground.md (وثيقة في مستودع المجمّع)).

الملعب يشغّل البرنامج على خادم بالمجمّع الحقيقي في حاوية جديدة لكل تشغيل. الحدود نهائية، وعقد الواجهة كله في playground-api.md (وثيقة في مستودع المجمّع):

الحد القيمة
خيارات المجمّع --no-unsafe --no-ffi --no-system --debug-mem دائماً
الوحدات رياضيات وعشوائي وحدهما (--no-system يرفض ملفات ونظام بخطأ ترجمة)؛ برنامج من ملف واحد
الزمن 5 ثوانٍ معالجاً، و8 ثوانٍ حائطاً من بدء الحاوية (بدؤها والترجمة نحو نصف ثانية)
الخرج 64 ك.ب لكلٍّ من stdout وstderr؛ عنده يُقطع ويُوقف البرنامج
الذاكرة 512 م.ب بلا swap
العمليات 64
الشبكة لا شيء
حجم المصدر 64 ك.ب (ما زاد يُرفض)
جسم الطلب 96 ك.ب (ما زاد 413)
المعدل لكل عنوان 5 تشغيلات متتالية، ثم 20 في الدقيقة (429)
التزامن والطابور عامّان للخدمة (الافتراضي 2 و8؛ على الخادم 4 و16)؛ ما زاد 503

بلا مدخل (stdin مغلق) ولا وسائط ولا متغيرات بيئة. الحالة: الخدمة منجزة ومختبرة ولم تُنشر بعد.