Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

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

04.10.2026 21:02 (MSK)

Опубликован релиз DMD 2.113, эталонного компилятора для языка D. Код компилятора распространяется под свободной лицензией BSL (Boost Software License). Поддерживаются системы Linux, Windows, macOS и FreeBSD.

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

Среди изменений в выпуске 2.113:

  • Новый экспериментальный движок Data Flow Analysis ("-preview=fastdfa"), который пытается отслеживать состояние переменных по ходу выполнения функции. Движок анализирует может ли указатель быть null, инициализирована ли переменная, какие значения переменная потенциально может иметь и как состояние меняется после выражений "if", циклов и присваиваний. Также он обнаруживает чтение неинициализированных переменных. Причём анализ умеет проходить через указатели:
    
      void readFromUninit() @system
      {
        int val1 = void;
        int val2 = val1; // error
    
        int* ptr = &val1;
        int val3 = *ptr; // error
      }
    
  • Добавлен новый типаж, обрабатываемый на этапе компиляции (compile-time trait) "__traits(needsDestruction, T)", который позволяет определять типы, требующие сложного уничтожения.
    
      class C { ~this(); }
      struct S { ~this(); }
    
      static assert(!__traits(needsDestruction, C));
      static assert(__traits(needsDestruction, S));
      static assert(!__traits(needsDestruction, S[0]));
      static assert(__traits(needsDestruction, S[1]));
    
  • Появилась опциональная проверка, производимая на этапе выполнения, "-check=nullderef=on", позволяющая вместо состояния "crash" получить контролируемую ошибку, которую можно обработать через механизмы core.exception.
  • Добавлен вывод длины статических массивов. Используя символ "$", вывод длины будет происходить автоматически:
    
       int[$] arr = [1, 2, 3]; // int[3] arr = [1, 2, 3];
    
  • Улучшена реализация "pragma(inline, true)" - компилятор теперь рассматривает такие функции в отдельной стадии "inlining", что важно для высокопроизводительного и шаблонного кода.
  • Улучшен режим диагностики "-vgc", который отслеживает операции, требующие выделения памяти через сборщик мусора. В новой версии реализовано точное определение местоположения вложенной функции и переменной, из-за которых создаётся замыкание (closure).
  • Добавлен новый синтаксис "with(auto x = expression())", который можно применять когда результат выражения нужно временно использовать как объект контекста.
  • Появился механизм для перехвата необработанных исключений, которые выходят за пределы потока. Например, можно глобально или для конкретного потока перехватить исключение и решить, что с ним делать до остановки выполнения из-за фатальной ошибки: логировать; завершить процесс;- передать дальше; выполнить собственную runtime policy.
    
      filterThreadThrowableHandler = (ref Throwable t)
      {
        ...
      };
    
  • В пакетный менеджер dub добавлена опция "-timeout для использования "dustmite" - инструмента по поиску минимального кода с примером проблемного поведения компилятора.

На основе DMD 2.113 выпущен компилятор LDC 1.43, в который добавлено множество улучшений.

  • Реализована поддержка LLVM 22.
  • Существенно улучшена поддержка "WebAssembly". Добавлены поддержка сборщика мусора и исключений. Теперь "DRuntime" и "Phobos" (стандартная библиотека) поддерживают WASI Preview 1, WASI Preview 2 и Emscripten.
  • Кросс-компиляция в "LDC" стала проще и появились готовые дополнения, которые можно указывать при сборке через опцию "-mtriple="
    
    Windows
      x86_64-windows-msvc
      i686-windows-msvc
    
    Android
      aarch64-linux-android30
      armv7a-linux-androideabi29
      x86_64-linux-android29
      i686-linux-android29
    
    WASI
      wasm32-unknown-wasip1
      wasm32-unknown-wasip2
    
    Emscripten
      wasm32-unknown-emscripten
    
  • Оператор @restrict теперь работает для динамических массивов, что помогает делать авто-векторизацию:
    
      @ldc.attributes.restrict
      float[] foo(float[] a, float[] b) {
        float[] c;
        c[] = a[] * b[];
        return c;
      }
    
  • Улучшена поддержка встроенного ассемблера в стиле "DMD": "asm { naked; }", для которого реализована возможность применять встроенные в компилятор оптимизации, включая "LTO".
  • В "LDC" добавлена поддержка "dcompute", который теперь умеет внутри вызывать "PTX" и "SPIR-V" для работы на GPU. Ведётся работа по поддержке графических API "metal" и "directx".

Дополнительно можно отметить разработку ряда интересных проектов на языке D:

  • В области разработки игр (GameDev) были следующие обновления: в движке Parin улучшена поддержка WASM и добавлены примеры для WASI. В Steam выпущена демонстрация новой игры Rhythm Game Studio, реализованная на D с использованием "SDL3".
  • В области веб-разработки представлен проект crate, упрощающий разработку CRUD веб-приложений. Проект по описанной модели данных позволяет автоматически создавать интерфейсы для протоколов REST, JSON:API, GraphQL и MCP.
  • В области графических интерфейсов разрабатывается написанный на языке D порт "XOrg/XLibre" - xenia. Графический тулкит Sciter получил возможность использовать D вместе с логикой на JS/HTML.
  • Для работы с аудио появились нативные обвязки для LV2 и JACK Audio Connection Kit. Для профессиональных разработчиков аудио-плагинов продолжается развитие библиотеки dplug. Представлен проект синтезатора звука на WASM4.
  • Улучшена поддержка системы сборки Bazel, что упростило сборку смешанных приложений с кодом на C++.
  • Представлены приложения, упрощающие работу с ключами шифрования: neverstored и hideout.
  • В сентябре в Лондоне прошла конференция Dconf2026. Представлены доклады о развитии языка D и проектах, связанных с ним.


  1. Главная ссылка к новости (https://dlang.org/changelog/2....)
  2. OpenNews: Выпуск компилятора языка D 2.112
Автор новости: D_dev
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66399-dlang
Ключевые слова: dlang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:35, 04/10/2026 [ответить]  
  • +1 +/–
    лучший язык программирования стал еще лучше! поздравляю всех причастных!!
     
  • 1.2, Аноним (2), 22:39, 04/10/2026 [ответить]  
  • +/–
    17 августа. D1 они там не хотят возродить?
     
  • 1.3, DEF (?), 22:40, 04/10/2026 [ответить]  
  • –1 +/–
    Не выстрелил, в отличие от Rust, который мы все любим и обожаем. Верно, опеннетовцы?
     
     
  • 2.4, Аноним (2), 22:44, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Раст практически без рантайма.
     

  • 1.5, Аноним (-), 23:08, 04/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 1.6, Аноним (-), 23:12, 04/10/2026 [ответить]  
  • +/–
    > В области графических интерфейсов разрабатывается
    > написанный на языке D порт "XOrg/XLibre" - xenia

    Случайно не Xenia Jonness или как там ее - которая пропертарщица с маком?

     
  • 1.7, пох.. (?), 23:31, 04/10/2026 [ответить]  
  • +/–
    > В области графических интерфейсов разрабатывается написанный
    > на языке D порт "XOrg/XLibre" - xenia.

    Г-ди... то есть, Маркс!

    The source directory is essentially a clone of the XLibre repository that has been processed through ctod, followed by FIVE (5!!!) months of manual work to get the resulting code into a compilable state. For the most part, it is currently just a somewhat rough, almost literal translation of the C code into D

    Может, подарит ему кто-нибудь подписку на клод? У того оно - хотя бы компилялось бы сразу, а не через пять лет^Wмесяцев тяжких мучений. И хоть на шелле хоть на питоне оно бы ему собрало хоть какую-то конфигурялку (что мешало спортировать тем же методом древний imake? Незнание о его существовании, вероятно).

    Тут такое дремучее васянство, что просто слезы на глаза наворачиваются.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: