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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

La préversion 1 de Ruby 3.0.0 est disponible et apporte un nouveau planificateur et RBS


Sujet :

Ruby

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    Juin 2016
    Messages
    3 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3 160
    Points : 66 249
    Points
    66 249
    Par défaut La préversion 1 de Ruby 3.0.0 est disponible et apporte un nouveau planificateur et RBS
    La préversion 1 de Ruby 3.0.0 est disponible et apporte un nouveau planificateur et RBS,
    un langage permettant de décrire les types de programmes Ruby

    L’équipe de développement de Ruby, le langage de programmation libre et open source qui met l'accent sur la simplicité et la productivité, a annoncé vendredi la sortie de Ruby 3.0.0-preview-1. Cette nouvelle version introduit de nouvelles fonctionnalités, dont RBS, un langage permettant de décrire les types de programmes Ruby ; Ractor, un modèle d'acteur conçu pour fournir une fonction d'exécution parallèle sans les problèmes de sécurité des threads ; et un nouveau planificateur. Voici ci-dessous les nouveautés clés de Ruby 3.0.0.

    RBS

    RBS est un langage permettant de décrire les types de programmes Ruby. Les vérificateurs de types, notamment le profileur de type et les autres outils prenant en charge RBS, vont désormais comprendre beaucoup mieux les programmes Ruby avec les définitions RBS. Ainsi, vous pouvez écrire la définition des classes et des modules : les méthodes de la classe, les variables d'instance ainsi que leurs types, et les relations héritage/mixte. L'objectif de RBS est de supporter les modèles les plus courants dans les programmes Ruby et il permet d'écrire des types avancés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    module ChatApp
      VERSION: String
     
      class Channel
        attr_reader name: String
        attr_reader messages: Array[Message]
        attr_reader users: Array[User | Bot]              # `|` means union types, `User` or `Bot`.
     
        def initialize: (String) -> void
     
        def post: (String, from: User | Bot) -> Message   # Method overloading is supported.
                | (File, from: User | Bot) -> Message
      end
    end
    Cela comprend notamment les types d'union, la surcharge des méthodes et les génériques. Il prend aussi en charge le duck typing avec des types d'interfaces. Ruby 3.0 est livré avec “rbs gem”, qui permet d'analyser et de traiter les définitions de types écrites en RBS.

    Ractor (expérimentale)

    Ractor est un modèle d’acteur comme l'abstraction simultanée conçu pour fournir une fonction d'exécution parallèle sans les problèmes de sécurité des threads. Vous pouvez créer plusieurs ractors et les exécuter en parallèle. Ractor permet de réaliser des programmes parallèles sans danger pour les threads, car ils ne peuvent pas partager des objets normaux. La communication entre les ractors est prise en charge par le passage de messages. Pour limiter le partage d'objets, Ractor introduit de nombreuses restrictions dans la syntaxe de Ruby.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    require 'prime'
     
    # n.prime? with sent integers in r1, r2 run in parallel
    r1, r2 = *(1..2).map do
      Ractor.new do
        n = Ractor.recv
        n.prime?
      end
    end
     
    # send parameters
    r1.send 2**61 - 1
    r2.send 2**61 + 15
     
    # wait for the results of expr1, expr2
    p r1.take #=> true
    p r2.take #=> true
    La spécification et l'implémentation ne sont pas encore matures et sont susceptibles d’être modifiées à l'avenir, donc la fonctionnalité est marquée comme "expérimentale". Quand vous créez un ractor, un avertissement est émis pour vous rappeler que la fonctionnalité est expérimentale.

    Planificateur (expérimental)

    L’équipe a introduit « Thread#scheduler » pour intercepter les opérations de blocage. Cela permet une concurrence légère sans modifier le code existant. Les classes/méthodes actuellement prises en charge :

    • Mutex#lock, Mutex#unlock, Mutex#sleep ;
    • ConditionVariable#wait ;
    • Queue#pop, SizedQueue#push ;
    • Thread#join ;
    • kernel#sleep ;
    • IO#wait, IO#read, IO#write et les méthodes connexes, notamment #wait_readable, #gets, #puts, etc. ;
    • IO#select n'est pas pris en charge.

    Le point d'entrée actuel pour la simultanéité est Fiber.schedule{...}, mais ceci est susceptible de changer d'ici la sortie de la version stable de Ruby 3.0. Pour le moment, il existe un planificateur de test disponible dans Async::Scheduler. Notez que cette fonctionnalité est aussi expérimentale. L’équipe a averti que le nom et la fonction changeront dans la prochaine version d'aperçu.

    Autres nouveautés notables

    • une instruction d'affectation vers la droite est ajoutée ;
    • ajout de la définition de la méthode infinie ;
    • ajout d'un modèle de recherche ;
    • hash#excepté est maintenant intégré ;
    • ajout de la vue mémoire comme fonctionnalité expérimentale : c’est un nouvel ensemble d’API C permettant d'échanger une zone de mémoire brute, comme un tableau numérique et une image bitmap, entre des bibliothèques d'extension. Les bibliothèques d'extension peuvent également partager les métadonnées de la zone de mémoire qui se compose de la forme, du format de l'élément, etc. En utilisant ces types de métadonnées, les bibliothèques d'extension peuvent partager de manière appropriée même un tableau multidimensionnel. Cette fonctionnalité est conçue en se référant au protocole de tampon de Python.


    Autres changements notables depuis Ruby 2.7

    • les arguments de mots-clés sont séparés des autres arguments ;
    • le code qui affiche un avertissement dans Ruby 2.7 ne fonctionne plus;
    • la transmission d'arguments prend désormais en charge les arguments de tête ;
    • la fonctionnalité de “$SAFE” a été complètement supprimée : il s'agit maintenant d'une variable globale normale ;
    • L'ordre de retour en arrière (backtrace) avait été inversé dans Ruby 2.5, mais il a été annulé. Maintenant, il se comporte comme dans Ruby 2.4 : un message d'erreur et le numéro de ligne où l'exception se produit sont imprimés en premier, et ses appelants sont imprimés plus tard ;
    • certaines bibliothèques standard ont été mises à jour, dont RubyGems, 3.2.0.rc.1, Bundler 2.2.0.rc.1, IRB 1.2.6, Reline 0.1.5 ;
    • les bibliothèques “net-telnet” et “xmlrpc” ne sont plus des gemmes regroupées. Vous devez installer les gemmes correspondantes pour utiliser ces fonctionnalités ;
    • etc.

    Source : Ruby 3.0.0-preview-1

    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

    Le livre « Hello Ruby » ambitionne d'apprendre aux enfants les rudiments de la programmation. Que pensez-vous de cette initiative ?

    PHP vs Ruby, une comparaison de deux langages phares du Web
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    L'article ne décrit pas bien RBS. La seule chose qui est typée sont les arguments de méthode. Et d'après ce que j'ai lu ce sera optionnel.

    Comme vous pouvez voir dans l'exemple la déclaration de type des variables de classes n'est pas nécessaire.

Discussions similaires

  1. La préversion du pilote ODBC SQL Server pour Linux disponible
    Par Hinault Romaric dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2011, 20h09
  2. Réponses: 0
    Dernier message: 18/08/2010, 21h01
  3. Réponses: 0
    Dernier message: 07/11/2009, 11h56
  4. Réponses: 0
    Dernier message: 07/11/2009, 11h56
  5. Réponses: 0
    Dernier message: 07/11/2009, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo