La version stable de Ruby 2.5 est disponible
avec des améliorations de performance de l’ordre de 5 à 10 % et l’ajout de nouvelles fonctionnalités

Alors que de nombreuses personnes étaient occupées à donner des présents à leurs proches ce 25 décembre, l’équipe de Ruby a voulu également sacrifier à la tradition et a annoncé la sortie de la première version stable de la série 2.5 de Ruby.

Cette nouvelle version de Ruby se focalise sur trois axes principaux, à savoir les nouvelles fonctionnalités, les améliorations de performance et divers changements importants apportés depuis Ruby 2.4.

Au menu des nouvelles fonctionnalités, l’équipe de Ruby annonce que les clauses rescue, else et ensure utilisées pour gérer les exceptions peuvent maintenant être utilisées directement avec les blocs do et end. À côté de cette nouveauté, nous avons la nouvelle méthode yield_self introduite dans cette nouvelle itération de Ruby et qui fonctionne un peu comme la méthode tap. Mais contrairement à cette dernière, la méthode yield_self permet de retourner différentes valeurs et plus précisément le résultat du bloc dans lequel elle est utilisée.

En plus de ces nouvelles fonctionnalités, il faut également ajouter le support pour la couverture de code, notamment la couverture de branches et la couverture de méthodes. La couverture de branches indique quelles branches d’un programme sont exécutées et lesquelles ne le sont pas et la couverture de méthodes indique quelles méthodes sont invoquées et lesquelles ne le sont pas. Lorsqu’un développeur exécute une suite de tests, il peut utiliser ces nouvelles fonctionnalités pour savoir quelles branches et quelles méthodes sont exécutées et évaluer plus strictement la couverture totale de la suite de tests.

Au-delà de ces nouvelles implémentations, nous avons également d’autres nouvelles fonctionnalités qui ont trouvé leur place dans cette version 2.5 de Ruby. Ce sont :

  • l’ajout de Hash#slice et Hash#transform_keys ;
  • la possibilité d’utiliser Struct.new pour créer des classes qui acceptent les arguments de mots-clés ;
  • la possibilité d’ajouter un argument de modèle aux méthodes any?, all?, none?, et one? ;
  • la recherche d’une constante de haut niveau n’est plus disponible ;
  • l’une de bibliothèques de Ruby les plus appréciées, en l’occurrence pp.rb, est maintenant chargée automatiquement. Vous n’avez plus besoin d’écrire require « pp » ;
  • enfin, il est possible d’imprimer un message d’erreur dans l’ordre inverse lorsqu’un long backtrace apparait sur votre terminal (TTY).

Nom : Ruby.jpg
Affichages : 1093
Taille : 32,8 Ko

Au niveau du chapitre des performances obtenues à travers cette nouvelle version, les développeurs de Ruby annoncent des améliorations à plusieurs niveaux. Après avoir supprimé toutes les instructions trace du bytecode de Ruby, l’équipe de Ruby annonce pour cette dernière version une amélioration de performance d’environ 5 à 10 %. En outre, ils ajoutent qu’un bloc qui passe par un paramètre de bloc comme def foo(&b); bar(&b); end est environ trois fois plus rapide que celui utilisé avec Ruby 2.4.

D’autres améliorations ont également été rendues possibles dans cette nouvelle version. Ce sont entre autres :

  • la réduction de la taille de la classe Mutex, ce qui lui permet d’être plus rapide ;
  • ERB, l’implémentation d’eRuby (le système de modèles ou templates qui embarque Ruby à l’intérieur d’un texte) génère maintenant du code à partir d’un modèle deux fois plus vite que Ruby 2.4 ;
  • les performances de plusieurs méthodes intégrées y compris celles des méthodes Array#concat, Enumerable#sort_by, String#concat, String#index, Time#+, ont été améliorées ;
  • IO.copy_stream utilise copy_file_range pour se décharger.

Pour ce qui concerne les autres changements importants mis en œuvre depuis Ruby 2.4, il est annoncé que SecureRandom préfère désormais les sources fournies par le système d’exploitation à OpenSSL. Par ailleurs, l’équipe de Ruby met avant l’usage de certains composants comme cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib issus des bibliothèques standards au lieu d’utiliser ceux des gestionnaires de paquets par défaut.

Au nombre des changements dans cette nouvelle version de Ruby, nous avons également des mises à jour qui ont été appliquées. La bibliothèque d’expressions régulières Onigmo est passée à la version 6.1.3 et Psych, l’analyseur et l’émetteur YAML, est passé à la version 3.0.2. RubyGems, le gestionnaire de paquets Ruby, est quant à lui passé à la version 2.7.3 et la documentation RDoc a été mise à jour en passant à la version 6.0.1. La version d’Unicode a également été mise à jour et porte maintenant le numéro de version 10.0.0.

Plusieurs autres améliorations et changements sont présents dans cette nouvelle version de Ruby 2.5.

Source : Ruby 2.5

Et vous ?

Comment trouvez-vous cette nouvelle version de Ruby ?

Répond-elle à vos attentes ?

Quelles sont les améliorations que vous auriez souhaité voir dans cette nouvelle version de Ruby et dans les versions à venir ?

Voir aussi

Ruby 2.3 est disponible, avec un nouvel opérateur de navigation sécurisée, un nouveau pragma pour geler les chaines de caractères et plus encore
Ruby 2.2 et Rails 4.2 disponibles en versions stables avec des améliorations de performances et de la gestion de la mémoire
Ruby passe à la version 2.1 et introduit un lot de nouvelles fonctions et un meilleur garbage collector