Skip to content

Build pipelining #643

@eed3si9n

Description

@eed3si9n

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions