Skip to content

Commit

Permalink
Blog post on selective test execution (#4175)
Browse files Browse the repository at this point in the history
  • Loading branch information
lihaoyi authored Dec 24, 2024
1 parent c4269df commit 97291aa
Show file tree
Hide file tree
Showing 9 changed files with 604 additions and 8 deletions.
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

0 comments on commit 97291aa

Please sign in to comment.