Випуск компілятора мови D 2.100

Розробники мови програмування D представили реліз основного стандартного компілятора DMD 2.100.0, який підтримує системи GNU/Linux, Windows, macOS і FreeBSD. Код компілятора розповсюджується під вільною ліцензією BSL (Boost Software License).

Мова D використовує статичну типізацію, має синтаксис, схожий з C/C++, і забезпечує продуктивність компілюваних мов, при цьому запозичуючи деякі корисні можливості динамічних мов у галузі ефективності розробки та забезпечення безпеки. Наприклад, надається підтримка асоціативних масивів, опосередковане визначення типів, автоматичне управління пам'яттю, засоби паралельного програмування, опціональний збирач сміття, система шаблонів, компоненти для метапрограмування, можливість використовувати бібліотеки мовою C, а також деякі бібліотеки C++ і Objective-C.

Серед змін у новому випуску:

  • Припинено підтримку старого стилю перевантаження операторів, що використовується у гілці D1. На зміну opNeg, opAdd_r, opAddAssign тощо. прийшли opUnary, opBinary, opBinaryRight та opOpAssign. Старий стиль перевантаження операторів був оголошений застарілим у 2019 році і починаючи з випуску 2.100 призводитиме до висновку помилки.
  • Припинено підтримку ключового слова delete, оголошеного застарілим, починаючи з 2018 року. Замість delete слід використовувати функцію destroy чи core.memory.__delete.
  • Реалізовано новий атрибут @mustuse, який може бути застосований до типів struct і union як альтернативний метод обробки помилок, коли в коді неможливо використовувати винятки (наприклад, у блоках @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 приведений до помилки assert (fa = = [1F, 2F, 3F]);

Джерело: opennet.ru

Додати коментар або відгук