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

ابدأ من Zig

ميم أقرب إلى Zig من أي لغة تعليمية: المخصص قيمة تُمرَّر، وخاتمه تقابل defer، و!نوع تقابل !T. ولم يكن Zig مثبتاً على جهاز التحليل، فما يخص Zig هنا من وثائقه، غير مجرَّب.

في Zig في ميم
std.mem.Allocator يُمرَّر المخصص وسيطاً أخيراً، ويجوز تركه فيُمرَّر الافتراضي
ArenaAllocator ساحة(الاصل) واعد
FixedBufferAllocator مخزن_ثابت
GeneralPurposeAllocator في التنقيح الكاشف، افتراضي في meem برنامج.م وبـ --debug في meem build؛ و--debug-mem يضيف تقرير التسرب
defer / errdefer خاتمه / خاتمه_عند_خطأ
!T، try، catch !نوع، جرّب، والا
error{...} كتلة اخطاء:، ومجموعة واحدة عامة
?T لاشيء للنص والمؤشر فقط
Debug / ReleaseFast التشغيل المباشر بالكاشف / meem build أو --release بلا كاشف. وفحص الحدود والتجاوز في الوضعين، وبلا_فحص داخل خطر موضعياً
خاتمه مثل defer
داله عالج(ن عدد) نص:
اطبع("فتح المورد ", ن)
خاتمه اطبع("إغلاق المورد ", ن)
خاتمه اطبع("تنظيف أول")
اذا ن < 0:
ارجع "سالب"
اطبع("عمل على ", ن)
ارجع "تم"
اطبع(عالج(5))
اطبع("---")
اطبع(عالج(-1))
مخرجات مسجّلة من المجمّعmeem ذاكرة_خاتمه.م · meem 0.10.0+b01b55f
فتح المورد 5عمل على 5تنظيف أولإغلاق المورد 5تم---فتح المورد -1تنظيف أولإغلاق المورد -1سالب
خاتمه_عند_خطأ مثل errdefer
اخطاء:
ملف_تالف
داله حمّل(صالح منطقي) !عدد:
اطبع("فتح")
خاتمه اطبع("إغلاق")
خاتمه_عند_خطأ اطبع("تراجع عن نصف العمل")
اذا !صالح:
ارجع خطأ.ملف_تالف
ارجع 42
اطبع(حمّل(صواب) والا -1)
اطبع("---")
اطبع(حمّل(خطاء) والا -1)
مخرجات مسجّلة من المجمّعmeem اخطاء_عند_خطأ.م · meem 0.10.0+b01b55f
فتحإغلاق42---فتحتراجع عن نصف العملإغلاق-1
  • «لا حجز مخفي» قاعدة منذ 0.10.0، باستثناء واحد: نمو ن += ذيل يترك المخزن القديم (تسرب محدود بنحو ضعفي الطول النهائي). وفي 0.9.1 كانت العمليات على «عرض» تحجز نسخاً لا تُعاد.
  • الشريحة والنص: النص {مؤشر، طول، مالك}، والعرض نص على بايتات نص آخر يعيش بعمره.
  • لا comptime ولا أنواع معمّمة.
  • خاتمه ... والا غير ممكنة: التنظيف الذي قد يفشل يحتاج دالة غلاف.
  • لا مخصصات يكتبها المستخدم، ولا resize ولا محاذاة.
  • الكاشف وقت التشغيل لا وقت الترجمة، ولا يرى ذاكرة C، وحرر لا يتبع ما في داخل الحاوية (لا deinit عميق).
  • الخطأ بلا مجموعات في التوقيع ولا تتبّع (Zig له error return trace في التنقيح).

الذاكرة في ميم · التعامل مع الأخطاء · ميم مقابل C وZig