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)

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

Вот почему «более интересные альтернативы C++» интересны кому угодно, только не программистам, пишущим полезные программы?

Это можно понимать двояко. Если программист пишет «полезные программы» на С++ и посматривает на раст, то это считается?

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

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

Я другой анонимус, но попробую ответить. Продуктивностью написания кода и порогом вхождения.

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

Продуктивностью написания кода и порогом вхождения.

Ну ок, наверное. Я просто не уверен, что это можно считать критерием «универсальности».

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

Должно получиться что-то вроде HTML+CSS, но сильно урезанное

Хм, а как это? Есть какие-нибудь примеры, наброски в этих ваших интернетах?

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

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

Но в отличии от крестов, большинство плюшек QtCore, QtNetwork, QtXml и т. д. - уже есть в D по дефолту и часть его стандартной библиотеки. Нужно лишь органично вписать туда гуй.

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

Да сделать qml, только для D. Собсно, нечто подобное пилили (dquick) - но там язычок на базе Lua, а не жабаскрипта как в qml.

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

А это вообще киллер-фича!

Так тут почти каждый первый популярный ЯП это умеет делать, где-то в начале 2010 это была бы киллер фичей, а сейчас...

Если для Ведроида можно будет писать без Жабомудятины

Ну пиши на Kotlin,

ибо все эти интелиДжы/эклипсы - страх господний

в vim'е или что там у тебя, если тебе больше нравится, никто же насильное не заставляет тебя Eclipse/IDEA юзать?

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

Лжешь ты

Только ты.

Я тебя в параллельной теме спрашивал о примерах полезных программ.

Не виляй. Если людям платят деньги за программы, которые они пишут - значит, они пишут полезные программы, и пофиг, видел ты примеры их кода или нет. Впрочем, если тебе надо примеров... не вопрос, вот один: https://github.com/wycats

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

Читал когда то про него на хабре, не помню, что от него оттолкнуло. Я наверное просто желал чтобы гуй пилили как часть языка, а не 1 человек в свое удовольствие и свободное время, что то вроде std.gui.

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

Я просто не уверен, что это можно считать критерием «универсальности».

Именно это и можно. На любом компилируемом языке можно решить любую задачу, вопрос во временных и материальных затратах. Так, D ещё можно взять для проектов уровня «говносайтик», а вот Rust уже не особо. В этом D выглядит универсальней Rust.

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

Ну как минимум тем, что они Qtшные - к примеру, их можно запихать в QVariant, или вывести qDebug'ом. Удобством использования.

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

Серьёзно? Труп жабы ещё надо «выгонять»? Его надо ПОДМЕТАТЬ! :)

Да, а что предлагаешь на замену? D? А он умеет как java генерить/менять код в рантайме? Есть у него архитектурная возможность прозрачной интеграции c javascript, как сделано это в java nashorn?

И сколько еще десятков лет, ждать его стабилизации и обрастанием инфраструктуры? Есть у них богатые спонсоры/инвесторы, чтобы сделать это в ближайшие годы?

Так что подметешь труп java и окажется, что и работать, то больше неначем.

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

Ну как минимум тем, что они Qtшные - к примеру, их можно запихать в QVariant

Q_DECLARE_METATYPE тебе в помощь.

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

Если программист пишет «полезные программы» на С++ и посматривает на раст, то это считается?

Нет. Считается только написанное.

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

Вообще ни одной не встречал.

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

Я тебя в параллельной теме спрашивал о примерах полезных программ.


Впрочем, если тебе надо примеров... не вопрос, вот один: https://github.com/wycats

Он на D написан или на расте?

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

Дык, LDC тоже привязан к LLVM, для него это не должно быть проблемой?

Да, включение в апстрим LDC не должно быть проблемой и, насколько мне известно, запланировано. Сложности именно с включением в стандартную спецификацию языка и референсный компилятор (DMD).

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

А вот с родными никаких дополнительных телодвижений делать не надо. И сериализуются они через QDataStream автоматом, и в qml/javascript пробрасывается QVariantList или QVariantMap автоматом и становится там родным массивом/словарем.

В том то и суть - они удобны, с ними можно много чего делать и никаких лишних телодвижений.

Ну а QString уделывает std::string вообще без вариантов.

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

Он на D написан или на расте?

Да перестань ты вилять. Сначала ляпаешь «кому угодно, только не программистам, пишущим полезные программы», а потом выясняется, что эти программисты должны писать полезные именно на Rust или D. Что дальше выснится - полезность определяешь только ты?

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

Да перестань ты вилять.

Я тебя просил примеры полезных ПРОГРАММ, а не программистов. Так что виляешь тут ты.

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

Я тебя просил примеры полезных ПРОГРАММ

Ты меня вообще ни о чем не просил, по крайней мере в этом топике. Ты ляпнул вот это:

почему «более интересные альтернативы C++» интересны кому угодно, только не программистам, пишущим полезные программы?

Я привел тебе пример программистов, пишущих полезные программы, и при этом интересующихся альтернативами Си++. В ответ ты виляешь.

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

Про жабу - погугли про High Frequency Trading, Azul Zing, Shenandoah и проч mechanical-sympathy вещи. Это именно та область, где D должен был быть лучше всех. А на практике там всюду жаба, даже крестов там мало. А C# говорят теперь официально в RHEL в виде RPM будет.

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

Rust значительно более низкоуровневый, borrow-checker - это не шутки. В D принято код питонообразным делать. А ссылки с idiomatic Rust здесь неоднократно проскакивали.

anonymous
()

Хорошая новость. Интересно, появится ли вменяемый D IDE, написанный на D, и сможет ли D потеснить Java?

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

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

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

все эти контейнеры, нормальные строки с юникодом - куча плюшек в довесок к крестам.

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

DarkEld3r ★★★★★
()

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

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

что то вроде std.gui.

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

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

Так, D ещё можно взять для проектов уровня «говносайтик», а вот Rust уже не особо.

Ну ок, убедил. Хотя на расте в этом направлении тоже что-то пилят.

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

чем Qt-шные лучше?

CoW таки бывает удобен. Ну и методов у них побольше полезных - всякие replace, take и пр. Понятно, что для стандартных есть STL, но кода получается больше.

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

Нет. Считается только написанное.

Но почему? Вот я пишу на плюсах и раст мне интересен. Это уже противоречит твоим изначальным словам.

Вообще ни одной не встречал.

Ну тогда я вообще не понимаю о чём спор, если ты отвечал на «Rust это более интересная альтернатива C++ [чем D]».

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

А вот с родными никаких дополнительных телодвижений делать не надо.

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

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

Rust значительно более низкоуровневый, borrow-checker - это не шутки.

Имхо, «читаемости» куда больше вредят явные unwrap чем borrow-checker, но в целом согласен.

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

Сравнение честное - они удобнее. Писать в Qt-стиле удобно и приятно, а вот стандартная библиотека крестов вызывает удручающее впечатление.

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

CoW таки бывает удобен.

Но бывает и вреден.

всякие replace, take и пр.

Первое - это вообще нафига? Чем доступ по индексу хуже? Второе - да, кода больше написать придётся.

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

Сравнение честное - они удобнее.

Нет, если нам не нужно остальное Qt-шное барахло.

Писать в Qt-стиле удобно и приятно

И что это за стиль такой?

а вот стандартная библиотека крестов вызывает удручающее впечатление.

Ну а у меня не вызывает и что дальше?

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

Но бывает и вреден.

Несомненно, но ИМХО гораздо реже. И в рамках действительно нужной оптимизации можно в конкретных местах обойтись без него.

Первое - это вообще нафига? Чем доступ по индексу хуже?

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

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

Сейчас набегут «крутые» чуваки и держа пальцы веером будут доказывать, что tiobe index не показатель, а совсем наоборот.

Хотя 0.78% не так и плохо для...

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

Нет, если нам не нужно остальное Qt-шное барахло.

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

Ну а у меня не вызывает и что дальше?

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

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

Но почему? Вот я пишу на плюсах и раст мне интересен. Это уже противоречит твоим изначальным словам.

Не противоречит. Слова должны чем-то подкрепляться. Если тебе действительно интересен раст, покажи чего полезного ты с его помощью сделал и как он тебе в этом помог. А так это болтовня.

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

Программисты на Д какие-то особенные и (ломающие, по всей видимости) изменения в языке и стандартной библиотеке только приветствуют?

А ты что, такой умный, что у тебя все программы сразу проектируются идеально? РАЗУМЕЕТСЯ, что всё, что можно менять - надо менять, ПОКА НЕ ПОЗДНО. Иначе получится гуано как у C# - живут на идеях 15-летней давности и даже не могут реализовать новые фичи тупо потому, что воремя не стали менять код.

Да, БЫВАЮТ breaking changes, что с того? Лучше сейчас поломать ногу и выровнять прямо, чем всю жизнь хромать кривым сростом. Это и есть проблема «интыпрайзов» - сохранение совместимости даже в ущерб здравому смыслу.

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

Про жабу - погугли про High Frequency Trading, Azul Zing, Shenandoah и проч mechanical-sympathy вещи. Это именно та область, где D должен был быть лучше всех. А на практике там всюду жаба

На практике и Венда повсюду - это же не отменяет её убогость? Джаба - тоже не на энтузазизме выросла, а на КУЧЕ БАБЛА. Имей Ди хоть половину этого промоушена, про жабу забыли бы как про страшный сон.

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

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

Да, БЫВАЮТ breaking changes, что с того? Лучше сейчас поломать ногу и выровнять прямо, чем всю жизнь хромать кривым сростом. Это и есть проблема «интыпрайзов» - сохранение совместимости даже в ущерб здравому смыслу.

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

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

На практике и Венда повсюду - это же не отменяет её убогость?

А расскажи нам про убогость Win 10. Ты ведь в курсе что там сейчас, да?

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

о что для кодогенерации используется ллвм

А кто тебе сказал, что ллвм - это только кодогенератор? Хотя даже будь он кодогинератор - это основная часть конпелятора.

ллвм - это 95% любого конпелятора и 100% самого сложного и затратного. А написав биндинг к крестовому коду на «куллязыке», а после чего сгенерировав при помощи этого биндинга ир - это даже не 1% от цена нормального конпелятора и к самому «куллязыку» это не имеет никакого отношения.

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

Раст к колнпелятору раста не имеет никакого отношения. Зачем балаболить, если нихрена не понимаешь?

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

Вопрос времени, ничего не мешает! Для Ди уже есть несколько ГУЁв (увы, большая часть либо порты существующего г-на, либо врапперы), но их разработкой должна заниматься компания, а не студент после пар. Когда будет гибкий, мощный ГУЙ, можно и среду запилить - опять же, нужен коммерческий подход из профессионалов - хотя бы для базовой архитектуры. А дальше энтузазисты набегут и допилят. :)

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

Но бывает и вреден.

Это когда?

Первое - это вообще нафига?

Чуть ли не основная врайт-операция над строкой.

Чем доступ по индексу хуже?

Чё?

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

Проблема в том, что если постоянно ломать ноги...

Ключевое слово «ЕСЛИ». А если не если? Скажи мне, как человек, непрерывно пишущий на Ди и страдающий от несовместимости, много ли тебе приходилось исправлять строчек кода за последние 5 лет? Тебе даже смешно читать это, потому что по самым оптимистичным сценариям ты б исправил максимум ДЕСЯТОК СТРОК. В реале ты не исправил ни одной, ибо если б ты писал на Ди, то знал бы, что языковые элементы стабильны уж лет 5 как.

У меня есть три программы, ОДНУ из которых пришлось править из-за регэкспов. В трёх местах. И я согласен на этот «геморой» в пользу будущего.

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

А расскажи нам про убогость Win 10

Зачем? Ставь, если тебе нравится! Мне нет никакого профита делать твою жизнь лучше.

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