LINUX.ORG.RU

Вышел компилятор LDC 0.13.0

 , ,


0

3

Вышла новая версия LDC — компилятора языка D основанная на виртуальной машине LLVM. От оригинального компилятора DMD LDC отличается более высокой скоростью работы, а так же поддержкой широкого набора архитектур. Так LDC поддерживает архитектуры ARM и PowerPC. Однако ввиду того, что стандартная библиотека Phobos пока не имеет полной поддержки сторонних архитектур полноценная разработка на D под ARM пока не возможна.

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

anonymous

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

Альфа-версия компилятора перманентно нестабильного языка и даже не в мини, gj.

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

dmd еще сам из говна не выплыл, а тут уже накручивают.

Вы путаете поддержку других архитектур и «выплыл из говна». На сам DMD нареканий никаких нет.

И если LDC станет мейнстримом, а все к этому идет, то DMD уйдет на второй план.

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

Despite its name, LLVM has little to do with traditional virtual machines [...] The name «LLVM» itself is not an acronym; it is the full name of the project.

У них с названием проекта та же проблема, что и у wine:

Wine (originally an acronym for «Wine Is Not an Emulator») is a compatibility layer...

gag ★★★★★
()

компилятора языка D

Помянем.

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

LLVM - это виртуальная машина. И gcc тоже виртуальная машина. Просто у ламерья от этого факта башню сносит, они кроме JVM себе других виртуальных машин не представляют.

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

Gimple практически ничем не отличается от LLVM IR, и ничего похожего на «систему комманд» у них нет. Так же как и у многих других виртуальных машин, типа той же STG.

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

Gimple практически ничем не отличается от LLVM IR, и ничего похожего на «систему комманд» у них нет

У LLVM есть instruction set, а GIMPLE таковым не является.

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

У LLVM есть instruction set

Нет

а GIMPLE таковым не является

Если в IR якобы есть «instruction set», то тогда он и в Gimple есть, в C-- есть, да что там, и в самом Си тоже есть.

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

они кроме JVM себе других виртуальных машин не представляют

Virtualox жи есть!

one_more_hokum ★★★
()

полноценная разработка на D под ARM пока не возможна.

слегка беремена.

splinter ★★★★★
()

А тут в соседнем треде про Go говорят, что D - это ваще отстой и вчерашний день, так и не перешедший в завтрашний. :)

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

«Кто использует D?»

Я использую. Крутой язык, только компиляторы пока бывает с глюками компилируют(все 3).

Код в нём наглядней, чем в С/С++(моё мнение).

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

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

Развитие Go конечно Google финансирует, а у неё денег полно. D же люди делают своими силами...

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

D - это хобби. Это когда ты тратишь своё свободное время на нескучные ништяки. Ну как собирать марки или засушенных жучков.

Для работы это не пользуют. Period.

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

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

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

Ты реально тупой. То, что в llvm ir решили называть операторы «инструкциями», ни разу не делает его хоть в чем-то отличным от gimple или c--. Возвращайся, когда хотя бы осилишь понять, что такое SSA.

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

Ты реально тупой. То, что в llvm ir решили называть операторы «инструкциями», ни разу не делает его хоть в чем-то отличным от gimple или c--

То, что низвестный анон с LOR режил назвать GIMPLE «набором инструкций», ни разу не делает его набором инструкций. Да и вообще ничего не значит.

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

Аноним, который знает аббревиатуру SSA и даже слышал про C--... птица высокого полета залетела к нам.

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

Для работы это не пользуют. Period.

Если ты какой-нибудь Александреску, то можешь совмещать.

А вообще, вроде, есть пару примеров D «в продакшене».

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

Ты таки тупой. LLVM IR ничем от Gimple не отличается. И там и там строго типизированные операторы, просто одни их смеху ради обозвали «инструкциями». Сути это не меняет. И ты так и не отчитался, какого лешего ты считаешь «набор инструкций» (что бы это ни было) за критерий «виртуальной машины».

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

D - это хобби. Для работы это не пользуют.

Ruby вообще пилит один японец - и ничего, анонимы язык в Ж засунули и не восстают против подобных «языков». А Ди - это вообще продукт КОММЕРЧЕСКОЙ КОМПАНИИ, которая, только представь, делала коммерческий компилятор С++! Нужно ли что-то ещё говорить?

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

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

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

Ну-ну.

Если уж такие уродцы как C# вылезли

Дык, это не само собой произошло.

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

А вообще, вроде, есть пару примеров D «в продакшене».

Alexandrescu на последнем DConf говорил о 9 компаниях, которые использует D в коммерческих целях. Видимо, речь идёт шла об этоп списке: http://wiki.dlang.org/Current_D_Use

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

Видимо, речь идёт шла об этоп списке: http://wiki.dlang.org/Current_D_Use

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

Опять же, кое-кто использует D1 и всё.

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

Интересно, но зависит от степени использования - это ведь не раскрывается

Из того что я знаю точно:

Facebook - несколько утилит внутреннего пользования написаны полностью на D, некоторые из новых внутренних сервисов (линкуются с уже существующими C++ библиотеками), в разработке ODBC драйвер для одной из баз данных. Детали с DConf : https://www.youtube.com/watch?v=1JZNvKhA3mA

Sociomantic - вся серверная часть написана на D1, soft real-time сервисы для http://en.wikipedia.org/wiki/Real-time_bidding . Портирование на D2 в процессе - это моя непосредственная обязанность и это боль :(

Remedy Games - D используется в качестве скриптового языка в их новой игре, которая должна выйти в этом году. Детали с прошлого Dconf : https://www.youtube.com/watch?v=FKceA691Wcg

EMSI - сервисы экономического моделирования данных, полностью на D, детали с DConf : https://www.youtube.com/watch?v=TlqVu9RtoeY

Funatics Software GmbH - мобильные игры, D (vibe.d) используется вместо node.js для серверной части. Выступление с DConf ещё не опубликовано, но будет : http://dconf.org/2014/talks/dilly.html

Про остальных достоверно не знаю.

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

Интересно.

Портирование на D2 в процессе - это моя непосредственная обязанность и это боль :(

А можно немного подробнее? Из-за чего такие сильные проблемы? Я правда D не слишком хорошо знаю и уж тем более не первую версию, так что интересно - неужели такие огромные отличия?

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

Самое принципиальное отличие - const. В D1 это был storage class, не влиявший на тип аргумента. Идиоматичный D1 код - «const ClassType instance;». Гарантирует, что ссылка всегда будет указывать на один и тот же объект после инициализации.

В D2 const - type qualifier, причём транзитивный. «const ClassType instance;» теперь означает, что запрещено изменять всё, что доступно через эту ссылку. Вызываемые методы const(ClassType) должны быть явно отмечены как const. Передать instance как аргумент функции, принимающей ClassType, нельзя.

Побочный эффект - строковые литералы сменили тип с char[] на immutable(char)[]. Из-за этого практически все функции, принимавшие char[], должны быть исправлены на const(char)[] - а это по цепочке требует изменений во всех вызываемых функциях.

И, само собой, ошибки компиляции не слишком помогают найти искомое место, так как задумывались не для портирования. Фактически всё упёрлось в необходимость диагностического инструмента, который будет указывать на все проблемные места - Walter Brigt как раз этим и занимается в рамках контракта с Sociomantic.

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

Полный список изменений, который я пока что обнаружил:

- remove octal literals, C-style function pointers and switch implicit fall-through

- replace typedef everywhere with either alias or Typedef!T

- turn functions accepting static arrays into those accepting slices if modification is expected or array is long

- update template function signatures to force slices in arguments - rename all identifier that collide with d2 keywords

- add `enableStomping(arr)` call in all places where length of array is reset (it should be defined as function with empty body in D1)

- remove all `const` storage class uses, replace with getter-only access where applicable

- workaround «volatile»

- remove implicit integer conversions with data loss

- do-while statement without terminating ; is deprecated

- invariants must have ()

- overriding base class function without using override attribute is deprecated

- «dispose» goes away

- templates that infer array type as a slice need to do that explicitly (related to static arrays)

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