Skip to content

Commit 1d3b959

Browse files
committed
1.0.0-changelog
1 parent 235367b commit 1d3b959

File tree

4 files changed

+99
-117
lines changed

4 files changed

+99
-117
lines changed

.github/workflows/publish-artifacts.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,4 @@ jobs:
7575

7676
- run: "echo temurin:11 > .mill-jvm-version"
7777

78-
- run: ./mill -i mill.scalalib.SonatypeCentralPublishModule/ --publishArtifacts ${{ matrix.publishartifacts }}
78+
- run: ./mill -i mill.javalib.SonatypeCentralPublishModule/ --publishArtifacts ${{ matrix.publishartifacts }}

changelog.adoc

Lines changed: 92 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -12,107 +12,57 @@ endif::[]
1212
_The changelog below is for tagged, stable releases. For unstable releases,
1313
see 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
7726
technical foundation for the next few years of development. Any breakages or problems surfaced
7827
by 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.
8837
There are a lot of breaking changes in the release, but we hope that these breaking changes will
8938
greatly simplify the Mill user experience going forward, and allow it to remain stable for more
9039
years 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

9544
But 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
10454
chmod +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
369329
import 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
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mill.scalalib
2+
3+
object SonatypeCentralPublishModule
4+
extends mill.api.ExternalModule.Alias(mill.javalib.SonatypeCentralPublishModule)
5+
6+
object Dependency extends mill.api.ExternalModule.Alias(mill.javalib.Dependency)

libs/scalalib/src/mill/scalalib/exports.scala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ export mill.javalib.CoursierModule
1212

1313
export mill.javalib.Dep
1414

15-
object Dependency extends mill.api.ExternalModule.Alias(mill.javalib.Dependency)
16-
1715
export mill.javalib.GenIdeaModule
1816

1917
export mill.javalib.JavaHomeModule
@@ -47,8 +45,6 @@ export mill.javalib.RunModule
4745
export mill.javalib.SonatypeCentralPublisher
4846

4947
type SonatypeCentralPublishModule = mill.javalib.SonatypeCentralPublishModule
50-
object SonatypeCentralPublishModule
51-
extends mill.api.ExternalModule.Alias(mill.javalib.SonatypeCentralPublishModule)
5248

5349
export mill.javalib.TestModule
5450

0 commit comments

Comments
 (0)