Rilascio del linguaggio di programmazione Crystal 1.2

È stato pubblicato il rilascio del linguaggio di programmazione Crystal 1.2, i cui sviluppatori stanno cercando di combinare la comodità dello sviluppo nel linguaggio Ruby con le elevate prestazioni applicative caratteristiche del linguaggio C. La sintassi di Crystal è vicina a Ruby, ma non completamente compatibile con, sebbene alcuni programmi Ruby vengano eseguiti senza modifiche. Il codice del compilatore è scritto in Crystal e distribuito sotto la licenza Apache 2.0.

Il linguaggio utilizza il controllo del tipo statico, implementato senza la necessità di specificare esplicitamente i tipi di variabili e gli argomenti del metodo nel codice. I programmi Crystal vengono compilati in file eseguibili, con le macro valutate e il codice generato in fase di compilazione. Nei programmi Crystal è possibile collegare collegamenti scritti in C. La parallelizzazione dell'esecuzione del codice viene effettuata utilizzando la parola chiave "spawn", che consente di eseguire un'attività in background in modo asincrono, senza bloccare il thread principale, sotto forma di thread leggeri chiamati fibre.

La libreria standard fornisce un ampio set di funzioni comuni, inclusi strumenti per l'elaborazione di CSV, YAML e JSON, componenti per la creazione di server HTTP e supporto WebSocket. Durante il processo di sviluppo, è conveniente utilizzare il comando “crystal play”, che genera un'interfaccia web (localhost:8080 per impostazione predefinita) per l'esecuzione interattiva del codice nel linguaggio Crystal.

Principali modifiche:

  • Aggiunta la possibilità di assegnare una sottoclasse di una classe generica ad un elemento di una classe genitore. classe Foo(T); classe finale Bar(T) < Foo(T); fine x = Foo x = Bar
  • Le macro ora possono utilizzare un carattere di sottolineatura per ignorare un valore in un ciclo for. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Aggiunto il metodo "file_exists?" alle macro. per verificare l'esistenza di un file.
  • La libreria standard ora supporta numeri interi a 128 bit.
  • Aggiunto il modulo Indexable::Mutable(T) con implementazione di operazioni avanzate per raccolte come BitArray e Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Aggiunto il metodo XML::Node#namespace_definition per estrarre uno spazio dei nomi specifico da XML.
  • I metodi IO#write_utf8 e URI.encode sono stati deprecati e dovrebbero essere sostituiti da IO#write_string e URI.encode_path.
  • Il supporto per l'architettura x32 a 86 bit è stato spostato al secondo livello (non vengono più generati pacchetti già pronti). È in preparazione il trasferimento al primo livello di supporto per l'architettura ARM64.
  • Il lavoro continua per garantire il pieno supporto per la piattaforma Windows. Aggiunto il supporto per i socket Windows.
  • Per macOS è stato aggiunto un pacchetto universale, che funziona sia su dispositivi con processori x86 che su apparecchiature con chip Apple M1.

Fonte: opennet.ru

Aggiungi un commento