К версии 0.23 язык представлял собой весьма наивный концепт быстрого и простого языка.

И это было очень удобно при разработке микросервисов, таких же простых, как на Ruby, но более быстрых, чем на Go (в большинстве применений).

К сожалению, в языке (вернее, в его стандартной библиотеке) нашлось несколько проблем, мешающих использовать его в современном мире. Основная проблема — HashDoS.

Я подошёл к этому с одной стороны, реализовав нормализацию чисел, например, но тут свыше пришел ангел по имени @funny-falcon, и уютный мирок Crystal офигел. Один pull request, учитывающий особенности LLVM, генерации хэшей, сами хэши, JSON и кучу иного — стал предметом обсуждений более чем на 200 комментариев, что для маленького проекта вообще нонсенс.

В итоге pull request закрыт (дикая нагрузка).

Но почти все его идеи уже реализованы и находятся в Crystal master.

Теперь на нем уже можно писать код, который можно отдавать наружу.

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


  1. Coocos
    26.11.2017 16:18

    Многопоточность появилась? В документации нашел только Fiber (все в одном потоке ОС) и Fork (не понятно как синхронизироваться между процессамии).


    1. akzhan Автор
      26.11.2017 21:09

      в процессе, для IO-bound пока некритично.


  1. Sirion
    26.11.2017 20:04

    Батенька, для постов такого размера лучше использовать твиттер.


    1. akzhan Автор
      26.11.2017 21:08

      Я и сам удивился, почему он тут, Видимо, эмоции.


  1. antage
    27.11.2017 03:26

    таких же простых, как на Ruby, но более быстрых, чем на Go (в большинстве применений)

    А за счёт чего они получаются более быстрыми, чем на Go?


    1. akzhan Автор
      27.11.2017 22:10

      Crystal является frontend-компилятором для LLVM, который сам по себе является высококачественной инфраструктурой для компиляции и исполнения. Ресурсов в качество работы LLVM вложено очень много.


      Для сборки мусора используется консервативный сборщик мусора BoehmGC, который достаточно неплохо себя зарекомендовал (хотя появляются интересные конкуренты — https://github.com/crystal-lang/crystal/issues/5271) .


      Собственно, максимальный профит по производительности мы получаем от LLVM.


      Плюс постоянная оптимизация stdlib (и она, и сам компилятор, написаны на Crystal, что резко уменьшает стоимость владения).