Releases: com-lihaoyi/mill
0.10.15
Merged Pull Requests
Full Changelog: 0.10.13...0.10.15
0.10.14
Prepared release 0.10.14
0.11.6
Merged Pull Requests
- Post release tasks by @lefou in #2817
- Update Zsh completion link by @carlosedp in #2825
- Avoid calculating PathRef for filtered out deps by @lolgab in #2824
- Allow publishing bridge for a single version by @lolgab in #2822
- Microsecond precision in chrome profile by @lolgab in #2827
- Update semanticdb-scala to 4.8.11 by @lefou in #2819
- Add 2.13.12 to compiler bridge versions by @lolgab in #2830
- docs: proguard - more detailed example by @IdiosApps in #2829
- Try to make
PathRef
robust against concurrent filesystem modifications by @lihaoyi in #2832 - Fix not-interactive warning for mill console by @swaldman in #2834
- Handle potential null-stream in buildinfo plugin by @lefou in #2838
- Use the logger errror stream for messages by @lefou in #2839
- Add Scaladays video by @lihaoyi in #2843
- Enable pathref revalidation for all coursier downloads by @lefou in #2846
- Fix Zip Slip Vulnerabilities by @lefou in #2847
- Update junixsocket to 2.8.2 by @lefou in #2853
- Add an option to disable incremental compilation with zinc by @mrdziuban in #2851
- Update oslib to 0.9.2 by @lefou in #2859
- Update utest to 0.8.2 by @lefou in #2860
- Refactoring by @lefou in #2842
- Support Play Framework 3.0 and 2.9 by @lolgab in #2772
- Use play-pekko-http-server in Play 3 by @lolgab in #2862
- Fixed paragraph example rendering and reworked built-in command section by @lefou in #2864
- ExampleTestSuite: Also support
mill
command in addition to./mill
by @lefou in #2865 - Update Changelog and Documentation for Release 0.10.13 by @lefou in #2873
- Add check for right Tests traits in ScalaJS and Native by @lolgab in #2874
- Doc: Add mill-rust-jni to Thirdparty Plugins page by @yankun1992 in #2878
- Recover from client connection errors by @lolgab in #2879
- Fix discovery of targets whose names get mangled due to their pseudo-private nature by @lihaoyi in #2883
- Make
mill show
skip-j
prefixes to ensure machine readability by @lihaoyi in #2884 - Report when we could not detect the declaring parent of a target by @lefou in #2885
- Put hierarchy checks for test trait behind an overridable def by @lefou in #2876
New Contributors
- @yankun1992 made their first contribution in #2878
Full Changelog: 0.11.5...0.11.6
0.10.13
Merged Pull Requests
- Update zinc to 1.8.1 (Backport of #2515) by @lefou in #2525
- Support Java 20 (Backport of #2501) by @lefou in #2546
- Deprecate SelectMode.Single and backport evalOrThrow API by @lolgab in #2570
- Fix MiMa errors by @lefou in #2870
- Ease transition to Mill 0.11 API by @lefou in #2868
- Update dependencies by @lefou in #2871
- Update semanticdb-scalac to 4.8.13 by @lefou in #2872
Full Changelog: 0.10.12...0.10.13
0.11.5
Merged Pull Requests
- Post-release work by @lefou in #2757
- Maintenance: build.sc cleaning by @lefou in #2762
- Update semanticdb-java to 0.9.6 and sementicdb-scala to 4.8.10 by @lefou in #2764
- Update castor to 0.3.0 by @lefou in #2761
- Update jarjar-abrams-core to 1.9.0 by @lefou in #2758
- Update mainargs to 0.5.4 by @lefou in #2760
- Update scip to 0.3.6 by @lefou in #2763
- Update scalatest to 3.2.17 and zio-test to 2.0.17 by @lefou in #2765
- Update Scala to 2.13.12 by @lefou in #2759
- Update ammonite to 3.0.0-M0-53-084f7f4e by @lefou in #2766
- Fixed a success match in BSP buildTargetRun handler by @lefou in #2771
- Fix some hardcoded scala versions by @lefou in #2768
- Enable
-Xlint:unused
and remove unused imports by @lefou in #2770 - Hide no longer supported
--repl
CLI option by @lefou in #2774 - Clean unused imports by @lefou in #2776
- CI: Raise timeouts for watch tests by @lefou in #2778
- Support
mill.scalalib.JavaModule.zincReportCachedProblems
sys property by @lefou in #2775 - Update sourcecode to 0.3.1 by @lefou in #2779
- Add note about gpg --pinentry-mode=loopback argument to documentation by @swaldman in #2782
- Update coursier-interface to 1.0.19 by @lefou in #2784
- Optimize ScalaJSModule and cache
IRFileCache
by @lolgab in #2783 - Use
quick = true
when calculating PathRef for Mill executable by @lolgab in #2785 - Update scalafmt to 3.7.14 by @lefou in #2786
- Update jline to 3.23.0 by @lefou in #2787
- Update Scala.js to 1.14.0 by @lefou in #2788
- Introduce
mill.api.MillException
to transport the error condition by @lefou in #2789 - Cycle detection in
moduleDeps
andcompileModuleDeps
by @lefou in #2790 - Always resolve compiler bridge in
prepareOffline
by @lefou in #2791 - Update bsp4j to 2.1.0-M6 and adapt to breaking API changes by @lefou in #2794
- CI: lower job timeout to 90 minutes by @lefou in #2796
- Update junixsocket to 2.8.0 by @lefou in #2795
- Remove
$
from RootModule error message by @lolgab in #2799 - Update junixsocket to 2.8.1 by @lefou in #2801
- Simple control over runBackground stdout/stderr streams by @swaldman in #2792
- protobuf module: fix truncation issue when unpacking by @jodersky in #2800
- [BSP] Use consistent file URI format by @lolgab in #2803
- Use project root as
T.workspace
also in meta-build by @lolgab in #2809 - fix: Errors not cleaning up in BSP for Scala 3 by @lolgab in #2810
- Update bsp4j to 2.1.0-M7 by @lefou in #2813
- Cleanup BSP server implementation by @lolgab in #2814
New Contributors
Full Changelog: 0.11.4...0.11.5
0.11.4
Merged Pull Requests
- Rebootstrap Mill on 0.11.3 by @lihaoyi in #2744
- Some post-release tasks by @lefou in #2745
- Update mill-mima to 0.0.24 by @lefou in #2746
- doc: add missing nativeImageClassPath def in NativeImage example by @Flowdalic in #2751
- Update htmlcleaner to 2.29 by @lefou in #2747
- Support
release-size
releaseMode in Scala Native by @lolgab in #2754 - Fix sneaky binary incompatibility in Discover.scala by @lihaoyi in #2752
Full Changelog: 0.11.3...0.11.4
0.11.3
Merged Pull Requests
- Rebootstrap on 0.11.2 by @lihaoyi in #2714
- Post release: Update MiMa baseline by @lefou in #2715
- Added a changelog to the Mill site by @lefou in #2717
- Update various transitive runtime dependencies by @lefou in #2716
- Added historic release dates to changelog by @lefou in #2718
- Also search in current workding dir for .scalafmt.conf by @lefou in #2720
- Allow Mill CLI to select the meta-build frame it operates on by @lefou in #2719
- Bump actions/checkout from 3 to 4 by @dependabot in #2722
- Update junixsocket to 2.7.1 by @lefou in #2726
- Update coursier to 2.1.7 by @lefou in #2727
- Update Scala Native to 0.4.15 by @lefou in #2728
- Deep suggestions based on task names by @lihaoyi in #2731
- Fix conflicting dependencies between upstream
JavaModule
s by @lihaoyi in #2735 - Fix the scala-library dependency for (generic) platform modules by @lefou in #2739
- Update junixsocket to 2.7.2 by @lefou in #2740
- Update zinc to 1.9.5 by @lefou in #2738
- Bump uPickle and Mainargs by @lihaoyi in #2742
- Try to fix console and .repl by @lihaoyi in #2743
Full Changelog: 0.11.2...0.11.3
0.11.2
Merged Pull Requests
- Added 0.11.1 to MiMa baselines by @lefou in #2631
- Differentiate by Mill version when selecting a server worker by @lefou in #2639
- Define reasonable
platformSuffix
inMillBuildPlatformModule
by @lefou in #2635 - Add mill-aliases plugin to third-party docs. by @carlosedp in #2644
- use bspCompileClassesPath in bspTransitiveCompileClasspath by @pieter-bos in #2646
- Update zinc to 1.9.2 by @lefou in #2645
- deps: update semanticdb to 4.8.1 by @ckipp01 in #2653
- Document
.config/mill-version
support by @lefou in #2652 - Update mill.bat to millw 0.4.7 by @lefou in #2651
- Update LICENSE to use Github template by @lolgab in #2657
- Avoid intermediate mapping in ZincWorkerImpl by @lolgab in #2661
- Docs: Added section for mill-spring-boot plugin by @lefou in #2666
- Docs: Fix real world Mill examples section by @lefou in #2667
- Update coursier to 2.1.5 by @lefou in #2671
- Update zinc to 1.9.3 by @lefou in #2668
- Update scalafmt to 3.7.10 by @lefou in #2670
- Tooling: Use scalafmt 3.7.10 by @lefou in #2669
- Update upickle to 3.1.2 by @lefou in #2672
- Fix
init
command and support running Mill without existingbuild.sc
by @lefou in #2662 - Reworked installation documentation by @lefou in #2676
- Bytecode reachability analysis for fine-grained target invalidation by @lihaoyi in #2417
- Add a CONTRIBUTING document by @lefou in #2677
- Add test for buildinfo with ScalaJS without special settings by @lolgab in #2577
- Fix line numbers in errors for scripts starting with leading comments or whitespace by @lihaoyi in #2686
- #2673 doc - use maven through corporate proxy by @Quafadas in #2684
- Update Scala for some workers to 2.12.18 by @lefou in #2679
- Fix redirection of stdout stream to stderr when using
show
by @lihaoyi in #2689 - Add Code of Conduct by @lefou in #2678
- Use original
Evaluator
s to preserve their association with modules in BSP to avoid using the wrong evaluator by @lihaoyi in #2692 - Rebootstrap Mill on top of 0.11.1-30-ead8bb by @lihaoyi in #2696
- Tweak examples and visualize rendering by @lihaoyi in #2697
- Derived new GenIdea module to support meta-builds by @lefou in #2638
- Render asciidoc varible in usage example by @lefou in #2698
- Update Mill version to 0.11.1-33-6635d2 by @lefou in #2699
- Don't fetch sources when not explicitly requested for by @lefou in #2701
- Avoid having the mill-launcher jar twice on the classpath by @lefou in #2702
- Update coursier to 2.1.6 to mitigate CVE-2022-46751 by @lefou in #2705
- Update junixsocket to 2.7.0 by @lefou in #2706
- Add merge_group to trigger CI runs by @lefou in #2713
- Update mainargs to 0.5.1 by @lefou in #2707
- Update zio-test to 2.0.16 by @lefou in #2712
- Update semanticdb-scala to 4.8.8 and semanticdb-java to 0.9.5 by @lefou in #2708
- Update coursier interface to 1.0.18 by @lefou in #2710
- Update mill-scip to 0.3.5 by @lefou in #2711
- Refactor and update dependencies of codesig tests by @lefou in #2709
New Contributors
- @pieter-bos made their first contribution in #2646
Full Changelog: 0.11.1...0.11.2
0.11.1
Merged Pull Requests
- After release maintenance by @lefou in #2578
- Rebootstrap Mill on 0.11.0 by @lihaoyi in #2571
- Fix type annotation for inner scoverage module by @lefou in #2583
- Refined fix for
ScoverageModule
inner module by @lefou in #2584 - CI: Make bin-compat-checks mandatory by @lefou in #2581
- Fix a couple minor typos and formatting by @ysthakur in #2592
- Fix edit page links in website by @ysthakur in #2593
- Add docker-nativeimage and native-image plugins to docs by @carlosedp in #2599
- Properly distinct-ify commands when resolved multiple times by query by @lihaoyi in #2604
- Code cleaning by @lefou in #2606
- Cleanup leftover --repl flag handling, fail when --repl is given by @lefou in #2611
- Fix source links in API documentation by @ysthakur in #2605
- Make empty selector message more helpful by @ysthakur in #2610
- Update mill-github-dependency-graph to 0.2.5 by @lolgab in #2608
- Restore correct default for
esFeatures
by @lolgab in #2607 - Fix typo in readme.adoc by @megri in #2614
- Added test-interface runtime dependency to testrunner.entrypoint by @lefou in #2612
- Remove scalameta trees dependency by @lolgab in #2616
- Convert entrypoint.runIvyDeps to ivyDeps by @lefou in #2617
- Update zinc to 1.9.1 by @lefou in #2619
- Update bsp4j to 2.1.0-M5 by @lefou in #2620
- Added more deps to dummy module by @lefou in #2615
- Support default crossSegment selection with
cross[]
notation by @lefou in #2623 - Update external plugin reference that supports 0.11 by @daddykotex in #2621
- Fix "A target must be provided" issue in
--bsp
mode by @lefou in #2625 - BSP: Fix MatchError when matching on modules in BSP by @lolgab in #2626
- Fix package of
mill.contrib.bloop.Bloop
module by @lolgab in #2628 - Update Ammonite to support Scala 3.3.0 by @lolgab in #2624
- Build with latest Mill snapshot by @lefou in #2630
New Contributors
Full Changelog: 0.11.0...0.11.1
0.11.0
Mill 0.11.0 is a breaking release with a focus on polish. This release fixes many long-standing sharp edges that could not be fixed without breaking backwards compatibility, and cleans up the Mill codebase for better maintainability and so we can offer better compatibility guarantees going forward. User-facing improvements include an overhauled documentation-site, much easier cross builds, faster/more-robust bootstrapping, better error messages. It aims to do everything Mill already does, but better.
One thing especially worth calling out is that the Mill documentation has been overhauled, with new sections Scala Build Examples, Scala Module Configuration, Web Build Examples, and many more. These examples all live in the example/ folder, and zips containing them can be downloaded from Github Releases to easily try them out or bootstrap a new project. This should make it much easier to learn Mill: what features exist, why they are necessary, and how you can use them in a realistic setting to configure a Mill build for a variety of real-world scenarios. All examples are executable, and are executed as part of Mill's CI to ensure they are correct and up to date. The Mill Scaladoc is now also aggregated and published with each release
Major changes that may require migration:
-
The
mill._
import now has to be included explicitly at the top of yourbuild.sc
, and is no longer added implicitly -
Mill no longer runs the
build.sc
file using Ammonite, and instead bootstrapsbuild.sc
itself using Mill.- Any
build.sc
compilation "pre-def" customization that may have been done using Ammonite'simport $file.foo
orimport $exec.foo
now has to be done using Mill meta-builds. - Normal
import $file
andimport $ivy
s should continue working
- Any
-
The
./mill
bootstrap script now downloads Mill from Maven Central rather than Github Releases.- This should help improve the robustness of Mill bootstrapping, such that Github outages would no longer cause Mill bootstrapping to fail (Maven Central outages cause bootstrapping failure regardless).
- We will continue publishing the Mill artifacts to Github Releases for compatibility, but please update your
./mill
script to the latest version (from this release) viacurl -L https://github.com/com-lihaoyi/mill/releases/download/0.11.0/0.11.0 -o mill
to benefit from this
-
Cross build syntax has been overhauled:
- Rather than using
class Foo(crossValue: T) extends Module
, they are now defined bytrait Foo extends Cross.Module[T]
. - Cross modules no longer add their cross-keys to the
millSourcePath
by default. If you previously had adef millSourcePath = super.millSourcePath / os.up
, you must remove it. If you previously did not have that, you must adddef millSourcePath = super.millSourcePath / crossValue
- See the Cross-Scala Version Modules or Cross Build Documentation for more details of how things work now.
- PlatformScalaModule has been introduced to simplify cross JVM/JS/Native modules: automatically inferring the
jvm
/js
/native
platformSuffix
from the module path, automatically adding-${versionSuffix}
source folders, and automatically removing theplatformSuffix
from the publish artifact path. - Test modules now automatically follow the source-folder layout of their parent module (#2531), removing much of the need for manually
override def sources
in your test modules to set up cross version/platform sources - See the Publishing Cross-Platform Scala Module or Publishing Cross-Platform Scala Module Alternative documentation to see how you can use these
- Rather than using
-
Target resolution now instantiates modules substantially more lazily, often not instantiating them at all unless strictly necessary.
- This may help improve startup performance for working with large build files
- This means that for modules who
override def millModuleDirectChildren
, you need to additionally inherit from the marker trait DynamicModule so Mill knows to instantiate the module and use your override during resolution
-
The
mill.modules
package has been removed, with functionality moved tomill.util
andmill.scalalib
-
The
Tests
trait has been removed, as it relies on trait shadowing that will be removed in Scala 3. Please useScalaTests
/ScalaJSTests
/ScalaNativeTests
instead -
The
ScalaModule#run
command now takes aargs: Task[Args]
instead ofargs: String*
, allowing it to be easily used in the implementation of tasks. example -
RunScript.resolveTasks
has been replaced bymill.resolve.Resolve.{Segments,Tasks}
Example Build Migrations
Below is a link the to 0.10.x -> 0.11.0 build migrations for a number of the com.lihaoyi
projects, in order from simplest to the more complex. These may be useful to skim through to see what kind of changes a "typical" Mill project would need to do migrating to 0.11.0
Merged Pull Requests (since 0.11.0-M11
)
- Renamings for conciseness: ScalaModuleTests -> ScalaTests, InnerCrossModule -> CrossValue by @lihaoyi in #2572
- Add
mill.define.DynamicModule
to allow custom overriding ofmillModuleDirectChildren
by @lihaoyi in #2574 - Bump Scala to 2.13.11 and use pre-published bridges by @lihaoyi in #2575
- Remove
mill._
magic import from builds by @lolgab in #2418
Full Changelog: 0.11.0-M11...0.11.0
All Merged Pull Requests (since 0.10.10
)
- fix: remove index.scip by @ckipp01 in #2172
- Update Mill to 0.10.10 by @lefou in #2174
- Cleanup deprecated API, removed API, adapted call sites by @lefou in #2031
- Restrict Cross parameter to be of type Module by @lefou in #2048
- Update os-lib to 0.9.0 by @scala-steward in #2176
- Consolidated artifact and platform suffix handling by @lefou in #2025
- MultiLogger refactoring to better control
debugEnabled
by @lefou in #2179 - Pass more settings from
ScalaJSModule
to itsTests
by @lolgab in #2180 - Remove deprecated scalajsmodule apis by @lolgab in #2181
- Don't include resources into compileClasspath. by @vic in #1811
- Removed some deprecated coursier helper methods by @lefou in #2184
- Use classpath
PathRef
s hashCode as cache key for Scala.js worker by @lolgab in #2183 - Use classpath PathRefs hashCode as cache key for Zinc worker by @lolgab in #2185
- Use PathRef hashCode for workers caches by @lolgab in #2189
- Doc: Fix download URL of Mill bootstrap script by @lefou in #2192
- Update Scala Native API and worker by @lolgab in #2193
- Update coursier to 2.1.0-RC3 by @scala-steward in #2194
- Update scala-library to 2.12.17 by @scala-steward in #2195
- Document
ivyDepsTree
and transitive dep management by @IdiosApps in #2175 - Add in ability to pass in
whatDependsOn
toJavaModule.ivyDepsTree
by @ckipp01 in #2191 - Bind cross-versions to the context of the originating module by @lefou in #1574
- Update trees to 4.7.0 by @scala-steward in #2201
- Tooling maintenance by @lefou in #2208
- Fixed typo in package of
mill.scalalib.BoundDep
by @lefou in #2214 - Use
millModuleDirectChildren
consistently everywhere by @lolgab in #2207 - Update trees to 4.7.1 by @sc...