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 l’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).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s