Scala est un langage de programmation orienté objet et fonctionnel pour la machine virtuelle Java (JVM), c’est-à-dire qu’il exploite l’écosystème Java, mais avec une syntaxe et des concepts radicalement différents de ceux de Java, tout en maintenant une forte compatibilité, de sorte que tout code Java puisse être appelé depuis Scala et vice-versa.
Scala 2.12.0 est désormais disponible avec un compilateur complètement retravaillé afin de pouvoir utiliser les nouvelles fonctionnalités VM disponibles dans Java 8 (il permet donc de générer du code nécessitant un runtime Java 8). On note ici qu’un trait se compile directement en une interface avec les méthodes par défaut, ce qui permet d’améliorer la compatibilité binaire et l'interopérabilité avec Java.
L'interopérabilité entre Scala et Java 8 s’améliore encore pour le code fonctionnel alors que « les méthodes qui prennent des fonctions peuvent facilement être appelées dans les deux sens en utilisant la syntaxe lambda », est-il indiqué sur le site scala-lang.org. Il faut encore noter que « les classes FunctionN de la bibliothèque standard de Scala sont désormais des méthodes de type SAM (Single Abstract Method), et tous les types SAM sont traités uniformément - de la vérification de type jusqu'à la génération de code ».
Cette nouvelle version du langage orienté objet et fonctionnel pour la JVM embarque également un nouvel optimiseur. « L'optimiseur est configuré en utilisant l'option -opt de compilateur. Par défaut, il supprime uniquement le code inaccessible au sein d'une méthode ». L'élimination de code mort et un certain nombre d'optimisations de nettoyage sont également incluses dans Scala 2.12.
GenBCode, le nouveau back-end dans Scala 2.12 émet du code plus rapidement, car il génère directement un bytecode à partir des arbres du compilateur Scala, tandis que le back-end précédant utilise une représentation intermédiaire appelée "ICode". Les anciens back-ends (GenASM et GenIcode) ont été supprimés.
Les nouveaux encodages pour les traits et les lambdas dans Scala 2.12 conduisent à des fichiers JAR beaucoup plus petits. Par exemple, pour la version 3.0.0 de scalatest (le framework pour tester du code Scala), la taille du JAR est passée de 9,9 Mo dans Scala 2.11.8 à 6,7 Mo. Il faut également noter que les versions 2.12.x seront entièrement compatibles au niveau binaire. Toutefois, la compatibilité binaire n’est pas assurée entre Scala 2.11 et 2.12.
Il est également important de noter que cette nouvelle version de Scala élimine la compatibilité avec Java 6 et 7.
Scala 2.12.0 présente un certain nombre de problèmes connus qui seront corrigés dans la version 2.12.1 prévue à la fin du mois de novembre. Scala 2.11.9, la dernière version de la branche 2.11.x devrait quant à elle sortir à la mi-décembre.
Source : Scala-lang.org
Et vous ?
Utilisez-vous Scala ? Qu’en pensez-vous ?
Quelles sont les nouveautés les plus intéressantes de cette version selon vous ?
Qu’est-ce qui manque dans Scala 2.12.0 et que vous aimeriez voir dans les prochaines versions de Scala ?
Voir aussi :
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
Scala 2.12 disponible avec un compilateur retravaillé
Pour utiliser les nouvelles fonctionnalités VM de Java 8
Scala 2.12 disponible avec un compilateur retravaillé
Pour utiliser les nouvelles fonctionnalités VM de Java 8
Le , par Michael Guilloux
Une erreur dans cette actualité ? Signalez-nous-la !