Vydání programovacího jazyka Crystal 1.2

Bylo zveřejněno vydání programovacího jazyka Crystal 1.2, jehož vývojáři se snaží spojit pohodlí vývoje v jazyce Ruby s vysokým aplikačním výkonem charakteristickým pro jazyk C. Syntaxe Crystal je blízká, ale není plně kompatibilní s Ruby, ačkoli některé Ruby programy běží bez úprav. Kód kompilátoru je napsán v Crystal a distribuován pod licencí Apache 2.0.

Jazyk používá statickou kontrolu typu, implementovanou bez nutnosti explicitně specifikovat typy proměnných a argumenty metod v kódu. Programy Crystal jsou kompilovány do spustitelných souborů, přičemž makra jsou vyhodnocována a kód je generován v době kompilace. V programech Crystal je možné propojit vazby napsané v C. Paralelizace spouštění kódu se provádí pomocí klíčového slova „spawn“, které umožňuje spouštět úlohu na pozadí asynchronně, bez blokování hlavního vlákna, ve formě odlehčených vláken nazývaných vlákna.

Standardní knihovna poskytuje velkou sadu běžných funkcí, včetně nástrojů pro zpracování CSV, YAML a JSON, komponent pro vytváření HTTP serverů a podpory WebSocket. Při vývoji je vhodné použít příkaz „crystal play“, který vygeneruje webové rozhraní (standardně localhost:8080) pro interaktivní spouštění kódu v jazyce Crystal.

Hlavní změny:

  • Přidána možnost přiřadit podtřídu generické třídy prvku nadřazené třídy. třída Foo(T); koncová třída Bar(T) < Foo(T); konec x = Foo x = Bar
  • Makra nyní mohou pomocí podtržítka ignorovat hodnotu ve smyčce for. {% pro _, v, i v {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Do maker přidána metoda „file_exists?“. pro kontrolu existence souboru.
  • Standardní knihovna nyní podporuje 128bitová celá čísla.
  • Přidán modul Indexable::Mutable(T) s implementací pokročilých operací pro kolekce, jako jsou BitArray a Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Přidána metoda XML::Node#namespace_definition pro extrahování konkrétního jmenného prostoru z XML.
  • Metody IO#write_utf8 a URI.encode byly zastaralé a měly by být nahrazeny IO#write_string a URI.encode_path.
  • Podpora 32bitové architektury x86 byla přesunuta na druhou úroveň (již se negenerují hotové balíčky). Připravuje se přechod na první úroveň podpory architektury ARM64.
  • Pokračují práce na zajištění plné podpory platformy Windows. Přidána podpora pro sokety Windows.
  • Pro macOS byl přidán univerzální balíček fungující jak na zařízeních s x86 procesory, tak na výbavě s čipem Apple M1.

Zdroj: opennet.ru

Přidat komentář