Вийшов Crystal 0.34.0

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

Починаючи з версії 0.34.0, мова офіційно починає твердою ходою рухатися у бік першого справжнього релізу (тобто версії 1.0).

У новій версії Crystal можна відзначити такі зміни та покращення в порядку їх важливості:

  • В API додано нову бібліотеку журналування Ввійти, Яка, на відміну від старої, вміє направляти повідомлення в різні бекенди і по-різному ці повідомлення фільтрувати в залежності від джерела.

  • Рудименти зі світу розробки на Сі, Errno и WinError, що використовувалися для примітивів введення-виведення, йдуть у минуле завдяки ієрархії винятків IO::Error (Втім, використовувати Errno ніхто поки не забороняє).

  • Прибрано автоматичну підстановку else nil з оператора case/when/else. Це зроблено для того, щоб унеможливити випадковий пропуск розробником однієї з гілок коли при матчингу з детермінованих випадків на кшталт enum'ів та проходу за типами з Union'у. Тобто, простіше кажучи, такий код більше працювати не буде без вказівки ще одного коли (when Char) або завдання ще-гілки:

a = 1 | 'x' || "foo"
case a
when Int32
#…
when String
#…
кінець

  • Опція компілятора disable_overflow більше недоступне. Для операцій із переповненням використовуйте методи &+, &-, &*.

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

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

  • Додана підтримка LLVM 10, Що за ідеєю дасть нам деяке зростання продуктивності, стабільності, etc.

… і безліч інших, на мій суб'єктивний погляд, менш суттєвих покращень.

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

Джерело: linux.org.ru

Додати коментар або відгук