أحدث د المجمعين

أغلق فريق تطوير LDC العام الماضي بإصدار 1.19.0 من برنامج التحويل البرمجي D باستخدام LLVM ، وبدأ الفريق الأساسي العام الجديد بإصدار 2.090.0 من برنامج التحويل البرمجي المرجعي DMD . وإذا لم تكن قد سمعت ، فقبل وقت ليس ببعيد ، كانت هناك أخبار مهمة حول برنامج D-compiler المستند إلى GCC ، GDC . مكياج

LDC 1.19.0


يحتوي هذا الإصدار على تحديث لبرنامج التحويل البرمجي LDC إلى الإصدار D من الواجهة الأمامية 2.089.1 ، والذي كان الإصدار الحالي في وقت الإصدار ، مباشرة بعد عيد الميلاد الكاثوليكي. تستند التجميعات المجمعة إلى LLVM 9.01 .

من بين النقاط البارزة في هذا الإصدار بعض التعاطف مع Android. مكتبة DRuntime / Phobos الجاهزة متوفرة الآن لجميع أهداف Android. يمكن استخدام هذا الإصدار جنبًا إلى جنب مع تطبيق Android Project D من Adam Ruppe ، وهو عبارة عن مجموعة من البرامج والواجهات المساعِدة ، الآن في مرحلة تجريبية قريبة من الاكتمال ، للتطوير على Android D مع LDC.

سيجد مستخدمو Windows أنه تم تحديث مكتبات الارتباطات المستندة إلى MinGW. الآن يتم اشتقاقها من ملفات .def من حزمة MinGW-w64 7.0.0 . تسمح لك هذه المكتبات باستخدام مكتبات نظام Windows دون الحاجة إلى تثبيت Windows SDK.

DMD 2.090.0


تم الإعلان عن أحدث إصدار من DMD في 7 يناير . لقد خرجت مع 10 تغييرات رئيسية و 71 أخطاء مغلقة ، يرجى تقديمها من قبل 48 مؤلفًا مشاركًا .

مع هذا الإصدار ، أصبح من الممكن الآن استخدام المعلمات البطيئة. لدى D خيارات طويلة كسولة :
لا يتم تقييم وسيطة المعلمة البطيئة حتى يتم استدعاء الدالة. تتم معالجة الوسيطة فقط إذا / عند تقييم المعلمة داخل الوظيفة.
لذلك ، يمكن تنفيذ الوسيطة البطيئة 0 أو أكثر من المرات.
تحت غطاء محرك السيارة ، يتم تنفيذها كمندوبين. يمكنك الآن الوصول إلى المفوض الأساسي عن طريق أخذ عنوان المعلمة ، والذي كان محظورًا في السابق.

import std.stdio; void chillax(lazy int x) { auto dg = &x; assert(dg() == 10); writeln(x); } void main() { chillax(2 * 5); } 

يجعل هذا الإصدار أيضًا المصطلح "D" القديم الذي يستخدمه أولئك الذين يحتاجون إلى التمييز بين الإنهاء (التدمير غير الحاسم للأجسام ، وعادة ما يبدأ به جامع القمامة) والتدمير العادي (التدمير الحتمى للأشياء) من داخل المدمرة للفئة أو الهيكل.

في الحالة الحالية لـ GC ، يحظر أي عمليات GC أثناء الانتهاء. ومع ذلك ، لا توفر D أدوات نهائية ومدمرة منفصلة. هناك فقط ~ هذا ، والذي يسمى المدمر ، على الرغم من حقيقة أنه يلعب كلا الأدوار. هذا في بعض الأحيان يخلق صعوبات عند تنفيذ المدمرات لأنواع مصممة لمخصصات GC وغير GC. أي استدعاء GC أثناء التنظيف قد ينتج عن خطأ InvalidMemoryOperationError. هذا يعني الحاجة إلى الحل المذكور أعلاه.

الآن يمكنك استدعاء وظيفة GC الثابتة ، core.memory.GC.inFinalizer ، للحصول على حالتك في المدمر. يعود صحيحًا إذا كان مؤشر الترابط الحالي في وضع اللمسات الأخيرة ، وفي هذه الحالة لا تريد تنفيذ أي إجراءات تنطوي على عمليات باستخدام GC. (كنت أتوقع شيئًا كهذا قبل كتابة المقال التالي في سلسلة GC ).

GDC


بفضل العمل الشاق لإيان بوكلاو ، يوهانس بفاو وجميع المتطوعين الذين دعموا وساهموا على مر السنين ، تم قبول GDC في دول مجلس التعاون الخليجي 9 في نهاية عام 2018 وأصبحت متاحة كجزء من مجموعة دول مجلس التعاون الخليجي 9.1 صدر في مايو الماضي. تم إصدار GCC 9.2 في أغسطس الماضي. يقوم هذا الإصدار من GDC بتنفيذ الإصدار 2.076 من الواجهة الأمامية D. يمكنك بنائه بنفسك أو تثبيته من نفس المكان الذي تحصل فيه عادة على الإصدار 9.x من GCC.

من المترجم


لقد منعت هذه المدونة بشكل كامل تقريبا المجموعة من المقال القادم حول البرمجة الموثوقة ، بما في ذلك D ، حسناً ، باستثناء النقد وحالة IDE ، وبالتالي اتضح أنها ناجحة للغاية.

Source: https://habr.com/ru/post/ar483440/


All Articles