LINUX.ORG.RU

Синхронизированы версии компиляторов языка D (dmd, ldc) и gcc: D 2.098 теперь в gcc

 , ,


0

6

Iain Buclaw, разработчик компилятора D для GCC сообщил, что версия gcd синхронизирована с основной разработкой. gcd переведён с C++ на D, для сборки теперь требуется инсталляция gcc с работающим компилятором D.

Синхронизация разрабатываемой версии gdc и основного репозитория dmd будет проводиться до конца марта и вплоть до заморозки релиза GCC 12.

Работа компилятора была проверена на следующих платформах:

  • x86_64-linux-gnu;
  • mips-linux-gnu;
  • powerpc64le-linux-gnu;
  • sparcv9-sun-solaris;
  • x86_64-portbld-freebsd12;
  • amd64-openbsd6.9;
  • x86_64-netbsd;
  • x86_64-apple-darwin20.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: sudopacman (всего исправлений: 4)
Ответ на: комментарий от Xintrea

Блин, я запутался: gcd и gdc - это разные вещи?

Нет, автор просто очепятался, есть только gdc - Gnu D Compiler, ну и ldc - Llvm D Compiler и dmd - Digital Mars D compiler

Первоначально автор языка Уолтер Брайт хотел назвать язык Марс - отсюда и название стандартной библиотеки - Фобос и биндингов к распространеным сишным либам - Деймос. Кто не любил астрономию в школе - Марс имеет два спутника, Фобос и Деймос.

Но потом Брайта пацаны уболтали на название D и Уолтер повелся.

anonymous
()
Ответ на: комментарий от anonymous

На C++? Вроде только на C

На С просто 100% совместимость, а с плюсами не 100%. Напомню, что ldc2 это фронтенд на D, а бекенд на C++, так что какое подмножество плюсов точно можно использовать в D и оно хорошо протестировано.

Как по мне vibe.d намного красивше чем hunt, он больше напоминает типичный китайский продукт - спиз… плохую копия оригинала.

anonymous
()
Ответ на: комментарий от anonymous

Правда Ди вашему не хватает трёх вещей

  • стильности
  • модности
  • молодёжности

И это офигеть как хорошо.

Oberstserj ★★
()
Ответ на: комментарий от anonymous

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

Забавный ты тип все-таки. Правильно получается, что ты 10 лет или больше написал чуток утилиток, а теперь утверждаешь, что

D же к сожалению так и застрял фактически на одном месте

Тебе не кажется, что есть небольшая нестыковка в твоем утверждении? Ты бы в changelog дишный бы посмотрел, что ли? Язык развивается семимильными шагами. Да, растовского хайпа там нет и слава богу с их coc’ом и прочими штучками типа инклюзивности, которые к программированию отношения не имеют.

Да раст сейчас во многом интереснее

Категорически не соглашусь. Раст это нишевый язык, в котором все заточено на определенные гарантии по безопасности. Но вот ответь мне на вопрос, если мне нужно получить оценку вектора состояния по какой-то выборке с датчиков, в чем я получу профит от использования Раста? Ни в чем абсолютно, потому что нет никакой проблемы с безопасностью в данном случае. И таких задач, где эта самая безопасность не играет роли - огромное количество. Питон взлетел именно поэтому. Зато медленная компиляция в Расте - она всегда будет с тобой, сложность написания кода, потому что кроме задачи в предметной области, которую ты собственно и решаешь, тебе еще нужно решать задачу как отобразить эту задачу на примитивы языка и учитывать мелкие детали реализации. Это все усложняет решение, а значит решение будет более дорогим, в том числе и сопровождение. Один поклонник раста писал на реддите, что он продвигал использование раста в своей конторе, а потом когда стал тимлидом и получил проект в разработку выбрал не помню какой, но другой язык - потому что, по его утверждению, с растом они бы не уложились в сроки.

И здесь D как раз намного интереснее выглядит - потому что он такой же продуктивный как Питон, и такой же эффективный как С++. И более того, за счет более развитого метапрограммирования, использования ренджей и ленивых вычислений, в D ты вообще не будешь выделять память там где в С++ (про Раст не знаю, но не удивлюсь если такая же ситуация) ты вручную создаешь буфер для промежуточных данных. И в таком случае аргумент про сборщик мусора выглядит вообще смешным. По большей части, использование факта наличия сборщика мусора против D означает, что человек не владеет ситуацией и просто не понимает о чем говорит. В D есть проблемы, конечно же, но сборщик мусора лишь просто одна из фич языка, которая по факту проблемой не является.

anonymous
()
Ответ на: комментарий от anonymous

за счет более развитого метапрограммирования, использования ренджей и ленивых вычислений, в D ты вообще не будешь выделять память там где в С++ (про Раст не знаю, но не удивлюсь если такая же ситуация) ты вручную создаешь буфер для промежуточных данных.

Звучит как враньё…

fsb4000 ★★★★★
()
Ответ на: комментарий от anonymous

Тебе не кажется, что есть небольшая нестыковка в твоем утверждении?

Возможно я и отстал от D’шной жизни. Слышал про better C и про попытки Валтера встроить borrow checker в D. На фоне новостей про развитие C++ как-то не впечатляет.

Ты бы в changelog дишный бы посмотрел, что ли?

Еще лет пять назад следил, но ничего кардинально нового тогда не заметил, в основном мелкие эволюционные улучшения были.

Язык развивается семимильными шагами.

Можно примеры этих шагов?

Да, растовского хайпа там нет и слава богу с их coc’ом и прочими штучками типа инклюзивности, которые к программированию отношения не имеют.

Как человек учившейся по учебникам в которых упоминание, хотя бы и во введении, о руководящей роли коммунистической партии было обязательным, я на такие мелочи внимания не обращаю :)

Категорически не соглашусь. Раст это нишевый язык,

Сейчас все языки нишевые. Даже некогда сверх универсальный C++ и то ушел в не такую уж и большую нишу. Вот в ней и около нее и обретаются сейчас и D и rust и go.

в котором все заточено на определенные гарантии по безопасности.

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

По всему что ниже, скажу только то, что для задач где ни безопасность ни низкоуровневость ни присутствие GC роли не играют, существует море более популярных языков, тут языкам из ниши C++ ловить просто нечего.

но сборщик мусора лишь просто одна из фич языка, которая по факту проблемой не является.

Я не говорю что GC проблема, тот же Go например прекрасно живет в околосистемной области с не отключаемым GC, обсуждение же шло про better-c и nogc режимы, и про то что в них D становится слабее чем языки без GC.

anonymous
()
Ответ на: комментарий от fsb4000

Звучит как враньё…

В D очень крутые range https://dlang.org/phobos/std_range.html Александреску постарался, и там на самом деле минимум аллокаций и одновременно очень легко их комбинировать как в функциональщине, итераторы C++ тоже без аллокаций обходятся, но комбинировать их очень сложно. В C++ есть и boost::range и в стандарте уже сейчас, но все равно в выразительности они уступают. Rust итераторы в принципе очень похожи на D range, но вряд ли были оттуда сперты, скорее они оба навеяны функциональщиной, теми же конвейерами и комбинаторами из ML языков. В императивных раньше всего это наверно в питоне появилось с их itertools.

anonymous
()
Ответ на: комментарий от fsb4000

Звучит как враньё…

Солнышко, мне жаль тебя, но тем не менее это правда. За счет использования ренжей и метапрограммирования код на D не выполняет никаких промежуточных вычислений с записью в буфер (причем часть этих вычислений может не потребоваться вообще при этом), а непосредственно в точке, где нужны данных, выполняет их обработку ровно в необходимом объеме и при этом компилятор еще и соптимизирует все это. Это можно и на С++ теоретически сделать, но как мы видим, ренджи в С++ не прижились пока и люди все копируют в промежуточные буфера.

anonymous
()

подскажите, какой компилятор лучше ставить, мне для обучения dmd, ldc, gdc? на сайте для новичков рекомендуют dmd

anonymous
()
Ответ на: комментарий от anonymous

но как мы видим, ренджи в С++ не прижились пока

Они там неудачные получились (ну правильно Александреску же на D удрал) и компилируются очень долго и выразительность так себе. Тут https://habr.com/ru/company/jugru/blog/438260/ хороший пример. А вот на rust они вполне неплохие, примерно как и на D, вот пример оттуда же https://habr.com/ru/company/jugru/blog/438260/#comment_19690718 .

anonymous
()
Ответ на: комментарий от anonymous

подскажите, какой компилятор лучше ставить,

Раньше dmd намного шустрее компилировал чем остальные.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

важна все-таки. для разработки лучше брать dmd, за исключением случаев, когда тебе нужны специфичные штуки, лучше всего реализованные в других компиляторах. Для обучения бери dmd, конечно. И dub сразу порекомендую.

А так все три компилятора один фронтэнд имеют, так что разницы никакой, кроме того, что gdc еще пока немного отстает по версиям, но уже скоро все три компилятора будут одной версии.

anonymous
()
Ответ на: комментарий от anonymous

примеры будут где ranges в D хорошо, а в С++ ranges плохо?

Пока какой-то бред и поток сознания без конкретных примеров…

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Пока какой-то бред и поток сознания без конкретных примеров…

Ну какой тебе пример нужен, если в D без ренджей никуда, они там используются в хвост и в гриву, а в среднестатистическом проекте на С++ их используют мало или вообще не используют? При том что Эрик уже третью версию их написал, а воз и ныне там.

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

anonymous
()
Ответ на: комментарий от fsb4000

примеры будут где ranges в D хорошо, а в С++ ranges плохо?

проблема в том, что в D интервалы везде, и показать «от обратного» не выходит :)

glebiao
() автор топика
Ответ на: комментарий от anonymous

подскажите, какой компилятор лучше ставить, мне для обучения dmd, ldc, gdc? на сайте для новичков рекомендуют dmd

dmd считается образцовым. Не в смысле, самым лучшим, а в смысле определяющим стандарт языка. Компиляция быстрая.

ldc(2) — сейчас уже компилирует немногим медленнее dmd, можно считать отличие не столь значимым. Зато даёт очень хорошо оптимизированный код, проще сказать, что ты хочешь с ним сделать (сборка so/dll как пример), кросскомпиляция «из коробки».

gdc прекрасный код, но до последнего объявления, сильно отставал от основной версии.

В общем, считается оптимальным наличие на машине dmd и ldc одновременно. Хотя, чёрт знает, я даже для «скриптов» пользуюсь только ldc, в принципе, нормально.

А да, натыкался в одном месте (время и дата) на небольшую несовместимость библиотек dmd и ldc, хотя как?! Один и тот-же Фобос.

glebiao
() автор топика
Ответ на: комментарий от anonymous

развивается семимильными шагами.

Можно примеры этих шагов?

Ну а данный топик чем не пример такого семимильного шага? Теперь D на любой платформе где есть gcc (в betterC режиме рантайм не нужен и без фобоса можно обойтись)

А у того же раста, к примеру, один компилятор всего лишь на базе llvm. И если сравнить сколько денег в раст вложено то успехи раста я бы сказал выглядят сомнительно. При таких финансовых вливаниях (нет ни одного разработчика, ктобы занимался чисто D, в основном сообщество языка его и развивает), так вот при таких вливаниях D достиг бы намного большего.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.