جرّب 0.10 معنا
ميم 0.10.0 هي النسخة التجريبية قبل 1.0، ومعها محرر ميم 0.4.0. الغاية أن يكتب أناس كثيرون برامج حقيقية بميم على أجهزتهم، فيظهر ما لا يكشفه الاختبار الآلي، قبل تجميد اللغة في 1.0. لا تحمل 0.10 ميزة لغوية جديدة عن 0.8.0، وغايتها أن تصدق ميم في ما تعد به عن الذاكرة. نزّلها من صفحة التنزيل.
ما تغيّر في 0.10.0
رابط إلى قسم «ما تغيّر في 0.10.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، والضمانات كلها في الذاكرة في ميم.
ما نطلب اختباره
رابط إلى قسم «ما نطلب اختباره»بالترتيب، الأهم أولاً:
- التثبيت والتشغيل على جهازك: فك الأرشيف، ثم
meem --version، والفحص الذاتي (meem --self-test)، وmeem build، على أي لينكس x86_64 فيه glibc 2.35 أو أحدث. اختُبرت الحزمة على دبيان 12 وأوبونتو 22.04 وحدهما، فكل توزيعة أخرى (Fedora، Arch، openSUSE، Mint…) تجربة جديدة. - برامج حقيقية: أداة صغيرة تحتاجها (معالجة ملف نصي، حساب، لعبة في الطرفية)، لا أمثلة الكتاب. المهم: هل تُكتب بميم كما تتوقع، وأين اضطررت إلى التحايل.
- رسائل الأخطاء: حين يرفض المجمّع برنامجك، هل تقول الرسالة ما الخطأ وأين، وهل يصلحه التلميح؟ الرسالة الغامضة تستحق بلاغاً مستقلاً.
- أحدث أجزاء اللغة: معالجة الأخطاء (
!نوعوجرّبووالاوخاتمه_عند_خطأ)، والتعداد، والذاكرة اليدوية (حرروخاتمهوالساحات) مع الكاشف الجديد: هل يكشف خطأك، وهل تدلك رسالته على السطر؟ وهل يختلف ناتجmeem برنامج.معن--release؟ - الوحدات القياسية:
ملفاتونظامومساراتورياضياتوعشوائي، على ملفات ومسارات عربية وكبيرة. meem build: هل يعمل الملف المبني على جهاز آخر ليس عليه ميم؟- الأدوات:
--check --jsonو--fix، لمن يكتب أداة أو إضافة لمحرر (عقد الأدوات).
ليس مطلوباً: الأداء الدقيق، والسلوك داخل خطر (فهو غير معرَّف أصلاً).
كيف تبلّغ عن خطأ
رابط إلى قسم «كيف تبلّغ عن خطأ»البلاغات في مستودع meem-feedback على GitHub (يلزمك حساب في GitHub)، بلاغ واحد لكل خطأ. فيه قالب «بلاغ خلل» بالحقول نفسها التي في القالب أدناه، وقالب «اقتراح». قبل أن تكتب: ابحث في البلاغات المفتوحة، وفي «ما هو معروف» أسفل هذه الصفحة.
افتح بلاغاً أو اقتراحاً · البلاغات المفتوحة
قالب البلاغ
رابط إلى قسم «قالب البلاغ»انسخه كما هو في نص البلاغ، واملأ كل قسم (واكتب «لا ينطبق» بدل حذف القسم):
**العنوان:** [صنف البلاغ] وصف قصير (مثال: [سقوط] meem build يسقط على قائمة قواميس)
### الإصدار والنظام- `meem --version`:- النظام (`grep PRETTY_NAME /etc/os-release`):- glibc (`ldd --version | head -1`):
### البرنامجأصغر برنامج يُظهر الخطأ (والملفات التي يقرؤها إن وُجدت):
```ميماطبع("...")```
### الأمر```shmeem برنامج.م```
### ما حدث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»تصدر 1.0 حين تتحقق هذه كلها:
- أربعة أسابيع على الأقل من نشر 0.9.0.
- خمسة مجرّبين على الأقل غير صاحب المشروع.
- ثلاث توزيعات على الأقل جُرّبت عليها الحزمة.
- لا بلاغ مفتوح من الأولوية العليا أو العالية (
[داخلي]و[سقوط]و[ناتج]و[بناء]).