Vyšel Crystal 0.34.0

Byla vydána nová verze Crystal, kompilovaného programovacího jazyka se syntaxí Ruby, jehož hlavními rysy jsou runtime s „vestavěným“ event loopem, v němž jsou všechny operace vstupu a výstupu asynchronní, podpora vícerozměrnosti (zatím se aktivuje flagem při kompilaci) a výjimečně jednoduchá a pohodlná práce s knihovnami v C.

Od verze 0.34.0 jazyk oficiálně začíná pevně postupovat k první skutečné verzi (tj. verze 1.0).

V nové verzi Crystal lze zaznamenat následující změny a vylepšení podle jejich důležitosti:

  • Do API byla přidána nová knihovna pro protokolování Log, která, na rozdíl od staré, umí směrovat zprávy do různých backendů a podle „zdroje“ tyto zprávy různě filtrovat.

  • Relikty ze světa vývoje v C, Errno a WinError, používané pro primitivy vstupu a výstupu, ustupují do minulosti díky hierarchii výjimek IO::Error (přesto však nikdo zatím nezakazuje používat Errno).

  • Bylo odstraněno automatické doplňování else nil z operátoru case/when/else. To bylo provedeno, aby se vyloučilo náhodné opomenutí jedné z vět programátorem when při matchování podle determinovaných případů jako například enumerace a průchodu přes typy z Union. Jinými slovy, takový kód již nebude fungovat bez uvedení dalšího when (when Char) nebo zadání else-větve:

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

  • Možnost kompilátoru disable_overflow již není k dispozici. Pro operace s přetečením použijte metody &+, &-, &*.

  • Array#fill nyní létá rychlostí kulky, díky nahrazení hloupého cyklu jedním jednoduchým memset;

  • Manažer shardů (balíčků), nazývaných, což je paradoxní, shards, nyní používá rychlejší a efektivnější algoritmus pro uspokojení závislostí Molinillo, převzatý z CocoaPods (Swift) a Builder (Ruby).

  • Byla přidána podpora LLVM 10, což by mělo teoreticky přinést určitý růst výkonu, stability atd.

… a mnohá další vylepšení, která se podle mého subjektivního názoru zdají méně zásadní.

Je třeba poznamenat, že Crystal je jazyk postavený na LLVM, který umožňuje psaní aplikací někdy rychleji, jednodušeji a stručněji než jeho interpretované "související jazyky", a přitom produkuje poměrně rychlý binární soubor. Na rozdíl od Golang vyčnívá jako plnohodnotný OOP, podporuje generika a má velmi jednoduchou a přehlednou syntaxi. Co do účelu je do značné míry analogický jazyku Nim, ale jasně se zaměřuje na praktické použití "tady a teď", díky čemuž má ve svém API arzenálu řadu dobře dokumentovaných, užitečných a kvalitních nástrojů, které jsou podporovány vývojáři jazyka a proto jsou velmi stabilní.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster