D'Verëffentlechung vun der Crystal 1.2 Programmiersprache gouf publizéiert, d'Entwéckler vun deenen versichen d'Bequemlechkeet vun der Entwécklung an der Ruby Sprooch mat der héijer Applikatioun Performance charakteristesch vun der C Sprooch ze kombinéieren. Dem Crystal seng Syntax ass no, awer net voll kompatibel mat Ruby, obwuel e puer Ruby Programmer ouni Ännerung lafen. De Compiler Code ass a Crystal geschriwwen a verdeelt ënner der Apache 2.0 Lizenz.
D'Sprooch benotzt statesch Typprüfung, implementéiert ouni d'Notzung explizit d'Zorte vu Variabelen a Methodargumenter am Code ze spezifizéieren. Crystal Programmer ginn an ausführbar Dateie kompiléiert, mat Makroen evaluéiert a Code generéiert zur Kompiléierungszäit. A Crystal Programmer ass et méiglech Bindungen ze verbannen, déi an C geschriwwe sinn. Paralleliséierung vun der Code Ausféierung gëtt mat dem Schlësselwuert "Spawn" ausgeführt, wat Iech erlaabt eng Hannergrondtask am asynchrone Modus auszeféieren ouni den Haaptfuedem ze blockéieren, a Form vu liichtgewiichtege Fuedem genannt Faseren.
D'Standardbibliothéik bitt eng grouss Rei vu gemeinsame Funktiounen, dorënner Tools fir d'Veraarbechtung vu CSV, YAML a JSON, Komponenten fir HTTP-Server ze kreéieren, a WebSocket Support. Wärend dem Entwécklungsprozess ass et bequem de Kommando "Crystal Play" ze benotzen, deen e Webinterface generéiert (localhost: 8080 par défaut) fir interaktiv Ausféierung vum Code an der Crystal Sprooch.
Main Ännerungen:
- D'Fäegkeet bäigefüügt fir eng Ënnerklass vun enger generescher Klass un en Element vun enger Elterenklass ze ginn. Klass Foo(T); end class Bar(T) < Foo(T); Enn x = Foo x = Bar
- Makroen kënnen elo en Ënnersträich benotzen fir e Wäert an enger for-Loop ze ignoréieren. {% fir _, v, i an {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% Enn %}
- Added "file_exists?"-Methode fir Makroen. fir d'Existenz vun engem Fichier ze kontrolléieren.
- D'Standardbibliothéik ënnerstëtzt elo 128-Bit ganz Zuelen.
- Added Indexable :: Mutable (T) Modul mat Ëmsetzung vun fortgeschratt Operatiounen fir Kollektiounen wéi BitArray an Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = richteg # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
- Added XML :: Node#namespace_definition Method fir e spezifeschen Nummraum aus XML ze extrahieren.
- D'IO#write_utf8 an URI.encode Methoden goufen ofgeschaaft a sollen duerch IO#write_string an URI.encode_path ersat ginn.
- Ënnerstëtzung fir 32-Bit x86 Architektur gouf op den zweeten Niveau geplënnert (fäerdeg Pakete ginn net méi generéiert). En Transfert op den éischte Niveau vun der Ënnerstëtzung fir d'ARM64 Architektur gëtt virbereet.
- D'Aarbecht geet weider fir voll Ënnerstëtzung fir d'Windows Plattform ze garantéieren. Zousätzlech Ënnerstëtzung fir Windows Sockets.
- En universelle Package gouf fir macOS bäigefüügt, souwuel op Apparater mat x86 Prozessoren an op Ausrüstung mam Apple M1 Chip.
Source: opennet.ru