LINUX.ORG.RU

Вышла первая версия компилятора D, написанная на D

 


3

6

Сегодня состоялся очень важный релиз компилятора языка D — DMD 2.069.0. До настоящего момента компилятор D был написан на С++, однако новая версия теперь написана на самом D. Процесс конвертации исходного кода с С++ на D занял значительный промежуток времени, однако позволил многократно упростить поддержку компилятора.

Значительным улучшениям подверглась стандартная библиотека Phobos. Теперь ещё больше функций в ней были рэнджефицированы (ranges — концепция, позволяющая упростить доступ и переборку элементов структур и классов).

DMD теперь поддерживает формат mscoff, используемый в библиотеках VS2015.

Активно ведутся работы над поддержкой мобильных платформ. В настоящий момент сообщается, что рантайм языка и библиотека Phobos проходят практически все тесты на устройствах Android. О полноценной поддержке разработки под iOS пока говорить нельзя, однако благодаря усилиям проекта LDC-iphone несложные приложения на D под iOS писать можно уже сегодня.

Для пользователей Linux выложена первая пробная версия компилятора Calypso, позволяющая в D использовать практически все существующие С++-библиотеки, даже такие большие и сложные, как Qt5 и Ogre3D.

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

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

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

Новая версия сервера DCD, реализующая автодополнения исходного кода, также готова к использованию с новой версией DMD.

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

★★

Проверено: Shaman007 ()
Последнее исправление: Wizard_ (всего исправлений: 5)

Ответ на: комментарий от PotentialCppTsar

Ну давай ещё глубже в дерьмо. К чему ты это высрал и как это опровергает моё утверждение и отменяет тот факт, что ты обосрался? Что из этого следует?
это байткод и условие в джамп генерирует rustc, как и любой другой фонтедн.

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

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

fn lol(b: bool) -> u32 {
    if b { 1+2 } else { 5 }
}

fn main() {
    lol(true);
}

llvm ir:

...
  br i1 %3, label %then-block-13-, label %else-block, !dbg !18
...

Будете продолжать пердеть в лужу?

Ладно, теперь уже точно всё. Дальше в этой «дискуссии» я не участвую — не люблю софистов и демагогов.

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

Кроме того хедер c классом, например, это по сути удобная документация.

При подсчёте loc комментарии не учитываются, что логично. Ну и да, лучшим аргументом было бы «там ещё ещё шаблоны», но в хедерах llvm их действительно немного.

А ты в своем D без IDE будешь как мартышка бегать по всему файлу, чтоб увидеть цельную картину.

Я ничего про D не говорил, я не «царь», чтобы не зная предмета разговора что-то кукурекать.

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

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

Никто не призывает писать без IDE. Даже простенький блокнот типа Geany умеет показывать списки функций и классов. Заголовочные файлы --- это рудимент далёкого прошлого, и они должны были умереть ещё в 80-ые, но их так и тащат для обратной совместимости. Просто создатели C в своё время не сумели без них обойтись, а потом это превратили в религию. Ни в одном современном языке нет заголовочных файлов и почти везде есть сборщик мусора: Java, OCaml, Haskell, C#, D, Go. Получается, что все разработчики современных языков криворукие и тупоумные мартышки.

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

Ну и да, лучшим аргументом было бы «там ещё ещё шаблоны», но в хедерах llvm их действительно немного.

Лучшим аргументом было бы «там inline методы», и их в хедерах llvm действительно много. Так что ты сам явно плаваешь в теме.

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

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

Не льсти себе. Ты по природе агрессивное быдло, и тебе это нравится. Никакой проблемы для тебя это не представляет.

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

Никто не призывает писать без IDE.

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

Ни в одном современном языке нет заголовочных файлов и почти везде есть сборщик мусора: Java, OCaml, Haskell, C#, D, Go.

Java, OCaml, Haskell - такие же современные языки, как и С++. D - мертв. В том числе из-за несовместимости с С и С++. В противовес C# на Win можно указать на Objective C с хедерами на OSX. Go - довольно нишевый язык, припишем его к PHP, где тоже хедеры.

Получается, что все разработчики современных языков криворукие и тупоумные мартышки.

Я такого не говорил. Это твои фантазии.

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

Лучшим аргументом было бы «там inline методы», и их в хедерах llvm действительно много

➜  rust git:(master) cat src/llvm/**/*.h | pcregrep -M '(^ *)(static\s+)?inline (.|\n)+?\1}$' | grep -v '^$\|^\s*//' | wc -l   
9688
loyd
()
Ответ на: комментарий от loyd

rust git:(master) cat src/llvm/**/*.h | pcregrep -M '(^ *)(static\s+)?inline (.|\n)+?\1}$' | grep -v '^$\|^\s*//' | wc -l

Ну не позорься уже. В хедерах слово inline для методов не нужно.

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

Для функций внутри class definition. Но придумать регулярку с лёту у меня не получается, а методом тыка натыкаюсь только в шаблонах.

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

C++ я придумал, чтобы карать твой анус. Я нанял трупа страуса, чтобы тот напрограммил мне мой C++. Короче он просто codr. А я программист.

anonymous
()
Ответ на: А есть ли смысл? от anonymous

Можно ли использовать D в вебе? Или профита не будет?

Надо конкретней ставить задачу. Гугли и яндексы и С++ в вебе используют, но это как раз под конкретные задачи, с которыми большинство не сталкивается.

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

PotentialCppTsar

чоэтозахерня? шиза у царя прогрессирует?

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

штоа? в системе Оберон из 90х годов сборщик мусора, хотя и простой и
примитивный, mark and sweep был написан на самом обероне.
модулем, который статически прилинковывался в систему (в отличие от
остальных, динамических модулей).

Система Оберон вышла в 87, какие ещё 90-е?!

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

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

В D есть интерфейсные файлы .di, которые компилятор генерирует на основе .d файлов. Т.е. автоматически, без необходимости их поддерживать. Как раз объявления без определений.

D - мертв.

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

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

В D есть интерфейсные файлы .di, которые компилятор генерирует на основе .d файлов. Т.е. автоматически, без необходимости их поддерживать. Как раз объявления без определений.

Комментарии в них попадают?

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

У D было достаточно времени, чтобы «выстрелить». Если он так и не смог этого сделать, то вряд ли уже сможет. Потому кивать в его сторону, что вот это эталон на который нужно ровняться, не уместно.

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

Комментарии в них попадают?

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

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

А где сборник этих волшебных цифр о времени, за которое должен «выстрелить» язык? Я так подозреваю у вас есть некая табличка с матожиданием, дисперсией и прочей статистикой? Или даже просто детерминированное значение? Нет? Тогда о чем ведете речь?

Потому кивать в его сторону, что вот это эталон на который нужно ровняться, не уместно.

Конечно не уместно. Так никто и не кивает, о чем вы?

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

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

причем кресты хотя бы могут быть в нише языков без GC

Это да, было бы неплохо сделать отключаемый GC. Надеюсь сделают.

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

Подозреваю что нет

Окай.

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

Обычно и не надо идти к коду. Я хочу увидеть родителей, методы, параметры, их описание и комментарии автора по использованию. Реализация, если это не мой код, мне не интересна.

А где сборник этих волшебных цифр о времени, за которое должен «выстрелить» язык? Я так подозреваю у вас есть некая табличка с матожиданием, дисперсией и прочей статистикой? Или даже просто детерминированное значение? Нет? Тогда о чем ведете речь?

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

Конечно не уместно. Так никто и не кивает, о чем вы?

Ну как же, товарищ выше привел D в пример. Видно он решил, что тот уже достоин места рядом с Java, например.

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

D и позиционируется как очищенная от хлама версия C++

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

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

Ставить надобности пока нет.

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

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

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

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

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

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

Где не вызывающие сомнений цифры? Я вижу только набор общих фраз, отражающих мнение одного конкретно взятого человека.

Видно он решил, что тот уже достоин места рядом с Java, например.

При прочих равных D более достоин чем Java (имхо, конечно). Другое дело, что прочие не равны.

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

Где не вызывающие сомнений цифры? Я вижу только набор общих фраз, отражающих мнение одного конкретно взятого человека.

Я же не виноват, что ты не знаешь историю Java, Fortran, Pascal, C#, C++, Haskell, Go и пр. языков.

При прочих равных D более достоин чем Java (имхо, конечно).

При прочих равных D это очередной С++ - монстр, который вбирает в себя все и побольше, а потом пытается это как-то состыковать.

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

Из акутально не-эзотерического - C++, Rust.

Хорошая шутка и самоирония от фаната D (?).

anonymous
()
Ответ на: А есть ли смысл? от anonymous

Можно ли использовать D в вебе? Или профита не будет?

Смотря про какой профит речь.
Как язык Ди прекрасен и уже только это будет ускорять твою работу (по ср. с Перлом, шарпом или похапэхами). А вот с «движками» пока слышал только про vibed. Этого конечно мало, но в принципе писать-то можно!
Главное - что мы сразу исключаем тормоза за счёт языка. Ну а модули - раз написанные, они сразу же начнут использоваться, так что движок - вопрос лишь времени.
Если у вас уже есть свои RoR'ы, в Ди смысла нет. Но если вы в принципе затачиваетесь на Ди, перспективы есть. Тем более, что сайтеги можно ваять, имея в руках всего лишь «внедрятель Ди в HTML» (как ASP 1.0) - ты просто пишешь странички с вложенным Ди-кодом.

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

Главное - что мы сразу исключаем тормоза за счёт языка.

Ну если это главное, то лучше брать сразу С.

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

Ну, с C++, допустим, всё ясно: он от рождения сидит занозой в заднице у теоретиков-перфекционистов и не дает им спокойно спать. А вот как же так получилось, что вместо элегантного и лишенного недостатков (пусть будет недостатков C++) D перфекционистам через десять лет пришлось изобретать Rust, как альтернативу тому же C++ для написания браузеров?

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

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

Чушь собачья. Уже то, что мы на ЛИНУКС форуме, в России, обсуждаем язык (а десятки человек ещё и пишут на нём), уже говорит о том, что язык имеет свою аудиторию. Причём профессиональную (ибо дурачки до сих пор на плюсы фапают). А профессионал, знающий Ди, куда полезнее (для продвижения языка), чем сотня мартышек, едва освоивших простейшие шаблоны сипипей, но искренне уверенных в превосходстве плюсов по всем статьям.

Вся ирония в том, что Уолтер сам был РАЗРАБОТЧИКОМ СИПИПЕЙ, ужели он начал бы весь этот Ди-геморой, чтобы создать язык ХУЖЕ сипипи???? Это маразм, но именно это вы и утверждаете, господин посрамши.

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

вместо элегантного и лишенного недостатков D перфекционистам через десять лет пришлось изобретать Rust

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

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

То есть «пилить на плюсах» настолько невыносимо, что они десять лет продолжали этим заниматься, вместо того, чтобы взять и запилить всё на великолепном D?))

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

Чушь собачья. Уже то, что мы на ЛИНУКС форуме, в России, обсуждаем язык (а десятки человек ещё и пишут на нём), уже говорит о том, что язык имеет свою аудиторию.

Ну правильно, линуксоиды маргиналы по своей сущности. А насчет «десятков человек» - no comments.

Вся ирония в том, что Уолтер сам был РАЗРАБОТЧИКОМ СИПИПЕЙ, ужели он начал бы весь этот Ди-геморой, чтобы создать язык ХУЖЕ сипипи????

Вся ирония в том, что несмотря на монструозность С++, многим (включая и Александреску) этого было мало и они хотели еще и еще. А им не разрешали (до С++11), вот они и откололись, чтоб никто не мешал им добавлять все их хотелки.

Это маразм, но именно это вы и утверждаете, господин посрамши.

No comments.

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

D не нужен, тройка из C, Erlang и Common Lisp покрывает 99.9999999999% задач.

Причем С покрывает 99.999999998%, а оставшееся - Erlang и Common Lisp.

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

нули и единицы покрывают 100% задач

А, так ты про теории, а я решил, что про практику, где С практически везде используется, а Erlang и Common Lisp надо днем с огнем искать.

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

а оставшееся - Erlang и Common Lisp.

Perl встречается, Python встречается, shell scripting, а Erlang и Common Lisp - такая экзотика, что действительно нужно поискать для чего оно кому-то может быть нужно.

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

Несомненно, но ИМХО гораздо реже.

Ну я не готов сильно спорить, хотя и кажется, что COW нужно редко. Обычно мы и так знаем как будет использоваться обьект: для чтения или модификации.

Тут имеется ввиду поиск и замена.

Ок, а то я посмотрел на replace у Qt-шного вектора и удивился. Хотя мне всё равно не кажется, что вариант на алгоритмах stl будет заметно многословнее.

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

Его не так уж и много, Qt же поделен на модули, не обязательно брать все. Кроме того это «барахло» само по себе переносимая платформа, что очень приятно

Не вкладывал негативного смысла в слово «барахло», Qt мне нравится, если что.

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

У меня тоже, но если человеку с Qt проще - то почему бы и нет.

Никаких проблем пока человек не начинает нести бред.

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

Не противоречит.

По моему, ты юлишь и изворачиваешься. Признал бы уже, что не так выразился и всё. С тем, что на расте написано мало чего относительно плюсов вряд ли кто-то будет спорить. А так ты придираешься к вырванным из контекста словам.

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