Опубликован релиз основного эталонного компилятора DMD 2.083.0, который поддерживает системы GNU/Linux, Windows, macOS и FreeBSD. Язык D использует статическую типизацию, обладает синтаксисом, схожим с C/C++, и обеспечивает производительность компилируемых языков, при этом заимствуя некоторые полезные возможности динамических языков в области эффективности разработки и обеспечения безопасности. Например, предоставляется поддержка ассоциативных массивов, косвенное определение типов, автоматическое управление памятью, средства параллельного программирования, опциональный сборщик мусора, система шаблонов, компоненты для метапрограммирования, возможность использовать библиотеки на языке C, а также некоторые библиотеки на C++ и Objective-C.
В новой версии:
- Расширены возможности по связыванию с бинарными файлами, скомпилированными из кода на языке C++. Улучшена поддержка разработки проектов, сочетающих код на языках C++ и D;
- Представлен дополнительный набор предопределённых идентификаторов для определения C++ runtime на этапе сборки: CppRuntime_Clang,
CppRuntime_DigitalMars,
CppRuntime_Gcc,
CppRuntime_Microsoft и CppRuntime_Sun. Для определения C runtime используются идентификаторы CRuntime_Bionic, CRuntime_DigitalMars,
CRuntime_Glibc,
CRuntime_Microsoft,
CRuntime_Musl и CRuntime_UClibc;
- Предложен альтернативный синтаксис для связывания с кодом на С++: 'extern(C++, "foo") void cppFunc()';
- Добавлено два новых встроенных типажа (traits): __traits(isZeroInit, T) для проверки инициализации типа нулевым значением и __traits(getTargetInfo, "key") для получения детальной информации о целевой платформе при компиляции;
- Добавлена новая pragma linkerDirective, позволяющая указать библиотеку, которую следует передать компоновщику в исходных текстах.
Дополнительно можно отметить принятие в основной состав GCC фронтэнда с компилятором GDC (Gnu D Compiler), библиотеки libphobos (runtime) и тестового набора D2, что позволит использовать штатный GCC для сборки программ на языке программирования D. Процесс включения поддержки языка D в GCC начался ещё в 2011 году, но затянулся из-за необходимости приведения кода к соответствию требованиям GCC и проблем с передачей прав на интеллектуальную собственность компании Digital Mars, развивающей язык программирования D. Проблемы с интеллектуальной собственностью были достаточно быстро решены, но для решения технических проблем и синхронизации разработки с компилятором DMD потребовалось почти полностью переписать GDC.
Также недавно состоялся выпуск LDC 1.12.0, компилятора для языка D развиваемого на базе наработок проекта LLVM. В новой версии обеспечена поддержка LLVM 7.0, расширена поддержка JIT-компиляции, проведена оптимизация математической библиотеки, добавлена поддержка LTO-оптимизаций для платформы Win64.
|