ДМД и Кри и НРС


каковы плюсы / минусы различных компиляторов D? Как осуществляется поддержка производительности и стандартного соответствия/D2? Насколько хорошо поддерживаются отладчики? Насколько хороши сообщения об ошибках и интеграция IDE? Насколько хороша поддержка 64 бит? Моя мысль до сих пор:

DMD

  • зрелые и ухоженные
  • только одна платформа, поддержка 64 бит не очень хорошо
  • Не Фосс

GDC

  • поддерживает различные платформы
  • очень зрелые оптимизации, так что это быстро?
  • устаревшая среда выполнения?
  • GCC так хорошая поддержка отладчика?

LDC

  • поддерживает различные платформы
  • кода LLVM, поэтому она поддерживает преобразование в формат JIT?
  • очень зрелые оптимизации, так что это быстро?
  • Не очень хорошо поддерживали?
  • устаревшая среда выполнения?

мертвые/не работает

  • черт
  • sdc
  • MiniD-очень, очень приятно, но не D (никогда не утверждал, что, хотя)

Я думаю о таргетинге ARM, и я думаю, что GDC-это инструмент выбора, но я не уверен.

3 53

3 ответа:

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

GDC и LDC основаны на интерфейсе DMD, поэтому может потребоваться некоторое время, пока новая версия интерфейса не будет объединена.
Поскольку бэкэнды, которые они используют, очень зрелые и хорошие, качество этих компиляторов в основном зависит от кода клея, который соединяет frontend и backend.

LDC и GDC по-прежнему активно развиваются, но в основном всего несколькими парнями.
В общем, они могли бы использовать некоторую рабочую силу.

  1. существенным недостатком DMD является дефицит общей библиотеки:
  2. Я лично был удивлен, что GDC поддерживает D2, но они говорят, что делает:
    • D1: 1.067
    • D2: 2.053

  3. LDC определенно, кажется, едва поддерживается: " D2 работает на x86-32 Только Linux". Для меня это вопрос заслуживает особого внимания.

  4. при поиске LDC я нашел еще один компилятор (?!):dil. Я еще не тестировал его, но, по крайней мере, он в настоящее время поддерживается. Я буду исследовать больше на эту тему как можно скорее. EDIT: как было указано в комментариях,dil не близок к несколько полному состоянию на данный момент - он способен только анализировать код и генерировать документацию из источников.

по состоянию на февраль 2012 года, похоже, что LDC не является действительно полезной опцией (по крайней мере, в Debian).

например, рассмотрим первую программу в сборник:

import std.stdio;

void main(string[] args)
{
        writeln("Hello, world!");
}

это не удастся скомпилировать с LDC в моей системе:

hello.d(24): Error: module stdio cannot read file 'std/stdio.d'

то же самое верно для первой программы в dlang.org:

import std.stdio;

void main() {
    ulong lines = 0;
    double sumLength = 0;
    foreach (line; stdin.byLine()) {
        ++lines;
        sumLength += line.length;
    }
    writeln("Average line length: ",
        lines ? sumLength / lines : 0);
}

это потому, что мой LDC не поддерживает Фобос--текущая библиотека времени выполнения D. Похоже можно построить версию LDC D2, включая Phobos, но это не так, как он поставляется на Debian, по крайней мере.

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

для меня GDC был очевидным выбором, потому что простой'apt-get -V install gdc ' принес как компилятор, так и среду выполнения Phobos без проблем (проверено на нестабильном Debian).