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

Le , par Amine Horseman, Expert éminent sénior
Après une Preview sortie il y a un mois, et une RC publiée quelques jours après, la version stable 2.2.0 du langage de programmation est disponible en version stable.

Présenté par beaucoup de personnes comme un langage simple, rapide à prendre en main et surtout très intuitif, ce langage de programmation open source rassemble aujourd’hui une communauté de plus en plus grande, surtout depuis l’apparition du framework Rails en 2003. Ce dernier, dont la version actuelle est la 4.2. sortie le 19 décembre 2014, est destiné à la programmation web avec Ruby, selon l’architecture MVC. La prochaine version du framework, qui est la version 5.0 prévue pour l’automne 2015, sera uniquement basée sur Ruby 2.2.x pour profiter au maximum des nouveautés du langage.

L’amélioration majeure qu’apporte Ruby 2.2.0 est sans doute l’optimisation du ramasse-miettes (Garbage Collector), qui est à présent capable de ramasser les objets de type « Symbol », ce qui n’était pas possible jusqu’ici. Une réduction considérable du temps d’attente avec l’introduction du ramasse-miettes incrémental (Incremental Garbage Collector) est également au rendez-vous.

Toujours concernant la gestion de la mémoire, une nouvelle option dans le configure.in permet d’utiliser jemalloc au lieu du malloc standard, ce qui permet, selon les tests préliminaire de réduire le temps moyen des requêtes de 10%. Toutefois, cette fonctionnalité reste expérimentale et est désactivée par défaut jusqu’à ce que le gain réel en performances soit confirmé. Une autre fonctionnalité expérimentale et qui pourrait améliorer considérablement les performances lorsqu’un processus exécute plusieurs fois des commandes systèmes est l’utilisation de vfork() avec system() et spawn(). Les résultats des tests réalisés par Akira Tanaka ont montré que vfork() peut être jusqu’à 100 fois plus rapide que le fork() traditionnel. Cependant, son utilisation est jugée dangereuse et la fonctionnalité reste encore au stade expérimental.

D’autres changements supplémentaires concernent le support de Unicode 7.0 et l’introduction de nouvelles fonctions :
  • String#unicode_normalize
  • Enumerable#slice_after et Enumerable#slice_when
  • Float#next_float et Float#prev_float
  • File.birthtime et File#birthtime
  • Dir#fileno
  • Kernel#itself
  • Binding#local_variables et Binding#receiver.

Concernant les bibliothèques, mathn est marquée comme obsolète, tandis que les librairies suivantes ont été mises à jour :
  • Psych 2.0.8
  • Rake 10.4.2
  • RDoc 4.2.0
  • RubyGems 2.4.5
  • test-unit 3.0.8
  • minitest 5.4.3

Télécharger la version stable de Ruby 2.2.0

Source : Ruby Langage Blog, Git Hub, RubyOnRails

Et vous ?

Utilisez-vous Ruby ? Que pensez-vous des améliorations de cette version ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Olivier Famien Olivier Famien - Chroniqueur Actualités https://www.developpez.com
le 30/12/2015 à 1:36
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.3 vient de sortir en version stable. Dans cette nouvelle version, nous avons plusieurs correctifs et de nouvelles fonctionnalités qui ont été implémentés.

Avec les versions antérieures de Ruby, il était possible de geler les chaines de caractères littérales en utilisant la méthode .freeze. Pour éviter que cette méthode apparaisse partout dans le code, l’équipe de Ruby a opté pour un nouveau pragma dans cette nouvelle version de Ruby. Comment fonctionne-t-il ?

En principe lorsque vous écrivez votre code, il est possible de modifier une chaine de caractères littérale tout au long de l’écriture. Avec la méthode « .freeze » utilisée en association avec une chaine de caractères littérale, le compilateur renvoie un message d’erreur à la compilation si l’on tente de modifier la chaine de caractères littérale qui a été gelée.

Dans cette nouvelle version de Ruby, cette fonctionnalité peut être appliquée par défaut à un fichier d’un projet en ajoutant le commentaire magique suivant pour geler toutes les chaines de caractères du fichier source :

Code : Sélectionner tout
#frozen-string-literal: true

ou en utilisant le flag suivant dans la console :

Code : Sélectionner tout
--enable=frozen-string-literal my_script.rb

Pour désactiver cette fonctionnalité, il faut saisir cette ligne de code :

Code : Sélectionner tout
--disable=frozen-string-literal

Cette fonctionnalité comporte plusieurs avantages. En l’utilisant sur une constante par exemple, il est sûr que cette dernière conservera la même valeur partout dans le projet.

Par ailleurs, en figeant une chaine de caractères, il n’est plus nécessaire d’écrire à chaque fois le même objet dans la mesure où il comporte la même valeur. L’on pourrait la définir à un emplacement précis et l’appeler à partir de n’importe quel emplacement dans le projet sans risquer de mauvaise surprise de retour de valeur.

Au regard des avantages précédents, l’on pourrait obtenir des gains de performance dans le programme utilisant cette fonctionnalité, car le ramasse-miettes prendra moins de temps pour créer et détruire les objets créés sous ce schéma.

Pour aider les développeurs à mieux gérer les erreurs qui pourraient résulter de l’usage de cette méthode, la ligne de commande suivante permet d’obtenir des informations sur le code tentant de changer la valeur d’une chaine de caractères qui a été gelée.

Code : Sélectionner tout
--debug ou --debug=frozen-string-literal

À côté de cette fonctionnalité, l’équipe de Ruby a introduit un nouvel opérateur de navigation sécurisée « &. ». Ce dernier apporte une simplicité à la gestion des exceptions. C’est un peu le même principe que l’on a en Swift avec les optionnelles. Lorsque vous utilisez un objet qui peut être nil à un moment donné, pour éviter des déclenchements d’erreurs, il est recommandé d’utiliser cet opérateur pour gérer l’exception au cas où l’objet appelé est nil.

D’autres langages tels C# et Groovy intègrent également des fonctionnalités similaires, mais avec un opérateur différent. À terme, la méthode try! qui gère uniquement nil dans Ruby devrait être remplacée par le nouvel opérateur &.

Comme autres nouveautés dans cette version 2.3, il faut également citer l’apparition d’une nouvelle méthode « dig ». Elle permet de parcourir et récupérer une valeur dans un tableau array ou une table de hachage.

Autre élément à noter dans cette nouvelle version, c’est l’ajout par défaut de la bibliothèque did_you_mean gem pour faciliter le débogage des erreurs. En effet, lors de l’écriture du code, des erreurs de saisie peuvent apparaitre au niveau du nom des méthodes, des classes, des instances de variables, et bien plus encore. La gem did_you_mean en générant une alerte émet également des propositions de noms corrects.

Pour ceux qui utilisent le bloc de commentaires Here Documents, une amélioration a été également introduite à ce niveau. Afin d’indenter le contenu d’un bloc de commentaires (Here Documents) et son identifiant tout en supprimant les espaces qui peuvent apparaitre à la sortie, le nouveau caractère « <<~ » a été ajouté. En l’utilisant, cela évite d’indenter le contenu des blocs de commentaires et supprimer plus tard les espaces précédents les commentaires indentés.

Enfin, on pourra ajouter à cette liste de nouvelles fonctionnalités, l’interrogation d’un nombre pour savoir s’il est positif ou négatif. Plusieurs autres améliorations ont été apportées au niveau du noyau, des fichiers, de l’encodage, des processus, etc.

Nouvelles fonctionnalités sur Github

Source : Ruby News

Et vous ?

Que pensez-vous des nouvelles fonctionnalités introduites dans cette version de Ruby 2.3 ?

Quelle est votre fonctionnalité favorite parmi les nouvelles fonctionnalités proposées ?

Voir aussi

Forum Ruby

 
Contacter le responsable de la rubrique Accueil