Выпущен язык программирования – простой, как Ruby, и «быстрый», как C

Открытое ПО
, Текст: Дмитрий Степанов
Разработчики выпустили первую значительную версию языка программирования Crystal, который с 2011 г. создается в качестве более эффективной альтернативы Ruby.

Релиз Crystal

Состоялся релиз языка программирования Crystal версии 1.0. Выпуск мажорной версии свидетельствует о стабилизации языка со стандартной библиотекой и, как следствие, его готовности к применению в «боевых условиях».

Разработчики гарантируют обратную совместимость в рамках ветки 1.x. Планируется выпуск как корректирующих (например, 1.0.1) версий, включающих исправления ошибок, так и минорных (например, 1.2.0), которые будут включать новые возможности. Введение новых возможностей, по словам разработчиков, не скажется на стабильности языка. Наиболее смелые идеи, предложенные сообществом, будут включены в отдельную ветку, на основе которой в перспективе будет сформирован Crystal 2.0

Crystal – это объектно-ориентированный язык программирования высокого уровня, во многом схожий по синтаксису со сравнительно простым и популярным Ruby. Однако, в отличие от интерпретируемого Ruby, Crystal компилируется в машинный код при помощи LLVM.

Состоялся релиз языка программирования Crystal 1.0, вдохновленного Ruby

По некоторым данным, производительность программ на Crystal может быть сопоставима с таковой для кода, написанного на низкоуровневом C. Язык C нередко применяется для написания ПО, высокая производительность которого критически важна, однако обладает значительно более высоким порогом вхождения по сравнению с Ruby, Crystal или, к примеру, Python.

Некоторые изменения в релизе

С выходом версии Crystal 1.0 в кортежах (tuples) теперь допускается обращение к элементам отличающихся типов по индексу, поскольку компилятор «знает», к какому типу относится каждый из них.

Стандартная библиотека подверглась зачистке от устаревших и не рекомендованных к использованию определений, в частности методов HTTP::Request, HTTP::WebSocket, HTTP::LogHandler; URI#full_path; Time::Span#duration.

Внесены изменения, касающиеся того, как обрабатываются cookie-файлы. Так, метод HTTP::Cookies.from_headers разделен на отдельные серверную и клиентскую версии. Значения и имена cookie больше не кодируются/декодируются по соображениям безопасности.

Некоторые из возможностей Crystal 1.0 реализованы, но официально пока не поддерживаются. В их числе моногопоточность (выполнение в среде с многоядерным процессором; активируется флагом -Dpreview_mt), поддержка Microsoft Windows, а также процессоров архитектуры ARM.

Особенности языка

Crystal, в отличие от Ruby, является языком со статической типизацией, то есть ошибки несоответствия типов переменных выявляются компилятором на стадии переработки кода программы в код машинный, а не в процессе его выполнения интерпретатором.

Тем не менее, синтаксис языка не требует указания конкретных типов переменных или аргументов метода, поскольку компилятор способен их самостоятельно вывести при помощи соответствующего механизма. Язык решает проблему автоматического управления памятью за счет использования «консервативного» сборщика мусора (garbage collector) Boehm GC. Crystal поддерживает макросы, дженерики, а также перегрузку методов и операторов.

Как и Ruby, Crystal предлагает независимую от операционной системы реализацию многопоточности. Легковесные потоки в Crystal называются «файберами» или «волокнами» (от англ. fiber – волокно; – прим. CNews). Потоки, как и в языках Go и Clojure, взаимодействуют друг с другом при помощи каналов, без необходимости прибегать к использованию общей памяти или блокировкам.

В Crystal реализован интерфейс вызова функций из библиотек на языке C, причем синтаксис взаимодействия с ними достаточно прост, чтобы позволяет без особого труда создавать библиотеки-обертки, а не писать весь код «с нуля».

Краткая история Crystal

Разработку Crystal (первоначально Joy) в 2011 г. начала аргентинская технологическая компания Manas Technology Solutions. Первый компилятор для него был написан на Ruby, однако в 2013 г. его переписали на самом Crystal. Первая официальная версия языка программирования увидела свет в 2014 г. Сегодня Crystal является проектом с открытым исходным кодом, который распространяется на условиях лицензии Apache License 2.0.

Стоит отметить, что, по данным официального сайта Crystal, одним из ключевых спонсоров проекта является скандально известная американская компания Nikola, которая занимается разработкой электромобилей, как и Tesla Илона Маска (Elon Musk). Обе они получили свое название в честь изобретателя Николы Тесла (Nikola Tesla), но при этом Tesla появилась на 11 лет раньше Nikola – в 2003 г. В сентябре 2020 г. CNews писал о череде судебных разбирательств между Nikola и Tesla, в ходе которых компании в течение почти трех лет пытаются выяснить, кто у кого украл дизайн грузового электрогрузовика.

Также в числе спонсоров Crystal значится шведская 84 codes, предоставляющая облачные сервисы. Кроме того, проект по-прежнему поддерживает Manas.