Dans les langages de programmation, il faut maintenant compter avec l’arrivée de Crystal. La communauté vient en effet de lancer la version 1.0 de ce langage qui s’inspire de Ruby. Sa mise en production signifie une stabilité et les créateurs assurent que les prochaines versions 1.x de Crystal seront rétro-compatibles sans changement radical.

Les utilisateurs peuvent ainsi s’attendre à ce que leur code Crystal sera toujours compilé et fonctionne sans incompatibilité notable. Les fonctionnalités du langage et de la bibliothèque standard ne seront pas supprimées ou modifiées d'une manière qui pourrait empêcher le code existant de compiler et de fonctionner. La bibliothèque standard sera améliorée en gardant à l'esprit la rétrocompatibilité.

Une courbe d’apprentissage plus rapide

La syntaxe de Crystal s'inspire de Ruby, ce qui rend le langage facile à lire et à écrire tout en réduisant la courbe d'apprentissage pour les développeurs Ruby expérimentés, selon les créateurs de Crystal. Grâce à la vérification statique des types, les erreurs sont détectées par le compilateur plutôt que d'attendre un échec au moment de l'exécution.

Dévoilée cette semaine, la version 1.0 de Crystal est disponible sur GitHub et les instructions d'installation sur crystal-lang.org. Les développeurs du langage prévoient des versions de maintenance, avec des correctifs de bug, tandis que les prochaines fonctionnalités sont réservées aux versions mineures suivantes. A noter que certaines fonctions de la version 1.0 sont qualifiées de « préliminaires » et ne sont pas encore officiellement prises en charge, notamment le support de Windows, le multithreading et le support de ARM.

Des atouts variés

Les points forts de Crystal 1.0 sont :

- L'inférence de type intégrée élimine le besoin de la plupart des annotations de type ;

- Une syntaxe dédiée pour appeler les bibliothèques natives supprime le besoin de réimplémenter les tâches de bas niveau.

- Le compilateur vérifiant automatiquement les références nulles lors de la compilation ;

- L'utilisation de threads appelés « fibres » pour communiquer sans recourir à de la mémoire partagée ; 

- Des bibliothèques empaquetées sous forme de Shards et distribuées via Git, sans qu'il soit nécessaire d'avoir un dépôt central. Des commandes intégrées permettent ainsi de spécifier les dépendances par le biais d'un fichier YAML et d'aller les chercher dans les dépôts respectifs.

- Un système de macro, composé de méthodes qui embarquent des nœuds AST (Abstract Syntax Tree) lors de la compilation et produisent du code à coller dans un programme. Cela constitue la réponse de Crystal à la méta-programmation.