Le 11 juin dernier sortait la nouvelle release du language Scala : 2.13.

C’est l’avant-dernière version avant la version majeure du language 3. La prochaine version (2.14) aura comme seul objectif de préparer la migration vers la 3.

Aujourd’hui nous allons parler de la version 2.13 et des changements amenées par cette version.

Les 4 grands parties impactées sont :

  • Collections
  • Standard library
  • Language
  • Compiler

Dans le détail, de manière synthétique, que c’est-il passé :

Collections :

  • D’une manière générale, la library standard collection a été remaniée selon différents axes : Simplification, performance et sécurité. Cela constitue les changements majeurs de cette release,
  • Bien que pas mal de chose ait changé, normalement le code basé sur une version précédente devrait continuer à fonctionner. Néanmoins, quelques exceptions feront qu’il faudra envisager des petites adaptations,
  • L’utilisation de l’implicit canbuildFrom (qui permet d’adapter les collections au fur et à mesure de leur changement) ne sera plus utilisé. Cette suppression permet d’ailleurs d’optimiser les performances du compilateur. Dans certains cas, ou c’est vraiment indispensable, un implicit BuildFrom sera utilisé,
  • Les collections parallèles seront maintenant dans un module à part,
  • Tout ce qui concerne l’interropérabilité avec Java est localisé dans un package dédié : `scala.jdk`,
  • ajout de nouvelles functions : .unfold, .lenghtIs, .sizeIs, LazyIs, taEach, etc..
    – Une hiérarchie plus simple, suppression de Traversable et TraversableOnce,

Beaucoup d’autres éléments ont changé sur la librarie collections. Pour avoir plus de détails vous pouvez suivre les liens suivants:

Standard library > Concurrency :

Les futures ont été repensées avec les objectifs suivants :

  • Fournir un comportement plus déterministe avec un ensemble plus large de condition de défaillance,
  • Fournir des performances accrues,
  • Avoir un socle plus robuste pour supporter plus d’exigences.

Plus de détails ici :

Standard library > nouvelles feature :

De nouvelles fonctionnalités ont été ajoutées dans la librairie standard. Nous n’allons pas lister l’ensemble des ajouts, mais voici une petite synthèse :

La liste est loin d’être exhaustive.

Compiler

Compatibilité

Toutes les informations sur les problématiques de compatibilité entre les versions de Scala ainsi avec le Jdk sont expliquées ici

D’une manière générale, Scala 2.11, 2.12, 2.13 sont dans la plupart des cas compatibles au niveau des sources (ceci afin de faciliter le cross-building) En revanche, pas de compatibilité binaire. La raison est pour permettre de garder une amélioration sur le compilateur Scala ainsi que la librairie standard.

Enfin vous trouverez la liste des librairies open-source déjà compatibles avec cette nouvelle version
la liste grossit très rapidement. Ce qui encourage une migration vers la nouvelle version.

Ici, nous avons vu qu’une petite synthèse de cette nouvelle version. Je vous encourage à aller lire la documentation officielle ainsi que le changelog.

2.13.0