Sortie du langage de programmation Crystal 1.2

La version du langage de programmation Crystal 1.2 a été publiée, dont les développeurs tentent de combiner la commodité du développement en langage Ruby avec les performances applicatives élevées caractéristiques du langage C. La syntaxe de Crystal est proche de Ruby, mais pas entièrement compatible, bien que certains programmes Ruby s'exécutent sans modification. Le code du compilateur est écrit en Crystal et distribué sous la licence Apache 2.0.

Le langage utilise une vérification de type statique, implémentée sans qu'il soit nécessaire de spécifier explicitement les types de variables et les arguments de méthode dans le code. Les programmes Crystal sont compilés dans des fichiers exécutables, avec des macros évaluées et du code généré au moment de la compilation. Dans les programmes Crystal, il est possible de connecter des liaisons écrites en C. La parallélisation de l'exécution du code s'effectue à l'aide du mot-clé « spawn », qui permet d'exécuter une tâche en arrière-plan de manière asynchrone, sans bloquer le thread principal, sous forme de threads légers appelés fibres.

La bibliothèque standard fournit un large éventail de fonctions communes, notamment des outils de traitement CSV, YAML et JSON, des composants pour créer des serveurs HTTP et la prise en charge de WebSocket. Pendant le processus de développement, il est pratique d'utiliser la commande « crystal play », qui génère une interface Web (localhost : 8080 par défaut) pour l'exécution interactive du code dans le langage Crystal.

Les principaux changements:

  • Ajout de la possibilité d'attribuer une sous-classe d'une classe générique à un élément d'une classe parent. classe Foo(T); classe de fin Bar(T) < Foo(T); fin x = Foo x = Bar
  • Les macros peuvent désormais utiliser un trait de soulignement pour ignorer une valeur dans une boucle for. {% pour _, v, i dans {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% fin %}
  • Ajout de la méthode « file_exists ? » aux macros. pour vérifier l'existence d'un fichier.
  • La bibliothèque standard prend désormais en charge les entiers de 128 bits.
  • Ajout du module Indexable::Mutable(T) avec implémentation d'opérations avancées pour des collections telles que BitArray et Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Ajout de la méthode XML::Node#namespace_definition pour extraire un espace de noms spécifique de XML.
  • Les méthodes IO#write_utf8 et URI.encode sont obsolètes et doivent être remplacées par IO#write_string et URI.encode_path.
  • La prise en charge de l'architecture x32 86 bits a été déplacée au deuxième niveau (les packages prêts à l'emploi ne sont plus générés). Un transfert vers le premier niveau de support de l'architecture ARM64 est en préparation.
  • Les travaux se poursuivent pour garantir une prise en charge complète de la plate-forme Windows. Ajout de la prise en charge des sockets Windows.
  • Un package universel a été ajouté pour macOS, fonctionnant à la fois sur les appareils dotés de processeurs x86 et sur les équipements dotés de la puce Apple M1.

Source: opennet.ru

Ajouter un commentaire