typesafehub / zinc

⛔️ [DEPRECATED] sbt's scala incremental compiler
303 stars 58 forks source link

Take advantage of SBT 0.13.13's compiler interface classloader cache #108

Closed retronym closed 7 years ago

retronym commented 7 years ago

As SBT itself does:

https://github.com/sbt/sbt/pull/2754

retronym commented 7 years ago

Just found while testing this that something still isn't right:

Shell 1

⚡ /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java -verbose:class -server -Xms1024m -Xmx1024m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=192m -Dcompiler.cache.limit=0 -Dzinc.home=/usr/local/Cellar/zinc/0.3.12/libexec -classpath /usr/local/Cellar/zinc/0.3.12/libexec/lib/compiler-interface-sources.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/incremental-compiler.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/nailgun-server.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/sbt-interface.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/scala-compiler.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/scala-library.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/scala-reflect.jar:/usr/local/Cellar/zinc/0.3.12/libexec/lib/zinc.jar com.typesafe.zinc.Nailgun 3030 0 2>&1 | grep "Loaded xsbt.CallbackGlobal"
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.12/compiler-interface-2.12.1-52.0/compiler-interface.jar]
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.12/compiler-interface-2.12.1-52.0/compiler-interface.jar]
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.12/compiler-interface-2.12.1-52.0/compiler-interface.jar]
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.12/compiler-interface-2.12.1-52.0/compiler-interface.jar]
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.12/compiler-interface-2.12.1-52.0/compiler-interface.jar]

Shell 2

⚡ ./bin/zinc -nailed -scala-home ~/scala/2.12.1 /tmp/test.scala
⚡ ./bin/zinc -nailed -scala-home ~/scala/2.12.1 /tmp/test.scala
⚡ ./bin/zinc -nailed -scala-home ~/scala/2.12.1 /tmp/test.scala
⚡ ./bin/zinc -nailed -scala-home ~/scala/2.12.1 /tmp/test.scala
⚡ ./bin/zinc -nailed -scala-home ~/scala/2.12.1 /tmp/test.scala

I'll diagnose and submit a followup.

retronym commented 7 years ago

Oh wait, that's using my homebrew zinc install, not the one I'd just built.

retronym commented 7 years ago

With this patch, xsbt.CallbackGlobal is indeed only loaded once:

⚡ /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java -verbose:class -server -Xms1024m -Xmx1024m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=192m -Dcompiler.cache.limit=0 -Dzinc.home=/Users/jz/usr/zinc-0.3.13 -classpath /Users/jz/usr/zinc-0.3.13/lib/compiler-interface-sources.jar:/Users/jz/usr/zinc-0.3.13/lib/incremental-compiler.jar:/Users/jz/usr/zinc-0.3.13/lib/nailgun-server.jar:/Users/jz/usr/zinc-0.3.13/lib/sbt-interface.jar:/Users/jz/usr/zinc-0.3.13/lib/scala-compiler.jar:/Users/jz/usr/zinc-0.3.13/lib/scala-library.jar:/Users/jz/usr/zinc-0.3.13/lib/scala-reflect.jar:/Users/jz/usr/zinc-0.3.13/lib/zinc.jar com.typesafe.zinc.Nailgun 3030 0 2>&1 | grep "Loaded xsbt.CallbackGlobal"
[Loaded xsbt.CallbackGlobal from file:/Users/jz/.zinc/0.3.13/compiler-interface-2.12.1-52.0/compiler-interface.jar]
dwijnand commented 7 years ago

This broke the community build https://github.com/scala/community-builds/issues/480