توسعه دهندگان زبان برنامه نویسی 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 خطا ایجاد می کند.
- کلمه کلیدی delete از سال 2018 منسوخ شده است. به جای حذف، باید از تابع remove یا 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); float[3] fa; fa.tupleof = ia.tupleof; // انتساب ساده fa = ia منجر به یک خطا می شود (fa == [1F, 2F, 3F]);
منبع: opennet.ru