Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build pipelining #643

Closed
2 tasks done
eed3si9n opened this issue Aug 1, 2019 · 1 comment
Closed
2 tasks done

Build pipelining #643

eed3si9n opened this issue Aug 1, 2019 · 1 comment

Comments

@eed3si9n
Copy link
Member

eed3si9n commented Aug 1, 2019

This is an epic to track various build pipelining related tasks. This means that in a multi-project builds, a downstream subproject could be compiled immediately after its upstream subprojects have finished typechecking (more precisely, have finished the "pickler" phase), rather waiting for the back end of the the compiler to produce .class files.

infrastructure

The following provides infrastructure to support build pipelining (build tools must support it too).

  • Experimental support for build pipelining (Experimental support for build pipelining [ci: last-only] scala#7712) ClassfileParser is extended to support .sig files, containing just the Scala Pickle (which is usually parsed from the argument of a class file annotation).
  • Experimental support for outline type checking (Experimental support for outline type checking scala#8077) First, we compile all sources with -Youtline -Ystop-after:pickler. The first option disables typechecking of the RHS of definitions that have ascribed types. The pickles are then exported and made available to downstream compilation, as is also the case with the strategy=Pipeline. The sources for the current projects are then compiled in parallel in chunks, also using the exported pickles on the classpath.
@SethTisue
Copy link
Member

Closing since the basics are now implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants