IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

L'équipe de committers de Ruby annonce RBS, un nouveau langage de signature de type pour Ruby
Et pour la définition standard des bibliothèques

Le , par Bill Fassinou

157PARTAGES

6  0 
Dans un billet de blogue en date de la semaine dernière, l’équipe de committers de Ruby a annoncé l’arrivée d’un nouveau langage de signature de type pour Ruby et les définitions standard des bibliothèques, le langage RBS. Il est développé en collaboration avec d’autres acteurs du domaine, comme Square, et devrait être livré en même temps que la prochaine version de Ruby, Ruby 3. RBS a un outil en ligne de commande qui devraient aussi être livré au même moment, ce qui vous permettra de générer des signatures pour votre propre code Ruby.

Selon le dépôt GitHub du projet, RBS (Ruby Signature) est un langage permettant de décrire la structure des programmes Ruby. Vous pouvez noter la définition d'une classe ou d'un module : notamment les méthodes définies dans la classe, les variables d'instance ainsi que leurs types, mais aussi les relations d'héritage/mélange. RBS permet également de déclarer des constantes et des variables globales. RBS s’inscrit dans le cadre des efforts consentis par la communauté de Ruby pour permettre à Ruby 3 de supporter la vérification statique des types.

En somme, RBS agira à la fois comme un langage et une bibliothèque, ce qui permettra aux utilisateurs de Ruby 3 d'écrire des signatures de type pour les programmes Ruby et des signatures de type intégrées pour les bibliothèques standard Ruby. D’après le poste de Soutaro Mastsumoto, committer Ruby central et ingénieur Ruby chez Square, le langage de signature de type standard rendra les définitions de type dans le code Ruby portables entre les vérificateurs de type. Il encouragera de ce fait la communauté à écrire des types pour ses gems et ses applications.

Les signatures sont écrites dans des fichiers .rbs, ce qui est différent du code Ruby. Vous pouvez considérer que les fichiers .rbs sont similaires aux fichiers .d.ts utilisé avec TypeScript ou aux fichiers .h en C/C++/ObjC. Selon Soutaro, l'avantage d'avoir des fichiers différents est qu'il n'est pas nécessaire de changer le code Ruby pour commencer la vérification du type. Vous pouvez opter pour la vérification de type en toute sécurité sans modifier aucune partie de votre flux de travail. En outre, Soutaro identifie deux caractéristiques principales pour RBS.

Premièrement, il s’agit de la prise en charge améliorée du “duck typing”. Le duck typing est un style de programmation populaire chez les Rubyistes. En effet, c’est un style de programmation qui suppose qu'un objet sera en mesure de répondre à un certain ensemble de méthodes. L'avantage du duck typing est la flexibilité. Il ne nécessite pas d'héritage, de mixage ou de déclarations d'implémentation. Si un objet a une méthode spécifique, il fonctionne. Le problème est que cette hypothèse est cachée dans le code, ce qui rend le code difficile à lire d'un seul coup d'œil.


Selon Soutaro, pour s’adapter au duck typing, l’équipe a introduit des types d'interface. Un type d'interface constitue un ensemble de méthodes indépendantes des classes et des modules concrets. Ainsi, si vous voulez définir une méthode qui nécessite un ensemble spécifique de méthodes, vous pouvez l'écrire avec des types d'interface. Soutaro estime que cette façon de faire est mieux que le duck typing traditionnel puisqu’elle définit une interface explicite qu'une classe ou un module est censé implémenter et fournit des conseils pour la documentation et les plugins de l'éditeur.

Cela permet alors d'exposer l'interface autrefois implicite comme une solide documentation actionnable. La seconde caractéristique clé de RBS est la non-uniformité. Il s’agit d’un autre modèle de code qui permet à une expression d'avoir différents types de valeurs. Il est aussi populaire en Ruby. Il est utilisé notamment lorsque vous définissez une variable locale qui stocke des instances de deux classes différentes, lorsque vous écrivez une collection hétérogène ou bien lorsque vous rendez deux types de valeur différents d'une méthode.

Pour s'adapter à cela, RBS prend en charge des types d’union et la surcharge de méthodes. Les types d'union et la surcharge de méthodes sont couramment observés dans le code Ruby et dans les bibliothèques standard. Voici ci-dessous les avantages de l’utilisation de RBS tels que présentés par Soutaro :

  • permet de trouver d'autres bogues : il permet de détecter un appel à une méthode non défini, une référence constante non définie, et d'autres choses qu'un langage dynamique aurait pu manquer ;
  • dispose de la sécurité nulle : les vérificateurs de types basés sur RBS ont un concept de types optionnels, un type qui permet à la valeur d'être nulle. Les contrôleurs de types peuvent vérifier la possibilité qu'une expression soit nulle et découvrir une méthode indéfinie ;
  • a une bonne intégration aux EDI : l'analyse des fichiers RBS permet aux EDI de mieux comprendre le code Ruby, les complétions de noms de méthodes s'exécutent plus rapidement, les rapports d'erreurs à la volée détectent plus les problèmes, etc. ;
  • permet un duck typing guidée : les types d'interface peuvent être utilisés pour le duck typing. Cela aide les utilisateurs de l'API à comprendre ce qu'ils peuvent faire avec plus de précision. C'est une version plus sûre du duck typing.

Source : Soutaro Matsumoto, Référentiel GitHub de RBS

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Ruby 2.7 est disponible en version stable avec l'ajout du filtrage par motif, d'une nouvelle méthode pour compacter le tas et plusieurs améliorations de performance non négligeables

Ruby 2.6 est disponible en version stable avec un nouveau compilateur JIT en mode expérimental et un nouveau module pour analyser du code Ruby

RoR : la version 6 du framework Ruby a été publiée avec la prise en charge de plusieurs bases de données et d'autres améliorations

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de amosdesable
Nouveau membre du Club https://www.developpez.com
Le 06/08/2020 à 10:47
je suis dejà pressé de voir ca!!!
0  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 09/08/2020 à 13:23
Citation Envoyé par amosdesable Voir le message
je suis dejà pressé de voir ca!!!
Pas moi. Depuis le début des groupe de pression ont tenté de faire de Ruby, un interpréteur C++.

Il existe déjà un langage avec la syntaxe de Ruby pour les gens qui ne peuvent vivre sans vérification de type automatique: Crystal; https://crystal-lang.org/

Je ne crois pas cette initiative va devenir très populaire.

Il existe déjà un moyen de vérifier la classe d'un objet.

Code : Sélectionner tout
1
2
1.9.3p194 :002 > 1.class
 => Fixnum
Tous que ces idiots ont accomplis est de rendre le langage encore plus long à apprendre. Et comme la version 3 va introduire des éléments de syntaxe pour faire de la programmation impérative. Cela ne va pas aider le langage.
0  0