The OpenNET Project / Index page

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

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

25.01.2026 11:36 (MSK)

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

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

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

  • Операции над Ассоциативным массивом (хэшмап) реализованы через шаблоны.
  • Битовые поля включены в язык и теперь не нужно использовать отдельный "-preview=bitfields".
  • Висящие операторы "else", указанные без выделения блока фигурными скобками, теперь будет выдавать ошибку вместо предупреждения:
    
       int i, j;
       if (i)
           if (j)
               return 1;
           else    // Error: else is dangling, add { } after condition `if (i)`
               return 2;
    
    
  • Добавлен новый ключ "-extI" для указания внешних путей импорта, который аналогичен параметру пути импорта (-I), за исключением указания на то, что найденный с его помощью модуль находится вне компилируемого в данный момент исполняемого файла. В Windows он используется, когда параметр переопределения dllimport установлен на любое значение, кроме "none", чтобы принудительно импортировать символы внешнего модуля с помощью DllImport.
  • Добавлены модули для C-файлов. Подобно расширению "__import", ключевое слово "__module" переносит объявление модулей из языка D в язык C. Это особенно полезно, когда необходимо импортировать несколько C-файлов с одинаковым именем (например, hello/utils.c и world/utils.c), поскольку оба файла должны быть импортированы с помощью import utils, когда они указаны в командной строке, что приводит к конфликтам.
    
    
       --hello/utils.c:
    
       #if __IMPORTC__
       __module hello.utils;
       #endif
    
       int sqr(int x) { return x * x; }
    
       --world/utils.c:
    
       #if __IMPORTC__
       __module world.utils;
       #endif
    
       int max(int a, int b) { return a > b ? a : b; }
    
       --app.d:
    
       import hello.utils;
       import world.utils;
    
       static assert(sqr(3) == 9);
       static assert(max(3, 5) == 5);
    
    
  • Объявлено устаревшим неявное преобразование целых чисел в присваивании значений типа "int op= float". Это сделано для предотвращения потенциальных ошибок, когда присваивание "op=" неявно обрезает правую часть выражения от ненулевого значения до нуля.
    
       uint a;
       float b = 0.1;
       a += b; // Deprecation: `uint += float` is performing truncating conversion
    
  • В runtime добавлены несколько новых шаблонных реализаций.
  • Исправлены ошибки связанные с недокументированным изменением в ABI macOS 15.4.
  • С-макросы теперь преобразуются в шаблоны при работе "ImportC":
    
       import core.sys.posix.stdlib;
       import core.sys.posix.unistd;
    
       extern(C) int main()
       {
           int status, pid = vfork();
           if (pid == 0)
           {
               // ...
               return 0;
           }
    
           waitpid(pid, &status, 0);
           if (WIFEXITED(status))
           {
               // ...
           }
           return 0;
       }
    
  • В стандартной библиотеке реализована функция "lazyCache", которая предоставляет механизм кэширования диапазонов с отложенной оценкой. В отличие от cache, который немедленно оценивает элементы диапазона во время его создания, lazyCache откладывает оценку до тех пор, пока элементы не будут явно запрошены.
    
       auto result = iota(-4, 5).map!(a => tuple(a, expensiveComputation(a)))().lazyCache();
       // No computations performed at this point
    
       auto firstElement = result.front;
       // First element is now evaluated
    
  • Улучшена обратная совместимость "getrandom()" на старых версиях Linux и других системах.
  • "std.uni" обновлена до поддержки Unicode 17.
  • В "std.uuid" добавлена поддержка uuid v7 .
  • Новый API для "std.conv", где появились три функции "writeText", "writeWText" и "writeDText".
  • В пакетный менеджер dub добавлена опция "-dest и ключ frameworks.
    
       --Было:
    
       lflags "-framework" "Cocoa"
    
       --Теперь можно:
       frameworks "Cocoa" "OpenGL"
    

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

  • В области разработки игр (GameDev) были следующие обновления: в dvn, движок для создания визуальных новелл, добавлены примеры использования. В порт движка Godot добавлена экспериментальная поддержка экспорта в Web. В Steam выпущена игра The Art of Reflection, реализованная с использованием технологий D и DirectX на собственном движке.
  • В области веб-разработки развивается легковесный планировщик файберов photon, который показал высокие результаты в тесте производительности TechEmpower и вошёл в топ 10 результатов по нескольким тестам (Plaintest, JSON). Данный движок был интегрирован в популярный веб-фреймворк Vibe.D, в результате чего удалось добиться прироста производительности без изменения кода веб-приложений.
  • После анонса о начале разработки нового сборщика мусора на конференции Dconf (видео1, видео2), данное обновление вошло в новый релиз. Новый GC также можно попробовать установить в качестве отдельного пакета. На данный момент поддерживается архитектура x86_64 для OC Linux и Windows. Продолжается работа над поддержкой macOS и других архитектур.


  1. Главная ссылка к новости (https://dlang.org/changelog/2....)
  2. OpenNews: Выпуск компилятора языка D 2.111
  3. OpenNews: Выпуск компилятора языка D 2.110
  4. OpenNews: Выпуск компилятора языка D 2.100
  5. OpenNews: Для языка D представлен runtime для программирования микроконтроллеров
Автор новости: D_dev
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64671-dlang
Ключевые слова: dlang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (52) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 12:16, 25/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –17 +/
    Не нужен, разве что потешить ЧСВ автора и его почитателей с двачей. У нас уже есть Rust и Go. Первый - для переписывания существующих утилит без заметной потери скорости, второй - для написания хорошего нового софта на приятном синтаксисе. D, Odin, Crystal, V и другие извpaщённые поделия существуют только на донаты таких же странных товарищей.
     
     
  • 2.3, Аноним (3), 12:19, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Частично согласен. Но go сильно урезан, по сравнению с d. А rust слишком перегружен. Они не конкуренты d в плане удобочитаемости и элегантности разработки. Вот ни разу.
     
     
  • 3.5, Аноним (5), 12:22, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    какая может быть читаемость в языке с несколькими парадигмами? один кусок кода так, другой эдак... тьфу!
     
     
  • 4.7, Аноним (3), 12:23, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Читается прекрасно с несколькими парадигмами. Ничего сложного в функциональщине в d нет. В документации хорошие примеры.
     
  • 4.15, Аноним (15), 13:13, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    буквально любой более менее сложный язык обладает несколькими парадигмами
     
     
  • 5.18, Аноним (5), 13:26, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    язык не должен быть сложным, а наоборот, быть простым как лопата. чтобы у каждого была одинаковая трактовка, а не воспринимал написанное в меру своей распущенности
     
     
  • 6.21, Аноним (15), 13:45, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эта мантра из времен начала Го не сработала даже для самого Го и они начали "усложнять" язык
    Но как по мне - язык ничего никому не должен

    Разнообразие это хорошо, монополии это плохо.
    Больше языков хороших и разных

    Если нравится простой язык - прекрасно. Используйте его
    Кому-то нравятся более экспрессивные и элегантные языки, которые позволяют писать без копи-пасты

     
     
  • 7.28, Аноним (5), 14:16, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 6.23, aname (ok), 14:01, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто сказал Assembler?
     
     
  • 7.42, Аноним (42), 15:37, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Кто сказал Aarch64, POWER, RISC-V64?
     
     
  • 8.61, aname (ok), 18:22, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И другие интересные слова и акронимы... текст свёрнут, показать
     
  • 6.27, Аноним (27), 14:11, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У Хаскеля была только одна парадигма. И где теперь этот Хаскель?
     
     
  • 7.30, Аноним (5), 14:19, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    я чтоли виноват, раз больных на голову функциональщиной набралось не много
     
     
  • 8.43, Аноним (27), 15:46, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я считаю что ты лично виноват и тебе должно дать стыдно ... текст свёрнут, показать
     
  • 6.34, Аноним (34), 15:05, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.6, Аноним (2), 12:23, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    К сожалению, сейчас решает хайп Python тоже крайне сомнительный язык одни табы... большой текст свёрнут, показать
     
     
  • 4.11, Аноним (11), 12:45, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 5.16, Аноним (16), 13:15, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.12, Аноним (15), 13:02, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сам по себе хайп ничего не даёт Но привлеченные за счет него пользователи могу... большой текст свёрнут, показать
     
  • 4.47, Аноним (47), 16:20, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > В итоге быстро набрал кодовую базу и фанатов и теперь на нём куча пакетов и решений есть

    Не стал бы назвать пакетами и решениями банальный интерфейс к библиотекам на С.

     
  • 4.49, Аноним (49), 17:27, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Ещё до появляения питона были простые языки, как минимум были Schema и Stan... большой текст свёрнут, показать
     
  • 3.32, Аноним (32), 14:48, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сишарп есть
     
  • 2.4, Аноним (5), 12:21, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в целом да, но Odin ты зря сюда же приплёл
     
     
  • 3.9, Аноним (2), 12:32, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, не зря. Легко проверить открыв trends.google.com и сравнив хотя бы эти 3:
    Odin programming
    Perl programming
    Haskell programming

    Даже не знаю почему я не рекомендовал бы делать что-то серьёзное на языке, который в 3.5 раза менее популярен, чем Хаскель (!!!). При том, что Хаскель то не сказать, чтобы особо популярный и скорее супер-нишевый.

    Но на всякий случай оговорка: я не против техно-извpaщенцев (тот же Brainf*ck) забавный был в качестве сайд-проекта автора и статьи на Лурке, но относиться к таким поделкам серьёзно - моветон.

     
     
  • 4.14, Аноним (15), 13:12, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Опять же смотря для чего..
    Крупный интерпрайз и Раст брать не будет по тем же причинам и продолжит на Джаве сидеть по такой логике...

    Не знаю про другие языки, но из тех кто взял Ди в продакш (и деньги на этом делает .. некоторые даже большие) есть несколько историй, но основная выглядит примерно так:
    1) мы знали как писать на С++/Джаве и что писать на этом новый сервис будет больно или у нас уже был проект на С++
    2) и нам это просто надоело..
    3) начали искать альтернативы - попробовали Ди - и остались на нём

     
  • 4.36, Бертолетова соль (?), 15:14, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    C-- подменит Хаскель
     
  • 4.50, Аноним (49), 17:31, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Даже не знаю почему я не рекомендовал бы делать что-то серьёзное на языке, который в 3.5 раза менее популярен, чем Хаскель (!!!). При том, что Хаскель то не сказать, чтобы особо популярный и скорее супер-нишевый.

    Качество языка не определяется популярностью. Зарплата программиста определяется популярностью языка - чем больше конкурентов, тем меньше можно платить каждому конкретному программисту. И да, если у менее популярного языка, по сравнению с хаскелем, есть преимущества, то как раз и стоит выбрать этот язык.

     
  • 3.13, Аноним (15), 13:04, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да не Один там нормально
    единственный кто выбивается из списка это V. Ибо скам и мы помним и автор не отмоется теперь =)
     
     
  • 4.17, Аноним (16), 13:17, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Odin, Zig, C3, Carbon - современная замена Си со всеми необходимыми плюшками и возможностью использовать существующие библиотеки на Си. И если Carbon - всё ещё отдалённая перспектива, то на остальных уже можно разрабатывать сейчас. И без головной боли как в Rust.
     
     
  • 5.40, Кошкажена (?), 15:20, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Zig
    > И без головной боли

    Они буквально в новой версии синтаксис поменяли

     
  • 5.41, Кошкажена (?), 15:21, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Carbon - современная замена Си

    Carbon все же замена С++

     
     
  • 6.58, Аноним (58), 18:14, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если писать в си стиле будет заменой си.
     
  • 2.19, Аноним (19), 13:26, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >без заметной потери скорости

    Но с потерей. А ещё с весьма заметной потерей памяти, но что ещё хуже - с потерей контроля над зависимостями. Ффтопку!

     
  • 2.20, Аноним (19), 13:27, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >второй - для написания хорошего нового софта на приятном синтаксисе

    Пишите на Electronе уж тогда.

     
     
  • 3.45, Аноним (42), 15:50, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    JS и прятный синтаксис? 8-S
     
  • 2.22, Жеронимо (?), 13:58, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уж что что но приятный синтаксис го ты явно поспешил, как минимум для любителя
     
  • 2.26, Аноним (27), 14:08, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А как же zig? На нем даже проекты хорошие есть.
     
  • 2.29, Аноним (29), 14:17, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > У нас уже есть Rust и Go

    D в 2001 появился.

     
  • 2.31, Аноним (31), 14:40, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Назвал буквально два худших языка, первый из которых почти не работает без Интернета, а второй совсем без него не работает.
     
     
  • 3.33, Аноним (3), 14:55, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оба работают без интернета.
     
     
  • 4.38, Бертолетова соль (?), 15:16, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    На кого они работают?
     
     
  • 5.39, Аноним (3), 15:17, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    На microsoft очевидно.
     
     
  • 6.44, Аноним (27), 15:47, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Microsoftvи есть интернет. Спасибо Биллу Гейтсу за то что придумал интернет.
     
  • 2.46, lucentcode (ok), 16:06, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вот соврали во всём. Дребедень с подсчётом ссылок не так замеляет код, как Go с его сборщиком мусора. Но замедляет его драматически. Чтобы писать под микроконтроллеры, и низкоуровневый код, мерзски safe нужно вырубать полностью, реализуя управление памяться вручную. Но, позвольте, для этого у нас уже есть C, более быстрый, куда более простой, с очень приятным синтаксисом, в отличии от инопланетного Rust.

    Go, с его отвратительным сборщиком мусора, вообще рядом с низкоуровневыми ЯП и рядом не валялся. Это скорей компилируемая версия Python, чем нормальный ЯП.

    Идём дальше. D - в целом, куда более приятный синтаксис. Это логичное развитие C, а не мерзость с инопланетным синтаксисом, как у Rust. У него есть сборщик мусора, что большой минус, но его можно легко отключать и язать язык в стиле C, что несомненно очень хорошо. Он куда более гибкий, сочетая лучшие черты C, Rust и Go в одном флаконе. Если бы из него полностью выпилили safe режим и сборщик мусора, цены бы ему не было бы.

    Crystal - отличный ЯП. Очень похож на Rubby, у которого очень приятный синтаксис. Но, при этом статически типизированный, со многими преимуществами, роднящими его с D. Если вы любите Rubby(один из лучшие ЯП после Pascal / Delphi за всю историю программирования) Crystal - логичная альтернатива D. Также как Go - альтернатива D для фанбоев Python.

    Я понимаю, зачем нужен Crystal, D и Go. Хоть по сравнению с C и они не особо нужны. Но, абсолютно не понимаю, зачем нужен Rust. У него отди минусы, и никаких плюсов.

     
     
  • 3.48, Аноним (16), 16:57, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Очевидно, что в плюсах у Rust - это более высокие зарплаты, также как и у Go. В то время, как найти вакансию на Crystal или D шансов около нуля.
     
     
  • 4.59, Аноним (58), 18:16, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 4.62, BrainFucker (ok), 18:25, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а причём тут вакансии? Если проект не однодневка, а разработчик нужен заниматься развитием уже существующего проекта, берут и без знания языка, на котором проект, но с хорошим опытом в других языках.
    А если кто-то умеет кодить только на языке, которому научили в ВУЗе, но не может освоить по ходу дела что-то новое, это не настоящий специалист. Языки это всего лишь инструмент.
     
     
  • 5.66, Аноним (5), 19:38, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.60, BrainFucker (ok), 18:18, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Есть ещё Nim.
     
  • 2.52, Аноним (49), 17:33, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >У нас уже есть Rust и Go.

    Какой странный выбор. А почему Go, а не Ocaml или Standard ML? Почему не условный C#?

     
     
  • 3.63, Аноним (63), 18:31, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Два чая этому джентльмену за Standard ML.
     
  • 3.67, Аноним (-), 19:49, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру