Skip to content

1.4.0

Compare
Choose a tag to compare
@eed3si9n eed3si9n released this 04 Oct 17:00
· 605 commits to develop since this release
v1.4.0
52c63b3

v1.3.5...v1.4.0

Zinc 1.4.0 is available for both Scala 2.12 and 2.13.

VirtualFile / VirtualFileRef

This is a major refactoring of Zinc internals to use an abstraction over "file" called VirtualFile (includes content) and VirtualFileRef (just the file name). They can be backed either by real NIO Paths or in-memory String. The purpose is to make the internal incremental state Analysis machine-independent.

#712 by @eed3si9n

Build pipelining

pipelining

This adds a facility to implement incremental, module-level build pipelining, which allows Scala subprojects to start compilation earlier than when the upstream compilation is complete. A build tool that wishes to implement this should implement two settings:

  • exportPipelining. The subproject with exportPipelining exports the early output (also known as pickle JAR) and early analysis, and also responsible for setting -Ypickle-java and -Ypickle-write flag.
  • usePipelining. The subproject with usePipelining must set incOptions.value.withPipelining(true). This tells Zinc to skip Java compilation.

Only Scala compiler is currently capable of pipelined compilation, so the build tool is responsible for calling compileAllJava(...) after all of upstream also have the full compilation done. Note: A single subproject may take all combinations of exportPipelining and usePipelining settings.

#744 / #843 by @eed3si9n, @dwijnand, and others.