Предлагаю вашему вниманию дайджест интересных событий из мира D.

Событий за последнее время произошло не мало.

Новости языка


1. Состоялся новый релиз компилятора dmd 2.067.
Среди основных новшеств — значительные улучшения в скорости работы GC. В некоторых случаях количество потребляемой памяти сократилось в два раза. Появилась экспериментальная поддержка полного отключения GC:

app "--DRT-gcopt=profile:1 minPoolSize:16" arguments to app

Ассоциативные массивы теперь можно перебирать при помощи метода byKeyValue:

void main()
{
    auto aa = ["a": 1];
    foreach (pair; aa.byKeyValue)
    {
        assert(pair.key == "a");
        assert(pair.value == 1);
    }
}

В стандартная библиотека была расширена модулем для логирования.

import std.experimental.logger;

void main()
{
    log("message logging in D");
}

Полный список изменений можно посмотреть в changelog.

2. Значительный прогресс произошел в разработке проекта Calypso. В настоящий момент Calypso представляет из себя форк компилятора LDC, позволяющий напрямую использовать библиотеки C/C++ без необходимости создавать специальные биндинги. В ближайшие дни ожидается выход первой версии Calypso, а в перспективе ожидается его слияние с основной веткой LDC.

3. Судя по всему, текущая версия DMD (референсного компилятора D) станет последней версией, написанной на С++. Месяц назад было объявлено, что процесс конвертации С++ в D для ветки DDMD практически завершен и теперь DDMD проходит все тесты.

4. Активно продолжает развитие компилятор SDC, который представляет из себя крайне легковесный и быстрый компилятор D, написанный на чистом D, который способен работать в виде библиотеки. В настоящий момент при размере компилятора 30K строк компилятор реализует более 80% возможностей языка, исходный код референсной версии которого (DMD) насчитывает более 300K строк кода.

5. Усилиями проекта ldc-iphone-dev достигнут определенный прогресс в поддержке ARM и возможности написания приложений под iOS с использованием D. Однако пока проект находится в статусе alpha.

Интересные проекты


1. Как многие слышали, D активно используется в области биоинформатики и других сфер, где требуется высокая производительность и обработка большого количества данных. Так, проект по разработке системы анализа данных генома Sambamba опубликовал отчет о своих достижениях. На странице проекта можно найти обоснование выбора языка и впечатление о его использовании.

2. Для D появился новый графический тулкит dlangui. Подробнее о нем можно почитать в данной статье на Хабре: «DlangUI — кросплатформенный GUI для D (Часть 1)».

3. Появился биндинг для Ruby (MRuby), позволяющий встраивать в код D Ruby.

4. Вышла новая версия PyD, позволяющая не только писать расширения для Python, используя D, но и встраивать в D код на Python.

5. Вышла новая версия веб-сервера vibe.d. vibe.d — это крайне легковесный web-сервер на D, позволяющий создавать self-hosting сайты и не только.

6. Вышла новая версия высокопроизводительного движка Higgs, так же написанного на D. По некоторым тестам Higgs обходит самый быстрый в настоящий момент движок от Google v8.

7. Появился аналог утилиты для GO gofmt. Называется dfmt.

8. Вышла новая версия игрового движка для 2D игр Dgame.

9. Обновились биндинги для графических тулкитов GTK и Tk.

10. Вышла новая версия демона автодополнения и анализатора исходного кода DCD.

Комментарии (14)


  1. wwwriter
    20.04.2015 11:32
    +2

    Приятно видеть, что язык развивается, хотя, спустя почти год после его изучения, уже не видно смысла в языке, как в таковом — многие фички, которые так привлекали, перекочевали в новые C++. Я уже было подумал, что язык совсем умер, после долгого оффлайна dlang.ru, но он уже работает, что не может не радовать.
    Вообще всё это крайне интересно, буду следить за развитием и распространением. Было бы интересно узнать как широко применяют D и с какими целями, поэтому предлагаю ниже поделится собственным опытом или познаниями, где и как он применяется.


    1. VlK
      20.04.2015 11:43
      +5

      Не думаю, что С++ можно как-то излечить — он фундаметально слишком замусорен.

      Проблема с Dlang сейчас иная — он уже немного устарел, так и не успев войти в моду. Те же языки Nim и Rust, судя по всему, набирают силу, при этом нацеливаясь на ту же нишу. Если Dlang — просто «С++ made right», то эта пара предлагает интересные новые фичи. Rust, например, предлагает RAII и не имеет встроенной сборки мусора, что обычно очень нравится плюсистам.

      Опять же, Dlang только сейчас получил поддержку серьезной корпорации, Rust же изначально пропихивается Мозиллой; не знаю про Nim.


      1. NeoCode
        20.04.2015 12:17
        +3

        D как ни странно тоже немного «замусорен». Но все-же он ближе всего к языку, на котором хочется писать после С++; Nim странный немного, не си-подобный (это минус), с кодогенерацией через Си; Rust имеет уж больно запутанную систему указателей, даже видел на hackernews несколько статей о переходе с Rust на Nim.


        1. wwwriter
          20.04.2015 12:24

          С указателями там уже всё подчистили, сейчас там, вроде, только указатель и ссылка, и пометка о небезопасности средства.
          Действительно, создание множества «умных» указателе было плохой идеей, т.к. их сущность не скроешь. Да, можно ограничить область видимости, да, можно ограничить применение, но они, словно вселенское зло, всё равно смогут нагадить. Даже в их простейшей форме они способны сорвать крышу, не говоря уже об ухищренностях.


        1. VlK
          20.04.2015 13:38
          +1

          Ну… Я, в общем-то, попробовал пару прожектиков личных на D — выходит действительно намного чище; особенно приятно читать и писать темплейтный код.

          Но вообще эта тройка (Dlang, Nim, Rust) еще должны каждая продемонстрировать какой-нибудь большой открытый проект. Вот перейдет Mozilla на Rust — можно будет смотреть. А пока это просто экспериментальные песочницы.

          Синтаксис, кстати, не так уже и важен. Вопрос привычки. Скобки объективно ничего не меняют в жизни программиста по сравнению с отступами. А вот крупный проект и поддержка серьезной компании — это уже важней.


      1. beduin01 Автор
        20.04.2015 12:57
        -2

        Nim это фактически та же Vala. И где она сейчас?

        На Rust могут перейти только системщики. Да и то хардкорные. Может чистый Си он и заменит, но не более. Во всяком случае массовым он не будет никогда т.к. в ВУЗах его учить не станут, а переходить на него с какого нить Python'a согласится не каждый ввиду крайне своеобразности языка. Я не сморю может он чем то и крут, но я как программист средней руки вообще не понял где мне все его фишки применять.


        1. VlK
          20.04.2015 13:41
          +2

          Нет, Nim вообще не похож на Vala. Ну вообще.

          Vala, кстати, в своей песочнице вполне себе варится. Она никогда для мейнстрима не создавалась, а Гном и ElementaryOS вполне себе этот язык используют. Почему нет? Быстрый, легко интегрируется с Си, маргинальные вещей не умеет, но все привычные — вполне себе. Осваивается, опять же, предельно быстро.


          1. beduin01 Автор
            20.04.2015 14:11
            +1

            Ну вот и плохо, что она для мейнстрима не создавалась. Зачем собственно было плодить сущности? Язык гвоздями прибитый к одной очень узкой даже в рамках Linux платформе.

            Кстати нашел интересное сравнение Nim и Rust. Получается, что код на Rust в среднем получается на 50% длиннее кода Nim при этом обладает субъективно меньшей читабельностью arthurtw.github.io/2015/01/12/quick-comparison-nim-vs-rust.html

            Мне интересно, минусующие реально верят в то, что Rust будут изучать в ВУЗах и на него начнут переходить к примеру с C#?


            1. beduin01 Автор
              20.04.2015 14:17

              Кстати вот еще ссылка интересная www.larsan.net/2014/07/06/go-vs-d-vs-java8


            1. VlK
              20.04.2015 14:32

              а на Джаве код реально длинней, чем какой-либо другой :) Но Джава высоко в топе популярных языков, выше Си, С++ и всех прочих благодаря популярности в корпоративном софте.

              Ибо дело не только в сравнении числа строчек на популярный алгоритм.


    1. beduin01 Автор
      20.04.2015 11:47
      +1

      >как в таковом — многие фички, которые так привлекали, перекочевали в новые C++

      Тут проблема в том, что D тоже не стоит на месте и новые фишки в него добавлять быстрее и проще, чем пытаться расширить С++. SDC хороший тому пример. Чистый идиоматический код на D оказался значительно компактнее и проще кода на С++ (30K против 300K строк кода).

      Фактически если у LDC появится полная поддержка C/C++ библиотек из коробки, то можно будет говорить о том, что практической потребности в самом С++ не будет, кроме случаев когда люди принципиально не хотят переучиваться.


      1. wwwriter
        20.04.2015 12:09
        +2

        Ох, как я понимаю ваши эмоции. Действительно, в учебнике Александреску делает большой акцент на том, что компилятор должен делать практически всю грязную работу, и что программист не должен заботится о памяти, контроле типов, указателях (их не должно быть, хотя они широко используются внутри языка) и т.д. Но на деле, это очень плохо реализовано. Сам язык очень не плохо поддерживает LDC2, но с крупными библиотеками совсем беда, они написаны в основном для GDC и DMD, из которых первый генерирует огромные бинарники (в Linux точно), а второй генерирует просто плохой код, очень далекий по качеству от LDC2. Вот такой замкнутый круг.
        При этом всём ещё и наблюдается тенденция создать кучу компиляторов, библиотек, тулкитов, биндов, которые по факту делают одно и тоже, при этом далеко не всегда хорошо. И это только касательно поддержи языка. Речь о «бурном развитии» даже идти не может.


  1. pravic
    20.04.2015 23:05

    Дайджест событий из мира D

    Также для D недавно сделали binding к Sciter.


  1. getId
    21.04.2015 04:59
    +1

    Дайджест событий из мира :D :D