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

الترحيل من 0.6 إلى 0.7

منقول من الكتاب المرجعي: docs/handbook/migration/0.6-to-0.7.md · الإيداع 7a52f6c

المصدر: CHANGELOG.md (وثيقة في مستودع المجمّع) (قسم 0.7.0) وmigration-log.md (وثيقة في مستودع المجمّع). برنامج 0.6 صحيح يبقى صحيحاً وبالناتج نفسه في 0.7.0 إلا ما في «ما قد يتغير» أدناه؛ الاختبارات تشغّل كل البرامج المرجعية القديمة وتقارن ناتجها.

0.6 كانت تعدّ المراجع: النص والقائمة والقاموس تُعاد حين لا يحملها أحد. 0.7 لا تعدّ: كل ذلك يُحجز من مخصص (الافتراضي إن لم يُذكر)، ويعود بـحرر أو عند خروج البرنامج.

في 0.6 في 0.7
لا شيء يُكتب لإعادة الذاكرة البرنامج القصير كما هو؛ الطويل يعيد ما ينتهي منه بـحرر أو خاتمه حرر أو ساحة
الإسناد يشارك الحاوية كما هو
--debug-mem يعدّ «القيم المُدارة» يبلّغ ما لم يُحرَّر من الافتراضي معلومة لا خطأ، ومن مخصص صريح إنذار
MEEM_RC_REPORT يُقبل ولا أثر له
مثال
# برنامج 0.6 يعمل كما هو
اسماء قائمة[نص] = []
لكل ع في مدى(0, 3):
اضف(اسماء, "اسم" + نص(ع))
اطبع(اسماء)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[اسم0, اسم1, اسم2]

في 0.6 كان النص المؤقت يعود في كل دورة. في 0.7 يبقى حتى الخروج: ذروة الذاكرة تكبر (برنامج نصوص قيس 12 ← 135 م.ب، v1-readiness.md (وثيقة في مستودع المجمّع)). الإصلاح سطر واحد:

مثال
اخر = ""
لكل ع في مدى(0, 1000):
ن = "سطر " + نص(ع)
خاتمه حرر(ن)
اخر = نص(طول(ن))
اطبع(اخر)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
7

أو ساحة للدورة كلها (كل ما يُبنى فيها يعود بـاعد): الذاكرة: المخصصات وخاتمه.

ما أُضيف (لا يمسّ برنامجاً قائماً)

رابط إلى قسم «ما أُضيف (لا يمسّ برنامجاً قائماً)»

خاتمه، والمخصصات (مخصص، النظام، الافتراضي، ساحة، كاشف، مخزن_ثابت، اعد)، وقائمة_من ونسخ بمخصص، وجزء ودمج_نصوص، والطبقة المنخفضة (خطر، احجز، الشرائح، حوّل، الأنواع بحجم ثابت، بلا_فحص، --no-unsafe)، وعمليات البتات، ووضع بلا_افتراضي.

  • معالجة الأخطاء كاسرة: دوال ملفات وعدد(نص) وكسر(نص) وحاول_احجز صارت !نوع، وبرنامج يستدعيها بلا جرّب أو والا لا يُترجم. الجدول والإصلاح في الترحيل إلى معالجة الأخطاء (0.7.0).
  • خاتمه وخطر صارتا كلمتين محجوزتين: برنامج يسمّي متغيراً بإحداهما خطأ ترجمة. (لم يستعملهما أي برنامج مرجعي.)
  • دالة تحمل اسم مدمجة جديدة (احجز، ساحة…): تحذير حجب، يصير خطأً مع --strict لمدمجات 0.7.0. ومدمجات المرحلة الأخيرة (بحث، رتب…) تحذيرها استشاري لا يكسر --strict.
  • & و| و^ و~ كانت خطأً لفظياً؛ صارت معاملات بتات على عدد، وعلى المنطقي خطأ دلالي يرشد إلى و واو.
  • رسالة عدد الوسائط لـجديد وحرر تذكر المخصص الاختياري.
  • ذروة الذاكرة في برامج النصوص الطويلة (أعلاه).

المرحلة الأخيرة من 0.7.0 (دُمجت في الإصدار)

رابط إلى قسم «المرحلة الأخيرة من 0.7.0 (دُمجت في الإصدار)»

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