Выпуск компилятора языка D 2.084
Разработчики языка программирования D опубликовали релиз основного эталонного компилятора DMD 2.084.0, который поддерживает системы GNU/Linux, Windows, macOS и FreeBSD. Код компилятора распространяется под свободной лицензией BSL (Boost Software License). Дополнительно развивается альтернативный компилятор LDC, использующий наработки проекта LLVM и поставляемый под лицензией BSD.
Язык D использует статическую типизацию, обладает синтаксисом, схожим с C/C++, и обеспечивает производительность компилируемых языков, при этом заимствуя некоторые полезные возможности динамических языков в области эффективности разработки и обеспечения безопасности. Например, предоставляется поддержка ассоциативных массивов, косвенное определение типов, автоматическое управление памятью, средства параллельного программирования, опциональный сборщик мусора, система шаблонов, компоненты для метапрограммирования, возможность использовать библиотеки на языке C, а также некоторые библиотеки на C++ и Objective-C.
В новой версии DMD:
- Реализован флаг компилятора »-check», позволяющий управлять включением различных runtime-проверок: проверки утверждений (assert), границ (bounds), инвариантов класса и структуры (invariant), входных и выходных контрактов (in/out) и вариантов по умолчанию (switch). При сборке без опции »-release» все эти проверки включены по умолчанию. Например, если требуется отключить assert-проверки, можно указать «dmd -check=assert=off». Для управления реагированием на сбой проверки добавлена опция »-checkaction=D|C|halt»;
- Добавлен флаг компилятора »-mixin» для сохранения в отдельный файл кода, сгенерированного для «примесей», определённых оператором mixin. Опция может использоваться с целью упрощения отладки примесей, так как в случае ошибки позволяет определить точный номер проблемной строки в коде примеси;
- В DUB, утилите для сборки и управления пакетами, предложена новая команда «add», предназначенная для упрощения добавления зависимостей в пакет проекта без необходимости редактирования метаданных в форматах JSON или SDLang.
© OpenNet