@@ -12,107 +12,57 @@ endif::[]
1212_The changelog below is for tagged, stable releases. For unstable releases,
1313see the list at https://repo1.maven.org/maven2/com/lihaoyi/mill-dist_
1414
15- [#1-0-0-RC3 ]
16- === 1.0.0-RC3 
17- _2025-07-01_ 
15+ [#1-0-0]
16+ === 1.0.0
17+ _2025-07-10_ 
1818
19+ :version: 1.0.0
20+ :milestone-name: 1.0.0
21+ :milestone: 121
22+ :prev-version: 1.0.0-RC3
1923
20- :version: 1.0.0-RC3
21- :milestone-name: 1.0.0-RC3
22- :milestone: 120
23- :prev-version: 1.0.0-RC2
24- 
25- 1.0.0-RC3 is likely to be the last RC before 1.0.0 final is cut
26- 
27- Changes since 1.0.0-RC2
28- 
29- * Improvements to Bash/Zsh tab-completion logic ({link-pr}/5296[#5296])
30- * Improvements to BSP support ({link-pr}/5310[#5310])
31- * Replace `Task.workspace` / `TaskCtx.workspace` with `BuildCtx.workspaceRoot` ({link-pr}/5322[#5322])
32- * Fix `Task.Sources` customization in `./mill init` ({link-pr}/5325[#5325]), and add support
33-   for importing `.jvmopts` file ({link-pr}/5339[#5339])
34- * Simplify configuration of JVM version ({link-pr}/5327[#5327])
35- * Fix `./mill init` crasher on windows ({link-pr}/5330[#5330])
36- * Add `--no-filesystem-checker` flag to globally disable filesystem read/write checks ({link-pr}/5278[#5278])
37- * Rename `def defaultCommandName` to `def defaultTask` ({link-pr}/5405[#5405])
38- * Consolidate `mill.define` and `mill.api` into a single `mill.api` namespace ({link-pr}/5407[#5407])
39- * Re-organize `mill.scalalib` and `mill.javalib` packages ({link-pr}/5411[#5411])
40- 
41- [#1-0-0-RC2]
42- === 1.0.0-RC2
43- _2025-06-12_
44- 
45- 
46- :version: 1.0.0-RC2
47- :milestone-name: 1.0.0-RC2
48- :milestone: 119
49- :prev-version: 1.0.0-RC1
50- 
51- Changes since 1.0.0-RC1
52- 
53- * Add support for Bash/Zsh tab-completion, installable via `./mill mill.tabcomplete/install`
54-   ({link-pr}/5279[#5279])
55- 
56- * Better classloader re-use for improved performance when compiling Kotlin/Scala.js/Scala-Native
57-   modules ({link-pr}/5269[#5269])
58- 
59- * Lots of BSP/Intellij/VSCode bugfixes ({link-pr}/5275[#5275], {link-pr}/5265[#5265],
60-   {link-pr}/5220[#5220], {link-pr}/5202[#5202], {link-pr}/5200[#5200])
61- 
62- * Lots of error-reporting improvements ({link-pr}/52825[#5282], {link-pr}/5267[#5267],
63-   {link-pr}/5235[#5235], {link-pr}/5233[#5233], {link-pr}/5213[#5213])
64- 
65- 
66- [#1-0-0-RC1]
67- === 1.0.0-RC1
68- _2025-05-25_
69- 
70- :version: 1.0.0-RC1
71- :milestone-name: 1.0.0-RC1
72- :milestone: 118
73- :prev-version: 0.12.14
74- 
75- `1.0.0-RC1` is the first release candidate of the upcoming Mill 1.0.0 release. This is a major
76- backwards incompatible release that aims to clean up years of technical debt, and build a strong
24+ `1.0.0` is a major backwards incompatible release that fixes many long-standing
25+ issues and aims to build a strong
7726technical foundation for the next few years of development. Any breakages or problems surfaced
7827by RC1 will be fixed in following RC releases, with the hope to release 1.0.0 final on 30 June
79- 2025. For any questions or discussion about `1.0.0-RC1 `, please use the following thread:
28+ 2025. For any questions or discussion about `1.0.0`, please use the following thread:
8029
81- - https://github.com/com-lihaoyi/mill/discussions/5189 
30+ - https://github.com/com-lihaoyi/mill/discussions/5497 
8231
83- Any Mill plugins you use will need to be re-published for Mill 1.0.0-RC1  if you would like to 
84- try out the RC out  in your builds, and re-published again for Mill 1.0.0 final (which may 
85- have further changes and be incompatible with the RC1) 
32+ Any third-party  Mill plugins you use will need to be re-published for Mill 1.0.0 if you would
33+ like to use them  in your builds. Builtin functionality in `mill.*lib` packages or contrib 
34+ plugins in `mill.contrib` are available immediately 
8635
87- We expect it will take some work from projects on Mill 0.12.x or earlier to migrate to 1.0.0-RC1 .
36+ We expect it will take some work from projects on Mill 0.12.x or earlier to migrate to 1.0.0.
8837There are a lot of breaking changes in the release, but we hope that these breaking changes will
8938greatly simplify the Mill user experience going forward, and allow it to remain stable for more
9039years before further breaking changes are necessary. Updated docs are available on the Mill
91- doc-site's `main-branch` tab :
40+ doc-site:
9241
93- - https://mill-build.org/mill/main-branch/ index.html
42+ - https://mill-build.org/mill/index.html
9443
9544But for most people upgrading, the most relevant changes are listed in the changelog below:
9645
97- * NOTE: Mill 1.0.0-RC1 (and all other versions since 0.12.13) requires an updated bootstrap
98- script in order to work, due to changes in Sonatype Central that forced a change in the
99- download URLs for new releases going forward. To update your bootstrap script, you can use
46+ * NOTE: Mill 1.0.0 (and all other versions since 0.12.13) requires an updated bootstrap
47+ script in order to work, due to changes in the Sonatype Central package registry that
48+ forced a change in the download URLs for new releases going forward. To update your
49+ bootstrap script, you can use
10050
10151```
10252# linux
103- curl -L https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/1.0.0-RC1 /mill-dist-1.0.0-RC1 -mill.sh -o mill
53+ curl -L https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/1.0.0/mill-dist-1.0.0-mill.sh -o mill
10454chmod +x mill
105- echo 1.0.0-RC1  > .mill-version
55+ echo 1.0.0 > .mill-version
10656
10757# windows
108- curl -L https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/1.0.0-RC1 /mill-dist-1.0.0-RC1 -mill.bat -o mill.bat
109- echo 1.0.0-RC1  > .mill-version
58+ curl -L https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/1.0.0/mill-dist-1.0.0-mill.bat -o mill.bat
59+ echo 1.0.0 > .mill-version
11060```
11161
11262==== Major Breaking Changes
11363
11464* `build.mill` and `package.mill` files are now written in Scala 3.7.1 ({link-pr}/3369[#3369],
115-   see https://www.youtube.com/watch?v=Aos6vp81I7Q[bishabosha's talk at Scala.IO Paris]).  
65+   see https://www.youtube.com/watch?v=Aos6vp81I7Q[bishabosha's talk at Scala.IO Paris]).
11666  Any third-party libraries used must be Scala 3 compatible (most already are). You may now
11767  use Scala 3 language features such as https://docs.scala-lang.org/scala3/reference/other-new-features/indentation.html[Optional Braces]
11868  in your `.mill` files
@@ -163,8 +113,7 @@ package build
163113
164114
165115* The `Agg()`/`Agg[T]` collection types have been removed and replaced by `Seq()`/`Seq[T]`
166-   ({link-pr}/4525[#4525]). Aliases were left in place to ease in the migration, but you
167-   should replace all usage of `Agg` with `Seq` and use `Seq` going forward
116+   ({link-pr}/4525[#4525]):
168117
169118
170119```diff
@@ -195,12 +144,15 @@ package build
195144  to a new `mill.define.BuildCtx` object that centralizes all these build-level APIs
196145  ({link-pr}/5142[#5142])
197146
198- * Many Task-related renamings in `mill.define`: `Target` -> `Task.Simple`, `TargetImpl` -> `Task.Computed`, 
147+ * Replaced `Task.workspace` / `TaskCtx.workspace` with `BuildCtx.workspaceRoot` ({link-pr}/5322[#5322])
148+ 
149+ * Many Task-related renamings in `mill.define`: `Target` -> `Task.Simple` (still aliased as the `T[_]` type),
150+   `TargetImpl` -> `Task.Computed`,
199151  `Worker` -> `Task.Worker`, `Command` -> `Task.Command`, `AnonImpl` -> `Task.Anon`, `InputImpl` -> `Task.Input`,
200152  `SourcesImpl` -> `Task.Sources`, `SourceImpl` -> `Task.Sources` ({link-pr}/5168[#5168]).
201153
202154* `mill.testkit.TestBaseModule` has been renamed `mill.testkit.TestRootModule` ({link-pr}/5143[#5143]),
203-   to make it clear it is meant to be the root of the module hierarchy
155+   to make it clear it is meant to be the root of the module hierarchy, and not the class hierarchy 
204156
205157* The `T.*` methods have been removed. These were replaced by `Task.*` equivalents in 0.12.x.
206158
@@ -213,20 +165,28 @@ package build
213165+ }
214166```
215167
216- * `def zincWorker`, `ZincWorkerModule`, and `ZincWorkerUtil` have been renamed to  
168+ * `def zincWorker`, `ZincWorkerModule`, and `ZincWorkerUtil` have been renamed to
217169  `jvmWorker`, `JvmWorkerModule`, and `JvmWorkerUtil` {link-pr}/4834[#4834])
218170
219171* `millSourcePath` has been renamed to `moduleDir`
220172
221173* The terms `client`/`server` throughout the codebase have been renamed to `launcher`/`daemon` ({link-pr}/5135[#5135])
222174
175+ * Rename `def defaultCommandName` to `def defaultTask` ({link-pr}/5405[#5405])
176+ 
177+ * Consolidate `mill.define` and `mill.api` into a single `mill.api` namespace ({link-pr}/5407[#5407])
178+ 
179+ * Separate `mill.scalalib` and `mill.javalib` into two separate modules, with `scalalib`
180+   depending on `javalib` but not vice versa. Most classes are left unchanged, although a few
181+   were moved from `scalalib` to `javalib` as part of this refactor ({link-pr}/5411[#5411], {link-pr}/5469[#5469], {link-pr}/5470[#5470])
182+ 
223183* `def test` has been renamed `def testForked` ({link-pr}/4577[#4577]). This allows you to distinguish
224184  between running all modules named `test` (`./mill __.test`) and running all modules which are test suites
225185  (`./mill __.testForked`) that may include `integration` tests modules or modules with other names
226186
227187* Removed `PublishModule.publishSelfDependency` in favor of `artifactMetadata` ({link-pr}/5118[#5118])
228188
229- * `os.*` filesystem operations are now restricted by default:  
189+ * `os.*` filesystem operations are now restricted by default:
230190
231191** During the execution phase, Task implementations can only write
232192   to their own `.dest` folder, and only read from their own or upstream `.dest` folders
@@ -237,7 +197,8 @@ package build
237197** These restrictions are best effort guardrails to guide users towards best practices, and
238198   are not intended to be a fully-hermetic sandbox. You can disable them via
239199   `mill.define.BuildCtx.withFilesystemCheckerDisabled { ... }` if you need to do something
240-    outside of the sandbox and are sure you know what you are doing.
200+    outside of the sandbox and are sure you know what you are doing, or pass the
201+    `--no-filesystem-checker` flag to globally disable filesystem read/write checks
241202
242203* `build.mill` files are now compiled with a minimized classpath containing only
243204  the necessary APIs, without all of Mill's internal code on the classpath
@@ -252,22 +213,14 @@ package build
252213** `mill.resolve`, `mill.runner`, `mill.eval`, etc. are no longer on the classpath.
253214   In general, a lot of Mill packages that were previously
254215   on the classpath by happenstance have been removed, and only the core APIs you really
255-    need remain exposed under `mill.api`, `mill.define`, `mill. util`, and the various
256-    `mill.foolib` packages.
216+    need remain exposed under `mill.api`, `mill.util`, and the various
217+    `mill.foolib` packages. `mill.define` has been removed and its classes moved to `mill.api` 
257218
258219** Similarly, many third-party libraries that were on the Mill classpath by happenstance
259220   have been removed, and others that are not intended for public use are present at runtime
260221   but removed from the compile-time classpath so you cannot compile against them in your
261222   `build.mill` code. You can re-include any third party libraries you need
262-    via the `//| mvnDeps: ` YAML header
263- 
264- ** `mill.api`, `mill.define` and `mill.util` have been re-organized. Many classes have been
265-    moved around, so if your imports no longer compile you may need to try the other two packages
266-    to see where the class ended up.
267- 
268- *** `mill.api` now contains `build.mill` code that has zero third-party dependencies
269- *** `mill.define` contains the code used in `build.mill` that has dependencies
270- *** `mill.util` contains code used in `build.mill` that is also used in other parts of Mill.
223+    via the `//| mvnDeps: ` YAML build header
271224
272225* Root modules in `build.mill` and `package.mill` files no longer need an explicit `extends RootModule`
273226  superclass, as they can be identified unambiguously by the `object package` name, so
@@ -303,23 +256,30 @@ package build
303256
304257* Mill's plugin infrastructure has changed with the release of Mill 1.0.0: plugins now need
305258  to use Scala 3.7.0, should now depend on `mill-libs` rather than `mill-dist`, and integration
306-   and example tests should use a `MILL_LOCAL_TEST_OVERRIDE_CLASSPATH ` environment variable 
259+   and example tests should use `MILL_LOCAL_TEST_OVERRIDE_* ` environment variables 
307260  rather than the previous `mill/local-test-overrides` classpath resource. See the latest
308261  documentation for how plugins are currently defined and published at
309262  https://mill-build.org/mill/main-branch/extending/writing-plugins.html[Writing Mill Plugins]
310263
311264* Mill's uPickle dependency has been updated from 3.3.1 to 4.2.1, which introduces some backwards
312-   incompatible changes to the serialized JSON output. This should only affect you if you are  
265+   incompatible changes to the serialized JSON output. This should only affect you if you are
313266  processing Mill's `out` folder `.json` files via external tools
314267
268+ * Simplify configuration of JVM version, they are now configured by overriding `def jvmId`
269+   directly on `JavaModule` or `ScalaModule` without needing to go through `def jvmWorker`
270+   ({link-pr}/5327[#5327])
271+ 
315272==== Other Changes
316273
317274* Mill's bootstrap scripts now use the native launcher by the default, except for
318-   Windows-ARM which is not supported by the Graal tooling we used to build these native 
319-   image. To use the  JVM-based launcher, you need to explicitly use a `-jvm` suffix in
275+   Windows-ARM which is not supported by the underlying  Graal tooling. To use the 
276+   JVM-based launcher, you need to explicitly use a `-jvm` suffix in
320277  your `.mill-version` file e.g. `1.0.0-jvm`. We expect this should be mostly transparent
321278  and have no visible impact to users.
322279
280+ * Add support for Bash/Zsh tab-completion, installable via `./mill mill.tabcomplete/install`
281+   ({link-pr}/5279[#5279], {link-pr}/5296[#5296])
282+ 
323283* Mill's server-client model has been simplified, from having an elastic pool of JVM daemons
324284  each connected to a single client at a time, to a single shared JVM that handles potentially
325285  multiple client simultaneously ({link-pr}/5066[#5066]). This should result in reduced resource
@@ -344,7 +304,7 @@ object `package` extends Cross[FooModule]("3.6.2", "2.13.16") {
344304}
345305```
346306
347- * Mill now supports a `--offline` option to run in offline mode.  
307+ * Mill now supports a `--offline` option to run in offline mode.
348308  Custom tasks that need to download remote resources should respect that mode via
349309  the `Task.offline` API. ({link-pr}/4914[#4914])
350310
@@ -362,8 +322,8 @@ object `package` extends Cross[FooModule]("3.6.2", "2.13.16") {
362322  help mitigate problems we've seen in the past with long-lived Mill processes becoming
363323  unstable or unresponsive ({link-pr}/5079[#5079], {link-pr}/5080[#5080], {link-pr}/5082[#5082])
364324
365- * Mill now uses uPickle 4.2.1, providing support for 
366-   https://docs.scala-lang.org/sips/named-tuples.html[Scala 3.7.0 Named Tuples] :
325+ * Scala 3.7 https://docs.scala-lang.org/sips/named-tuples.html[Scala 3.7.0 Named Tuples] 
326+   can be used as task return values :
367327
368328```scala
369329import upickle.implicits.namedTuples.default.given
@@ -375,22 +335,42 @@ def namedTupleTask = Task {
375335* `def repositories: T[Seq[String]]` is now provided as a simpler alternative to
376336  `def repositoriesTask`, making it easier to add the most common URL/file-based repositories
377337  to your project. `repositoriesTask` still exists, but is now only necessary for
378-   more complex custom repository setups beyond the simple cases that `repositories` supports.
338+   more complex custom repository setups beyond the simple cases that `repositories` supports
339+   (see https://get-coursier.io/upcoming/reference-repositories/[Coursier Repositories Reference]
340+   for documentation on what repository strings are supported).
341+ 
342+ * Fix `Task.Sources` customization in `./mill init` ({link-pr}/5325[#5325]), and add support
343+   for importing `.jvmopts` file ({link-pr}/5339[#5339])
344+ 
345+ * Fix `./mill init` crasher on windows ({link-pr}/5330[#5330])
346+ 
347+ * Support for publishing `-SNAPSHOT` versions to Sonatype Central ({link-pr}/5489[#5489])
348+ 
349+ * Fix Sonatype Central publishing for users with multiple GPG keys ({link-pr}/5471[#5471])
350+ 
351+ * Fix `-Dfoo=bar` property passing when using Graal native image launcher ({link-pr}/5440[#5440])
352+ 
353+ * Added support for using https://pmd.github.io/[PMD] to lint Java modules ({link-pr}/5393[#5393])
354+ 
355+ * Improve multi-line terminal prompt, preserving the last-shown prompt when interrupted
356+   via `Ctrl-C` ({link-pr}/5452[#5452]), and fix an issue with the last character on each line
357+   missing in the output ({link-pr}/5336[#5336])
379358
380- * Lots of miscellaneous improvements:
359+ * Many BSP support and IDE integration improvements, which should hopefully smoothen out
360+   the process of using Mill from IDEs like IntelliJ and VSCode ({link-pr}/4851[#4851],
361+   {link-pr}/4873[#4873], {link-pr}/4876[#4876], {link-pr}/4881[#4881], {link-pr}/4873[#4873],
362+   {link-pr}/4940[#4940], {link-pr}/4941[#4941], {link-pr}/5275[#5275], {link-pr}/5265[#5265],
363+   {link-pr}/5220[#5220], {link-pr}/5202[#5202], {link-pr}/5200[#5200], {link-pr}/5310[#5310])
381364
382- ** BSP support and IDE integration ({link-pr}/4851[#4851],{link-pr}/4873[#4873],
383-    {link-pr}/4876[#4876], {link-pr}/4881[#4881], {link-pr}/4873[#4873],
384-    {link-pr}/4940[#4940], {link-pr}/4941[#4941])
365+ * Testing and enforcement to prevent Classloader and Thread leaks ({link-pr}/5079[#5079], {link-pr}/5082[#5082])
385366
386- ** Classloader and Thread leak prevention ({link-pr}/5079[#5079], {link-pr}/5082[#5082])
367+ * Major improvements to Android Support ({link-pr}/4485[#4485], {link-pr}/4540[#4540], {link-pr}/4583[#4583],
368+   {link-pr}/4626[#4626], {link-pr}/4759[#4759], {link-pr}/4892[#4892], {link-pr}/4947[#4947],
369+   {link-pr}/5013[#5013], {link-pr}/5053[#5053])
387370
388- ** Android Support ({link-pr}/4485[#4485], {link-pr}/4540[#4540], {link-pr}/4583[#4583],
389-    {link-pr}/4626[#4626], {link-pr}/4759[#4759], {link-pr}/4892[#4892], {link-pr}/4947[#4947],
390-    {link-pr}/5013[#5013], {link-pr}/5053[#5053])
371+ * Major improvements to Kotlin Support in Mill, which is now marked as stable ({link-pr}/4557[#4557],
372+   {link-pr}/4786[#4786], {link-pr}/4771[#4771], {link-pr}/4779[#4779], {link-pr}/4797[#4797], {link-pr}/4963[#4963])
391373
392- ** Kotlin Support ({link-pr}/4557[#4557], {link-pr}/4786[#4786], {link-pr}/4771[#4771],
393-    {link-pr}/4779[#4779], {link-pr}/4797[#4797], {link-pr}/4963[#4963])
394374
395375[#0-12-14]
396376=== 0.12.14
0 commit comments