Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blog post on selective test execution #4175

Merged
merged 7 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blog/antora.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: blog
title: Mill Blog
title: The Mill Build Engineering Blog
version: ~
nav:
- modules/ROOT/nav.adoc
Expand Down
1 change: 1 addition & 0 deletions blog/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

* xref:3-selective-testing.adoc[]
* xref:2-monorepo-build-tool.adoc[]
* xref:1-java-compile.adoc[]
5 changes: 3 additions & 2 deletions blog/modules/ROOT/pages/1-java-compile.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ not match today's reality. Nowadays the Java compiler can compile "typical" Java
should take more than 10s to compile in a single-threaded fashion, and should be even
faster in the presence of parallelism

// end::header[]


Doing some ad-hoc benchmarks, we find that although the compiler is blazing fast, all
build tools add significant overhead over compiling Java directly:

Expand All @@ -31,8 +34,6 @@ all build tools fall short of how fast compiling Java _should_ be. This post exp
these numbers were arrived at, and what that means in un-tapped potential for Java build
tooling to become truly great.

// end::header[]

## Mockito Core

To begin to understand the problem, lets consider the codebase of the popular Mockito project:
Expand Down
6 changes: 4 additions & 2 deletions blog/modules/ROOT/pages/2-monorepo-build-tool.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ Software build tools mostly fall into two categories:
One question that comes up constantly is why do people use Monorepo build tools? Tools
like Bazel are orders of magnitude more complicated and hard to use than tools
like Poetry or Cargo, so why do people use them at all?
https://knowyourmeme.com/memes/is-he-stupid-is-she-smart-are-they-stupid[Are they stupid?]

// end::header[]



It turns out that Monorepo build tools like Bazel or Mill do a lot of non-obvious things that
other build tools don't, that become important in larger codebases (100-10,000 active developers).
Expand All @@ -32,7 +35,6 @@ features become critical. We'll explore some of the core features of "Monorepo B
below, from the perspective of Bazel (which I am familiar with) and Mill (which this
technical blog is about).

// end::header[]

## Support for Multiple Languages

Expand Down
Loading
Loading