Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage Scala se met à la compilation rapide avec le compilateur incrémental Zinc

Le , par dourouc05

25PARTAGES

5  0 
Ces derniers temps, Scala a vu quelques améliorations notables dans ses outils de compilation. Notamment, le compilateur incrémental Zinc a atteint la version 1.0.
Zinc est utilisé par bon nombre de développeurs Scala sans vraiment qu’ils s’en rendent compte : il est intégré dans sbt (pour lequel il a d’abord été prévu), pants, CBT, IntelliJ ou encore Scala IDE. Son seul objectif est d’améliorer les temps de recompilation en limitant le nombre de fichiers traités : Zinc analyse les dépendances entre parties du code et n’en recompile qu’une partie, celle qui a été changée depuis la dernière compilation et tout ce qui en dépend. Il est prévu pour que le résultat de cette compilation soit identique à une compilation depuis zéro — quitte à être conservatif et à recompiler des choses qui n’en auraient pas eu besoin.
Une des nouveautés de cette version 1.0 est l’analyse de dépendance au niveau des classes : auparavant, cette analyse était effectuée par fichier. Cependant, vu qu’un fichier Scala peut contenir un grand nombre de classes, cette manière de procéder menait à de grandes inefficacités. Grâce à ce changement, les temps de recompilation ont pu être améliorés d’un facteur quarante dans certains cas. Ce code était en partie prêt depuis mars 2016, mais a dû être retravaillé avant d’arriver en production, notamment au niveau de la compatibilité avec Java.

En pratique, sur ScalaTest, l’évolution entre Zinc 0.13 et 1.0 est très importante : la recompilation de ce projet de 40 377 lignes prend sept fois moins de temps avec la nouvelle version, en ajoutant simplement une nouvelle méthode.
Avec Zinc 0.13, la compilation incrémentale prend vingt et une secondes :

Zinc 1.0 réduit ce temps à trois secondes :

D’autres améliorations de Zinc 1.0 concernent de rares cas de sous-recompilation (qui causaient des problèmes de correction), des améliorations dans le pont avec Java ou dans la gestion des types. Les API ont été améliorées et le code a été entièrement migré vers Scala 2.12 : Zinc est maintenant prêt pour Java 8.
Sources : Speed up compile times with Zinc 1.0.

Une erreur dans cette actualité ? Signalez-le nous !