A Crystal programming language 1.0 is now available.

Megjelent a Crystal programozási nyelv 1.0-ás verziója. A kiadás olyan elsődleges mérföldkőnek számít, amely 8 év munka eredményeit összegzi, és jelzi a nyelv stabilizálódását és a munkahelyi projektekben való felhasználásra való készségét. Az 1.x ágon biztosítják a visszafelé kompatibilitást, és garantálják, hogy a nyelv és a szabványos könyvtárakban olyan változások nem lesznek, amelyek negatívan befolyásolják a meglévő kód összeállítását és működését.

A 1.0.y kiadások csak javítófrissítéseket fognak tartalmazni, míg az 1.x.0 verziók új funkciókat és jelentős változásokat kínálnak, miközben megőrzik a kóddal való kompatibilitást. Az új ötletek és potenciálisan inkompatibilis változások külön ágon fejlődnek, amelynek alapján később elkészül a Crystal 2.0 kiadás. A Crystal 1.0 bizonyos funkciói előzetes státuszúak, és bár az 1.0 ágon megtalálhatóak, nem tartoznak az hivatalos támogatás alá. Ilyen funkciók közé tartozik az egy szálú végrehajtás, a Windows platformon való működés, és az ARM processzorral rendelkező rendszereken való használat.

Emlékeztetünk arra, hogy a Crystal fejlesztői azt próbálják ötvözni, hogy a Ruby nyelvben történő fejlesztés kényelmes legyen, valamint a C nyelvre jellemző magas alkalmazás teljesítményével. A Crystal szintaxisa hasonló a Ruby nyelvhez, de nem teljesen kompatibilis vele, bár bizonyos Ruby programok átdolgozás nélkül is futtathatóak. A fordító kódját Crystal nyelven írták, és az Apache 2.0 licenc alatt terjesztik.

A nyelvben statikus típusellenőrzést alkalmaznak, amely anélkül valósul meg, hogy a változók és a metódusok argumentumainak típusait expliciten kellene megadni a kódban. A Crystal nyelvű programok futtatható fájlokká fordítódnak, macrok számításával és kódgenerálással a fordítás során. A Crystal nyelvű programokban lehetséges C nyelven írt bekötések használata. A kód végrehajtásának párhuzamosítása a „spawn” kulcsszó segítségével valósul meg, amely lehetővé teszi a háttérfeladat aszinkron üzemmódban való elindítását, anélkül, hogy blokkolná a fő szálat, és ezek a könnyű szálak, amelyeket szálnak (Fiber) neveznek.

A szabványos könyvtár széleskörű funkciókészletet biztosít, beleértve a CSV, YAML és JSON fájlok kezelését, HTTP-szerverek létrehozását és WebSocket támogatást. Fejlesztés során kényelmes használni a "crystal play" parancsot, amely webes felületet generál (alapértelmezés szerint localhost:8080) a Crystal nyelvű kód interaktív futtatásához.

Főbb változások:

  • A tuple-ök esetében engedélyezett az indexált hivatkozás a különböző típusú elemekhez, mivel a fordító tudja, hogy melyik elem milyen típusú. Például: tuple = {1, "hello", 'x'} v = tuple[0..1] # eredményezi {1, "hello"} typeof(v) # => Tuple(Int32, String)
  • A karakterláncok és karakterliterálok esetében tilos a surrogát rövidítések használata az Unicode escape-sorozatokban, mint például "\uD834". Tetszőleges értékek kódolásához a "\x" notációt célszerű használni.
  • A szabványos könyvtárból egy nagy része eltávolításra került, amely korábban elavultnak volt jelölve. Beleértve a Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill módszereket és így tovább.
  • A getter és property makrók esetében mostantól kötelező megadni a visszatérési típust.
  • Az alapértelmezett kerekítési módszer megváltozott TIES_EVEN-re ("banki kerekítés", a legközelebbi egész számra, határeseteknél a legközelebbi páros számra). A Number#round metódushoz egy RoundingMode paraméter került hozzáadásra, amely lehetővé teszi a kerekítési módszer kiválasztását. A rendelkezésre álló módszerek között szerepel: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • A gyűjtemények biztosítják az Enumerable#flat_map és Iterator#flat_map működését vegyes típusú elemekkel.
  • Enum sorozatok sorosítása során mostaniak string-alakú alulvonásos reprezentációt használnak.
  • Az XML modulban meghatározott típusokat az struct használatáról class-ra váltották.
  • Biztonsági okokból leállt a Cookie nevek dekódolása, valamint a Cookie értékek kódolása és dekódolása (újrakódolás a keretrendszerek és alkalmazások feladata lett). Az HTTP::Cookies.from_headers módszert két változatra osztották. szerverek és kliensoldalra.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster