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

جرّب 0.10 معنا

ميم 0.10.0 هي النسخة التجريبية قبل 1.0، ومعها محرر ميم 0.4.0. الغاية أن يكتب أناس كثيرون برامج حقيقية بميم على أجهزتهم، فيظهر ما لا يكشفه الاختبار الآلي، قبل تجميد اللغة في 1.0. لا تحمل 0.10 ميزة لغوية جديدة عن 0.8.0، وغايتها أن تصدق ميم في ما تعد به عن الذاكرة. نزّلها من صفحة التنزيل.

  • ثغرة السقوط أُغلقت: قائمة أو قاموس يُستعمل بعد حرر بالاسم نفسه كان يُسقط البرنامج (SIGSEGV)، وصار خطأ تشغيل E0428 برمز 3، في كل الأوضاع.
  • الكاشف افتراضي في التشغيل المباشر: meem برنامج.م يعمل بكاشف الذاكرة، فالاستعمال بعد التحرير عبر اسم آخر، أو بعد اعد لساحته، صار خطأ E0429 للقائمة والقاموس وE0430 للنص والعرض، بسطري الإنشاء والتحرير. والتحرير المزدوج لنص E0431. وكان كل ذلك ناتجاً خاطئاً صامتاً برمز 0.
  • --release و--debug: --release يشغّل بلا كاشف (أسرع)، وmeem build بلا كاشف افتراضياً، وmeem build --debug يبني الكاشف في الملف. و--debug-mem يضيف تقرير ما لم يُحرَّر كما كان.
  • لا نسخ خفية: طول والمقارنة والفهرسة ولكل وعدد() والمفتاح في قاموس على «عرض» (ناتج جزء وقص_الفراغات…) كانت تحجز نسخة لا تُعاد في كل مرة، ولم تعد تحجز شيئاً.
  • الملف المبني أسرع في العودية: فيبوناتشي على برامج القياس من 1.014 ث إلى 0.762 ث.

تفصيل التغيير وما قد يكسر في الترحيل من 0.9 إلى 0.10، والضمانات كلها في الذاكرة في ميم.

بالترتيب، الأهم أولاً:

  1. التثبيت والتشغيل على جهازك: فك الأرشيف، ثم meem --version، والفحص الذاتي (meem --self-test)، وmeem build، على أي لينكس x86_64 فيه glibc 2.35 أو أحدث. اختُبرت الحزمة على دبيان 12 وأوبونتو 22.04 وحدهما، فكل توزيعة أخرى (Fedora، Arch، openSUSE، Mint…) تجربة جديدة.
  2. برامج حقيقية: أداة صغيرة تحتاجها (معالجة ملف نصي، حساب، لعبة في الطرفية)، لا أمثلة الكتاب. المهم: هل تُكتب بميم كما تتوقع، وأين اضطررت إلى التحايل.
  3. رسائل الأخطاء: حين يرفض المجمّع برنامجك، هل تقول الرسالة ما الخطأ وأين، وهل يصلحه التلميح؟ الرسالة الغامضة تستحق بلاغاً مستقلاً.
  4. أحدث أجزاء اللغة: معالجة الأخطاء (!نوع وجرّب ووالا وخاتمه_عند_خطأ)، والتعداد، والذاكرة اليدوية (حرر وخاتمه والساحات) مع الكاشف الجديد: هل يكشف خطأك، وهل تدلك رسالته على السطر؟ وهل يختلف ناتج meem برنامج.م عن --release؟
  5. الوحدات القياسية: ملفات ونظام ومسارات ورياضيات وعشوائي، على ملفات ومسارات عربية وكبيرة.
  6. meem build: هل يعمل الملف المبني على جهاز آخر ليس عليه ميم؟
  7. الأدوات: --check --json و--fix، لمن يكتب أداة أو إضافة لمحرر (عقد الأدوات).

ليس مطلوباً: الأداء الدقيق، والسلوك داخل خطر (فهو غير معرَّف أصلاً).

البلاغات في مستودع meem-feedback على GitHub (يلزمك حساب في GitHub)، بلاغ واحد لكل خطأ. فيه قالب «بلاغ خلل» بالحقول نفسها التي في القالب أدناه، وقالب «اقتراح». قبل أن تكتب: ابحث في البلاغات المفتوحة، وفي «ما هو معروف» أسفل هذه الصفحة.

انسخه كما هو في نص البلاغ، واملأ كل قسم (واكتب «لا ينطبق» بدل حذف القسم):

**العنوان:** [صنف البلاغ] وصف قصير (مثال: [سقوط] meem build يسقط على قائمة قواميس)
### الإصدار والنظام
- `meem --version`:
- النظام (`grep PRETTY_NAME /etc/os-release`):
- glibc (`ldd --version | head -1`):
### البرنامج
أصغر برنامج يُظهر الخطأ (والملفات التي يقرؤها إن وُجدت):
```ميم
اطبع("...")
```
### الأمر
```sh
meem برنامج.م
```
### ما حدث
stderr كاملاً كما هو، ورمز الخروج (`echo $?`):
```
```
### ما توقعته
سطر واحد.
### للأخطاء عند الترجمة (رمز 2)
خرج `meem --check --json برنامج.م`:
```json
```
ما تُرفقه لماذا
meem --version فيه الإيداع (مثل 0.10.0+abcdef0)، فيعيّن الحزمة بعينها
النظام وglibc الحزمة مختبرة على دبيان 12 وأوبونتو 22.04 وحدهما
البرنامج نصاً (الملف .م، لا صورة شاشة) لإعادة الخطأ، والبرنامج الأصغر أسرع إصلاحاً
stderr ورمز الخروج أهم ما فيه معرّف الرسالة (E0123 في [خطأ دلالي E0123])، وتجد شرحه في فهرس الأخطاء
--check --json التشخيص كاملاً بموضعه ومعرّفه

أصناف البلاغ بحسب ما تراه:

ما تراه الصنف (في العنوان) الأولوية
«خطأ داخلي في المجمّع» أو تتبع بايثون [داخلي] عليا
البرنامج يسقط بإشارة (SIGSEGV، رمز 139) خارج خطر [سقوط] عليا
ناتج يخالف الكتاب، أو برنامج صحيح يُرفض [ناتج] عالية
meem build يعطي ناتجاً غير ناتج التشغيل المباشر [بناء] عالية
رسالة لا تُفهم، أو تلميح يقود إلى خطأ آخر [رسالة] متوسطة
شيء يصعب كتابته بميم [لغة] تُجمع لقرار 1.0

الخصوصية: لا يرسل المجمّع شيئاً إلى أي مكان. لكن البلاغ في GitHub علني، فاحذف من البرنامج والخرج ما لا تريد نشره: مسارات فيها اسمك، وأسرار في متغيرات البيئة، وبيانات حقيقية.

المعروف التفصيل
لينكس x86_64 وحده، وglibc 2.35 أو أحدث لا ماك ولا ويندوز ولا ARM ولا توزيعات musl، ولا في 1.0
الرخصة رخصة ميم (الإصدار 1.0)، ونصها ضمن الحزمة: في مجلد المجمّع منذ 0.9.1 (LICENSE وLICENSE.en)، وفي حزمتي المحرر منذ 0.4.0 (/usr/share/doc/meem-editor/) ونافذة «حول»
النقر المزدوج على ملفات .م لا يعمل في GNOME قيد في مكتبة GLib: لا تطابق لاحقة اسم غير لاتينية، فتعدّ ملف .م نصاً عادياً بلا أيقونة. افتح الملف من المحرر، أو بالأمر meem-editor ملف.م
AppImage لا يسجّل نوع الملفات في النظام لا أيقونة لملفات .م ولا ربط بالمحرر إلا بحزمة deb
ترتيب النصوص بنقاط الترميز لا ترتيب معجمي عربي
لا أنواع معمَّمة، ولا اتحاد موسوم، ولا اتحاد، ولا حساب عناوين على المؤشر بعد 1.0
لا JSON ولا شبكة ولا تشغيل أوامر في المكتبة لا قبل 1.0، وخارجي إلى C متاح
النصوص المؤقتة في الحلقات تبقى حتى الخروج يحذّر منها --strict تحذيراً استشارياً، وخاتمه حرر(ن) يعيدها (الذاكرة في الحلقات الطويلة)
الملف المبني بلا كاشف الاستعمال بعد التحرير عبر اسم آخر فيه سلوك غير معرَّف (ناتج قديم أو نفايات)، والتحرير المزدوج عبر اسم آخر يُسقطه. يكشفهما التشغيل المباشر وmeem build --debug
نمو ن += ذيل يترك المخزن القديم تسرب محدود موثَّق: نحو لوغاريتم الطول للأساس 2 من المخازن، مجموعها نحو ضعفي الطول النهائي
حرر لا يتبع ما في داخل الحاوية قائمة قوائم، أو قائمة نصوص من تقسيم: للبنى المتداخلة الساحة
الكاشف أبطأ التشغيل المباشر من 0% إلى 32% أبطأ من --release في برامج القياس، وما يُحرَّر في وضعه لا يُعاد إلى النظام
سلسلة استدعاء أعمق من 2000 إلى 3000 دالة متتابعة خطأ ترجمة E0385 «أعقد مما يدعمه المجمّع» (لا انهيار)، وهو حدّ موثَّق يبقى
الملف الضخم بطيء الترجمة 50 ألف سطر (5000 دالة): --check في 8 ث، والتشغيل أو البناء في 66 ث و1.4 غ.ب ذاكرة
الملف يُقرأ كله الوحدة ملفات بلا قراءة سطراً سطراً ولا ملفات ثنائية، وقراءة ملف بحجم 1 غ.ب لم تُختبر
لا حدّ للمعالج والذاكرة في المجمّع البرنامج يعمل بصلاحيات المستخدم كاملة (ما يستطيعه البرنامج على جهازك)؛ والخيارات --no-system و--no-ffi و--no-unsafe تقيّده
أُصلح في 0.10.0 السقوط باستعمال قائمة أو قاموس بعد حرر (صار E0428)، والنسخ الخفية من العروض
أُصلح بعد 0.8.0 نص لا تتسع له الذاكرة كان يُسقط البرنامج (صار «نفدت الذاكرة» E0427)، وسلسلة الاستدعاء العميقة جداً كانت «خطأ داخلي»

تصدر 1.0 حين تتحقق هذه كلها:

  1. أربعة أسابيع على الأقل من نشر 0.9.0.
  2. خمسة مجرّبين على الأقل غير صاحب المشروع.
  3. ثلاث توزيعات على الأقل جُرّبت عليها الحزمة.
  4. لا بلاغ مفتوح من الأولوية العليا أو العالية ([داخلي] و[سقوط] و[ناتج] و[بناء]).