sbt
Mill
sbt | Mill | |
---|---|---|
21 | 14 | |
4,827 | 2,348 | |
0.1% | 1.9% | |
9.5 | 9.9 | |
7 days ago | 6 days ago | |
Scala | Scala | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sbt
-
The thousand dollars one line mistake - SBT + PlayFramework
After spending one day or two reading documents and many frustrated attempts to fix the issue, I ended up arriving at this Github - Spurious recompilation in multi-project build This was not the fix itself, however, gave me light by the end of the tunnel to understand the problem was indeed with the multi project setup.
-
Declarative Gradle is a cool thing I am afraid of: Maven strikes back
NOTE: I won’t mention SBT and Leiningen here because, with all due respect, they are niche build tools. I also won’t discuss Kobalt for the same reason (besides, it’s no longer actively maintained). Additionally, I won’t touch upon Bazel and Buck in this context, mainly because I’m not very familiar with them. If you have insights or comments about these tools, please feel free to share them in the comments 👇
-
Øyvind Berg and John De Goes discuss Bleep, the new config-as-data build tool
Sbt has the primitives that would allow that, but this would change the semantics of the test task. See also testQuick and https://github.com/sbt/sbt/issues/6292
-
Scala Center Roadmap for 2023 and Beyond
If I use IntelliJ then apparently sbtn is not supported and they don't bother with Scala-CLI or Coursier.
-
The size of sbt became big
Version 1.3.13 has a size of 1.17 MB in zip
-
sbt 1.8.0 released
See scala-xml 2.x mega tracker on plugin ecosystem conflicts.
-
sbt 1.7.3 released
This is under discussion at https://github.com/sbt/sbt/issues/6997
-
Make your zip packages for lambdas (and many more use cases) idempotent with a zip-drop-in replacement
See https://github.com/playframework/playframework/issues/10572 and https://github.com/sbt/sbt/issues/6235 for more details and context.
-
How do i stop git bash from showing the time taken for each command
BTW, if you're curious, it appears OP is using this: https://github.com/sbt/sbt/releases/tag/v1.6.2 Pretty sure one of the executables is doing ANSI colours.
-
simplifying sbt with common settings
If you see the progression of documentation changes over the years pushing people towards multi-project style, and issues like https://github.com/sbt/sbt/issues/6217, hopefully you'd see that I've really tried to encourage people to use multi-project style from the get go.
Mill
-
Scala 3 Migration: Report from the Field
This might be a bit of a shameless plug, but because you ask :)
Regarding no sbt, I would highly recommend to have a look at the mill build tool https://mill-build.org. I personally find it very pleasant to use as a replacement for sbt, mostly because of the following points:
- it uses regular Scala code to define a build
-
Bazel 8.0 Released
In most build tools, caching is opt in, so most things dont get cached and instead are wastefully recomputed. In Bazel caching is the default so everything is cached. Even tests are cached so if you run a test twice on the same code, the second time it is skipped
- Dependency bazed test selection: You can use bazel query to determine the possible targets and tests affected by a code change, allowing you to trivially set up CI to only run tests downstream of a PR diff and skip unrelated ones
- Automatic sandboxing of your build steps in CGroup/NS containers, to ensure your build steps do not make use of un-declared files.
- At my last job we extended these cgroups to limit CPU/Memory usage as well, which eliminates the noisy neigjbour problem and ensures a build step or test gets the same compute footprint whether run alone during development or in parallel on a CI worker
- Built in support for seamless shared caches (e.g. I compile something on my laptop, you download it to your laptop for usage)
- Built in support for shared compute clusters (e.g. I compile stuff and it automatically happens in the cloud on 96 core machines)
- Support for deep integration between multiple languages (e.g. building a Go binary and Rust libeary which are both used in a Python binary, which is then tested using a Bash script)
If you never hit these needs, you don't need Bazel. If you do hit these needs, most other build tools simply do not cut it. We're trying to support some of these use cases and provide an alternative in https://mill-build.org, but Bazel really is a high bar to reach in terms of features that support latge monorepos
-
Starlark Programming Language
Starlark is definitely a mixed experience IMO.
On one hand, having a "hermetic" subset of Python is nice. You can be sure your starlark codebase isn't going to be making network calls or reading files or shelling out to subprocesses and all that. The fact that it is hermetic does help make things reproducible and deterministic, and enables paralleization and caching and other things
On the other hand, a large Starlark codebase is a large Python codebase, and large Python codebases are imperative, untyped, and can get messy even without all the things mentioned above. Even though your Starlark is pure and deterministic, it still easily ends up a rats nest of sphagetti.
For https://mill-build.org we went the opposite route: not enforcing purity, but using a language with strong types and a strong functional bent to it. So far it's been working out OK, but it remains to be seen how well it scales to ever larger and more complex build setups
-
Mill: A fast JVM build tool for Java and Scala
Author here. Unfortunately this is because my own experience with Gradle is not up to date; I've only lived in the Gradle Groovy world! If anyone is interested in helping out, I have a 1500USD bounty on porting a gradle.kts build to Mill, so we can do a fair up-to-date comparison https://github.com/com-lihaoyi/mill/issues/3670
-
A Java Language Cumulative Feature Rollup
https://mill-build.org/ you'll need to know some Scala
-
Mill project structure
I had filed a GitHub ticket, but it was closed as "out of scope". I'm not sure why the maintainers insisted on perpetuating the ambiguity, and would like to know your opinion about the following. None of the references above answer these very basic and very important questions.
- Version 0.11.0 of the Mill Scala Build Tool is out
-
Why is Scala a mildly loved language?
It was my case, but https://github.com/com-lihaoyi/mill made my life easier
-
Potentially picking up Scala for a project after a 5 year hiatus - what's changed?
sbt (lowercase) has improved a lot, but Mill is a serious alternative today.
-
Best Scala framework / libraries out there ?
Akka HTTP, Cats, Quill, ninny, Monix Observable, mill.
What are some alternatives?
dotty - The Scala 3 compiler, also known as Dotty.
bloop - Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool.
Metals - Scala language server with rich IDE features 🚀
Scalastyle - scalastyle