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)
Ответ на: комментарий от dimgel

Ну и главный грааль D - это одна из лучших реализаций метапрограммирования.

Помедленнее, пожалуйста, я записсываю! В AST-макросы умеет? Квазицитирование? AST типизированное?

Насколько часто всё вышеперечисленное используется средним автором?

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

Так не бывает.

Я вот вообще, очень хотел бы аналог компилирующих слов Форта в современных языках, ну и что? Хотеть не вредно.

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

Я слышал краем глаза, что его стандартная либа вся на жс завязана.

Вроде переписывали ее, но хз на сколько юзабельно оно в итоге получится. В нем запретили перегрузку new/delete, и теперь сторонние библиотеки без GC используют свои методы для аллокации/деаллокации данных. Из этого я предполагаю, что от GC в стандартной либе отвяжут только, чему GC явно не нужен, вроде std.conv для compile-time

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

Насколько часто всё вышеперечисленное используется средним автором?

Средние авторы пишут на js, php, python, java. Со сброщиком мусора, ага.

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

Я слышал краем глаза Вроде переписывали ее

Это все что нужно знает о среднем уровне критика D. В классическом варианте это звучит так: не читал - но осуждаю. Т.е. вы понятия не имеет, что к чему, но мнение уже имеете.

Я слышал краем глаза, что его стандартная либа вся на жс завязана.

Как может быть вся либа завязана на сборщик мусора, если далеко не вся либа вообще имеет дело с памятью? Как бинарный поиск может быть завязан на сборщик мусора? Как ranges могут быть завязаны на сборщик мусора? Как рефлексия может быть завязана на сборщик мусора? Как метапрограммирование может быть завязано на сборщик мусора?

Вроде переписывали ее, но хз на сколько юзабельно оно в итоге получится.

Никто ничего не переписывал, о чем ты? Просто стандартная либа улучшается - это да, но не переписывается. Если сравнить исходники фобоса и stl то там даже джуниор скажет, что фобос намного чище и понятнее. Переписывать нужды нет, а улучшить всегда можно. Ну а насчет «хз на сколько юзабельно оно в итоге получится» - я подозреваю, что ты не знаешь, насколько юзабельно оно сейчас.

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

Если сравнить исходники фобоса и stl то там даже джуниор скажет, что фобос намного чище и понятнее.

Почему? Какую stl, их же много реализаций и все разные?

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

В классическом варианте это звучит так: не читал - но осуждаю

Использовал и осуждаю. Либа работает, доработок не требует, так что что там наменяли в свежих версиях языка я не знаю. Сужу по тому, что было на момент использования.

Как может быть вся либа завязана на сборщик мусора, если далеко не вся либа вообще имеет дело с памятью?

А вот так. Включаешь -betterC, что бы собраться без GC рантайма и часть compile-time фич отваливается. Без -betterC, с пометкой каждой функции @nogc все compile-time фичи работают и рантайм не использует GC, но он линкуется к бинарю и отодрать его стрипом нельзя

Как рефлексия может быть завязана на сборщик мусора? Как метапрограммирование может быть завязано на сборщик мусора?

Без сборщика мусора (режим -betterC) отваливается часть функционала связанная с RTTI, то что в C++ работает без всяких сборщиков мусора

Ну а насчет «хз на сколько юзабельно оно в итоге получится» - я подозреваю, что ты не знаешь, насколько юзабельно оно сейчас.

Как я писал - да, я хз как оно в текущей версии D, но вывод у тебя не совсем верный. Они запретили перегрузку new/delete, что бы пользователь не путался и new/delete всегда относились к GC, потом задепрекейтели delete (и возможно в текущих версиях уже удалили). И в этих условиях выкидывают GC из фобоса там, где он не нужен (из исключений например выкидывали, что бы завести их в -betterC). Как они будут в этих условиях классы от GC отвязывать я хз - в сторонних либах свои реализации New/Delete, и на сколько я помню, без GC класс даже на стеке аллоцировать нельзя.

Но ты давай, расскажи, что -betterC и без GC (@nogc) это разные штуки, почти разные языки и то что без -betterC к каждому бинарю линкуется неиспользуемый рантайм с GC это нормально - диски нынче большие, и пользователи потерпят

SR_team ★★★★★
()
Последнее исправление: SR_team (всего исправлений: 1)
Ответ на: комментарий от glebiao

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

а что Вы скажите по поводу выбора D для обучения, понятно что учить надо «алгоритмы и структуры данных и тп», но все же.

сори за офтоп

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

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

SR_team ★★★★★
()
Последнее исправление: SR_team (всего исправлений: 1)
Ответ на: комментарий от SR_team

Ох как же Кармаки с Ритчи да ГеоХотами учили Си без IDE, где «все пользователю в момент написания кода расскажет» Зумер штоли?

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

Какую stl, их же много реализаций и все разные?

Тут ты прав, реализаций много и разные. Ну возьмем для примера стандартную из дебиана/убунту. Что, ты не разу в отладчике туда не попадал и видел весь этот вырвиглазный код? Хотя да, я не исключаю, что есть более читабельные реализации.

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

То фанат мелкософтовских реализаций. Нет, она тоже не особо читаема. Любая STL by design нечитаема, хотя бы из-за ограниченности TMP и нужды держать это хозяйство в хедерах.

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

Использовал и осуждаю. Либа работает, доработок не требует, так что что там наменяли в свежих версиях языка я не знаю. Сужу по тому, что было на момент использования.

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

А вот так. Включаешь -betterC, что бы собраться без GC рантайма и часть compile-time фич отваливается. Без -betterC, с пометкой каждой функции @nogc все compile-time фичи работают и рантайм не использует GC, но он линкуется к бинарю и отодрать его стрипом нельзя

Ну betterC и nogc это разные вещи. Ты мешаешь в кучу. betterC это подмножество языка без рантайма, nogc это подмножество языка без ГЦ. Они пересекаются, но это разные вещи.

Как я писал - да, я хз как оно в текущей версии D, но вывод у тебя не совсем верный. Они запретили перегрузку new/delete, что бы пользователь не путался и new/delete всегда относились к GC, потом задепрекейтели delete (и возможно в текущих версиях уже удалили). И в этих условиях выкидывают GC из фобоса там, где он не нужен (из исключений например выкидывали, что бы завести их в -betterC). Как они будут в этих условиях классы от GC отвязывать я хз - в сторонних либах свои реализации New/Delete, и на сколько я помню, без GC класс даже на стеке аллоцировать нельзя.

Ну у тебя устаревшая информация и местами неправильная. delete задепрекейтили очень давно уже, чуть ли не лет 10 назад, если нужно явно удалить объект есть destroy. Исключения от гц не помню чтобы отвязали. А класс на стеке можно было аллоцировать с незапамятных времен. Так что ты имеешь только примерное представление о положении дел. D системный язык и ты можешь в нем сделать все то же, что и в С или С++, там нет никаких принципиальных ограничений.

Но ты давай, расскажи, что -betterC и без GC (@nogc) это разные штуки, почти разные языки и то что без -betterC к каждому бинарю линкуется неиспользуемый рантайм с GC это нормально - диски нынче большие, и пользователи потерпят

Мммм.. Но дело в том, что betterC и nogc это действительно разные подмножества языка. В betterC не используется рантайм, а в nogc не используется сборщик мусора. А посколько сборщик мусора находится в рантайме, то частично эти подмножества языка пересекаются, но это тем не менее разные вещи.

В общем, у тебя претензия, что рантайм у D больше, чем тебе хотелось бы. Ну ок, я на эту тему не заморачивался, спорить не буду. По мне эта тема актуальна только в небольшом числе случаев. Задача стрипнуть бинарники - обычно далеко не самая первая, которая возникает у человека, знакомящегося с новым языком.

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

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

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

На самом деле и для работы, и для обучения хорош тот язык, которому вообще не нужна никакая IDE. И это как раз случай для D.

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

а что Вы скажите по поводу выбора D для обучения, понятно что учить надо «алгоритмы и структуры данных и тп», но все же.

Да, подойдет. Но только если вы хотите разобраться как все работает. После него и плюсы понятнее будут с джавой. Если же вам важнее формошлепство, но тогда D не подходит.

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

а что Вы скажите по поводу выбора D для обучения, понятно что учить надо «алгоритмы и структуры данных и тп», но все же.

Я бы использовал в полный рост. Имхо, это гораздо правильнее, чем бросать школьников (олимпиадное прогр-ие) с размаху в C++ с stl (хорошо, хорошо, стандартной библиотекой) не объясняя, что это такое, что такое шаблон и т.п. Или студента, особенно непрофильного, навсегда прививая мистический ужас.

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

Почему? Какую stl, их же много реализаций и все разные?

Какая разница, если они все принципиально нечитаемы?

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

только если вы хотите разобраться как все работает

именно это и планирую, гуглил, информация противоречива, одни говорят Си, и только Си, другие наоборот, ни в коем случае.

вообще, вроде бы сами авторы не рекомендуют D.

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

Средние авторы пишут на js, php, python, java. Со сброщиком мусора, ага.

Не поверишь. Не только средние, но даже и очень слабые авторы пишут на том, на чём НАДО, даже если не хочется. В том числе — тссс! — плюсах.

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

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

IDE, это хорошо, но не так, чтобы без неё ну совсем никуда. Имхо, утверждение, что в D можно писать без генераторов бойлерплат кода, совершенно верное.

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

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

Их платные IDE в этом плане уступают плагинам для текстовых редакторов. По крайней мере Clion - единственная, которую я тыкал

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

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

Да, но эти генераторы - самое вкусное в D, все остальное не столь существенно, что бы обращать на него внимание

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

именно это и планирую, гуглил, информация противоречива, одни говорят Си, и только >Си, другие наоборот, ни в коем случае.

ну, хотя бы минимальные сведения о модели процессора, памяти и соотв., модели Си, имхо, абсолютно необходимы. А вот следующий, высокоуровневый, шаг почему бы нет?

вообще, вроде бы сами авторы не рекомендуют D.

Тут две штуки. 1) язык сейчас достаточно стабилизирован, 2) сравнивая с обучением C++, когда не последовательно идут от надмножества Си, а наоборот, сразу дают стандартную библиотеку и человек просто не может понять, как это всё работает на самом деле… Нет, здесь ориентация на D точно лучше C++ и пожалуй, лучше Питона, так как даёт ощутить ограничения скомпилированного кода.

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

Да, но эти генераторы - самое вкусное в D, все остальное не столь существенно, что бы обращать на него внимание

Можно подробнее? какой именно код вкусно автогенерировать?

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

Из того, что нужно кому-то кроме меня пожалуй не приведу. Но мне как-то надо было нагенерировать враппер для библиотеки - код на D во время компиляции спарсил PE-заголовок и написал код, который редиректит вызовы библиотеки. Все это легко писалось и требовало минимума ручной работы над библиотекой, но IDE никак не помогала в написании

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

Ну, предложите, как совместить быструю разработку и неавтоматическое управление памятью. Станете знаменитостью и войдёте в историю

Qt 6, куда за премией идти?

Но вообще, я бы с радостью «пописал» на Qt/D, но похоже биндинга до сих пор нет, это надо вообще в Qt Creator завезти

I-Love-Microsoft ★★★★★
()

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

Где ARM? Не проверено, потому что не поддерживается?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Где ARM? Не проверено, потому что не поддерживается?

Непроверено, потому что непроверено. По идее там все платформы поддерживаются, что и в gcc. Другое дело, что рантайм еще нужно портировать - этого может и не быть. Но принципиальных проблем с АРМами нет, люди уже собирали код для всяких андроидов и прочего, только с помощью ldc. Вообще это очень хороший шаг вперед, теперь три компилятора и все актуальной версии, есть из чего выбирать. Фронтэнд у них один, кстати.

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

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

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

ну, хотя бы минимальные сведения о модели процессора, памяти и соотв., модели Си, имхо, абсолютно необходимы. А вот следующий, высокоуровневый, шаг почему бы нет?

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

Страуструп например, в своем предисловии «Программирование. Принципы и практика с использованием C++» говорит это плохой путь, сейчас под рукой нет книги, не могу процитировать.

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

понял, спасибо.

мне кажется D новый и не совсем популярный, информации по нему не так много, это может стать камнем преткновения. С/С++ наоборот, инфы много, боишься запутаться.

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

то есть, для начала все же лучше взять Си, а потом уже переходить к D?

Нахера тебе учить Си, а потом переходить? Начинай сразу с Ди и не парь голого.

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

Похоже, начался очередной холливар.

Уважаемые все, разделите в своей голове две БОЛЬШИЕ разницы: учиться ПРОГРАММИРОВАНИЮ и учиться программировать НА конкретном ЯЗЫКЕ.

mister_VA ★★
()
Ответ на: комментарий от I-Love-Microsoft

потому что не поддерживается?

Ну вот конкретно я пару лет назад собирал и запускал небольшую программу на D при помощи arm-linux-gnueabihf-gdc. Программа работала. Информации о том, что рантайм не готов, я не встречал.

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

Уважаемые все, разделите в своей голове две БОЛЬШИЕ разницы: учиться ПРОГРАММИРОВАНИЮ и учиться программировать НА конкретном ЯЗЫКЕ.

Здравствуйте. Я выучил японский, перехожу к Хинди, потом Иврит, далее русский. А то не знаю как жи и ши пишутся. Мне сказали, чтобы грамотно понимать, нужно изучить углубленно.

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

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

Древнегреческий я уже частично знаю: ΧΞΣ переводится как 666.

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

мне кажется D новый и не совсем популярный, информации по нему не так много, это может стать камнем преткновения.

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

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

Какая разница, если они все принципиально нечитаемы?

Кстати, стандартная библиотека это отличный тест для того чтобы понять нужен вам С++ или нет.

Если вам понятен код той же libc++ от LLVM, то можно продолжать работу с С++. Если всё нечитаемо и плохо, то лучше выбрать себе другой язык.

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

Кстати, как по заказу: https://github.com/tim-dlang/dqt

новая привязка к Qt. Метаданные для Qt генерируются самим D в CTFE. Очень интересно и многообещающе.

Нет, ещё не пробовал, «просто разместил объяву» :)

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

Если вам понятен код той же libc++ от LLVM, то можно продолжать работу с С++. Если всё нечитаемо и плохо, то лучше выбрать себе другой язык.

Не уверен в Вашей 100% правоте: код может быть вполне понятен, но слишком многословен и требовать изрядного времени для разбирательства. С шаблонным кодом C++ нельзя за короткий взгляд на экран примерно представить себе, что это такое, всё равно придётся вчитываться.

Собственно, число постоянно вылавливаемых ошибок в шаблонном коде C++ как бы говорит за себя.

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

ну, хотя бы минимальные сведения о модели процессора, памяти и соотв., модели Си, >>имхо, абсолютно необходимы. А вот следующий, высокоуровневый, шаг почему бы нет?

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

Интересный вопрос. В принципе, можно тупо взять D и не париться, та же модель с указателями и проч., в нём вполне прозрачна. Тренируйся — не хочу. Может, так даже лучше, более высокоуровневые свойства можно просто постепенно вводить, оставаясь в одной и той же модели.

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

С другой стороны, в C нет «ничего лишнего», да и знать его в практическом плане всё равно надо. Если не на практическом повседневном уровне, «на кончиках пальцев», то общие представления, чтобы иметь возможность прочитать чужую библиотеку или что поправить.

glebiao
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Qt 6, куда за премией идти?

А теперь перейдите к общему случаю и уберите петлю событий Qt и delete after. Пожалуй, рановато за премией, ага?

Но вообще, я бы с радостью «пописал» на Qt/D, но похоже биндинга до сих пор нет, это >надо вообще в Qt Creator завезти

как по заказу, сегодня анонс новых привязок к Qt: https://github.com/tim-dlang/dqt

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

Но мне как-то надо было нагенерировать враппер для библиотеки - код на D во время >компиляции спарсил PE-заголовок и написал код, который редиректит вызовы >библиотеки.

А, нет. Я имел в виду, что можно обойтись без автоматического вставления средствами IDE «простыни» типового кода. Снипетта. Всё-таки, в D это почти и не требуется.

но IDE никак не помогала в написании

есть такое dexed, баг на баге, но какая-никакая поддержка анализа кода и интеллектуальной вставки, есть.

В VS Code есть плагины, в принципе, работает.

Наконец, в Geany c 1.37.1, кроме интеллектуальной вставки, заработал анализ кода. Показывает символы — функции, классы, миксины. Но, если имя кириллическое или включает в себя прочие символы, Geany показывает вместо него пустое место.

Интересно, когда kate, а следовательно и kdevelop, научатся…

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

мне кажется D новый и не совсем популярный, информации по нему не так много, это >может стать камнем преткновения. С/С++ наоборот, инфы много, боишься запутаться.

Отчасти, это верно. Отсутствие хорошего русскоязычного учебника очень сказывается.

Легко гуглятся русскоязычные введения, затем можно пролистать dlang.org/tour, затем учебник Ali Çehreli (англ.). Затем классическую Александреску и наконец, Сигауда (шаблоны).

Всё доступно в инете. Нетрудно найти в открытом доступе даже коммерческие книги, но они все англ.

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

Похоже, начался очередной холливар.

Уважаемые все, разделите в своей голове две БОЛЬШИЕ разницы: учиться >ПРОГРАММИРОВАНИЮ и учиться программировать НА конкретном ЯЗЫКЕ.

Это верно и ложно одновременно.

У вас ограниченное время! За которое нужно познакомиться как с базовыми концепциями, так и их современными рабочими реализациями. Кнутовский ассемблер, это хорошо, но постоянный цейтнот…

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

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

Я вот вообще, очень хотел бы аналог компилирующих слов Форта в современных языках, ну и что? Хотеть не вредно.

Ну AST макросы по сути и есть аналог компилирующих слов Форта для современных языков.

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

Их платные IDE в этом плане уступают плагинам для текстовых редакторов. По крайней мере Clion - единственная, которую я тыкал

Ну CLion для C++ (и rust) одна из лучших IDE. Если под под плагинами имеется ввиду vs code с c++ lsp то он весьма убог на фоне CLion пока.

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

мне кажется D новый

Он уже 20 лет новый.

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