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 ()

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

шел 2015 год..

umren ★★★★★ ()

это не первая версия компилятора D на D.

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

Go на Go, D на D, интересно. когда Rust на Rust будет?

anonymous ()

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

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

НЕ ВЕРЮ, что невозможно.

anonymous ()

высокопроизводительного web-сервера vibed.

ололо.

да, я делал бенчмарки, они меня очень разочаровали.

anonymous ()

стандартная библиотека Phobos

Я надеюсь стандартная библиотека там ОДНА?

рантайм языка и библиотека Phobos проходит практически все тесты на устройствах Android

Хорошо.

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

Только на Linux так можно? Когда будет везде - тогда я уже буду реально интересоваться языком, когда Qt5+D+любая ОС.

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

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

Последнее написал чтобы проверить себя, правильно ли я понимаю принцип QOW в Qt и то что происходит с содержимым объекта он уже везде не нужен.

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

Зашел запостить новость, а вы уже успели.

Все правильно делается. В последнее время фокус именно на экосистеме, тулзах и стабильности, а не на breaking changes.

шел 2015 год..

К чему сарказм? Куча языков не bootstrapped и не будет таковыми, это вообще не тривиальная задача. Тем более, что D - это объемный язык, это вам не Го портировать, а они всего релиз назад сподобились.

больше примеров позволяющих снизить порог вхождения в язык.

На самом деле он не так ужасно высок, как принято думать.

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

НЕ ВЕРЮ, что невозможно.

Речь не про невозможность, а про целесообразность и эффективность

Только на Linux так можно? Когда будет везде - тогда я уже буду реально интересоваться языком, когда Qt5+D+любая ОС.

Сборка под Windows будет в начале следующего месяца.

vibed
да, я делал бенчмарки, они меня очень разочаровали.

Тесты в студию.

Xroft ★★ ()

стандартная библиотека Phobos

Так «страх» есть, а где «ужас» (Deimos)?

Язык D - (D)eimos

Wait!
OH SHI...

anonymous ()

что-то не ахти решение - непонятно, зачем нужное. первая же версия С++(cfront) была написана на С++ - что вынудило для переноса на новые платформы создавать ещё одну ветку кода компилятора(«half-preprocessed» version of the C code resulting from compiling Cfront) - способную компилироваться на С, чтобы потом собрать С++ ;)

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

НЕ ВЕРЮ, что невозможно.

Я ещё не читал, но подозреваю, что там о другом. О том, что нельзя сделать язык без ГЦ и потом надёжно прикрутить ГЦ как в виде библиотеки.

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

чем так хорош Д по сравнению с тем же Ц и плюсами тем более? самим фактом?

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

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

Это как быть немного беременным.

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

чем так хорош Д по сравнению с тем же Ц и плюсами тем более? самим фактом?

Фичами, их там таки больше. Такой себе С++ в квадрате.

anonymous ()

позволяющая в D использовать практически все существующие С++ библиотеки, даже такие большие и сложные как Qt5 и Orge3D.

Вот это было бы весьма круто.

Хочу уточнить: насколько я вижу, Calypso написан на С/С++. Эти наработки попадут в основной компилятор или будут существовать параллельно?

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

Я надеюсь стандартная библиотека там ОДНА?

да, давным-давно уже только Фобос.

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

Это как быть немного беременным.

Нет.

Но это какой-то бессмысленный спор.

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

Хочу уточнить: насколько я вижу, Calypso написан на С/С++. Эти наработки попадут в основной компилятор или будут существовать параллельно?

The roadmap is:

merge upstream LDC 0.16 into Calypso → C++ exception support → better C++11 support → MSVC support → extend magicport2 to convert Calypso to D (and Calypso could «bootstrap» itself to avoid writing bindings to Clang) → make Calypso an optional shared library

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

Так «страх» есть, а где «ужас» (Deimos)?

где

здесь поищи, среди хелловордов. что, нема? от тотоже.

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

Нет.

Да, компилятор включает в себя кодогенерацию. Как бы ты не хотел это оспорить.

Но это какой-то бессмысленный спор.

Да.

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

Куча языков не bootstrapped и не будет таковыми, это вообще не тривиальная задача

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

loz ★★★★★ ()

Orge3D
Проверено: Shaman007

anonymous ()

RIP

D, к сожалению, умер во младенчестве. Живые языки проектируются для решения реальных задач (как Go и Rust) например. И проектируются людьми, которые на этих задачах набили очень много шишек и точно знают что необходимо от планируемого языка получить. Брайт же - писатель компиляторов и на конец 90-х явно не обладал достаточным кругозором для проектирования языка.
Идея «зделаю кресты только лудше» могла бы быть не такая плохая, не добавь он туда модный в то время GC. GC поставил крест на языке, так как язык общего пользования с GC - это прямая конкуренция с Java, а с Java очень сложно конкурировать. В итоге разные high frequency потоки данных все делают на Жабе, а D прижился только у наркоманов из Sociomantic (ничего личного, обычный job safety).
Вот Александреску видел реальные задачи, но в D слишком поздно пришел. Когда все что можно было сделать не так (non-optional GC, 2 штуки stdlib? серьезно?) уже было сделано.
Еще автор D отличается повышенным аутизмом (либо у него маркетинг головного мозга), влезть в знаменитый тред «C++ is a horrible language» и всерьез продвигать там Линусу свою недожабу - это было сильно: http://marc.info/?l=git&m=118914962803883&w=2

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

это вам не Го портировать, а они всего релиз назад сподобились.

Go, вроде, в немалой степени портировали автоматически. А с D как? Вручную переписывали или тоже конвертили?

DarkEld3r ★★★★★ ()
Ответ на: RIP от anonymous

Еще автор D отличается повышенным аутизмом (либо у него маркетинг головного мозга)

Какие-то взаимоисключающие параграфы.

Живые языки проектируются для решения реальных задач

То же справедливо для операционных систем. Была какая-то, написанная just for fun, но так и не взлетела, влачит жалкое существование.

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

Да, компилятор включает в себя кодогенерацию

Зависит от смысла, вкладываемого в термин «компилятор». Но, если есть желание включить и кодогенерацию, то D тоже не написан на D.

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

Скорость vibe.d - это анальная клоунада же, вроде самого быстрого в мире HTTP сервера на Лисп и самого быстрого в мире парсера JSON на D. Числа Фибоначчи в вакууме.

Быстрый HTTP сервер уже написали, Nginx называется, все, можно расходиться. В Nginx вложен невероятный объем R&D. Если нужно быстро отдавать HTTP - поставьте любой наколенный сервер за Nginx (хоть vibe.d, хоть tomcat, хоть cherrypy). Если медленно, поставьте за Nginx 10 серверов. Если все равно медленно и боттлнек в самодельном HTTP сервере (чего не будет никогда, если в приложении есть хоть какая-то бизнес-логика) - то запихните эту бизнес-логику внутрь модуля Nginx, а самодельный vibe.d вообще выбросьте нафиг.

Т.е. сам vibe.d - хорошая штука для широкого круга задач нужен именно HTTP-из-коробки (как в Go). Только от его производительности ни тепло ни холодно, он стабильным и удобным в первую очередь должен быть.

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

что-то не ахти решение - непонятно, зачем нужное.

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

Вместо D тут любой язык подставить можно.

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

Да, компилятор включает в себя кодогенерацию. Как бы ты не хотел это оспорить.

Ну включает и? Кто сказал, что хочу оспаривать? Просто я не считаю, что это важно в вопросе «на чём написан компилятор». Написан он на расте, но использует LLVM и правильно делает.

По твоему, им надо было изобретать свой/переписывать LLVM?

Давай с другой стороны зайдём: языки, которые транслируются в С на чём написаны?

DarkEld3r ★★★★★ ()
Ответ на: RIP от anonymous

Re: RIP

D, к сожалению, умер во младенчестве.

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

Брайт же - писатель компиляторов и на конец 90-х явно не обладал достаточным кругозором для проектирования языка.

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

2 штуки stdlib? серьезно?

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

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

Сходите по первой ссылке в новости.

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

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

Просто я не считаю, что это важно в вопросе «на чём написан компилятор». Написан он на расте.

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

anonymous ()
Ответ на: Re: RIP от anonymous

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

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

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

Давай с другой стороны зайдём: языки, которые транслируются в С на чём написаны?

А ты компилятор от транслятора отличить можешь?

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

А ты компилятор от транслятора отличить можешь?

А ты ответить по существу?

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

А ты ответить по существу?

Так это и есть по существу. Если бы ты сказал, что Rust - это транслятор в IR для LLVM, написанный на самом себе, то это имеет смысл. А когда ты говоришь, что Rust - компилятор, написанный на самом себе, ты говоришь то, что не соответствует действительности.

anonymous ()

Я бы выделил отдельно добавление аллокаторов - порадовать нелюбителей сборки мусора и разочаровать хоронителей D. Сильная вещь и продуманная, аллокаторы практически на любой вкус с возможностью их комбинировать между собой для построения композитного аллокатора, специализированного для конкретной задачи. Ознакомиться можно здесь

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

Если бы ты сказал, что Rust - это транслятор в IR для LLVM, написанный на самом себе, то это имеет смысл

Хорошо, ты победил.

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

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

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

Ну тогда для чистоты обсуждения и D тоже не на D переписан. У него только фронтенд на D, а все три бекенда - на плюсах.

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