Releases: sbt/zinc
1.10.5
updates
- Better memory efficiency for Analysis by @dwijnand in #1494
- Make reproducibility toggleable for
ConsistentAnalysisFormatby @Friendseeker in #1479 - Surface clear cache method for sbt#7868 by @Friendseeker in #1487
behind the scene
- deps: Update util to 1.10.6 by @eed3si9n in #1506
- refactor: Uses inclusive language on internal terminology by @Friendseeker in #1505
- refactor: Replaces deprecated
mutable.AnyRefMapby @Friendseeker in #1488 - refactor: Print
javacoptions in debug log by @Friendseeker in #1497 - ci: Update sbt, scripted-plugin to 1.10.5 by @scala-steward in #1490
- ci: Update sbt-contraband to 0.7.0 by @scala-steward in #1491
- ci: sbt-buildinfo 0.13.1 by @eed3si9n in #1495
- ci: Let Scala Steward auto-update
com.google.protobufby @Friendseeker in #1501 - ci: Update sbt-projectmatrix to 0.10.1 by @scala-steward in #1502
- ci: Pin
com.google.protobuf.protocby @Friendseeker in #1504
Full Changelog: v1.10.4...v1.10.5
1.10.4
behind the scene
- ci: Adds check Contraband sources consistency job by @Friendseeker in #1476
- ci: Bump Scala 3 to 3.3.4 by @Friendseeker in #1482
- ci: Bump sbt to 1.10.3 by @Friendseeker in #1481
- ci: Update sbt-dynver to 5.1.0 by @scala-steward in #1483
- ci: Regenerate copyright headers & Add check copyright header consistency job by @Friendseeker in #1485
- ci: Update sbt-protobuf to 0.8.1 by @scala-steward in #1484
- deps: util 1.10.4 by @eed3si9n in #1486
Full Changelog: v1.10.3...v1.10.4
1.10.3
Protobuf with potential Denial of Service (CVE-2024-7254)
Zinc 1.10.3 updates protobuf-java library to 3.25.5 to address CVE-2024-7254 / GHSA-735f-pc8j-v9w8, which states that while parsing unknown fields in the Protobuf Java library, a maliciously crafted message can cause a StackOverflow error. Given the nature of how Protobuf is used in Zinc as internal serialization, we think the impact of this issue is minimum. However, security software might still flag this to be an issue while using sbt or Zinc, so upgrade is advised. This issue was originally reported by @gabrieljones and was fixed by @Friendseeker in #1443.
@adpi2 at Scala Center has also configured dependency graph submission to get security alerts in #1448.
Reverting the invalidation of circular-dependent sources
Zinc 1.10.3 reverts the initial invalidation of circular-dependent pairs.
There's been a series of incremental compiler bugs such as "Invalid superClass" and "value b is not a member of A" that would go away after clean. The root cause of these bugs were identified by @smarter (#598 (comment)) and @Friendseeker to be partial compilation of circular-dependent sources where two sources A.scala and B.scala use some constructs from each other.
Zinc 1.10.0 fixed this issue via #1284 by invalidating the circular-dependent pairs together. In other words, if A.scala was changed, it would immediately invalidate B.scala. It turns out, that people have been writing circular-dependent code, and this has resulted in multiple reports of Zinc's over-compilation (#1420, #1461). Given that the invalidation seems to affect the users more frequently than the original bug, we're going to revert the fix for now. We might bring this back with an opt-out flag later on. The revert was contributed by by @lihaoyi in #1462.
Improvement: ParallelGzipOutputStream
Zinc 1.10.0 via #1326 added a new consistent (repeatable) formats for Analysis storage. As a minor optimization, the pull request also included an implementation of ParallelGzipOutputStream, which would reduce the generate file size by 20%, but with little time penalty. Unfortunately, however, we have observed in CI that that the scala.concurrent.Future-based implementation gets stuck in a deadlock. @Ichoran and @Friendseeker have contributed an alternative implementation that uses Java threads directly, which fixes the issue in #1466.
Other updates
- fix: Fixes transitive invalidation interfering with cycle stopping condition by @Friendseeker in #1397
- Emit
SourceInfoswhen incremental compilation fails by @Friendseeker in #1306 - Add log for third class invalidation by @Friendseeker in #1413
- fix: Generates
AbstractZincFileduring-sourcepathworkflow by @Friendseeker in #1309 - fix: Handle parsing of non-problems in
JavaErrorParserby @Friendseeker in #1455 - fix: Handle
DependencyByMacroExpansioninConsistentAnalysisFormatby @Friendseeker in #1434 - fix: Backport dummy output jar handling for Consistent Analysis Format by @Friendseeker in #1463
Behind the scene
- refactor: Removes unused
java.util.zip.ZipErrorimport by @Friendseeker in #1460 - refactor: Uses
hashCodeinstead of XOR hash inextraHashcomputation by @Friendseeker in #1405 - refactor: Regenerate contraband Java files by @Friendseeker in #1450
- refactor: Clean compile warnings by @Friendseeker in #1472
- refactor: Avoid deprecated collection.mutable.MultiMap by @xuwei-k in #1474
- refactor: Avoid deprecated
mutable.OpenHashMapby @xuwei-k in #1475 - test: Run
AnalysisFormatBenchmarkduring CI by @Friendseeker in #1408 - test: Add missing condition for
AnalysisFormatBenchmarkCI run by @Friendseeker in #1409 - deps: Update util to 1.10.3 by @eed3si9n in #1473
- deps: Update scalacheck to 1.18.1 by @scala-steward in #1403
- deps: Update scala-compiler, scala-library to 2.12.20 by @scala-steward in #1392
- deps: Update scala-compiler, scala-library to 2.13.15 by @scala-steward in #1446
- deps: Update sbt-contraband to 0.6.0 by @scala-steward in #1447
- ci: Update sbt-pgp to 2.3.0 by @scala-steward in #1445
- ci: Configure Scala Steward not to update
jgitversion by @Friendseeker in #1415 - ci: Fix typo in
ci.ymlby @Friendseeker in #1437 - ci: Add 25 minute timeout for CI by @Friendseeker in #1435
- ci: Adds setup-sbt by @Friendseeker in #1449
- ci: Removes unnecessary setup-sbt step by @Friendseeker in #1459
- Make
zinc-scriptedshow up in IntelliJ by @Friendseeker in #1416
New contributors
Full Changelog: v1.10.2...v1.10.3
1.10.2
fixes and updates
- Fixes mixed compilation to JAR by @adpi2 in #1377
- Fixes over-compilation when using a class directory as a library by @adpi2 in #1382
- Perf: Copy bytes directly instead of using
scala.reflect.io.Streamableby @rochala in #1395 - Avoids using ZipError for future JDK compatibility by @eed3si9n in #1393
behind the scenes
- Remove
printlndebugging in JavaCompilerSpec by @vasilmkd in #1375 - Update scalatest to 3.2.19 by @scala-steward in #1369
- Update sbt, util-control, util-interface, ... to 1.10.1 by @scala-steward in #1379
- Update launcher-interface to 1.4.3 by @scala-steward in #1378
- Update scalafmt-core to 3.8.3 by @scala-steward in #1381
- Update util-control, util-interface, ... to 1.10.1 by @scala-steward in #1380
- Update sbt-mima-plugin to 1.1.4 by @scala-steward in #1384
new contributors
Full Changelog: v1.10.1...v1.10.2
1.10.1
updates
- Parses column/position information from javac error messages by @vasilmkd in #1373
- Fixes the hash code for empty files in the classpath cache by @szeiger in #1366
- Scala 2.13.14 by @eed3si9n in #1374
behind the scenes
- Updates sbt to 1.10.0 by @scala-steward in #1360
- Cleans up scala-xml dependency by @SethTisue in #1362
- Update scalacheck to 1.18.0 by @scala-steward in #1361
- Update org.eclipse.jgit to 6.10.0.202406032230-r by @scala-steward in #1364
Full Changelog: v1.10.0...v1.10.1
1.10.0
what's changed
- New Analysis serialization format by @szeiger in #1326
- Provide helper function for new Analysis format by @eed3si9n in #1350
- Includes extra invalidations in initial validation to fix initial compilation error by @Friendseeker in #1284
- Invalidate macro client when type parameter changes by @Friendseeker in #1316
- Do not cache source stamps in
InitialStampsby @Friendseeker in #1319 - Don't use autoBoot / filterLibrary for 2.13 and 3 by @lrytz in #1331
- Registers inheritance relationship for SAM-type lambda by @Friendseeker in #1288
- Invalidates sources that depends on
@inlinemethods by @Friendseeker in #1310 - Adds support for
-Xshow-phasesby @Friendseeker in #1314 - Do not use
invalidationResultsto compute next invalidations by @Friendseeker in #1312 - Avoids spurious recompilations when unrelated constructor with default argument changes by @Friendseeker in #1324
behind the scenes
- Adds common VSCode metals temp folders to
.gitignoreby @Friendseeker in #1308 - Adds pending scripted test for #616 by @Friendseeker in #1305
- Adds scalafmt convertToNewSyntax setting by @xuwei-k in #1315
- Adds unit test for #1234 by @Friendseeker in #1318
- Fixes build by @eed3si9n in #1347
- IO 1.9.9 by @eed3si9n in #1337
- Passes
-nowarnflag to slience compiler warning during benchmarking by @Friendseeker in #1320 - Runs benchmarks against develop branch during PR by @Friendseeker in #1321
- Runs Zinc benchmarks in parallel by @Friendseeker in #1323
- Update org.eclipse.jgit to 6.9.0.202403050737-r by @scala-steward in #1346
- Update sbt to 1.9.9 by @scala-steward in #1342
- Update sbt-assembly to 2.2.0 by @scala-steward in #1343
- Update sbt-buildinfo to 0.12.0 by @scala-steward in #1344
- Update sbt-jmh to 0.4.7 by @scala-steward in #1330
- Update sbt-projectmatrix to 0.10.0 by @scala-steward in #1338
- Update sbt-protobuf to 0.8.0 by @scala-steward in #1345
- Update scala-compiler, scala-library to 2.12.19 by @scala-steward in #1340
- Update scala-compiler, scala-library to 2.13.13 by @scala-steward in #1341
- Update scala-xml to 2.3.0 by @scala-steward in #1355
- Update scalafmt-core to 3.8.0 by @scala-steward in #1335
- Update scalatest to 3.2.18 by @scala-steward in #1336;
- Incorporate Scala 3.3.1 binary bridge to scripted by @eed3si9n in #1353
- Update scalacheck to 1.17.1 by @scala-steward in #1357
- Update zero-allocation-hashing to 0.16 by @scala-steward in #1116
- Uses
ConcurrentHashMapin Stamp.scala by @Friendseeker in #1317 - Util 1.10.0-RC1 by @eed3si9n in #1348
new contributors
Full Changelog: v1.9.6...v1.10.0
1.10.0-RC2
updates
- Update scalafmt-core to 3.8.1 by @scala-steward in #1349
- Provide helper function for new Analysis format by @eed3si9n in #1350
Full Changelog: v1.10.0-RC1...v1.10.0-RC2
1.10.0-RC1
what's changed
- New Analysis serialization format by @szeiger in #1326
- Invalidate macro client when type parameter changes by @Friendseeker in #1316
- Do not cache source stamps in
InitialStampsby @Friendseeker in #1319 - Don't use autoBoot / filterLibrary for 2.13 and 3 by @lrytz in #1331
- Registers inheritance relationship for SAM-type lambda by @Friendseeker in #1288
- Invalidates sources that depends on
@inlinemethods by @Friendseeker in #1310 - Adds support for
-Xshow-phasesby @Friendseeker in #1314 - Do not use
invalidationResultsto compute next invalidations by @Friendseeker in #1312 - Avoids spurious recompilations when unrelated constructor with default argument changes by @Friendseeker in #1324
behind the scenes
- Adds common VSCode metals temp folders to
.gitignoreby @Friendseeker in #1308 - Adds pending scripted test for #616 by @Friendseeker in #1305
- Adds scalafmt convertToNewSyntax setting by @xuwei-k in #1315
- Adds unit test for #1234 by @Friendseeker in #1318
- Fixes build by @eed3si9n in #1347
- IO 1.9.9 by @eed3si9n in #1337
- Passes
-nowarnflag to slience compiler warning during benchmarking by @Friendseeker in #1320 - Runs benchmarks against develop branch during PR by @Friendseeker in #1321
- Runs Zinc benchmarks in parallel by @Friendseeker in #1323
- Update org.eclipse.jgit to 6.9.0.202403050737-r by @scala-steward in #1346
- Update sbt to 1.9.9 by @scala-steward in #1342
- Update sbt-assembly to 2.2.0 by @scala-steward in #1343
- Update sbt-buildinfo to 0.12.0 by @scala-steward in #1344
- Update sbt-jmh to 0.4.7 by @scala-steward in #1330
- Update sbt-projectmatrix to 0.10.0 by @scala-steward in #1338
- Update sbt-protobuf to 0.8.0 by @scala-steward in #1345
- Update scala-compiler, scala-library to 2.12.19 by @scala-steward in #1340
- Update scala-compiler, scala-library to 2.13.13 by @scala-steward in #1341
- Update scalafmt-core to 3.8.0 by @scala-steward in #1335
- Update scalatest to 3.2.18 by @scala-steward in #1336
- Update zero-allocation-hashing to 0.16 by @scala-steward in #1116
- Uses
ConcurrentHashMapin Stamp.scala by @Friendseeker in #1317 - Util 1.10.0-RC1 by @eed3si9n in #1348
new contributors
Full Changelog: v1.10.0-M3...v1.10.0-RC1
1.10.0-M3
What's changed
- Don't use autoBoot / filterLibrary for 2.13 and 3 by @lrytz in #1331
- Registers inheritance relationship for SAM-type lambda by @Friendseeker in #1288
- Invalidates sources that depends on
@inlinemethods by @Friendseeker in #1310 - Adds support for
-Xshow-phasesby @Friendseeker in #1314 - Do not use
invalidationResultsto compute next invalidations by @Friendseeker in #1312 - Avoids spurious recompilations when unrelated constructor with default argument changes by @Friendseeker in #1324
Behind the scenes
- Use
ConcurrentHashMapin Stamp.scala by @Friendseeker in #1317 - Add pending scripted test for #616 by @Friendseeker in #1305
- Pass
-nowarnflag to slience compiler warning during benchmarking by @Friendseeker in #1320 - Run benchmark against develop branch during PR by @Friendseeker in #1321
- Run zinc benchmarks in parallel by @Friendseeker in #1323
- Add common VSCode metals temp folders to
.gitignoreby @Friendseeker in #1308 - Add scalafmt convertToNewSyntax setting by @xuwei-k in #1315
- Add unit test for #1234 by @Friendseeker in #1318
- Update sbt-jmh to 0.4.7 by @scala-steward in #1330
- Update org.eclipse.jgit to 6.8.0.202311291450-r by @scala-steward in #1328
- Update sbt-projectmatrix to 0.9.2 by @scala-steward in #1327
- Update io, sbt, util-control, util-interface, ... to 1.9.8 by @scala-steward in #1329
- Update scalafmt-core to 3.8.0 by @scala-steward in #1335
- Update scalatest to 3.2.18 by @scala-steward in #1336
- IO 1.9.9 by @eed3si9n in #1337
- Update zero-allocation-hashing to 0.16 by @scala-steward in #1116
Full Changelog: v1.10.0-M2...v1.10.0-M3
1.9.6
Zinc 1.9.6 patches IO to 1.9.8.
Full Changelog: v1.9.5...v1.9.6