Sortie de Crystal 0.34.0

La nouvelle version de Crystal, un langage de programmation compilé au syntaxe Ruby, présente des caractéristiques principales telles qu'un runtime avec une boucle d'événements intégrée, où toutes les opérations d'entrée-sortie sont asynchrones, la prise en charge du multithreading (pour l'instant activée par un drapeau lors de la compilation) et une gestion de bibliothèque C exceptionnellement simple et pratique.

À partir de la version 0.34.0, le langage commence officiellement à avancer fermement vers sa première vraie version (c'est-à-dire la version 1.0).

Dans la nouvelle version de Crystal, on peut noter les changements et améliorations suivants par ordre d'importance :

  • Une nouvelle bibliothèque de journalisation a été ajoutée à l'API Log, qui, contrairement à l'ancienne, peut diriger les messages vers différents backends et filtrer ces messages de manière variable selon leur « source ».

  • Les vestiges du monde du développement en C, Errno et WinError, qui étaient utilisés pour les primitives d'entrée-sortie, disparaissent grâce à la hiérarchie des exceptions IO::Error (cependant, personne n'interdit encore l'utilisation d'Errno).

  • L'insertion automatique de else nil est supprimée de l'instruction case/when/else. Cela a été fait pour éviter que le développeur ne passe accidentellement l'une des branches when lorsqu'il correspond à des cas déterministes tels que des enums et le passage par les types d'un Union. En d'autres termes, un tel code ne fonctionnera plus sans indiquer un autre when (when Char) ou sans spécifier une sinon-branche :

a = 1 || ‘x’ || "foo"
case a
when Int32
# …
when String
# …
end

  • L'option du compilateur disable_overflow n'est plus disponible. Pour les opérations de débordement, utilisez les méthodes &+, &-, &*.

  • Array#fill est désormais aussi rapide qu'une balle, grâce à la substitution d'une boucle peu efficace par un simple memset;

  • Le gestionnaire de paquets, étrangement nommé shards, utilise maintenant un algorithme de satisfaction des dépendances plus rapide et efficace, Molinillo, inspiré de CocoaPods (Swift) et Builder (Ruby).

  • Ajout du support de LLVM 10, ce qui devrait théoriquement nous apporter un certain gain de performance, de stabilité, etc.

… et de nombreuses autres améliorations, à mon avis subjectif, moins significatives.

Il est à noter que Crystal est un langage construit sur LLVM, permettant d'écrire des applications souvent plus rapidement, simplement et de manière plus concise que ses homologues interprétés, tout en offrant un binaire assez performant. Par rapport à Golang, il se distingue par un OOP pleinement fonctionnel, la prise en charge des génériques et une syntaxe très simple et compréhensible. En termes de fonctionnalité, il est en grande partie similaire à Nim, mais clairement orienté vers une utilisation pratique "ici et maintenant", ce qui lui confère un arsenal d'API riche en outils bien documentés, pratiques et de qualité, soutenus par les développeurs du langage et donc très stables.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster