Skip to content

Latest commit

 

History

History
27 lines (23 loc) · 1.58 KB

17-direct-dependency-experience.md

File metadata and controls

27 lines (23 loc) · 1.58 KB
label name web github origin contributors status type active priority category home hide-from-homepage description
scalac-direct-dependencies
Scalac & Direct dependencies
jorge
Completed
project
false
-1
tooling
true
true
Improving scalac to improve the experience for builds using direct dependencies.

When developers or organizations want to distribute the compilation of their Scala projects, they have to send all the project dependencies across the wire. The process to send these dependencies is slower as the projects grow and it become a bottleneck for fast compiles.

It is often the case that most of those dependencies are not required for compilation because they don't leak to the public API of the Scala projects to be compiled. As a result, they can be removed from the classpath and developers can avoid the cost of sending them across the network.

This initiative consisted in the creation of a scalac plugin to detect unused classpath entries so that users can have fine-grained control on the compilation classpath, thus enabling faster distributed compilation of Scala projects. This plugin is available for both 2.12.x and 2.11.x and will be most useful to those build tools that allow you to control the library dependencies explicitly.

More information is available in the Classpath Shrinker repository.