Выпуск компилятора языка D 2.085

Разработчики языка программирования D представили релиз основного эталонного компилятора DMD 2.085.0, который поддерживает системы GNU/Linux, Windows, macOS и FreeBSD. Код компилятора распространяется под свободной лицензией BSL (Boost Software License).

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

В новой версии DMD:

  • Добавлена поддержка взаимодействия с кодом Objective-C, позволяющия организовать обращение к классам, переменным и супервызовам, определённым в библиотеках на языке Objective-C. Классы Objective-C теперь могут быть определены напрямую как классы D, без промежуточных прослоек (достаточно просто указать класс как extern (Objective-C) и использовать атрибут @selector для обращения к методам);
  • Внесены улучшения в сборщик мусора. В состав DRuntime добавлен новый сборщик мусора, реализующий режим полного сканирования содержимого кучи для выявления актуальных указателей или ссылок, указывающих на объекты в куче. Активация производится при помощи опции »--DRT-gcopt=gc: precise»).

    Кроме того, реализованы опции для управления поведением сборщика мусора при завершении приложения. Предложены три варианта: «collect» для инициирования полноценной сборки мусора при завершении приложения (поведение по умолчанию), «none» для завершения без чистки и «finalize» для завершения всех активных объектов без их анализа. Для выбора режима предложена опция »-DRT-gcopt=cleanup: режим». Дополнительно добавлены программные интерфейсы для доступа к статистике сборщика мусора и реализована возможность подключения к runtime собственных сборщиков мусора;

  • Улучшена совместимость со стандартной библиотекой C++. Добавлен новый DRuntime-модуль core.stdcpp.new_, предоставляющий доступ к C++ операторам new и delete, что позволяет программам на D использовать память, выделенную под кучу для C++. Кроме того, представлен модуль core.stdcpp.allocator позволяющий использовать C++ класс std: allocator с привязкой к типам контейнера STL;
  • Прекращена поддержка 32-разрядных версий macOS;

Кроме того, в прошлом месяце состоялся выпуск LDC 1.14.0, альтернативного компилятора для языка D, развиваемого на базе наработок проекта LLVM. В новой версии реализованы новые опции компилятора и runtime DMD 2.084.1, добавлена поддержка AddressSanitizer, переработан код компоновки при компиляции в формат WebAssembly.

© OpenNet