mirror of
https://github.com/sbt/sbt.git
synced 2026-09-03 16:39:24 +02:00
31f232c84ae58174213e2a8920fa7ab36a72bd33
The cached-task macro allocated one mutable slot per syntactic Def.declareOutput / Def.declareOutputDirectory call site and snapshotted the slots into the task's outputs after the body ran. A call inside a loop or .map over a runtime-determined list is a single syntactic site executed many times, so each iteration overwrote the same slot and only the last file was cached and restored on a cache hit. There was also no way for a conditional call site that did not execute to stay out of the outputs: its slot remained null. Declared outputs now accumulate in a per-task ListBuffer: the macro emits one buffer at the top of the cached body and rewrites each call site to ActionCache.registerOutput(vf, buffer), which appends and returns the value. Every execution registers, an unexecuted site contributes nothing, and the static multi-site shape is unchanged. Refs #9462 (the declareOutput-in-a-loop half) Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]> Co-authored-by: eugene yokota <[email protected]>
sbt
sbt is a build tool for Scala, Java, and more.
For general documentation, see https://www.scala-sbt.org/.
sbt 2.x
This is the 2.x series of sbt. The source code of sbt is split across several GitHub repositories, including this one.
- sbt/io hosts
sbt.iomodule. - sbt/zinc hosts Zinc, an incremental compiler for Scala.
- sbt/sbt, this repository hosts modules that implement 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 or a pull request.
If you're looking for an idea for a contribution, issues labeled with good first issue or help wanted might be good starting points.
If you would like to ask questions about sbt, there's sbt channel on Scala Discord, but it would be good to gather questions on Stackoverflow.
license
See LICENSE.
Languages
Scala
94.5%
Java
3.1%
Shell
1.1%
Batchfile
0.9%
Roff
0.2%
Other
0.1%