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

Scala Java Discussion :

Feuille de route pour Scala 2.13


Sujet :

Scala Java

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 695
    Points : 188 898
    Points
    188 898
    Par défaut Feuille de route pour Scala 2.13
    Dans la communauté Scala, 2017 sera l’année du développement de la version 2.13 du langage (la première RC devrait arriver début 2018). La version 2.12 est donc encore là pour un certain temps. La feuille de route est déjà établie pour Scala 2.13, avec les fonctionnalités souhaitées — modulo les autres envies de la communauté qui seront intégrées d’ici là. Quatre axes ont été définis : une réécriture de la bibliothèque de collections, des améliorations de performance pour le compilateur, la modularisation de la bibliothèque standard, des simplifications pour les utilisateurs du langage.

    Collections

    La bibliothèque des collections de Scala est assez régulièrement retravaillée pour la rendre plus facile à utiliser, en améliorer la performance ou la qualité du code. L’itération actuelle date de Scala 2.8 et utilise un grand nombre de couches d’abstraction, très flexibles, qui généralisent tant les collections immuables qu’altérables, parallèles que séquentielles. Chaque nouvelle collection peut ainsi réutiliser une grande partie du code déjà écrit.

    Cette implémentation a cependant un certain nombre de défauts. Principalement, pour créer de nouvelles collections, il faut se plonger en profondeur dans la documentation pour déterminer les paramètres implicites à utiliser et vérifier les fonctions héritées à réécrire. Les utilisateurs ne sont pas en reste : niveau performance, tout n’est pas parfait. Par exemple, Slick a pu grandement accélérer certaines étapes de calcul (de l’ordre de 25 % !) en réimplémentant certaines collections, sans chercher à adapter leur implémentation à leurs besoins.

    Les modifications prévues visent principalement à réduire fortement l’utilisation de l’héritage pour les collections, tout en gardant un très haut niveau de compatibilité des sources avec l’implémentation existante (soit garder l’API existante, soit proposer un outil pour corriger automatiquement le code source). Les développements sont visibles sur GitHub.

    Modularisation

    La modularisation de la bibliothèque standard de Scala a commencé avec la version 2.11. L’objectif est de déporter une partie du code en dehors du cœur de l’implémentation du langage et de laisser la communauté proposer des solutions. L’avantage principal est que les solutions proposées peuvent évoluer nettement plus vite que Scala.

    Un autre avantage est que le cœur peut garder une compatibilité binaire nettement plus facilement entre versions de Scala, ce qui limite les problèmes lors des mises à jour. Il faut noter que Scala laisse toujours accès à la bibliothèque standard Java, ce qui est loin d’être négligeable.

    Avec Scala 2.13, la bibliothèque standard se réduira aux collections et à quelques types de base (Option, TypleN, Either, Try).

    Améliorations du compilateur

    Le langage en lui-même n’évoluera pas tellement avec la version 2.13, celle-ci se focalisant sur les aspects des bibliothèques. Cependant, le travail continue sur le compilateur, principalement pour le rendre plus rapide. Le premier objectif poursuivi sera de développer l’infrastructure nécessaire pour mesurer finement la performance du compilateur. Ensuite, les développeurs de Scala utiliseront tous les outils à leur disposition pour détecter les problèmes (principalement, des profileurs JVM).

  2. #2
    Chroniqueur Actualités

    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    1 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 089
    Points : 26 557
    Points
    26 557
    Par défaut La version 2.13 du langage Scala est disponible
    La version 2.13 du langage Scala est disponible
    avec une refonte des collections, des améliorations de la bibliothèque standard et un gain de performance pour le compilateur

    Scala, le langage de programmation multiparadigme vient de passer en version 2.13. Dans cette nouvelle itération, l’on y trouve des améliorations dans plusieurs domaines comme les collections, les bibliothèques, le langage ainsi que le compilateur.

    Au niveau des collections

    L’équipe de Scala a procédé à une refonte des collections de la bibliothèque standard afin d’apporter plus de simplicité, performance et sécurité au langage. Pour ce qui concerne les changements, nous avons entre autres les points suivants :

    Les signatures de méthodes rendues plus simples
    • Les méthodes de transformation ne prennent plus le paramètre implicite CanBuildFrom ;
    • la bibliothèque résultante est plus facile à comprendre (en code, Scaladoc et complétion de code de l’EDI) ;
    • avec la simplification du code, la compilation du code utilisateur est beaucoup plus rapide ;
    • un nouvel objet implicite BuildFrom peut être utilisé dans quelques circonstances.

    La hiérarchie des types rendue également plus simples
    • Les traits Traversable et TraversableOnce ont été supprimés. Ils restent uniquement sous forme d’alias déconseillés pour Iterable et IterableOnce ;
    • les collections parallèles sont maintenant un module séparé. En conséquence, GenSeq, GenTraversableOnce, et al ont été supprimés.

    Le passage par défaut de Scala.Seq comme élément immuable
    • Annoncé depuis un bout de temps, Seq est maintenant un alias pour collection.immutable.Seq ;
    • cela change également le type de varargs dans les méthodes et les correspondances de modèles ;
    • les tableaux passés en tant que méthode Java varargs sont copiés de manière défensive, ce qui sous-entend que la méthode varargs n’est pas affectée et les tableaux ne sont pas modifiés.

    De nouvelles collections concrètes ajoutées
    • La classe abstraite scellée Stream qui implémentait des listes paresseuses où les éléments ne sont évalués que lorsqu’ils sont nécessaires est maintenant obsolète.
    • immutable.LazyList remplace immutable.Stream;
    • immutable.ArraySeq qui est un wrapper immuable pour les tableaux est maintenant disponible en version mutable ;
    • La classe CollisionProofHashMap empêche les attaques par déni de service ;
    • mutable.ArrayDeque a été également ajoutée à Scala 2.13. C’est une file d’attente à deux extrémités qui utilise en interne un tampon circulaire redimensionnable.

    En plus des modifications ci-dessus, plusieurs autres changements dans les collections ont été effectués dans cette nouvelle version.

    Au niveau de la concurrence

    Les futures ont été repensés en interne, avec les objectifs suivants :
    • fournir le comportement attendu dans un ensemble plus large de conditions de défaillance ;
    • fournir une base pour une performance accrue ;
    • supporter des applications plus robustes ;

    Nous précisons que Future est un objet qui représente une valeur qui peut ou non être actuellement disponible, mais le sera à un moment donné ou une exception, si cette valeur n’a pas pu être rendue disponible.

    Nom : Scala_logo.png
Affichages : 9193
Taille : 29,3 Ko

    Au niveau de la bibliothèque standard

    De nouveaux éléments ont atterri dans la bibliothèque standard.

    Intégration de l’interopérabilité avec Java
    • L’ancien module scala-java8-compat fait maintenant partie de la bibliothèque standard ;
    • ceci fournit des convertisseurs pour les options, les types de fonctions et les flux Java ;
    • Comme mentionné ci-dessus, les convertisseurs de collection tels que JavaConverters ont été déplacés pour s’inscrire dans le nouveau schéma.

    Ajout de l’utilitaire scala.util.Using
    • Il utilise le modèle de prêt pour fournir une forme simple de gestion automatique des ressources.

    Ajout des méthodes .toIntOption et al
    • Ces nouvelles méthodes d’extension sur Strings sont fournies par StringOps ;
    • Elles analysent les littéraux et rejettent efficacement les entrées non valides sans générer d’exceptions.

    Ajout de convertisseurs entre fonctions et extracteurs
    • Les nouvelles méthodes fournissent des conversions entre les objets facultatifs Functions, PartialFunctions et les extracteurs.

    Ajout de méthodes .withRight, .withLeft
    • Ces méthodes à gauche et à droite autorisent la conversion de l’autre paramètre de type.

    Autres modifications dans la Bibliothèque standard : dépréciations et suppressions

    Plusieurs dépréciations et suppressions ont été appliquées dans cette dernière version de Scala. Entre autres, nous avons les points ci-dessous :
    • La construction de chaînes utilisant + avec un type non-String à gauche (alias any2stringadd) est maintenant obsolète ;
    • PartialFunction.fromFunction remplace PartialFunction.apply ;
    • les projections à droite avec Either sont obsolètes ;
    • la balise @usecase scaladoc est également obsolète ;
    • Equiv est également devenu obsolète ;
    • en outre, les modules suivants ne sont plus inclus dans la distribution : scala-xml, scala-parser-combinators, scala-swing;
    • les méthodes et les classes assorties et obsolètes de la bibliothèque standard ont été entièrement supprimées.

    Au niveau du langage

    Bien que cette dernière version de Scala soit axée sur les améliorations de la bibliothèque standard, des changements ont également été apportés à plusieurs niveaux du côté du langage.

    Les types littéraux
    • Les littéraux (pour les chaînes, les entiers, etc.) ont maintenant des types littéraux associés ;
    • le compilateur fournira des instances d’une nouvelle classe scala.ValueOf[T] de types pour tous les types de singleton T ;
    • la valeur d’un type singleton est accessible via une méthode appelante valueOf[T].

    Activation de l’unification partielle par défaut
    • Cette modification améliore l’inférence du constructeur de type ;
    • le support de l’unification partielle de constructeurs de types n’est plus considéré comme expérimental ;
    • le compilateur n’accepte plus -Ypartial-unification.

    Prise en charge de paramètres implicites par la méthode By-name avec des dictionnaires récursifs
    • cette fonctionnalité étend les arguments de méthode by-name pour prendre en charge les paramètres implicites ;
    • cela permet à la recherche implicite de construire des valeurs récursives ;
    • le cas d’utilisation phare est la dérivation de classe.

    Les soulignements dans les littéraux numériques
    • Les traits de soulignement peuvent maintenant être utilisés comme entretoises.

    Au niveau du compilateur
    • Le compilateur Scala est maintenant 5 à 10 % plus rapide que les versions précédentes ;
    • En outre, il génère une sortie identique pour une entrée identique dans plus de cas, pour des versions reproductibles ;
    • Enfin, les opérations sur les collections et les tableaux sont désormais davantage optimisées.

    Au-delà de ces améliorations, plusieurs autres optimisations ont été apportées dans cette nouvelle version de Scala.

    Source : Scala

    Et vous ?

    Que pensez-vous de cette nouvelle version de Scala ? Répond-elle à vos attentes ?

    Quels sont les ajouts, améliorations que vous aimez le plus ou le moins ?

    Voir aussi

    Feuille de route pour Scala 2.13 : Collections, modularisation et améliorations de performance pour le compilateur
    Feuille de route de Scala 3.0 : il utilisera le compilateur Dotty afin de simplifier la structure du langage, Scala 3.0 est attendu en 2020
    Scala 3 prévu pour début 2020, peu après la sortie de la version 2.14 : Son créateur nous livre un aperçu de ses nouveautés
    Le langage Scala se met à la compilation rapide avec le compilateur incrémental Zinc
    Scala Native : un générateur de code natif pour accéder au bas niveau depuis le langage Scala
    Quel avenir pour le langage Scala depuis l’arrivée de Java 8, Venez partager votre expérience

Discussions similaires

  1. Microsoft dévoile la nouvelle feuille de route pour SharePoint
    Par Victor Vincent dans le forum SharePoint
    Réponses: 1
    Dernier message: 12/05/2016, 00h22
  2. Réponses: 1
    Dernier message: 10/05/2016, 10h28
  3. Réponses: 4
    Dernier message: 13/11/2015, 11h23
  4. Réponses: 3
    Dernier message: 04/06/2013, 20h39
  5. Réponses: 15
    Dernier message: 04/10/2010, 09h52

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