È stata rilasciata una nuova versione di Crystal, un linguaggio di programmazione compilato con sintassi simile a Ruby. Le principali caratteristiche includono un runtime con un event loop 'integrato', in cui tutte le operazioni di input-output sono asincrone, supporto per la multithreading (attivabile con un flag durante la compilazione) e un'interazione estremamente semplice e comoda con le librerie in C.
Con la versione 0.34.0, il linguaggio inizia ufficialmente a muoversi con fermezza verso il primo reale rilascio (cioè la versione 1.0).
Nella nuova versione di Crystal si possono notare le seguenti modifiche e miglioramenti in ordine di importanza:
È stata aggiunta una nuova libreria di registrazione all'API Log, che, a differenza della precedente, è in grado di indirizzare i messaggi verso diversi backend e di filtrare questi messaggi in modi diversi, a seconda della 'fonte'.
Rudimenti dal mondo dello sviluppo in C, Errno e WinError, utilizzati per i primitivi di input/output, stanno scomparendo grazie alla gerarchia delle eccezioni IO::Error (peraltro, al momento, nessuno vieta di utilizzare Errno).
È stata rimossa l'inserzione automatica di else nil dall'operatore case/when/else. Questo è stato fatto per escludere la possibilità che uno sviluppatore possa accidentalmente saltare uno dei rami. when nel matching dei casi deterministici, come gli enum, e nel passaggio tra i tipi in un Union. In altre parole, codici come questo non funzioneranno più senza l'indicazione di un altro when (when Char) o assegnazione else- ramo:
a = 1 || 'x' || "foo"
case a
quando Int32
# …
quando String
# …
end
Opzione del compilatore disable_overflow non è più disponibile. Per le operazioni di overflow, utilizzare i metodi &+, &-, &*.
Array#fill ora vola più veloce di un proiettile, grazie alla sostituzione di un ciclo poco efficiente con un semplice memset;
Il gestore di shard (pacchetti), che si chiama, paradossalmente, shards, ora utilizza un algoritmo più veloce ed efficiente per la risoluzione delle dipendenze, Molinillo, ispirato a CocoaPods (Swift) e Builder (Ruby).
Aggiunto supporto per LLVM 10, il che dovrebbe darci un certo aumento di prestazioni, stabilità, ecc.
… e molte altre migliorie, a mio avviso, meno significative.
Vorrei sottolineare che Crystal è un linguaggio basato su LLVM, che permette di scrivere applicazioni talvolta più rapidamente, facilmente e in modo conciso rispetto ai suoi 'fratelli' interpretati, generando all'uscita un binario piuttosto veloce. Si distingue da Golang per un supporto OOP completo, per il supporto ai generics e per una sintassi molto semplice e chiara. Per scopo, è in gran parte analogo a Nim, ma è chiaramente orientato all'applicazione pratica 'qui e ora', il che gli consente di avere nel proprio arsenale API un gran numero di strumenti comodi, ben documentati e di qualità, supportati dagli sviluppatori del linguaggio e quindi molto stabili.
Fonte: linux.org.ru
