Вышел компилятор языка D 2.083
Опубликован релиз основного эталонного компилятора 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, позволяющая указать библиотеку, которую следует передать компоновщику в исходных текстах.
Дополнительно можно отметить выпуск LDC 1.12.0, компилятора для языка D развиваемого на базе наработок проекта LLVM. В новой версии обеспечена поддержка LLVM 7.0, расширена поддержка JIT-компиляции, проведена оптимизация математической библиотеки, добавлена поддержка LTO-оптимизаций для платформы Win64.