mirror of https://github.com/sbt/sbt.git
In order to speed up the start up time of the test and run tasks, I'm introducing a ClassLoaderCache that can be used to avoid reloading the classes in the project dependencies (which includes the scala library). I made the api as minimal as possible so that we can iterate on the implementation without breaking binary compatibility. This feature will be gated on a feature flag, so I'm not concerned with the cache class loaders being useable in every user configuration. Over time, I hope that the CachedClassLoaders will be a drop in replacement for the existing one-off class loaders*. The LayeredClassLoader was adapted from the NativeCopyLoader. The main difference is that the NativeCopyLoader extracts named shared libraries into the task temp directory to ensure that the ephemeral libraries are deleted after each task run. This is a problem if we are caching the ClassLoader so for LayeredClassLoader I track the native libraries that are extracted by the loader and I delete them either when the loader is explicitly closed or in a shutdown hook. * This of course means that we both must layer the class loaders appropriately so that the project code is in a layer above the cached loaders and we must correctly invalidate the cache when the project, or its dependencies are updated. |
||
|---|---|---|
| .github | ||
| core-macros/src/main/scala/sbt/internal/util/appmacro | ||
| internal | ||
| launch | ||
| licenses | ||
| main | ||
| main-actions/src | ||
| main-command/src | ||
| main-settings/src | ||
| notes | ||
| project | ||
| protocol/src/main | ||
| run | ||
| sbt/src | ||
| scripted-plugin/src/main/scala/sbt | ||
| scripted-sbt-old/src/main/scala/sbt/test | ||
| scripted-sbt-redux | ||
| src/main/conscript | ||
| tasks | ||
| tasks-standard | ||
| testing | ||
| vscode-sbt-scala | ||
| .appveyor.yml | ||
| .gitattributes | ||
| .gitignore | ||
| .java-version | ||
| .sbtopts | ||
| .scalafmt.conf | ||
| .travis.yml | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| NOTICE | ||
| PROFILING.md | ||
| README.md | ||
| SUPPORT.md | ||
| build.sbt | ||
| reset.sh | ||
| sbt-allsources.sh | ||
| server.md | ||
README.md
sbt
sbt is a build tool for Scala, Java, and more.
For general documentation, see http://www.scala-sbt.org/.
sbt 1.x
This is the 1.x series of sbt. The source code of sbt is split across several Github repositories, including this one.
- sbt/io hosts
sbt.iomodule. - sbt/util hosts a collection of internally used modules.
- sbt/librarymanagement hosts
sbt.librarymanagementmodule that wraps Ivy. - sbt/zinc hosts Zinc, an incremental compiler for Scala.
- sbt/sbt, this repository hosts modules that implements the build tool.
Other links
- Setup: Describes getting started with the latest binary release.
- FAQ: Explains how to get help and more.
- sbt/sbt-zero-seven: hosts sbt 0.7.7 and earlier versions
Issues and Pull Requests
Please read CONTRIBUTING carefully before opening a GitHub Issue.
The short version: try searching or asking on StackOverflow.
license
See LICENSE.