Vydanie programovacieho jazyka Crystal 1.5

Bolo zverejnené vydanie programovacieho jazyka Crystal 1.5, ktorého vývojári sa snažia spojiť pohodlie vývoja v jazyku Ruby s vysokým aplikačným výkonom charakteristickým pre jazyk C. Syntax Crystalu je blízka, ale nie je plne kompatibilná s Ruby, hoci niektoré Ruby programy bežia bez úprav. Kód kompilátora je napísaný v jazyku Crystal a distribuovaný pod licenciou Apache 2.0.

Jazyk využíva statickú kontrolu typu, implementovanú bez potreby explicitne špecifikovať typy premenných a argumentov metód v kóde. Programy Crystal sú kompilované do spustiteľných súborov, pričom makrá sa vyhodnocujú a kód sa generuje v čase kompilácie. V programoch Crystal je možné pripojiť väzby napísané v C. Paralelizácia vykonávania kódu sa vykonáva pomocou kľúčového slova „spawn“, ktoré vám umožňuje spustiť úlohu na pozadí asynchrónne, bez blokovania hlavného vlákna, vo forme ľahkých vlákien nazývaných vlákna.

Štandardná knižnica poskytuje veľkú sadu bežných funkcií vrátane nástrojov na spracovanie CSV, YAML a JSON, komponentov na vytváranie serverov HTTP a podpory WebSocket. Počas procesu vývoja je vhodné použiť príkaz „crystal play“, ktorý vygeneruje webové rozhranie (štandardne localhost:8080) na interaktívne spúšťanie kódu v jazyku Crystal.

Hlavné zmeny:

  • Kompilátor pridal kontrolu zhody názvov argumentov pri implementácii abstraktnej metódy a pri jej definícii. Ak dôjde k nezhode názvu, teraz sa zobrazí varovanie: abstraktná trieda FooAbstract abstract def foo(číslo : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(meno: Int32) : Nil ^— Varovanie: pozičný parameter 'názov' zodpovedá parametru 'číslo' prepísanej metódy FooAbstract#foo(číslo: Int32), ktorá má iný názov a môže ovplyvniť odovzdávanie pomenovaného argumentu
  • Keď k hodnote premennej priraďujete argument netypovej metóde, argument je teraz obmedzený na typ tejto premennej. class Foo @x : Int64 def initialize(x) @x = x # parameter x bude napísaný @x end end
  • Umožňuje pridávať anotácie k parametrom metód alebo makier. def foo(@[MaybeUnused] x); koniec # OK
  • Pridaná podpora pre používanie konštánt ako indexov a mien v niciach. KEY = "s" foo = {s: "String", n: 0} dáva foo[KEY].size
  • Do File API boli pridané nové metódy File#delete? na mazanie súborov a adresárov. a Dir#delete?, ktoré vrátia hodnotu false, ak súbor alebo adresár chýba.
  • Posilnená bola ochrana metódy File.tempfile, ktorá teraz nepovoľuje nulové znaky v riadkoch tvoriacich názov súboru.
  • Pridaná premenná prostredia NO_COLOR, ktorá zakáže farebné zvýraznenie vo výstupe kompilátora a interpreta.
  • Práca v režime tlmočníka sa výrazne zlepšila.

Zdroj: opennet.ru

Pridať komentár