2012-05-19 5 views
5

La compilation à Scala est assez lente. Y a-t-il des espoirs de le rendre plus rapide? Une chose qui me vient à l'esprit est l'équivalent Scala de ccache: un cache où le compilateur n'a pas besoin de recompiler certaines parties. Je sais que l'inférence de type rend les choses plus compliquées, mais je me demande si c'est faisable du tout. Peut-être que la mise en cache doit être effectuée à un niveau différent (par exemple AST) ou doit faire l'objet d'un pré-traitement.Cache du compilateur pour Scala?

Je serai heureux de voir quelles estimations pourraient être potentiellement sauvegardées si ce type d'outil existe. Quel genre de défis doivent être résolus pour le construire?

+2

Vous n'avez pas spécifié ce que vous souhaitez mettre en cache. Vous parlez de ccache mais il cible le C++ qui a un schéma de compilation très différent de Scala. Je pense que ce que vous cherchez est une compilation incrémentale. Sbt a cette fonctionnalité implémentée mais elle est toujours buggée (peut recompiler trop). Si la question était plus claire, comme spécifier ce qui devrait être exactement encaissé, je pourrais être en mesure de répondre plus précisément. –

+0

Original ccache fonctionne de sorte qu'il met en cache des fichiers .c .cpp prétraités dans des fichiers binaires d'objets. Du point de vue du programmeur, ce n'est pas important tant qu'il accélère la construction. Quelques possibilités: - fichiers lui-même (impossible à cause de l'inférence de type) - AST - une sorte de fichiers prétraités – Jakozaur

+0

sbt met en cache les fichiers .class en recompilant ce dont on a vraiment besoin. Je pense que c'est exactement ce que vous cherchez. –

Répondre

0

En plus de SBT qui recompile seulement ce qui est nécessaire, JRebel aide à résoudre ce problème et a le support de Scala.

+0

SBT recompile beaucoup ce qui n'est pas nécessaire et ne parvient souvent pas à recompiler ce qui est * nécessaire *. – aij

Questions connexes