إصدار مترجم لغة D 2.100

قدم مطورو لغة البرمجة D إصدار المترجم المرجعي الرئيسي DMD 2.100.0، الذي يدعم أنظمة GNU/Linux وWindows وmacOS وFreeBSD. يتم توزيع رمز المترجم بموجب BSL (ترخيص برنامج Boost) المجاني.

تتم كتابة D بشكل ثابت، وله بناء جملة مشابه لـ C/C++، ويوفر أداء اللغات المترجمة، مع استعارة بعض مزايا كفاءة التطوير والأمان للغات الديناميكية. على سبيل المثال، يوفر الدعم للمصفوفات الترابطية، واستدلال النوع، وإدارة الذاكرة التلقائية، والبرمجة المتوازية، ومجمع البيانات المهملة الاختياري، ونظام القالب، ومكونات البرمجة الفوقية، والقدرة على استخدام مكتبات C، وبعض مكتبات C++ وObjective-C.

من بين التغييرات في الإصدار الجديد:

  • تم إيقاف النمط القديم للتحميل الزائد للمشغل المستخدم في فرع D1. يستبدل opNeg وopAdd_r وopAddAssign وما إلى ذلك. جاء opUnary، opBinary، opBinaryRight وopOpAssign. تم إهمال النمط القديم للتحميل الزائد للمشغل في عام 2019 وسيتسبب في حدوث خطأ اعتبارًا من الإصدار 2.100.
  • لقد تم إهمال الكلمة الرئيسية للحذف منذ عام 2018. بدلاً من الحذف، يجب عليك استخدام وظيفة التدمير أو core.memory.__delete.
  • تم تنفيذ سمة @mustuse جديدة يمكن تطبيقها على أنواع البنية والتوحيد كطريقة بديلة لمعالجة الأخطاء عندما يتعذر على التعليمات البرمجية معالجة الاستثناءات (على سبيل المثال، في كتل @nogc). إذا لم يتم استخدام تعبير تم وضع علامة عليه بالسمة @mustuse في التعليمات البرمجية، فسيقوم المترجم بإنشاء خطأ.
  • بالنسبة للمصفوفات الثابتة، يُسمح باستخدام خاصية ".tupleof" للحصول على تسلسل القيم (lvalue) لكل عنصر من عناصر المصفوفة. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // التناظرية foo(1, 2, 3); تعويم[3] فا؛ fa.tupleof = ia.tupleof; // إسناد بسيط fa = ia يؤدي إلى خطأ التأكيد(fa == [1F, 2F, 3F]);

المصدر: opennet.ru

إضافة تعليق