The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

В компилятор LDC языка D добавлена поддержка WebAssembly

18.07.2018 10:36

В свободный компилятор LDC, развиваемый на базе наработок проекта LLVM, добавлена поддержка компиляции кода на языке D в промежуточный код WebAssembly для выполнения в web-браузерах. Представленная возможность позволяет создавать обработчики на языке D, которые можно использовать в web-приложениях. Поддержка кросс-компиляции в WebAssembly интегрирована в тестовую версию LDC 1.11.0-beta2, опубликованную несколько дней назад.

Кроме того, выпущено обновление основного эталонного компилятора DMD 2.081.1. В новом выпуске проведена работа по улучшению переносимости с проектами C++ и представлена поддержка нового синтаксиса для контрактного программирования, предложенного в рамках спецификации DIP 1009 (D Improvement Proposal). Компилятор DMD поддерживает системы GNU/Linux, Windows, macOS, FreeBSD, и архитектуры x86, x86_64, x64.

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

  1. Главная ссылка к новости (https://dlang.org/blog/2018/07...)
  2. OpenNews: Вышел компилятор языка D 2.076
  3. OpenNews: Официальный компилятор языка D переведён в разряд свободного ПО
  4. OpenNews: В GDC, компилятор для языка D, добавлена поддержка архитектуры ARM
  5. OpenNews: В рамках проекта PowerNex развивается ядро, написанное на языке D
  6. OpenNews: В состав GCC одобрено включение языка программирования D
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48983-ldc
Ключевые слова: ldc, dlang, webassembly
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (68) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним_ка (?), 10:47, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Кроме того, выпущено обновление основного эталонного компилятора DMD 2.081.0.

    Да уже 2.081.1 выпущено какбе.

    Я вот этого ток не понял
    >Constructor/destructor mangling matches C++
    >Compatible D style operators now mangle as C++ operators

    Это то о чем я думаю, и теперь не надо делать врапперы с костыльным createInstance?

     
     
  • 2.15, Аноним (15), 11:56, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И чего бы им это mangle изначально было не сделать совместимым с C++?
     
     
  • 3.82, Аноним (82), 23:38, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Например, потому, что есть минимум две взаимонесовместимые схемы mangling-а -- GCC и MSVC. И это не считая периодических изменений, вызванных необходимостью адаптировать эти схемы под фичи новых стандартов языка.
     
  • 2.16, Григорий (??), 11:58, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    LDC всегда немного отстает. Нужны плюшки - DMD, нужен релиз - LDC.
     

  • 1.2, Володя (??), 10:49, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Кто-то тут использует D? не вижу смысла в этом языке, есть С/С++, Go, Rust
     
     
  • 2.4, Аноним (4), 10:57, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    В D такой же смысл, как и в Rust, тем более он появился раньше
     
     
  • 3.6, . (?), 10:59, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > В D такой же смысл, как и в Rust, тем более он

    то есть, никакого.

    > появился раньше

    тем более, ага.

     
     
  • 4.78, Anonim (??), 21:09, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> В D такой же смысл, как и в Rust, тем более он
    > то есть, никакого.

    синтаксис, если будут вопросы - то делаем выводы по таковому из java, C#, etc...


     
  • 2.5, Аноним (5), 10:59, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    не вижу смысла в плюсах, когда есть няшная сишка для низкоуровневых (и не очень) дел, не-гиперпереусложненные D/Vala для "си с классами", ну и Java для высокоуровневого надежного энтерпрайз-кода.
     
     
  • 3.51, Аноним (4), 14:41, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Няшная сишка, риали?
    Да одно сравнение char* vs std::string / QString показывает всю антиняшность "простого" языка C :)
     
     
  • 4.54, Аноним (54), 14:57, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А кто-то мешает использовать либы под си? Я вот glib в своих поделках использую.
     
  • 4.59, Аноним (59), 16:02, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Дак сравни char* vs std::string::c_str(). Что ты указатель сравниваешь с объектом?
     
     
  • 5.61, Аноним (4), 16:28, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При чем тут? Сравнивается подход и удобство.
     
  • 5.63, Аноним (-), 17:13, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > std::string::c_str()

    Это всего лишь один из 'view' для строки, причем read only

    > char*

    это может быть что угодно. Обычно считается, что это null-terminated строка, но находятся уникумы, что используют это вместо uint8_t*.

     
     
  • 6.64, нах (?), 17:40, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > но находятся уникумы, что используют это вместо uint8_t*

    например, сами разработчики языка, которые никакого ^^^ не изобретали.
    зато работали на машине, где процессор работал не с байтами, а со "словами", непременно выравненными, а для байтов был отдельный набор команд. Поэтому им понадобился int и char, совершенно не отражающие того факта, что первое для цифр а второе для букв. bcpl обходился типом "byte".

     
  • 4.69, Аноним (69), 18:26, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее, (char * + size_t) vs std::string. Терминированная 0-м строка - давно уже архаизм, хотя и используется повсеместно.
     
     
  • 5.88, нах (?), 10:30, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Терминированная 0-м строка

    является фичей почти всех существующих процессоров - если даже не в виде команд, работающих непосредственно с такой строкой, то хотя бы в особенностях инструкций jz/jnz, использующих результат предыдущей операции БЕЗ необходимости отдельно сравнивать его с чем либо.

    когда язык C только писали, второе уже было.

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

     
     
  • 6.90, Аноним (90), 11:54, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т е в вашей вселенной дешевле каждый раз искать конец строки проходом, вместо о... большой текст свёрнут, показать
     
     
  • 7.95, нах (?), 16:24, 20/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    в нашей вселенной не нужно вообще искать конец null-terminated строки - именно для этого она null-terminated.

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

    а процессоры, поддерживающие паскалевские строки, у нас неизвестны.

     
     
  • 8.96, Аноним (90), 19:10, 20/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Все может быть У вас там может и релок дешевый и хип не фрагментируется, так чт... большой текст свёрнут, показать
     
  • 2.7, proninyaroslav (ok), 11:04, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как мне кажется попытка "улучшить" C++, только получилась наоборот ещё большая помойка.
     
     
  • 3.66, Crazy Alex (ok), 18:12, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Существенно меньшая. Особенно в метапрограммировании. Плюсы, конечно, с тех времён полдправили (кое-что стащив, и правильно) и дальше правят, но тяжёлая наследственность даёт о себе знать.
     
  • 2.10, Аноним_ка (?), 11:25, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Rust

    Не вижу смысла в этом языке, есть D

     
     
  • 3.13, Аноним (13), 11:53, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В D уже завезли работающие без сборки мусора стандартные библиотеки?
     
     
  • 4.22, aninom (?), 12:33, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да без проблем. Пишешь с core.stdc
     
     
  • 5.76, Аноним (76), 20:33, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Т.е. по функционалу - голый C. Романтика, епть!
     
     
  • 6.81, Аноним_ка (?), 22:54, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Нихрена не голый си. В си есть шаблоны? Вложенные функции, структуры, делегаты и лямбды? Члены стуктур, конструкторы, деструкторы и перегрузка операторов? Модули? Слайсы и проверка границ? scope(exit)? (специально хелловорлды не на сишке а на ди опенглные писал ибо вызывать все эти glfwTerminate - замучаешься, а scope(exit) - спасение, как его только на крестах не костылят). Фишки компилятора? Возможность дергать код на c++?
     
     
  • 7.87, Аноним (76), 01:57, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да про фичи языка понятно, вот только предлагаемая либа без сборщика мусора - это либа голого C. Засунем шаблоны и лямбды в printf, ага. Сравниваем что есть в плюсах в стандартной либе, причем тоже всякой без сборки мусора. Вообще не понимаю, почему бы не сделать стандартную либу D в двух вариантах.
     

  • 1.11, MarCo (?), 11:49, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    DLang вполне юзабельный язык. Хорошо продумана идеология и синтаксис. Программы по производительности не уступают C++, за то скорость компиляции существенно выше. Единственное, что из-за сборщика мусора программы получаются жирнее.
     
     
  • 2.74, burjui (ok), 19:40, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорость компиляции была выше, когда в Phobos было мало шаблонов и CTFE. Импортируйте std.regex и посмотрите, как увеличится время компиляции. И это при использовании DMD, который быстрее всех генерит "так себе" код. Захотите производительность на уровне C++ или выше - придётся использовать LDC, и компиляция будет как у C++.
     
     
  • 3.77, D (?), 20:43, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    google: newCTFE
     
     
  • 4.93, burjui (ok), 16:52, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Когда допилят и включат в стабильный выпуск, тогда и поговорим.
     
  • 4.94, burjui (ok), 16:56, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    У кого-то после чтения моих комментариев могло сложиться впечатление, что я недолюбливаю D. В каком-то смысле, да. Он мне нравится, и я его использую уже лет 10, но в нём по-прежнему есть косяки, и глупо их отрицать.
     

  • 1.19, Аноним (19), 12:19, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    я разработкой на php или javascript быстрее и больше денег заработаю, чем на D
     
     
  • 2.20, aninom (?), 12:30, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +12 +/
    А проституткой или менеджером еще больше.
     
     
  • 3.24, Аноним (19), 13:00, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а причём тут проституткой или менеджером?
    обсуждение идёт языка программирования D, много ли вакансий на этот язык?
    сами-то разработчики языка D чем деньги зарабатывают?
     
     
  • 4.26, Аноним (19), 13:01, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    неужели разработчики языка D зарабатывают деньги проституцией или менеджментом?
     
     
  • 5.50, Аноним (50), 14:40, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > неужели разработчики языка D зарабатывают деньги проституцией или менеджментом?

    Наглая ложь, менеджментом они не занимаются.

     
  • 4.71, Аноним (76), 19:26, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не все меряется вакансиями. Если на каком-то языке удобно написать большое приложение, и таких наберется штук 10, и они все взлетят - то и язык, считай, взлетел, независимо от вакансий. А если нет - то и с вакансиями не нать. Вон, на COBOL есть вакансии, не желаете прособеседоваться?
     
     
  • 5.73, Аноним (19), 19:34, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    но если у этого языка ломают обратную совместимость, то это тупиковый выбор этого языка
     
     
  • 6.75, Аноним (76), 20:08, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, с этим у D хреново
     
  • 6.83, Александр (??), 23:49, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Когда-то она всё равно должна ломаться. У C++ и PHP из-за обратной совместимости много странностей породилось.
     

  • 1.25, Аноним (25), 13:01, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Отличный язык, правда, как тут уже отметили, работу с ним не найти, но для пет-проектов или фриланса подойдёт вполне, сообщество бы ещё побольше, а то приходится половину нужных библиотек самому писать
     
     
  • 2.27, Аноним (19), 13:02, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а что отличного в этом языке D?
    современный C++ намного лучше, чем D
     
     
  • 3.28, немезидеЦ (?), 13:10, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    увы, хуже.
    Усложненное использование(порой много написать надо для простых вещей), многокилометровые трейсы с в случае глюков с шаблонами, множество тянущегося из глубины времен(хотя чуть чуть стали избавляться).
    Даже чистый "C", лучше C++ - по крайней мере для системных целей.
     
     
  • 4.30, Аноним (19), 13:12, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    что-то я сомневаюсь, что чистый C лучше C++, потому что в современном C++ уже давно есть умные указатели
     
     
  • 5.85, Александр (??), 23:55, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Речь об архитектуре языка. В C в принципе не нужны всякие умные указатели. Для него это отжирающий ресы мусор. Его суть в простоте, а отсюда возможность писать компиляторы за месяц на любой тапок. А кому нужна безопасная работа с памятью, добро пожаловать в Rust, а в крайнем случае использовать библиотеки.
     
  • 4.67, Crazy Alex (ok), 18:15, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, до пассажа насчёт "чистого С" - кроме чего-то совсем уж низкоуровневого чистый С - это многословие и морока с обработкой ошибок.
     
     
  • 5.86, Александр (??), 23:56, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А и не нужно его для чего-то большего использовать.
     
  • 3.31, Аноним (25), 13:13, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он не лучше C++, если ты совладаешь с плюсами, то лучше взять их, но если тебе надо написать какое-нибудь приложение, какой-нибудь веб-сервис, то можно взять D, он прост, он по производительности близок к C и C++, у него есть пакетный менеджер, он быстро компилируется, не нужно заботиться об GC и по мелочи.
     
     
  • 4.32, Аноним (19), 13:18, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    какой-нибудь веб-сервис я могу на Swift, Rust, go написать, и на C++ тоже можно написать.
     
     
  • 5.34, Аноним (25), 13:21, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Так кто тебе мешает? Язык нужно брать по удобности и возможностям, из всех перечисленных, этим языком оказался D, его и пользую
     
     
  • 6.38, Аноним (19), 13:27, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Язык нужно брать по удобности и возможностям

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

     
     
  • 7.41, Аноним (25), 13:37, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, либ на крестах больше, но можно написать биндинги, если это что-то типа Qt или более навороченное, что сложно или долго переписать на dlang. C BC у D вроде бы всё в порядке, но многое очень часто летит в deprecated
     
  • 3.72, Аноним (76), 19:30, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Скорость компиляции, не?
     
  • 3.84, Александр (??), 23:50, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >современный C++ намного лучше, чем D

    Когда к старости разберёшься во всех его особенностях и закоулках.

     
     
  • 4.89, нах (?), 10:33, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда к старости разберёшься во всех его особенностях и закоулках.

    у тебя нет столько времени - осилил кое-как 11? марш разбираться в c++12!

     

  • 1.47, J.L. (?), 14:32, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > LDC, развиваемый на базе наработок проекта LLVM
    > Поддержка кросс-компиляции в WebAssembly интегрирована в  тестовую версию LDC

    подскажите, разве WebAssembly не бекэнд LLVM? зачем какие-то телодвижения в LDC, который фронтенд LLVM чтоб собрать в бекэнд-WebAssembly?
    что конкретно реализовали?

     
  • 1.56, Аноним (56), 15:22, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А кто-нибудь сравнивал производительность D и плюсов? Слышал, что ассоциативные массивы в D ощутимо медленнее чем мапы в C++ несколько лет назад
     
     
  • 2.58, Аноним (58), 15:51, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Методику сравнения в студию.
     
  • 2.65, yet another anonymous (?), 18:06, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Во-первых, о термине "производительность" следует договориться.

    Во-вторых, ассоциативные массивы в D --- часть языка, а map<> в C++ --- реализация средствами языка. И, как бы, нет ограниченности единственной реализацией, а можно иметь разные, под разные гарантии, особенности применения и т.п. Т.е. C++ --- мультипарадигменный язык, позволяющий варьировать концепцию разработки, а D --- нет. И поэтому как "системный" язык D никуда не годится, а только как банка с синтаксическим сахаром.

     
     
  • 3.68, Crazy Alex (ok), 18:18, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ассоциативные массивы в D часть языка исключительно синтаксически, насколько я помню альтернативные реализации прекрасно впиливаются. И, что характерно, использовать свою мапу с любыми нравящимися гарантиями ровно как и в плюсах никто не запрещал.
     
     
  • 4.70, yet another anonymous (?), 18:47, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну, не хватало ещё, чтобы авторы языка запрещали реализовывать алгоритмы, конкурирующие с конструкциями языка :)
     

  • 1.80, Аноним (80), 22:29, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Идем на официальную вики по ссылке, качаем официальный пререлиз с офсайта, делаем как написано в этой свежей, не старой статье и...

    -d: error: unknown argument: --no-warn-search-mismatch
    Error: linking with LLD failed

    Еще кому-то надо объяснять, почему D все никак не взлетит? Мне - нет.

     
     
  • 2.97, Аноним (97), 09:58, 21/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я сделал, как в статье, у меня скомпилировалось.
     
     
  • 3.98, Урри (?), 14:34, 23/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Сделал как в статье, то же что у автора выше:
    скачал и распаковал билд,

    my-pc:~/tmp/wasm$ export PATH=$PATH:/opt/ldc2-1.11.0-beta2-linux-x86_64/bin
    my-pc:~/tmp/wasm$ ldc2 -mtriple=wasm32-unknown-unknown-wasm -betterC -link-internally wasm.d
    lld: error: unknown argument: --no-warn-search-mismatch
    Error: linking with LLD failed

     
     
  • 4.99, Урри (?), 16:04, 23/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Попробовал воспользоваться штатным инсталлятором (https://dlang.org/install.html), все скачалось и установилось.
    Ошибка та же.

    me@my-pc:~/dlang/ldc-1.11.0-beta2$ . activate
    (ldc-1.11.0-beta2)me@my-pc:~/dlang/ldc-1.11.0-beta2$ ldc2 -mtriple=wasm32-unknown-unknown-wasm -betterC -link-internally wasm.d
    lld: error: unknown argument: --no-warn-search-mismatch
    Error: linking with LLD failed

    Гoвно этот ваш d-lang, если элементарные вещи из коробки не работают. Время только тратить...

     
     
  • 5.100, Урри (?), 12:26, 31/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Продолжаем развлекаться

    me@my-pc:~/dlang$ ./install.sh install dmd
    Downloading and unpacking http://downloads.dlang.org/releases/2.x/2.081.1/dmd.2.081.1.linux.tar.xz
    ######################################################################## 100,0%
    Invalid signature http://downloads.dlang.org/releases/2.x/2.081.1/dmd.2.081.1.linux.tar.xz.sig

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру