mirror of https://github.com/sbt/sbt.git
To minimize classloading and consistency between sbt instances launched with the latest launcher compared to old launchers, I overhauled code that replaces the app configuration and meta build classloader at startup. The goals of this change for legacy launchers were: 1) Do not ever load the scala-library.jar from the app provider class loader. 2) Close the class loaders that are below the topLoader in the class loading hierarcy For the new launcher, we simply want to avoid modifying the loader at all. I added the SbtParserInit class so that it was more straightforward to preload the global instance using reflection. We now use reflection to instantiate an SbtParserInit instance for both the legacy and new launcher cases to simplify the logic. After this change, the legacy loader still uses somewhat more metaspace than the new loader, but the difference seems to be O(10MB), which should only impact projects that were close their MaxMetaspaceSize to begin with. I verified using javap that none of the code in this class uses the scala standard library which should help metaspace since we don't load much of the scala standard library until we enter xMainImpl.run. |
||
|---|---|---|
| .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 | ||
| zinc-lm-integration/src | ||
| .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.