Scala (pour Scalable Language) est un langage de programmation multiparadigme et multi-plate-forme très largement utilisé dans le domaine de l’analyse de données et notamment avec le fameux Framework Spark. Il fournit l’infrastructure de base pour des sites tels que Twitter, LinkedIn, Foursquare, Tumblr et Klout. Scala regroupe un ensemble de caractéristiques très intéressantes, entres autres, la simplicité de sa syntaxe. Ce dernier peut en effet être vu comme un métalangage.Il intègre aussi le paradigme de programmation orientée objet et de programmation fonctionnelle, ce qui permet de tirer profit des avantages de ces deux paradigmes complémentaires. En plus de tout cela, Scala est compilé en bytecode Java, il est alors possible d’utiliser les bibliothèques écrites en Java d’une manière complètement transparente. Cela permet à Scala de tirer profit de la grande maturité et la diversité des bibliothèques qui ont fait la force du langage Java depuis plusieurs années. De plus, il est possible d’invoquer du code écrit en Scala à partir de programmes écrits en Java ce qui facilite la transition de Java à Scala.
L'équipe responsable de son développement a annoncé la feuille de route de la version Scala 3 :
« En collaboration avec l'équipe Scala 3 de l'EPFL (alias l'équipe Dotty), dirigée par Martin Odersky, nous avons décidé que, plutôt que de développer Scala 2.14, nos efforts devraient plutôt aller à Scala 3. Bien que nous soyons très heureux de nous concentrer sur Scala 3, nous continuerons à maintenir Scala 2.13 pour garantir à la communauté suffisamment de temps pour passer soigneusement à Scala 3. Nous pensions depuis longtemps qu’une version 2.14 serait nécessaire pour assurer une transition en douceur vers 3. Après de nombreuses études et discussions, nous sommes maintenant convaincus que la version 2.14 n’est tout simplement pas nécessaire. Nous pensons que c'est une bonne nouvelle pour tout le monde ! »
Les bénéfices évoqués sont :
- Scala 3 sera prêt pour une production plus rapide! L'équipe note qu'il y a beaucoup de travail à faire pour polir le compilateur et mettre à jour ses outils. Elle rappelle qu'elle va aider également à la mise à niveau de l'écosystème.
- La bibliothèque Scala et l'écosystème d'outils n'auront pas besoin d'être reconstruits pour la version 2.14, libérant ainsi du temps pour les responsables de la préparation pour Scala 3.
« Notre objectif principal est de fournir un chemin de migration fluide et incrémentiel de Scala 2 vers 3. Pour ce faire, Scala 2.13 et 3.0 utiliseront la même bibliothèque standard, et leurs serveurs de compilation compileront le bytecode de la même manière ».
Scala a été le pionnier de la fusion de la programmation orientée objet et fonctionnelle dans un environnement typé. Scala 3 sera un grand pas vers la réalisation du plein potentiel de ces idées. La nouvelle version du langage aura pour objectifs d'éliminer les incohérences, de consolider les constructions linguistiques pour améliorer la cohérence, la sécurité, l'ergonomie et la performance du langage. Aussi, à la différence de la version 2, le compilateur Dotty sera doté du support LSP (Language Server Protocol).
Scala 3 et Scala 2 partagent la même bibliothèque standard, le code Scala 3 peut utiliser des artefacts Scala 2, car Scala 3 comprend le format de fichier de classe pour les sources compilées avec Scala 2.12 et plus. Scala 3 dispose d'une option -language:Scala2 qui permet de compiler la plupart des codes Scala 2 et met en évidence les réécritures nécessaires en tant qu'alertes de migration et l'option -rewrite pour l'exécution de plusieurs réécritures automatiquement.
ABI partagé
En partageant également l'ABI (Application Binary Interface, c'est-à-dire la façon dont les traits, les valeurs paresseuses, etc. sont représentés dans le bytecode et l'IR de Scala.js/Native), les artefacts Scala 3.0 et 2.13 peuvent coexister sur le chemin de classe et interagir de manière transparente. Cela permet une migration progressive et simplifie les tests.
Scala 3 est déjà rétrocompatible aujourd'hui : il peut se servir de bibliothèques construites avec Scala 2.13 (sauf pour les bibliothèques qui définissent des macros). Pour obtenir une compatibilité ascendante, le compilateur Scala 3 fournira un mécanisme pour garantir que l'interface publique est dans le sous-ensemble de langage commun, afin qu'elle puisse être utilisée à partir de Scala 2.13. Cela signifie qu'en tant qu'auteur de bibliothèque, vous pouvez adopter (une partie de) Scala 3 sans exiger de vos utilisateurs une mise à niveau de Scala 2.13.
Outre l'interopérabilité technique, l'équipe va investir dans les tests et améliorer l'outillage pour assurer une migration en douceur. Par exemple, les avertissements de migration initialement prévus pour 2.14 seront implémentés dans 2.13. Elle n'exclut pas...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.