Liberazione di a lingua di prugrammazione Crystal 1.2

A liberazione di a lingua di prugrammazione Crystal 1.2 hè stata publicata, i sviluppatori di quale anu pruvatu à cumminà a cunvenzione di sviluppà in a lingua Ruby cù l'altu rendiment di l'applicazione inherente in a lingua C. A sintassi di Crystal hè vicinu à, ma micca cumplettamente cumpatibile cù, Ruby, malgradu u fattu chì certi prugrammi di ruby ​​funzionanu senza rielaborazione. U codice compilatore hè scrittu in Crystal è distribuitu sottu a licenza Apache 2.0.

A lingua usa a verificazione di tipu static, implementata senza a necessità di specificà esplicitamente i tipi di variàbili è l'argumenti di u metudu in u codice. I prugrammi Crystal sò compilati in fugliali eseguibili, cù valutazione macro è generazione di codice in tempu di compilazione. In i prugrammi Crystal, hè permessu di cunnette ligami scritti in lingua C. Parallelizazione di l'esekzione di u codice hè realizatu utilizendu a chjave "spawn", chì permette di eseguisce un compitu di fondo in modu asincronu, senza bluccà u filu principale, in forma di filamenti ligeri chjamati fibre (Fibra).

A biblioteca standard furnisce un grande inseme di funzioni generiche, cumprese l'arnesi per a gestione di CSV, YAML è JSON, cumpunenti per a custruzione di servitori HTTP è supportu WebSocket. Durante u prucessu di sviluppu, hè cunvenutu à aduprà u cumandamentu "crystal play", chì genera una interfaccia web (localhost: 8080 per difettu) per l'esekzione di codice interattivu in a lingua Crystal.

I cambiamenti principali:

  • Aggiunta a capacità di assignà una subclasse di una classa generica à un elementu di una classa parent. classe Foo(T); fine class Bar(T) < Foo(T); fine x = Foo x = Bar
  • I macros ponu avà aduprà un underscore per ignurà un valore in un loop for. {% per _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Hè aghjuntu u metudu "file_exists?" à i macros. per verificà l'esistenza di un schedariu.
  • A libreria standard supporta ora interi 128-bit.
  • Added Indexable::Mutable (T) Modulu cù implementazione di operazioni avanzate per cullezzione cum'è BitArray è Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Aggiuntu XML::Node#namespace_definition metudu per estrattà un spaziu di nome specificu da XML.
  • I metudi IO#write_utf8 è URI.encode sò stati obsoleti è deve esse rimpiazzati da IO#write_string è URI.encode_path.
  • U supportu per l'architettura x32 86-bit hè stata spustata à u sicondu livellu (i pacchetti pronti ùn sò più generati). Un trasferimentu à u primu livellu di supportu per l'architettura ARM64 hè preparatu.
  • U travagliu cuntinueghja per assicurà un supportu tutale per a piattaforma Windows. Aghjunghje supportu per i sockets di Windows.
  • Un pacchettu universale hè statu aghjuntu per macOS, chì travaglia sia in i dispositi cù processori x86 è in l'equipaggiu cù u chip Apple M1.

Source: opennet.ru

Add a comment