A Crystal programozási nyelv kiadása 1.2

Megjelent a Crystal 1.2 programozási nyelv kiadása, melynek fejlesztői igyekeznek ötvözni a Ruby nyelven való fejlesztés kényelmét a C nyelvben rejlő magas alkalmazásteljesítménnyel. A Crystal szintaxisa közel áll a Rubyhoz, de nem teljesen kompatibilis vele, annak ellenére, hogy egyes rubinprogramok átdolgozás nélkül futnak. A fordítókód Crystal nyelven íródott, és az Apache 2.0 licenc alatt kerül terjesztésre.

A nyelv statikus típusellenőrzést használ, anélkül, hogy kifejezetten meg kellene adni a változók típusát és a metódus argumentumait a kódban. A Crystal programokat végrehajtható fájlokba fordítják le, makróértékeléssel és fordítási időben kódgenerálással. A Crystal programokban megengedett a C nyelven írt kötések összekapcsolása. A kódvégrehajtás párhuzamosítása a "spawn" kulcsszó használatával történik, amely lehetővé teszi egy háttérfeladat futtatását aszinkron módban, a főszál blokkolása nélkül, könnyű szálak, úgynevezett fibers (Fiber) formájában.

A szabványos könyvtár általános funkciók széles készletét kínálja, beleértve a CSV, a YAML és a JSON kezelésére szolgáló eszközöket, a HTTP-kiszolgálók építéséhez szükséges összetevőket és a WebSocket támogatást. A fejlesztési folyamat során kényelmesen használható a „crystal play” parancs, amely webes felületet (alapértelmezés szerint localhost:8080) generál az interaktív kódvégrehajtáshoz Crystal nyelven.

Nagy változások:

  • Hozzáadtuk a lehetőséget, hogy egy általános osztály alosztályát hozzárendeljük egy szülőosztály eleméhez. osztály Foo(T); végosztály Bar(T) < Foo(T); vége x = Foo x = Bar
  • A makrók most használhatnak aláhúzást, hogy figyelmen kívül hagyják a for ciklusban lévő értékeket. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • A „file_exists?” metódus hozzáadva a makrókhoz. hogy ellenőrizze egy fájl létezését.
  • A szabványos könyvtár mostantól támogatja a 128 bites egész számokat.
  • Hozzáadott Indexable::Mutable(T) modul speciális műveletek végrehajtásával olyan gyűjteményekhez, mint a BitArray és a Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = igaz # ba = BitArray[1000000000] ba.forgatás!(-1) # ba = BitArray[0100000000]
  • Hozzáadott XML::Node#namespace_definition metódus egy adott névtér XML-ből való kinyeréséhez.
  • Az IO#write_utf8 és az URI.encode metódus elavult, és az IO#write_string és az URI.encode_path paraméterekkel kell helyettesíteni.
  • A 32 bites x86 architektúra támogatása a második szintre került (a kész csomagok már nem jönnek létre). Az ARM64 architektúra támogatásának első szintjére való átállás előkészítés alatt áll.
  • Továbbra is folyik a munka a Windows platform teljes támogatásának biztosítása érdekében. Hozzáadott támogatás a Windows socketekhez.
  • Egy univerzális csomag került hozzáadásra a macOS számára, amely mind az x86-os processzorral rendelkező eszközökön, mind az Apple M1 chippel rendelkező berendezéseken működik.

Forrás: opennet.ru

Hozzászólás