AccueilActualités informatiqueRetour vers le futur : Scala 3.1 établit une passerelle vers Scala...

Retour vers le futur : Scala 3.1 établit une passerelle vers Scala 2 et suit sa propre voie

Le langage de programmation Scala a été publié en version 3.1 et met donc en œuvre le système de gestion des versions. major.minor.patch contrairement à Scala 2, qui suit toujours le schéma epoch.major.minor Ainsi, la version 3.1 est la première version mineure après la version principale Scala 3.0. Ainsi, la version 3.1 est la première version mineure après la version principale Scala 3.0. La version mineure stable comporte quelques nouvelles fonctionnalités, parmi lesquelles l’élément encore expérimental safer exceptions pour déclarer et vérifier quelles exceptions sont possibles. Ils peuvent être optionnellement activés par la commande import language.experimental.saferExceptions commandement. Les types peuvent ensuite être étiquetés avec le type d’exception souhaité à déclencher pendant l’évaluation : si vous avez besoin d’informations plus détaillées à ce sujet, vous les trouverez dans la documentation.

def f(x: Double): Double throws LimitExceeded =
  if x < limit then f(x) else throw LimitExceeded()

Sommaire

Une autre nouvelle fonctionnalité vise à optimiser le bytecode lors de la mise en correspondance avec des chaînes littérales. -Wconf a été ajouté. Avec lui, les avertissements du compilateur peuvent apparemment être filtrés et configurés, par exemple, mis en sourdine ou convertis en messages d’erreur. L’annotation connue de Scala 2.13 fait son retour. @nowarnqui remonte à l’origine à un plug-in Silencer. Grâce à cette annotation, les avertissements prévisibles peuvent être supprimés directement dans le code, à savoir aux endroits où ils sont attendus. Selon l’annonce de la version, l’annotation réactivée et le nouveau drapeau du compilateur fonctionnent en grande partie comme on peut l’attendre de Scala 2. Seuls certains filtres de sélection des avertissements ont changé. Vous trouverez plus d’informations à ce sujet dans la fonction d’aide, qui peut être ouverte en saisissant -Wconf:help peut être appelé.

D’autres innovations profitent à la compatibilité avec Scala 2. Par exemple, le compilateur de Scala 3 propose désormais une synthèse simplifiée des manifestes afin de créer des instances pour le module Manifest-Trait. Selon l’équipe Scala, la nouvelle implémentation est une approximation légèrement simplifiée de l’implémentation originale dans Scala 2. Elle est censée garantir qu’un certain nombre d’expressions qui étaient vraies dans Scala 2 restent vraies lorsqu’elles sont compilées avec Scala 3. Concrètement, les expressions suivantes sont garanties comme étant vraies :

  • manifest[A] == manifest[B]
  • manifest[A].runtimeClass == manifest[B].runtimeClass
  • optManifest[A] == optManifest[B]
  • optManifest[A].asInstanceOf[ClassTag[A]].runtimeClass == optManifest[B].asInstanceOf[ClassTag[B]].runtimeClass

Il y aura désormais une option miroir pour les hiérarchies scellées, et un certain nombre d’autres changements entreront en jeu dans Scala 3.1. Entre autres choses, l’équipe de Scala a ajouté l’annotation @experimental a été libéré du stade expérimental. Désormais, les utilisateurs ne doivent plus recourir à la construction nocturne du compilateur pour définir les API comme « expérimentales ». Il y a une section séparée dans la documentation de conception pour cela.

Selon l’annonce de la publication, Scala 3.1 est rétrocompatible dans les binaires, de sorte que les développeurs devraient pouvoir continuer à utiliser les dépendances compilées avec Scala 3.0 dans des projets créés avec Scala 3.1 sans aucun problème. Toutefois, Scala 3.1. n’est pas compatible avec la version ascendante, comme le soulignent les éditeurs : Ainsi, les dépendances créées avec Scala 3.1 ne peuvent pas être utilisées dans des projets Scala 3.0.

Selon l’équipe de Scala, toute personne qui développe des applications devrait être en mesure de mettre à jour la version du compilateur sans aucun problème. D’autre part, si vous êtes le responsable d’une bibliothèque, une mise à jour vers Scala 3.1 obligera tous les utilisateurs à faire de même. Cela pourrait entraîner des incohérences dans certains projets. Si vous n’êtes pas sûr de cela, vous devriez attendre Scala 3.2 si possible et ne publier votre propre bibliothèque que sous la version 3.0.2 pour le moment : cela garantit que les utilisateurs en aval qui ne peuvent actuellement pas faire de mise à jour vers Scala 3.1 pourront continuer à utiliser la bibliothèque. Un exemple de construction est disponible sur GitHub qui suit cette recommandation.

Lire aussi

L’abondance de toutes les petites et grandes innovations peut être trouvée dans l’article de blog de l’équipe de développement sur le site Web de Scala. Si vous voulez savoir exactement, jetez un coup d’œil au journal des modifications. Le prochain patch version 3.1.1. est prévu pour le début du mois de décembre 2021.

Plus d'articles