Eugene Yokota
4265b92aa4
perf: Cache content hash of binary files
...
**Problem**
sha256 is currently a bottleneck for no-op compilation.
**Solution**
This adds a local, in-memory cache of sha256 hashes of binary files
using their timestamp and file size.
The size of the digest cache can be configured using localDigestCacheByteSize,
which is set to 1MB by default.
2025-11-11 15:59:42 -05:00
xuwei-k
038fa6c476
remove unnecessary nowarn annotations
2025-10-04 19:25:11 +09:00
xuwei-k
1a882b0dc3
remove some format: off comments
2025-09-24 18:49:30 +09:00
Eugene Yokota
748bf1207f
Auto aggregate
...
**Problem**
For sbt 1.x, the user is forced to pick between having a stable ID for the root project,
or having the automatic aggregation of all subprojects.
The problem becomes more pronounced for large build that frequent add/remove subprojects.
**Solution**
This implements `.autoAggregate` method on `Project`, which is implemented as
`this.aggregate(LocalAggregate)`.
At the loading time, we can automatically expand `LocalAggregate` to a list of subproject references,
after we discover all subprojects.
The `autoAggregate` will use the base directory of the subproject to pick the parent-child
relationship. For example, a root project would aggregate all subprojects,
but `bar` might aggregate only `bar/bar1` and `bar/bar2`.
2025-09-21 13:40:53 -04:00
Eugene Yokota
e0013078b5
fix: Fixes removeN operator --=
...
**Problem**
removeN operator doesn't work with settings because the param isn't inlined.
**Solution**
Fix it.
2025-09-03 11:35:27 -04:00
Eugene Yokota
43382095ef
Use scala.transient to denote the empty cache level
2025-08-16 01:27:14 -04:00
Eugene Yokota
ac57fb083e
Remove IntegrationTest
2025-08-03 19:50:33 -04:00
Eugene Yokota
7bb55fc9fb
Remove unused code
2025-08-03 16:03:00 -04:00
Eugene Yokota
c8737b8e4f
refactor: Change the test type
...
**Problem**
test task is typed to unit.
To distinguish test from any other tasks, we want to actually type this to something.
**Solution**
Forward TestResult to the test task.
2025-08-02 18:12:20 -04:00
Eugene Yokota
6a7b56a645
Default to cached task
...
This flips the default `:=` operation to the cached task.
To opt out of the cache, use `Def.uncached(...)` or
mark the key with `@cacheLevel(include = Array.empty)`
2025-06-21 08:54:51 +09:00
Eugene Yokota
3b4547718e
Remove deprecated methods
2025-05-11 05:23:41 -04:00
Eugene Yokota
967ecb49bc
deps: Scala 3.7.0
2025-05-11 01:30:07 -04:00
xuwei-k
8ed146a79e
simplify previous macro
2025-05-11 13:17:43 +09:00
xuwei-k
4916f9b186
udpate settingAppend1Impl. use ev param
2025-05-10 07:28:38 +09:00
eugene yokota
e9e263469d
Merge pull request #8112 from xuwei-k/RefThenConfig-extension-toString
...
remove RefThenConfig extension toString method
2025-05-09 11:02:17 -07:00
xuwei-k
ce654c4ffc
remove unused imports
2025-05-09 19:40:49 +09:00
xuwei-k
ca8bc350a5
remove RefThenConfig extension toString method
2025-05-09 19:23:24 +09:00
xuwei-k
5d660ab8b5
remove unnecessary case
...
- https://github.com/xuwei-k/scalafix-rules/blob/3ca36335057154ef4431fee464a86b721013d334/rules/src/main/scala/fix/RemoveParameterUntuplingCase.scala
- https://docs.scala-lang.org/scala3/reference/other-new-features/parameter-untupling.html
- https://docs.scala-lang.org/scala3/reference/other-new-features/parameter-untupling-spec.html
2025-02-22 08:48:29 +09:00
eugene yokota
971991c72f
Merge pull request #8033 from eed3si9n/wip/inputtaskdyn
...
[2.x] Implement Def.inputTaskDyn
2025-02-07 20:38:57 -05:00
Eugene Yokota
11cd58daa7
Implement Def.inputTaskDyn
...
**Problem/Solution**
This implements Def.inputTaskDyn using Scala 3 macros.
2025-02-05 02:04:22 -05:00
Josh Soref
613eb86447
Spelling ( #8028 )
...
* spelling: 1.x
Signed-off-by: Josh Soref <[email protected] >
* spelling: a
Signed-off-by: Josh Soref <[email protected] >
* spelling: aether
Signed-off-by: Josh Soref <[email protected] >
* spelling: anymore
Signed-off-by: Josh Soref <[email protected] >
* spelling: artifact
Signed-off-by: Josh Soref <[email protected] >
* spelling: available
Signed-off-by: Josh Soref <[email protected] >
* spelling: be
Signed-off-by: Josh Soref <[email protected] >
* spelling: bridge
Signed-off-by: Josh Soref <[email protected] >
* spelling: cannot
Signed-off-by: Josh Soref <[email protected] >
* spelling: case-insensitive
Signed-off-by: Josh Soref <[email protected] >
* spelling: checksum
Signed-off-by: Josh Soref <[email protected] >
* spelling: class loads
Signed-off-by: Josh Soref <[email protected] >
* spelling: contra
Signed-off-by: Josh Soref <[email protected] >
* spelling: dependencies
Signed-off-by: Josh Soref <[email protected] >
* spelling: dependency
Signed-off-by: Josh Soref <[email protected] >
* spelling: dependent
Signed-off-by: Josh Soref <[email protected] >
* spelling: deriveds
Signed-off-by: Josh Soref <[email protected] >
* spelling: describes
Signed-off-by: Josh Soref <[email protected] >
* spelling: early
Signed-off-by: Josh Soref <[email protected] >
* spelling: enclosed
Signed-off-by: Josh Soref <[email protected] >
* spelling: evaluation
Signed-off-by: Josh Soref <[email protected] >
* spelling: excluding
Signed-off-by: Josh Soref <[email protected] >
* spelling: execution
Signed-off-by: Josh Soref <[email protected] >
* spelling: for
Signed-off-by: Josh Soref <[email protected] >
* spelling: frequently
Signed-off-by: Josh Soref <[email protected] >
* spelling: github
Signed-off-by: Josh Soref <[email protected] >
* spelling: green
Signed-off-by: Josh Soref <[email protected] >
* spelling: https://www
Signed-off-by: Josh Soref <[email protected] >
* spelling: https
Signed-off-by: Josh Soref <[email protected] >
* spelling: in-sourcing
Signed-off-by: Josh Soref <[email protected] >
* spelling: include
Signed-off-by: Josh Soref <[email protected] >
* spelling: incompatible
Signed-off-by: Josh Soref <[email protected] >
* spelling: indefinitely
Signed-off-by: Josh Soref <[email protected] >
* spelling: information
Signed-off-by: Josh Soref <[email protected] >
* spelling: inputted
Signed-off-by: Josh Soref <[email protected] >
* spelling: just
Signed-off-by: Josh Soref <[email protected] >
* spelling: lastmodifiedtimes
Signed-off-by: Josh Soref <[email protected] >
* spelling: latest
Signed-off-by: Josh Soref <[email protected] >
* spelling: manifest
Signed-off-by: Josh Soref <[email protected] >
* spelling: miscellaneous
Signed-off-by: Josh Soref <[email protected] >
* spelling: more
Signed-off-by: Josh Soref <[email protected] >
* spelling: neither
Signed-off-by: Josh Soref <[email protected] >
* spelling: never
Signed-off-by: Josh Soref <[email protected] >
* spelling: nonexistent
Signed-off-by: Josh Soref <[email protected] >
* spelling: opted
Signed-off-by: Josh Soref <[email protected] >
* spelling: outputting
Signed-off-by: Josh Soref <[email protected] >
* spelling: params
Signed-off-by: Josh Soref <[email protected] >
* spelling: performance
Signed-off-by: Josh Soref <[email protected] >
* spelling: preceding
Signed-off-by: Josh Soref <[email protected] >
* spelling: presentation
Signed-off-by: Josh Soref <[email protected] >
* spelling: project
Signed-off-by: Josh Soref <[email protected] >
* spelling: projects
Signed-off-by: Josh Soref <[email protected] >
* spelling: protocol
Signed-off-by: Josh Soref <[email protected] >
* spelling: related
Signed-off-by: Josh Soref <[email protected] >
* spelling: representation
Signed-off-by: Josh Soref <[email protected] >
* spelling: res
Signed-off-by: Josh Soref <[email protected] >
* spelling: resolverlist
Signed-off-by: Josh Soref <[email protected] >
* spelling: resolverset
Signed-off-by: Josh Soref <[email protected] >
* spelling: response
Signed-off-by: Josh Soref <[email protected] >
* spelling: returned
Signed-off-by: Josh Soref <[email protected] >
* spelling: sbt_version
Signed-off-by: Josh Soref <[email protected] >
* spelling: scalacheck
Signed-off-by: Josh Soref <[email protected] >
* spelling: sentinels
Signed-off-by: Josh Soref <[email protected] >
* spelling: separates
Signed-off-by: Josh Soref <[email protected] >
* spelling: serves
Signed-off-by: Josh Soref <[email protected] >
* spelling: should
Signed-off-by: Josh Soref <[email protected] >
* spelling: significant
Signed-off-by: Josh Soref <[email protected] >
* spelling: specifically
Signed-off-by: Josh Soref <[email protected] >
* spelling: substitute
Signed-off-by: Josh Soref <[email protected] >
* spelling: suppress
Signed-off-by: Josh Soref <[email protected] >
* spelling: terminal
Signed-off-by: Josh Soref <[email protected] >
* spelling: the
Signed-off-by: Josh Soref <[email protected] >
* spelling: title
Signed-off-by: Josh Soref <[email protected] >
* spelling: transitive
Signed-off-by: Josh Soref <[email protected] >
* spelling: version
Signed-off-by: Josh Soref <[email protected] >
* spelling: versions
Signed-off-by: Josh Soref <[email protected] >
* spelling: want
Signed-off-by: Josh Soref <[email protected] >
* spelling: wanting
Signed-off-by: Josh Soref <[email protected] >
* spelling: whether
Signed-off-by: Josh Soref <[email protected] >
* link: sbt Cached Resolution
Signed-off-by: Josh Soref <[email protected] >
* link: Testing sbt plugins
Signed-off-by: Josh Soref <[email protected] >
---------
Signed-off-by: Josh Soref <[email protected] >
2025-02-04 01:11:28 -05:00
eugene yokota
52d36653da
Merge pull request #7997 from xuwei-k/scalafmt-convertToNewSyntax
...
[2.x] update `.scalafmt.conf`. enforce new scala 3 syntax
2025-01-01 22:34:03 -05:00
xuwei-k
13d6626564
update .scalafmt.conf. enforce new scala 3 syntax
2025-01-02 11:25:34 +09:00
xuwei-k
e0a51807bc
change to using param anonymous if possible
2025-01-02 10:35:15 +09:00
xuwei-k
2167a72ac3
correspond file name and class name
2025-01-01 16:12:30 +09:00
Eugene Yokota
eb7d43c363
Refactor RefThenConfig to be an opaque type
2024-11-26 04:55:08 -05:00
Eugene Yokota
320a8c7204
Avoid inline for slash apparently
2024-11-26 01:43:12 -05:00
Eugene Yokota
70d7ddb258
Refactor slash syntax to mostly use methods
...
**Problem**
Slash syntax is currently implemented via a series of implicit
converters (Conversion), which is not nice, partly because
the behavior is difficult to follow.
**Solution**
This removes all the implicit converters and moves the slashes
into:
1. / methods under Reference for subproject scoping.
2. / methods under ScopeAxis with Reference type constraint
for the initial Zero scoping.
3. Return RefThenConfig structure for intermediate config scoping.
4. / method under `Scoped`, which is base trait for the keys
to implement task scoping e.g. `compile / scalacOptions`.
5. Extension methods for ConfigKey.
6. Extension methods for AttributeKey.
2024-11-25 04:54:40 -05:00
Eugene Yokota
19ed461933
Remove conversion from Reference to RichReference
2024-11-24 23:11:55 -05:00
Eugene Yokota
4e3fbcced9
Refactor ScopeAxis to use enum
2024-11-24 23:10:18 -05:00
xuwei-k
f11d9d76f0
remove more implicit. use given and using
2024-11-18 14:39:00 +09:00
xuwei-k
d193c990d1
remove implicit params. change to using
2024-11-18 06:49:22 +09:00
xuwei-k
c5b7038f3a
use given instead of implicit val
2024-11-17 17:35:23 +09:00
xuwei-k
5dd0ab0e60
use extension instead of implicit
2024-11-17 10:24:33 +09:00
adpi2
4c66e5a907
Merge branch 'develop' into 2.x-fuse-info
2024-11-13 17:08:37 +01:00
Adrien Piquerez
f4f185a1c1
Settings as a Map[ScopedKey[x], x]
...
Settings0 used to be a Map[Scope, AttributeMap], and is now a
Map[ScopedKey[x], x].
This is better because we don't need to decompose all ScopedKey[x]
into a Scope and an AttributeKey[x], for recomposing it back later,
which duplicates all ScopedKey[x]. It reduces the number of long-living
ScopedKey[x] by 8%, and the total number of instances by 1.4%.
Also it improves the performance of Settings0, which was responsible of
2.95% of the total CPU time, and is now responsible of 0.41%.
2024-11-13 12:25:31 +01:00
eugene yokota
661f1fa216
Merge pull request #7880 from adpi2/2.x-settings
...
[2.x] Reduce creation of `Setting` and `Initialize`
2024-11-12 22:41:42 -05:00
Adrien Piquerez
e5cedbe56b
Fuse Info in Task to reduce instances
2024-11-12 17:05:20 +01:00
Adrien Piquerez
c838094672
Optimize Previous
2024-11-12 10:56:31 +01:00
eugene yokota
f7160ba8d8
Merge pull request #7875 from eed3si9n/wip/slash-tests
2024-11-07 12:33:16 -05:00
Eugene Yokota
a34bb4756c
Resurrect property-based testing for slash syntax
2024-11-06 03:43:39 -05:00
Adrien Piquerez
2f726cddf0
Add comments
2024-11-05 11:36:18 +01:00
Adrien Piquerez
9382fc99b7
Use caching in Project.transform
2024-11-04 10:43:42 +01:00
Adrien Piquerez
5bbe871882
Cleaning Scope
2024-11-04 10:43:42 +01:00
Adrien Piquerez
2015c5d41a
Add ThisBuildScope
2024-11-04 10:43:42 +01:00
Adrien Piquerez
a28428f96c
Pre-compute hashCode
2024-11-04 10:43:42 +01:00
Adrien Piquerez
4a429b2fe2
Add uniqueness cache on Scope
2024-11-04 10:43:28 +01:00
Eugene Yokota
56941dac04
refactor: Update Scala 3 syntax
2024-10-27 23:55:30 -04:00
Friendseeker
f87ffc8042
Fix CI compile errors
2024-10-21 21:38:59 -07:00
Eugene Yokota
65bc3d9722
fix: Resurrect or for tasks
...
**Problem**
1. `or` is missing
2. `?` should have English method name
**Solution**
1. This resurrects `or`
2. Name `??` as `option`, since `get` is taken
2024-10-10 02:39:52 -04:00