LINUX.ORG.RU

Вышел Crystal 0.34.0

 , ,


3

5

Вышла новая версия Crystal, компилируемого языка программирования с синтаксисом Ruby, главные особенности которого — рантайм с «вмонтированным» event loop’ом, в котором все операции ввода-вывода асинхронны, поддержка многопоточности (пока включается флагом при компиляции) и исключительно простая и удобная работа с библиотеками на Си.

Начиная с версии 0.34.0, язык официально начинает твёрдой поступью двигаться в сторону первого настоящего релиза (т.е. версии 1.0).

В новой версии Crystal можно отметить следующие изменения и улучшения в порядке их важности:

  • В API добавлена новая библиотека журналирования Log, которая, в отличие от старой, умеет направлять сообщения в разные бекенды и по-разному эти сообщения фильтровать в зависимости от «источника».

  • Рудименты из мира разработки на Си, Errno и WinError, использовавшиеся для примитивов ввода-вывода, уходят в прошлое благодаря иерархии исключений IO::Error (впрочем, использовать Errno никто пока не запрещает).

  • Убрана автоматическая подстановка else nil из оператора case/when/else. Это сделано для того, чтобы исключить случайный пропуск разработчиком одной из веток when при матчинге по детерминированным случаям наподобие enum’ов и прохода по типам из Union’а. Т.е., проще говоря, вот такой код больше работать не будет без указания ещё одного when (when Char) или задания else-ветки:

a = 1 || 'x' || "foo"
case a
when Int32
  # ...
when String
  # ...
end
  • Опция компилятора disable_overflow больше недоступна. Для операций с переполнением используйте методы &+, &-, &*.

  • Array#fill теперь летает быстрее пули, благодаря замене туповатого цикла на один простой memset;

  • Менеджер шардов (пакетов), называющихся, как это ни парадоксально, shards, теперь использует более быстрый и эффективный алгоритм удовлетворения зависимостей Molinillo, подсмотренный в CocoaPods (Swift) и Builder (Ruby).

  • Добавлена поддержка LLVM 10, что по идее даст нам некий рост производительности, стабильности, etc.

… и множество других, на мой субъективный взгляд, менее существенных улучшений.

Хотелось бы отметить, что Crystal — это построенный на LLVM язык, позволяющий писать приложения порой быстрее, проще и лаконичнее, чем на его интерпретируемых «собратьях», и при этом получать на выходе довольно шустрый бинарник. На фоне Golang выделяется абсолютно полноценным ООП, поддержкой дженериков и очень простым и понятным синтаксисом. По своему назначению во многом аналогичен Nim, но при этом явным образом ориентирован на практическое применение «здесь и сейчас», благодаря чему имеет в своём API-арсенале множество нормально документированных удобных и качественных инструментов, поддерживаемых разработчиками языка и потому весьма стабильных.

>>> Анонс в блоге Crystal

★★★★★

Проверено: cetjs2 ()
Последнее исправление: Virtuos86 (всего исправлений: 4)
Ответ на: комментарий от Novator

Язык должен сразу со всеми этими библиотеками появляться, или что?

Алсо, в продуксьёне полно проектов, которым всё названное нафиг не нужно.

anonymous
()
Ответ на: комментарий от anonymous

Язык должен сразу со всеми этими библиотеками появляться, или что?

Частично он прав.
Похоже для использования сишных библиотек нужно ваять bindings.
Впрочем могу быть и не прав.
Как на самом деле?

anonymous
()
Ответ на: комментарий от anonymous

Для сишных библиотек не сложно разработать утилиту, которая может сгенерировать исходник bindins. Кто это сделает?

Вот в чем вопрос

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Для сишных библиотек не сложно разработать утилиту, которая может сгенерировать исходник bindins.

Для C++ кстати также возможно.
Лет пять назад для всего API из MSDN сгенерировал *.h, *.cpp и *.idl.

ЛОЛ.
Через какое-то время решил не использовать API Microsoft.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Лет пять назад для всего API из MSDN сгенерировал *.h, *.cpp и *.idl.

По существу реализовал ActiveX для дергания любого API Microsoft из COM /для 1С/.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Язык должен сразу со всеми этими библиотеками появляться, или что?

да, теперь порог вхождения для заинтересовывания языком возрос, ибо выросла конкуренция, все сразу требуют готовые библиотеки, ide, поддержку встраиваемых устройств, совместимость между версиями, стабильное корпоративное финансирование и т.д.

anonymous
()
Ответ на: комментарий от anonymous

да, теперь порог вхождения для заинтересовывания языком возрос, ибо выросла конкуренция, все сразу требуют готовые библиотеки, ide, поддержку встраиваемых устройств, совместимость между версиями, стабильное корпоративное финансирование и т.д.

Обобщим.
Ныне имеется некая набор софта, технологий, библиотек, … которые используются многими разработчики «дефакто».
Поэтому если новый язык программирования не обеспечивает bindings к этому «добру», то разработчики не будут его использовать.

Ныне «хороший тон» при разработке любой библиотеки сразу предоставить с десяток bindings для популярных языков программирования.
Вообщем

Снежный ком, падающий с горы

Владимир

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.