Dans l'article publié récemment "Scala : les prochaines étapes" qui décrit l'avenir du langage, l'équipe Scala détaille les nouvelles fonctionnalités des trois prochaines versions et leurs objectifs principaux : rendre le langage et ses librairies plus faciles à comprendre, plus robustes et plus performants.
Scala 2.12 est la prochaine version majeure et a été couverte dans l'article d'InfoQ Scala 2.12 supportera uniquement Java 8. Les deux versions suivantes ont pour nom de code Aida et Don Giovanni. L'objectif principal de la version 2.12 est l'interopérabilité avec Java 8, tandis qu'Aida simplifiera les collections et Don Giovanni améliorera le langage et rendra le compilateur plus véloce. La version Don Giovanni a pour but de collaborer avec le Projet Valhalla, car les deux projets ont des ambitions identiques.
Le Projet Valhalla est un projet expérimental de l'OpenJDK pour le développement de nouvelles fonctionnalités majeures de Java qui nécessite à la fois une modification de la syntaxe du langage et un support au niveau de la VM. Les nouvelles approches de Valhalla concernant le typage générique et les types valeur sont deux fonctionnalités du projet que Scala espère pouvoir influencer.
La rétro-compatibilité n'est pas garantie, mais un outil de migration du code source sera fourni pour supporter la migration de version. Le code Scala standard devrait être porté facilement, mais les fonctionnalités expérimentales comme les macros pourraient ne pas l'être.
Julian Gamble, auteur de Recettes pour Clojure, a ajouté du contexte à l'article sur Hacker News. Il a mentionné que le développeur principal du compilateur Scala, Paul Philips, a fait une présentation l'année dernière intitulée "Nous faisons tout de travers". Vous pouvez visionner la vidéo de sa présentation, ou regarder ses slides sur SlideShare. Gamble pense que l'article "Prochaines Etapes" est la réponse de Martin Odersky et salue son action.
D'après la Feuille de Route de Scala 2.12, la prochaine version n'est pas prévue d'être livrée avant Janvier 2016. Plusieurs personnes ont exprimé leurs préoccupations concernant la rétro-compatibilité sur Hacker News. Martin Odersky, concepteur principal de Scala, a répondu ainsi :
Nous allons tenté de rendre les limites entre l'ancienne et la nouvelle version aussi flexibles que possible, et les outils de lint et d'importation du langage y joueront un rôle important.
A noter que les réécritures que nous envisageons sont dans leur majorité plutôt triviales. Par exemple, insérer un ": Unit = " à chaque utilisation de la syntaxe procédurale ou bien encapsuler chaque littéral xml dans xml"""...""".
Les seules choses qui m'effrayent un peu sont les fonctionnalités expérimentales. Elles ne seront pas portées proprement, et mon conseil du moment serait : si vous voulez que votre code survive la transition sans réécriture majeure, n'utilisez pas les fonctionnalités expérimentales. Elles peuvent être tentantes, mais elles peuvent très bien être un piège dans le futur.