Wydano Crystal 0.34.0

Wydano nową wersję Crystal, kompilowanego języka programowania o składni Ruby, którego główne cechy to runtime z „wbudowaną” pętlą zdarzeń, w której wszystkie operacje wejścia-wyjścia są asynchroniczne, wsparcie dla wielowątkowości (aktualnie włączane flagą podczas kompilacji) oraz wyjątkowo prosta i wygodna praca z bibliotekami w C.

Od wersji 0.34.0 język oficjalnie zaczyna pewnym krokiem zmierzać w stronę pierwszego prawdziwego wydania (czyli wersji 1.0).

W nowej wersji Crystal można zauważyć następujące zmiany i usprawnienia w kolejności ich ważności:

  • W API dodana została nowa biblioteka logowania Log, która, w przeciwieństwie do starej, potrafi kierować komunikaty do różnych backendów i w różnorodny sposób je filtrować w zależności od „źródła”.

  • Resztki z świata programowania w C, Errno i WinError, używane do prymitywów wejścia-wyjścia, znikają w przeszłość dzięki hierarchii wyjątków IO::Error (nikt jednak nie zabrania na razie korzystania z Errno).

  • Usunięto automatyczne dodawanie else nil z operatora case/when/else. Zostało to zrobione, aby wykluczyć przypadkowe pominięcie przez programistę jednej z gałęzi when przy dopasowywaniu do determinowanych przypadków podobnych do enumów i przechodzenia przez typy z Uniona. Mówiąc prościej, taki kod nie będzie działać bez wskazania jeszcze jednego when (when Char) lub zdefiniowania inaczej-gałęzi:

a = 1 || 'x' || "foo"
case a
when Int32
# …
when String
# …
end

  • Opcja kompilatora disable_overflow nie jest już dostępna. Do operacji z przepełnieniem używaj metod &+, &-, &*.

  • Array#fill teraz działa wyjątkowo szybko dzięki zamianie głupiego cyklu na jedną prostą funkcję memset;

  • Menadżer shardów (pakietów), określanych, jak to paradoskalnie brzmi, shards, teraz korzysta z szybszego i wydajniejszego algorytmu zaspokajania zależności Molinillo, zaczerpniętego z CocoaPods (Swift) i Builder (Ruby).

  • Dodano wsparcie dla LLVM 10, co teoretycznie powinno przynieść nam pewien wzrost wydajności, stabilności itd.

… oraz wiele innych, które moim subiektywnym zdaniem, nie są mniej istotne.

Chciałbym zauważyć, że Crystal to język oparty na LLVM, który pozwala na pisanie aplikacji często szybciej, łatwiej i zwięźlej niż jego interpretowane 'krewne', a przy tym produkuje całkiem zwinny plik binarny. Na tle Golanga wyróżnia się jako pełnoprawny język obiektowy, z obsługą generyków i bardzo prostą oraz zrozumiałą składnią. Pod względem przeznaczenia jest w dużej mierze analogiczny do Nima, ale wyraźnie skupia się na praktycznych zastosowaniach 'tu i teraz', dzięki czemu oferuje w swoim API wiele dobrze udokumentowanych, wygodnych i jakościowych narzędzi, wspieranych przez programistów języka, co czyni je dość stabilnymi.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster