Commit Graph

646 Commits

Author SHA1 Message Date
Eugene Yokota 0bab2066df [2.x] Reimplement FarmHash
**Problem**
sbtn and server uses FarmHash.

**Solution**
This reimplements FarmHash using Scala.
2026-05-31 16:07:28 -04:00
Eugene Yokota e8a358373c Refactor VarHandle to Access typeclass 2026-05-31 16:07:28 -04:00
eugene yokota 315202181c
[2.x] ci: Scalafmt 3.11.1 (#9279)
Apply Scalafmt
2026-05-31 16:01:15 -04:00
eugene yokota ffa8c14ca6
[2.x] Migrate FarmHash usage to xxhash64 (#9267)
Problem
ZAHa, which we use for FarmHash, uses Unsafe.

Solution
This ports xxhash64 to Scala.
2026-05-30 19:14:53 -04:00
kenji yoshida eabfe1b5e8
[2.x] optimize InterfaceUtil (#9223) 2026-05-16 04:15:40 -04:00
Matthias Kurz 1f0b0e1bfa
[2.x] ci: Update sbt-java-formatter (#9098) 2026-04-21 12:19:44 -04:00
Philippus Baalman 7b23ee96d3
[2.x] Replace defunct link (#8950) 2026-03-21 14:23:26 -04:00
xuwei-k 90f46971c6 Remove return statement in Escapes.scala 2026-03-20 15:04:50 +09:00
kenji yoshida b839d308e1
[2.x] refactor: Use new Array instead of Array.fill (#8929) 2026-03-19 20:18:47 -04:00
kenji yoshida a6a1cf383e
[2.x] refactor: Update EscHelpers.scala (#8928) 2026-03-19 20:14:04 -04:00
kenji yoshida e0a067da99
[2.x] Update Parser.~.unapply (#8927) 2026-03-19 20:12:22 -04:00
kenji yoshida 0608a660da
[2.x] refactor: Reduce return statements (#8925) 2026-03-19 20:09:31 -04:00
kenji yoshida 14606c593d
[2.x] ci: Add scalafix DisableSyntax.noReturns (#8922) 2026-03-19 10:48:10 -04:00
kenji yoshida 4f4bc374f6
[2.x] refactor: Delete silent annotation (#8893) 2026-03-10 13:39:02 -04:00
kenji yoshida 963e38256c
[2.x] ci: Update java file formatter plugin (#8892) 2026-03-10 11:19:48 -04:00
kenji yoshida fb32f78cdb
Remove unnecessary code (#8843) 2026-03-01 02:57:54 -05:00
bitloi c1475da07c
[2.x] feat: case-insensitive tab completion (#8827)
Replace the custom JLineCompletion fallback with JLine 3's built-in
CASE_INSENSITIVE option on the LineReader, which handles case-insensitive
matching natively. Revert JLineCompletion.scala to its original state.

Fixes #2251
2026-02-28 17:19:02 -05:00
Dream c3e72f79c0
[2.x] fix: Backtick-quote project IDs in classloader error messages (#8830)
When a test fails with ClassNotFoundException/IllegalAccessError, sbt
suggests a set command to change classLoaderLayeringStrategy. If the
project name contains hyphens (e.g. bug-report), the suggested command
was syntactically invalid because it parses as subtraction in Scala.

Quote project IDs using Util.quoteIfNotScalaId so the suggested
commands are valid when copy-pasted.

Fixes #5803
2026-02-28 01:52:55 -05:00
bitloi 33ac10c1ce
[2.x] fix: sbt -debug doesn't display loading log (#8819)
* Fix #4979: apply -debug (and other level options) at startup so loading shows debug log

- Parse log level from configuration.arguments in StandardMain.initialState
- Pass initialLevel to GlobalLogging.initial so console appender uses it from first log
- Set Keys.logLevel and BasicKeys.explicitGlobalLogLevels in initial state when level option present
- Add initialLevel parameter to GlobalLogging.initial (default Level.Info) for backward compatibility
- Add InitialLogLevelSpec tests for logLevelFromArguments
- Add docs/fix-4979-manual-verification.md for manual reproduction
2026-02-26 13:50:31 -05:00
Dream 1a1b1dca4a
[2.x] refactor: Extract color-default logic as a pure function (#8817)
**Problem**
The color-detection logic in Terminal.scala is interleaved with side
effects (system property reads, environment checks) making it hard to
understand and impossible to unit test.

**Solution**
Extract a pure `isColorDefault` function that takes all inputs as
parameters and returns whether color should be enabled. The existing
`useColorDefault` delegates to it. Add unit tests covering all priority
levels and heuristic branches.

Fixes #6050
2026-02-26 01:19:26 -05:00
kenji yoshida 62e43711f2
[2.x] refactor: Remove redundant conversions (#8786) 2026-02-22 23:44:17 -05:00
kenji yoshida 611cea8fbd
Add tailrec annotations (#8785) 2026-02-22 22:20:46 -05:00
eugene yokota 5131b8658a
[2.x] Use JProcess for interactive forking (#8677)
**Problem/Solution**
For forking that require both input and output,
use a Java process instead of the Scala process.
2026-02-02 11:03:28 -05:00
Eugene Yokota 9813e60fe3 refactor: Clean up infix etc 2026-01-24 04:52:28 -05:00
E.G 0ec5144a63
[2.x] test: Migrate parser specs to verify.BasicTestSuite (#8551)
Migrate the following test files from ScalaTest's AnyFlatSpec to
verify.BasicTestSuite, following the pattern established by other
test files in the sbt codebase:

- SizeParserSpec.scala (util-complete)
- MultiParserSpec.scala (main-command)

Changes in all files:
- Replace AnyFlatSpec class with BasicTestSuite object
- Convert 'should ... in' syntax to 'test(...)' syntax
- Use Scala 3 syntax with colon indentation
- Add 'end' markers
- Add explicit types where needed

Related to the ongoing test migration effort.
2026-01-18 14:33:04 -05:00
E.G 282719f796
[2.x] test: Migrate ManagedLoggerSpec.scala to verify.BasicTestSuite (#8548)
Migrate ManagedLoggerSpec.scala from ScalaTest's AnyFlatSpec + Matchers
to verify.BasicTestSuite, following the pattern established by other
test files in the sbt codebase.

Changes:
- Replace AnyFlatSpec class with BasicTestSuite object
- Remove ScalaTest Matchers dependency
- Convert 'should ... in' syntax to 'test(...)' syntax
- Use Scala 3 syntax with colon indentation
- Add explicit types for val definitions
- Convert for comprehension to for-do syntax
- Add 'end ManagedLoggerSpec' marker
2026-01-15 23:16:54 -05:00
E.G eaea5f83ad
[2.x] test: Migrate util-logging specs to verify.BasicTestSuite (#8550)
* test: Migrate util-logging specs to verify.BasicTestSuite

Migrate the following test files from ScalaTest's AnyFlatSpec to
verify.BasicTestSuite, following the pattern established by other
test files in the sbt codebase:

- UTF8DecoderSpec.scala
- StackTraceSpec.scala
- TerminalColorSpec.scala

Changes in all files:
- Replace AnyFlatSpec class with BasicTestSuite object
- Convert 'should ... in' syntax to 'test(...)' syntax
- Use Scala 3 syntax with colon indentation
- Add 'end' markers
- Add explicit types where needed

Related to the ongoing test migration effort.

---------

Co-authored-by: GlobalStar117 <GlobalStar117@users.noreply.github.com>
2026-01-15 14:21:00 -05:00
E.G 0760f77881
[2.x] test: Migrate ProgressStateSpec.scala to verify.BasicTestSuite (#8549)
Migrate ProgressStateSpec.scala from ScalaTest's AnyFlatSpec with
BeforeAndAfterAll to verify.BasicTestSuite, following the pattern
established by other test files in the sbt codebase.

Changes:
- Replace AnyFlatSpec class with BasicTestSuite object
- Remove BeforeAndAfterAll trait and convert afterAll to try-finally
- Use scala.util.Using.resource for proper resource management
- Convert 'should ... in' syntax to 'test(...)' syntax
- Use Scala 3 syntax with colon indentation
- Change === to == for assertions
- Add 'end ProgressStateSpec' marker

Related to the ongoing test migration effort.

Co-authored-by: GlobalStar117 <GlobalStar117@users.noreply.github.com>
2026-01-15 14:04:38 -05:00
Dairus 8433dd8db6
[2.x] test: Migrate CleanStringSpec to verify.BasicTestSuite (#8526) 2026-01-14 11:10:40 -05:00
Match 88e2f2704f
[2.x] fix: Fixes --no-colors setting for sbtn (#8517) 2026-01-13 14:44:09 -05:00
MkDev11 02dcab80b9
Fix StackOverflowError when reporting self-referencing exceptions (#8508)
Add circular reference detection to StackTrace.trimmedLines using an
IdentityHashMap-backed Set, similar to how the JDK handles this in
Throwable.printStackTrace().

When a circular reference is detected, the method now appends a
[CIRCULAR REFERENCE: ...] message instead of recursing infinitely.

Fixes #7509
2026-01-12 23:53:44 -05:00
kenji yoshida 113b6eb103
Use SAM-conversion if possible (#8477) 2026-01-11 07:21:28 -05:00
xuwei-k c0fe4dfb10 Add tailrec annotation 2026-01-11 16:33:45 +09:00
gayanMatch 65af6c59d6 Fix #3746: Scripted should fail when no tests match the pattern 2026-01-09 13:57:58 -06:00
Eugene Yokota 6cb786d010 [2.x] Show warnings when scalaVersion is missing
**Problem**
There's a disconnect between what is perceived to be the current
Scala version, and what sbt uses internally, and thus what it
chooses to be the default scalaVersion.

**Solution**
This displays a warning if scalaVersion setting is missing.
2025-12-27 23:49:43 -05:00
Eugene Yokota a38a1aa4d0 [2.x] perf: cache isSupershellEnabled
**Problem**
isSupershellEnabled apparently shows up in profiling
constructing the Map structure for sys props.

**Solution**
Cache isSupershellEnabled.
2025-11-12 22:38:45 -05:00
xuwei-k d1a1dd9edd remove unused code 2025-10-04 19:16:22 +09:00
Eugene Yokota d826f1f903 Merge branch '1.11.x' into wip/merge-1.11.x 2025-09-28 23:08:36 -04:00
Eugene Yokota 645908f597 Apply Contraband 2025-09-28 21:28:21 -04:00
Eugene Yokota 2e7d3fdf93 Support JDK 25 JEP-512/JEP-445 Main run
**Problem**
sbt currently does not support JDK 25 Main class. JDK 25 supports:
1. non-public main method
2. doesn't need Array[String] arg
3. doesn't have to be a static method

**Solution**
This updates Zinc, which supports new Main class detection.

In addition, this implements in-process run emulation support.
2025-09-28 01:51:24 -04:00
Eugene Yokota 2fa3159f18 Update to Contraband 0.8.0 2025-09-19 00:46:34 -04:00
Aleksandra Zdrojowa 622994b40d use reverse topological order for configurations when resolving internal dependencies
- changes the classpath order for internal dependencies
- fix #8249
2025-09-01 16:47:44 +02:00
Eugene Yokota 683a559b37 Remove log4j 2025-08-30 20:29:44 -04:00
Eugene Yokota eb74554ec1 Worker
This implements plain run for worker for testing.
2025-06-30 02:44:36 -04:00
Eugene Yokota 4521f43995 Support debug output for macros
It's sometimes useful to get the output of the macro-generated code.
This adds a mechanism to allow plugins.sbt to pass in scalacOptions,
which we can later check from the macro.

1. -Xmacro-settings:sbt:Vprint prints out the code.
2. Adding -Xmacro-settings:sbt:print-tree-structure prints out the tree structure.
2025-05-27 00:58:41 -04:00
Eugene Yokota 3b4547718e Remove deprecated methods 2025-05-11 05:23:41 -04:00
Eugene Yokota a18ed19cbc fix: Use JDK path, not JRE path
**Problem**
There are a few places where javaHome or java path is set,
using java.home system property. The problem is that it points to JRE,
not JDK, so it would break on Java compilation etc.

**Solution**
If the path ends with jre, go up one directory.
2025-03-03 02:31:44 -05:00
xuwei-k 5d660ab8b5 remove unnecessary `case`
- 3ca3633505/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 cb63de6574 Merge branch '1.10.x' into wip/merge-1.10.x 2025-02-10 02:43:30 -05:00
Eugene Yokota a75e847a08 refactor: Refactor response handler
**Problem**
The sbtn response handling code is relatively stragightforward,
but it's a bit messy.

**Solution**
This cleans it up a bit, similar to the style used by Unfiltered
back then (not sure how Unfiltered plans are written nowadays) by
expressing each event handling as a partial function, and composing them
together using `orElse`.
2025-02-09 18:17:02 -05:00