The OpenNET Project / Index page

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

Вышел компилятор языка D 2.083. Поддержка языка D включена в состав GCC

02.11.2018 18:39

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

В новой версии:

  • Расширены возможности по связыванию с бинарными файлами, скомпилированными из кода на языке C++. Улучшена поддержка разработки проектов, сочетающих код на языках C++ и D;
  • Представлен дополнительный набор предопределённых идентификаторов для определения C++ runtime на этапе сборки: CppRuntime_Clang, CppRuntime_DigitalMars, CppRuntime_Gcc, CppRuntime_Microsoft и CppRuntime_Sun. Для определения C runtime используются идентификаторы CRuntime_Bionic, CRuntime_DigitalMars, CRuntime_Glibc, CRuntime_Microsoft, CRuntime_Musl и CRuntime_UClibc;
  • Предложен альтернативный синтаксис для связывания с кодом на С++: 'extern(C++, "foo") void cppFunc()';
  • Добавлено два новых встроенных типажа (traits): __traits(isZeroInit, T) для проверки инициализации типа нулевым значением и __traits(getTargetInfo, "key") для получения детальной информации о целевой платформе при компиляции;
  • Добавлена новая pragma linkerDirective, позволяющая указать библиотеку, которую следует передать компоновщику в исходных текстах.

Дополнительно можно отметить принятие в основной состав GCC фронтэнда с компилятором GDC (Gnu D Compiler), библиотеки libphobos (runtime) и тестового набора D2, что позволит использовать штатный GCC для сборки программ на языке программирования D. Процесс включения поддержки языка D в GCC начался ещё в 2011 году, но затянулся из-за необходимости приведения кода к соответствию требованиям GCC и проблем с передачей прав на интеллектуальную собственность компании Digital Mars, развивающей язык программирования D. Проблемы с интеллектуальной собственностью были достаточно быстро решены, но для решения технических проблем и синхронизации разработки с компилятором DMD потребовалось почти полностью переписать GDC.

Также недавно состоялся выпуск LDC 1.12.0, компилятора для языка D развиваемого на базе наработок проекта LLVM. В новой версии обеспечена поддержка LLVM 7.0, расширена поддержка JIT-компиляции, проведена оптимизация математической библиотеки, добавлена поддержка LTO-оптимизаций для платформы Win64.

  1. Главная ссылка к новости (https://dlang.org/blog/2018/11...)
  2. OpenNews: Вышел компилятор языка D 2.082
  3. OpenNews: В состав GCC одобрено включение языка программирования D
  4. OpenNews: Официальный компилятор языка D переведён в разряд свободного ПО
  5. OpenNews: В компилятор LDC языка D добавлена поддержка WebAssembly
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49546-dmd
Ключевые слова: dmd, dlang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Qwerty (??), 18:41, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно, а на нём кто-нибудь пишет?
     
     
  • 2.4, ttldtor (ok), 18:51, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Всё никак не допишу проект, который объединяет tui и gui, потому что после того, как я расковырял исходники Qt, поддерживать существующие биндинги мне сразу же расхотелось. Поглядывал ещё на WPF, JavaFX в поисках идеальной модели. На данный момент был вариант текстовый, но пока только столкнулся с адом поддержки виндовой консоли https://github.com/ttldtor/plut затем я его стал переносить в https://gitlab.com/ttldtor/plut Надо бы продолжить, но меня всякие другие языки отвлекают, scala, например =)
     
     
  • 3.12, Онаним (?), 19:19, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • –5 +/
    WPF прекрасен, но не кроссплатформенен, к сожалению. А вот на Скале (лучший язык, по-моему) с JavaFX можно создать что-то офигенное, мне кажется. Я пытался сделать так, чтобы JavaFX-интерфейс крутился в отдельном Akka-актёре, но что-то оно не заработало, видимо подкапотные проблемы синхронизации какие-то, в результате забил.
     
  • 3.15, Аноним (15), 19:42, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > после того, как я расковырял исходники Qt, поддерживать существующие биндинги мне сразу же расхотелось

    Можно поподробнее. Заинтриговали! :)

     
  • 3.17, КГБ СССР (?), 19:46, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Далась вам всем эта Скала… Только время даром теряете. А время, как известно, деньги!
     
     
  • 4.25, Аноним (25), 21:07, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Именно, что время—деньги. И инвестировать его надо не в закатно-вручной php и не в букеты скоротечных js-фреймворков, а в инструменты, которые позволят эффективно решать задачи и через год, и через десять.
     
     
  • 5.27, Аноним (27), 23:01, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Именно, что время—деньги. И инвестировать его надо не в закатно-вручной php и

      Php будет жить вечно

     
  • 3.20, Сверчок (?), 20:15, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем вообще поддерживать виндовую консоль?
     
  • 3.21, Michael Shigorin (ok), 20:16, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Всё никак не допишу проект, который объединяет tui и gui

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

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

    Отчасти их отголоски видны и в том, что в alterator этого самого клика правой мышкой нет и теперь.

    См. тж. http://ndk-xx.sf.net в качестве одного из артефактов тех лет.

     
  • 2.6, Аноним (6), 18:53, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    https://ru.wikipedia.org/wiki/D_(язык_программирования)#Использование,_распрос
     
  • 2.7, Аноним (7), 18:57, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Tilix на GTKD написан, больше ничего не знаю.
     
  • 2.9, Аноним (9), 18:59, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пишут конечно, но серьёзные мужики, а не восторженные школьники с растом, от которых шума гораздо больше чем реального выхлопа.
     
     
  • 3.10, Аноним (7), 19:01, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Серьезные мужики настолько серьёзны, что пишут на скучном C++.
     
     
  • 4.18, Аноним (9), 19:47, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    C++ никак не мешает кодить на D. Я проверял.
     
  • 4.67, Аноним (67), 03:40, 08/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И ещё более скучном Ассемблере :)
     
  • 2.40, Аноним (40), 10:36, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Интересно, а на нём кто-нибудь пишет?

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

     
     
  • 3.41, Аноним (41), 13:58, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    да и вакансий на нём нет
     
  • 2.51, Аноним (51), 20:07, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из старичков нет, а из моложежи есть Swift, Golang и т.д. Какой смысл? Я так понимаю тольок ради Александрески и завели язык.
     
     
  • 3.53, RM (?), 12:19, 04/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Неправильно понимаешь.
     

  • 1.2, Иван Семеныч (?), 18:47, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Дженерики есть?
     
     
  • 2.3, ибалмачи (?), 18:51, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    там вроде шаблоны есть
     
     
  • 3.13, Онаним (?), 19:20, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это разве не синонимы?
     
     
  • 4.22, Crazy Alex (ok), 20:34, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Обынчо под "шаблонами" имеется в виду плюсовая система генерации кода (котораяЮ блин, тьюринг-полная сама по себе), а под "дженериками" - джваовская, дотнетовская и подобные - не столь мозголомные, но существенно более ограниченные.

    В D шаблоны круче плюсовы по мощи, при этом понятнее на порядок. Благо, их там Александреску делал в основном, который точно знал, что ему надо.

     
     
  • 5.28, Аноним (28), 23:03, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    О! А я все боялся, что там не шаблоны, а дженерики. Теперь точно надо посмотреть. Все руки не доходили.
     
  • 2.5, Аноним (5), 18:53, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет бы спросить есть ли там рефлексия и enum string, они тролят своими дженериками ЛицоРука.жпег
     
     
  • 3.8, Аноним (7), 18:58, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лучше про алгебраические типы.
     
     
  • 4.23, Crazy Alex (ok), 20:36, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не поможет - в D они есть, в стандартной библиотеке, сделанные именно через шаблоны :-)
     
  • 3.19, Сверчок (?), 20:12, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как будто это кому-то нужно.
     
     
  • 4.56, Аноним (56), 06:16, 05/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это много кому нужно, это одна из причин почему выбирают с#, жабу.
     

  • 1.11, nc (ok), 19:14, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Мне не нравится, что уподобляются С/С++ и вводят какие-то немыслимые "магические" идентификаторы и ключевые слова с двумя подчеркиваниями в начале, какой-то extern(C++) и прочее. Вместо того чтобы сделать универсальный синтаксис для этого.
     
     
  • 2.24, Crazy Alex (ok), 20:42, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    "для этого" - это для чего? Потому что я общего между extern(C++, "foo") и __traits вообще не вижу.

    Если что - extern(x, y)  - это вполне общий синтаксис - пара "язык, имя на этом языке". По факту кроме как плюсовый вариант никому ничего не нужно. Что до __traits - это тоже общий синтаксисс метаданных, это просто к существующей туче ещё разновидностей добавили.

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

     
     
  • 3.34, nc (ok), 00:50, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну в частности extern(C++, "foo") нарушает стройность синтаксического анализа, потому что ++ это операция, а тут она выступает как часть какого-то магического идентификатора. ИМХО должно быть все в кавычках: extern ("C++", "foo").
    __traits - вот зачем там подчеркивания? В С/С++ понятно, все боятся тронуть священную корову обратной совместимости, но тут-то зачем? Это мелочь, но именно из таких мелочей складывается и общее впечатление, и будущее языка.
     

  • 1.26, Шмикерс (?), 22:01, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Если вы делали на D что-то серьезнее хелловорлда или алгебраических операций, допустим, пытались завести Vibe, подтянуть все зависимости и реализовать не самую хитрую логику, то должны понимать почему он в разряде фанбойских ЯП.

    Стэктрейсы в стиле С++, только если за С++ и разбор полотенец с ошибками на 5к строк готовы платить, то по принципу бритвы Оккама, D - новая сущность.

    Кому интересно, покопайте на Ютубе спич про D в ААА играх, по мимике и докладу станет понятно что для работающего программиста D проблема, а не решение.

     
     
  • 2.29, Анонимус100 (?), 23:17, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Делаю намного более серьезное чем хелловорд уже несколько лет. Отличный язык для моих задач, только гуя не хватает мне. Метапрограммирование позволяет автоматизировать многие задачи, которые на С++ нужно писать руками. При этом код приятно выглядит и просто поддерживается. D как раз для меня оказался решением и сэкономил кучу времени и нервов. Более продуктивный язык чем С++.
     
     
  • 3.45, Вопрос (?), 16:20, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Какую IDE посоветуете?
    Смотрю там есть несколько с виду похожих по функционалу.

    >> только гуя не хватает мне

    Что, за столько лет нет биндингов к Гую?

     
     
  • 4.47, Иваныч (??), 16:27, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На Windows - если нужно будет много отладчиком пользоваться, то Visual D поверх Visual Studio 2015/2017 (хотя даже 2010 тоже поддерживается). Для остальных - Visual Studio Code & Code D. Есть ещё DLang IDE, но на любителя как с IDE для GNOME.
     
  • 4.48, Иваныч (??), 16:30, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На Windows - если нужно будет много отладчиком пользоваться, то Visual D поверх Visual Studio 2015/2017 (хотя даже 2010 тоже поддерживается). Для остальных - Visual Studio Code & Code D. Есть ещё DLang IDE, но на любителя как с IDE для GNOME.
     
     
  • 5.49, Вопрос (?), 16:36, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не, не для винды. )
    Спасибо за инфу.
     
  • 5.54, InuYasha (?), 12:43, 04/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А Code::Blocks не пробовал? Для си и плюсов он вполне себе годный кроссплатформенный вариант.
     
     
  • 6.55, Иваныч (??), 22:26, 04/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А в нем есть что-то для D? Кстати, Visual Studio Code & Code D поддерживают интеграцию с DUB, DScanner, DFormat (DFMT) что есть неслабый аргумент в его пользу, но есть некоторые проблемы с отладкой (над чем сейчас работают). Visual D не умеет и половину, но есть отличнейший отладчик Mago для D (но только для Windows).
     
     
  • 7.60, Аноним (60), 10:34, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Но есть неслабый аргумент против, оно на Electron.
     
     
  • 8.64, Иваныч (??), 22:50, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А вот здесь спросить не буду Code D единственная причина ему быть на машине ... текст свёрнут, показать
     

  • 1.30, Аноним (-), 23:33, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А какой блокчейн-проект использует D? Все готовые для продакшена ЯП используются в блокчейн-проектах, а про D не встречал такого.
     
  • 1.31, Аноним (41), 23:35, 02/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вакансии появились на D?
    по-моему быстрее денег можно программированием на rust, swift заработать))))
     
     
  • 2.32, Аноним (-), 23:56, 02/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И на nodejs, ещё.
     
     
  • 3.33, Аноним (41), 00:10, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да даже на pascal программировать, можно денег быстрее заработать))))
     
  • 2.35, Аноним_ка (?), 01:43, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На swift - да. А rust то тут каким местом?
     
  • 2.42, Аноним (42), 15:16, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну на Swift понятно. А Rust кто платить будет, Mozilla?
     
     
  • 3.43, Аноним (41), 15:19, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    вроде уже помаленьку появляются вакансии на rust
     
     
  • 4.52, _ (??), 02:39, 04/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "кормить Растишкой" - это вакансия в детский сад, нянькой, а не то что вы подумали :-)
     

  • 1.44, Аноним (42), 15:22, 03/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    DMD ещё бы расширить поддержку аппаратный платформ в кодогенерации.
     
     
  • 2.46, Иваныч (??), 16:23, 03/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    DMD хорош как есть, для этой задачи вполне годится LDC. DMD для плюшек, LDC для релиза.
     
     
  • 3.57, Аноним (42), 10:17, 05/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >для этой задачи вполне годится LDC

    LLVM? Не, спасибо, не надо.

     
     
  • 4.58, Иваныч (??), 10:55, 05/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Clang успел стать плохим компилятором?
     
     
  • 5.62, Аноним (60), 10:38, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Хороший - g++, виртуальных машин не требует.
     
     
  • 6.63, тот самый аноним (?), 18:53, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Хороший - g++, виртуальных машин не требует.

    Т.е. познания на уровне "Рабинович напел"?
    Название - просто небольшая хохмочка (попутно отлично фильтрующая "Ыкспертов"), намекающая на работу оптимизаторов, верификаторов и проч, с "промежудочной репрезентацией кода" (IR). Т.е. независимо от конкретного ЯП фронтенда.
    Более конкретно - для многих проверок и оптимизаций используются разновидности abstract interpretation.

    И (вы только держитесь покрепче! Или зажмурьте глаза и не читайте дальше, повторяя громко "вы все врети". И никогда не делайте g++ -fdump-ipa-all, ни в коем случае не заходите на https://gcc.gnu.org/onlinedocs/gccint/GIMPLE.html и не читайте строки "The C and C++ front ends currently convert directly from front end trees to GIMPLE"!)
    если вы считаете, что в gcc или g++ нет ни промежуточной репрезентации, ни вариации абстрактной интерпретации, то у меня для вас довольно плохие новости … но вы не расстраивайтесь - ведь есть отличный и провереный временем Борланд C++ первых версий, без всех этих новомондных обвесов и свистелок!


     
  • 6.65, Иваныч (??), 23:04, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Clang, LDC, Rust генерируют нативный код. Который не имеет никакого отношения к виртуальным машинам. LLVM используется как backend, как библиотека в которую можно напихать инструкции а потом сказать - сделай базовую оптимизацию, сгенерируй код конкретно для x86/x86_64/arm/... и сделай оптимизацию ещё раз но уже конкретно для целевой архитектуры. Точно также как и GCC/G++ с GIMPLE. Можно взять любой онлайн набор компиляторов C++, выбрать G++ & Clang и посмотреть что выходит в ASM. Довольно часто Clang впечатляет - меньше инструкций, жесткая оптимизация, тот же результат.
     
  • 4.59, Аноним (59), 09:07, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он перепутал LLVM и JVM, наверное
     
     
  • 5.61, Аноним (60), 10:36, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не перепутал. Оба - не нужно.
     
     
  • 6.66, Иваныч (??), 23:05, 06/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Таки да, смотрите выше.
     

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



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

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