Liberazione di a lingua di prugrammazione Crystal 1.5

A liberazione di a lingua di prugrammazione Crystal 1.5 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:

  • U compilatore hà aghjustatu un verificatu di a currispundenza trà i nomi di l'argumenti in l'implementazione di u metudu astrattu è in a so definizione. A discrepanza di u nome genera avà un avvisu: classa astratta FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo (name : Int32) : Nil p name end end 6 | def foo(name: Int32): Nil ^— Attenzione: u paràmetru posizionale 'name' currisponde à u paràmetru 'number' di u metudu overrided FooAbstract#foo (number: Int32), chì hà un nome diversu è pò influenzà u passaghju di l'argumentu chjamatu.
  • Quandu assignate u valore di una variabile à un argumentu di un metudu micca tipatu, quellu argumentu hè avà limitatu da u tipu di quella variabile. class Foo @x : Int64 def initialize (x) @x = x # parametru x serà di tipu @x end end
  • Hè permessu di aghjunghje annotazioni à i paràmetri di metudi o macros. def foo(@[MaybeUnused] x); fine #OK
  • Aghjunghje supportu per l'usu di custanti cum'è indici è nomi in tuple. KEY = "s" foo = {s: "String", n: 0} mette foo[KEY].size
  • Aggiunti novi metudi File#delete? à l'API File per sguassà i fugliali è i cartulari. è Dir#delete?, chì torna falsi se u schedariu o u cartulare ùn esiste micca.
  • Rinfurzata a prutezzione di u metudu File.tempfile, chì avà ùn permette micca caratteri nulli in strings chì formanu un nome di schedariu.
  • Aggiunta a variabile d'ambiente NO_COLOR per disattivà l'evidenziazione di u culore in u compilatore è l'interprete.
  • U travagliu significativamente miglioratu in u modu di interprete.

Source: opennet.ru

Add a comment