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 обязательно


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

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

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

     
     
  • 7.28, Аноним (5), 14:16, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 6.23, aname (ok), 14:01, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Кто сказал Assembler?
     
  • 6.27, Аноним (27), 14:11, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У Хаскеля была только одна парадигма. И где теперь этот Хаскель?
     
     
  • 7.30, Аноним (5), 14:19, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    я чтоли виноват, раз больных на голову функциональщиной набралось не много
     
  • 3.6, Аноним (2), 12:23, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    К сожалению, сейчас решает хайп. Python тоже крайне сомнительный язык (одни табы вместо кюрли-брекетов чего стоят), но вот выстрелил - вышел и в удачный момент и был относительно простым. В итоге быстро набрал кодовую базу и фанатов и теперь на нём куча пакетов и решений есть и даже если новая мажорка Perl выйдет - он нафиг никому не нужен будет уже. Даже если будет быстрее Python, например.

    Про JavaScript и npm не говорю даже, там миллионы пакетов уже, наверное. И никто в здравом уме не переключится сейчас на какой-нибудь CoffeeScript или ReScript.

    Так и тут. Даже если язык в чём-то неплох - он уже потерял своё время и шанс на популярность. А брать его на прод и потом взрываться об отсутствие нужных пакетов или косяки языка, которые 1.5 автора будут править пару лет - никто не будет. Как и ждать ещё лет 15 пока он окончательно обретёт форму и получит поддержку сообщества.

     
     
  • 4.11, Аноним (11), 12:45, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 5.16, Аноним (16), 13:15, 25/01/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 4.12, Аноним (15), 13:02, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сам по себе хайп ничего не даёт..
    Но привлеченные за счет него пользователи могут помочь с экосистемой.

    Но тут надо разделять проекты - стандартные галеры со стандартными задачи со средненькими программистами - да мейнстримные языки им подойдут лучше, а другим на курсах "за два месяца и будете сеньором и 500к в секунду" и не учат в общем-то.

    Другое дело, когда решается нестандартная сложная задача - где экосистема может помочь мало, просто потому что то, что ты делаешь это что-то совсем новое или совсем другое, и делать всё равно нужно под свою конкретную задачу.
    И конечно это больше для экспертов, для которых сделать свою библиотеку под себя, заоптимизировать алгоритм под конкретный кейс - не проблема. Тем более практически любая библиотека на Си - доступна в Ди легко.

    Языки продолжают развиваться с новыми подходами и идеями - и в них не будет доступно миллион пакетов из npm - но им это не мешает.

    Zig заадоптили несколько компаний и построили на них бизнес..
    Создатель Jai делает на своём языке свои игры и посмотрим какой будет адопт после публичного релиза..
    Сам Раст еще не так давно (да и сейчас еще есть области) не обладал супер огромной экосистемой..

    D также используется несколькими компаниями, для которых он решает их проблемы лучше других

     
  • 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) начали искать альтернативы - попробовали Ди - и остались на нём

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

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

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

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

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

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

     
  • 2.31, Аноним (31), 14:40, 25/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Назвал буквально два худших языка, первый из которых почти не работает без Интернета, а второй совсем без него не работает.
     

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



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

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