Профиль: Аноним (вход | регистрация) не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 обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:35, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/–
    лучший язык программирования стал еще лучше! поздравляю всех причастных!!
     
     
  • 2.8, Dzen Python (ok), 00:19, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Щас тебе расскажут, что в языке главное - дёргальщик боровов(с) и аффиногенные типы(тм).

    А так да, язык сам по себе интересен

     
     
  • 3.15, Аноним (15), 06:33, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/–
    Зачем? Достаточно спросить "а где ваш чудоязык используется?"...
    и фанатики начинают уходить в несознанку)

    А учитывая что он делается с начала 200х, то "это фиаско братан" (с)

     
     
  • 4.19, Vindex (?), 08:05, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Как минимум Tilix очень популярен.
     
  • 4.23, Аноним (-), 09:50, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    да много где используется
    просто проекты не такие громкие

    типа большинство поездов Германии объявления об отправлении и прибытии - система на Ди написана
    Одна из самых быстрых в мире распределенных систем Weka тоже
    самое популярное приложение о погоде на Ближнем востоке использует для бекенда
    один хэдж-фонд
    голландская фирма по дизайну кораблей
    производитель аудио-плагинов

    ну остальное по мелочи там ещё

     
     
  • 5.28, Аноним (28), 12:00, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    > типа большинство поездов Германии объявления об отправлении и прибытии - система на Ди написана

    Ох нифига ж себе! целая система объявления об отправлении и прибытии!
    да еще и в большей части поездов германии (большая часть это сколько?))

    > Одна из самых быстрых в мире распределенных систем Weka тоже

    уточни про что ты.
    я знаю про одну Weka, но там джава, а не Д

    > самое популярное приложение о погоде на Ближнем востоке использует для бекенда

    впечатляет!

    > один хэдж-фонд

    один из скольки?

    > голландская фирма по дизайну кораблей

    предположу что фирм по дизайну кораблей в голландии как этого самого за баней

    > производитель аудио-плагинов

    у которого нет названия?))

    > ну остальное по мелочи там ещё

    ну т.е в масштабах кол-ва фирм или пользователей вообще мизер.

     
     
  • 6.53, AnonymousD (?), 14:09, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    да пользователей не прямо чтобы много - но за ними и не было корпоративной поддержки особо никогда как в случае с Го и Растом
     
     
  • 7.57, Аноним (57), 14:39, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    я ж не спорю, хотя бюргеры могли бы отблагодарить как нибудь, хотя бы рекламой Н... большой текст свёрнут, показать
     
     
  • 8.60, AnonymousD (?), 14:53, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    но сборка мусора там другая - она по сути детерменированная В своём коде ты пон... текст свёрнут, показать
     
  • 7.63, разраб (?), 15:53, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    max pane на ди написан. ок?
     
  • 4.25, Аноним (25), 10:15, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Фанатики на месте. Проснись, ты эцсамое.. все крупные корпорации уже активно юзают этот ваш чудоязык в продакшне и продолжают наращивать темпы.
     
     
  • 5.26, Аноним (25), 10:17, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Это если поинт был про дергальщака боровов*
     
  • 4.36, Аноним (36), 12:41, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    А вот фанатиков D, как раз, не наблюдается. И это хорошо. Всё идёт тихо, спокойно и без давления со стороны копров.
     

  • 1.2, Аноним (2), 22:39, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    17 августа. D1 они там не хотят возродить?
     
     
  • 2.33, Аноним (36), 12:34, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    А что было 17 августа?

    Но зачем D1? Он же менее фичастый.

     
     
  • 3.55, Аноним (2), 14:25, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > А что было 17 августа?
    > Но зачем D1? Он же менее фичастый.

    Новость, говорю, свежая. D1 с оговорками годился на роль языка общего назначения: в нём можно было отказаться от навязанной рантайм-функциональности.

     
     
  • 4.59, Аноним (36), 14:50, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/–
     
     
  • 5.61, Аноним (2), 15:20, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 6.62, Аноним (36), 15:47, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     

  • 1.3, DEF (?), 22:40, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/–
    Не выстрелил, в отличие от Rust, который мы все любим и обожаем. Верно, опеннетовцы?
     
     
  • 2.4, Аноним (2), 22:44, 04/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Раст практически без рантайма.
     
  • 2.16, Аноним (16), 06:57, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Даже если "не любим и не обожаем" то реальность от этого не поменяется.

    ИМХО язык хорош, но в нем было не достаточно фич, чтобы взлететь.
    Раст почти сразу был заточен надежность и проверки, с сейф-кодом как основной фичей.

    D делали как "улучшенный С++": модули, встроенные тесты, контракты.
    И при этом метания "GC есть, но опциональный".
    Но чтобы убедить консервативных и ленивых программеров в том, что им нужно изучить новый ЯП этого не хватило.

     
  • 2.37, Аноним (36), 12:43, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ага, "обожаем", как кожаную плётку.
     
  • 2.39, Гаврош (?), 12:47, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ему и не надо "выстреливать", потому что популярность у баранов сыграет злую шутку. Он просто делается и адекваты, уставшие от си и сипипей с радостью используют преемника - Ди.

    Ржа - как раз прекрасный пример, как гугля тужится, вливает бабки, рекламирует, а язык всё равно не лезет в массы! Потому что это инженерия, а не собрание домохозяек!

     
     
  • 3.54, Аноним (54), 14:12, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > как гугля тужится, вливает бабки, рекламирует, а язык всё равно не лезет в массы!

    Э??? Ты лучше похмелись и прекращай писать чушню.

    Гугля просто делает то, что считает нужным.
    Например пишет 5 лямов строк в андроиде или заменяет либы от дырявых на растовые аналоги.
    То что от этого горит у хейтеров, им пофиг.

    > Потому что это инженерия,

    инженерия это когда что-то работает и желательно хорошо, а не "нинужна" как D))

     

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

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

     
     
  • 2.42, Аноним (36), 12:50, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Она ж, должно быть, на Swift лабает.
     

  • 1.7, пох.. (?), 23:31, 04/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/–
    Г-ди то есть, Маркс The source directory is essentially a clone of the XLibr... большой текст свёрнут, показать
     
     
  • 2.9, Аноним (9), 01:13, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > У того оно - хотя бы компилялось бы сразу

    Уверен? А косяки он бы тоже сразу добавил?

     
  • 2.11, Аноним (11), 01:43, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > подписку на клод

    Корпы всучивают это самое и так забесплатно направо и налево - если ты топ васян, то Anthropic provides free access to Claude Max 20x (valued around $1,200) for active maintainers and contributors through the Claude for Open Source Program. Ну или куча других вариантов.

     

  • 1.10, васян (?), 01:37, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    тоись это не компилируемый ? а какой лучше ? интерпретируемый или компилируемый ?
     
     
  • 2.52, Аноним (52), 13:48, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    тут надо отталкиваться от предполагаемого результата. вам жабу для всех подряд, или быстренько для себя онли?
     

  • 1.12, Аноним (12), 03:15, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    кто не монял, это компилируемый язык.
    нечто среднее между C++ и Go.
     
     
  • 2.13, Аноним (13), 05:32, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ну и сравнил. Уж больше на C# похож.
     
     
  • 3.14, АнтонимАнтонимович (?), 06:27, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    на C# он уж точно не похож.
    А вот как улучшенная версия C++ - вполне.
     
  • 3.35, Аноним (36), 12:37, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    С# уже стал компилироваться в машинные коды и обходиться без своей виртуальной машины?
     
     
  • 4.51, Аноним (52), 13:46, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 4.64, разраб (?), 15:55, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    да
     

  • 1.17, АнтонимАнтонимович (?), 07:15, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    > "XOrg/XLibre" - xenia

    Честно не понял, он заголовочные файлы иксов так долго перетаскивал?
    Или вообще весь "XOrg/XLibre" - на D перетаскивал??

     
     
  • 2.18, Doctor (??), 07:35, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Весь
     

  • 1.20, Аноним1234 (?), 08:29, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    Лучше чем С++ в теории. На практике - раз до сих пор не взлетел, то и не взлетит никогда. Для новых проектов есть лучшие альтернативы.
     
     
  • 2.24, Аноним (-), 09:52, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    очень много пользователей в Ди - это бывшие плюсовики, которым надоело страдать..
    Страдать еще больше на Раст тоже не многие хотят - поэтому альтернатив не то чтобы много, к сожалению
     
     
  • 3.29, Аноним (28), 12:07, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    А как ДИ убирает страдания плюсовиков?
    Ну ладно с модулями проект будет собираться быстрее, но в плюсы их тоже добавили.

    А вот классическая тройка проблем use-after-free/double-free/out-of-bounds?
    Без шуток, они как-то ее решили?
    Ну там санитайзеры встроенные или как-то по другому?

     
  • 3.31, Аноним1234 (?), 12:13, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    >Страдать еще больше на Раст тоже не многие хотят

    Так не хотят, что большинство новых проектов как-то связанных с системным программированием на rust.

     
     
  • 4.38, Аноним (36), 12:47, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 3.45, Аноним (45), 13:16, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    zig, odin в помощь
     
     
  • 4.65, Аноним (36), 15:55, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Плюсовики пойдут в Zig? Вы же там за сишную плоскоту. Не, нам классы, шаблоны и вот теперь ещё и рефлексию.
     
  • 3.48, Аноним (52), 13:26, 05/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 2.41, Гаврош (?), 12:49, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Тpеполог типа тебя вообще не знает альтернатив. Как раз Ди альтернатива С++.
     
     
  • 3.49, Аноним (52), 13:28, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    чёт мне дакИай не помог в чём духота ушла, не откажете хайпнуть, если в теме?
     

  • 1.44, Гаврош (?), 13:07, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
        with(auto cfg = generateConfig()) {
            // Поля и методы структуры доступны напрямую
            host = "127.0.0.1";
            port = 9000;
            apply();
        } // Здесь cfg уничтожается или выходит из области видимости

    Нда... это самая бестолковая реализация, что они могли придумать! 🤦

    1. Переменная cfg скорее всего нужна дальше по коду, НЕТ СМЫСЛА делать её локальной для блока.
    2. Синтаксис бестолковый, потому что сразу вводит путаницу - мы вызвали apply() объемлющего класса или это метод cfg?? При ЛЮБОМ ответе попробуйте вызвать второй вариант.
    3. with нужен именно в той реализации, как делалось в паскале или как я предлагал для C# (т.к. with было занято, взял слово init) :

    int Width = 7;// обычная переменная в outer scope

    var btn = new Button init B { // внимание! 'B' - это alias для создаваемого объекта (во внешнем scope это btn)
        .Width = Width + 50;// Button.Width = Width + 50 = 57
        .Invalidate();// такое MS не сделала даже за 20 лет!
        .Height = .Width + 1;// очевидно, что справа от = всё тот же контекст - взяли внутреннего мембера .Width
        .Children.Add(niceIcon);
        .Styles = new HTMLStyle init { // как и просили, вложенный init
            .CSS = "color: #" + .Color;// Button.Color взят извне, т.к. HTMLStyle его не содержит
            .File = 1;// error! Нет такого мембера ни у HTMLStyle, ни у Button, внешний scope не рассматривается
            .Length = B.Length - 7;// ага! Вот где alias нужен. Вот теперь это HTMLStyle.Length = Button(B).Length - 7
        };
    };

     
     
  • 2.47, Ю.Т. (?), 13:25, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > (т.к. with было занято, взял слово init)

    Но потенциальная путаница и невнятица? Может, слово over или даже is ??

     
  • 2.58, AnonymousD (?), 14:43, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    можно делать
    auto btn = new Button;

    with (btn)
    {
        width = initialWidth + 50;
        height = width + 1;
        invalidate();

        styles = new HTMLStyle;

        with (styles)
        {
            css = "color: #" ~ btn.color;
            length = btn.length - 7;
        }
    }

     

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



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