shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

244
active users

#buildtools

0 posts0 participants0 posts today

Even though #ThingUmbrella isn't using a low-level language, many of its design aspects and decisions are explicitly about keeping resource usage low and being generally aware of code bundling, tree shaking (dead code elimination), CPU, energy & bandwidth consumptions... As the collection now consists of 186 libraries (with ~3850 source files!), every even minor saving in the shared build infrastructure will quickly have a positive compounding impact. Over the past month I've been busy updating & testing new tooling for the entire monorepo and am super happy to report _drastically_ reduced build & test times! "Drastically" here meaning a factor of 10-20x(!!!) faster... 🚀

Time to build & test the entire monorepo on GitHub's CI:

Previously, using only TypeScript for building & NodeJS for testing:
30-40 mins (😱)

Now, using esbuild.github.io for building and bun.sh for testing:
1:50-2 mins (🤯)

On my MBA M1 (2021) the whole process only takes now 56 seconds!

If you want to apply the same kind of optimizations for your own project, do take a look at my package.json and tsconfig.json files in this repo:

github.com/thi-ng/umbrella

Ps. It's also #ReleaseMonday. Details about that in a later post... 🫡

So I've been doing some experiments to switch internal #ThingUmbrella tooling to bun.sh. The _much_ improved launch time per process could quickly save me a _ton_ of time when repeatedly batch processing 185 packages (be it for building, readme & doc generation/updating, releasing etc.)...

The main thing holding me back from making the switch already is `bun` offering only partial support for #Windows. I'm not a Win user myself, but don't want to exclude (or make it harder for) Windows-based contributors ("normal" users wouldn't be impacted by that change)...

Thoughts? Anyone else in a similar boat?

BunBun — A fast all-in-one JavaScript runtimeBundle, install, and run JavaScript & TypeScript — all in Bun. Bun is a new JavaScript runtime with a native bundler, transpiler, task runner, and npm client built-in.

fundamentals of build: You want one of 3 things:

1. artifact (binary) for your target or
2. Perfect runnable instructions for building artifact (bin) for your target or
3. Runnable instructions for building artifact on a variety of targets that you have tested on your target.

This allows for `1 || 2 || 3`. Good #buildtools take this into account. #Nix, #bazel, even good ol' #GNUMake. But, then we don't use that functionality; we forget about it in our scripts & they fail, missing a bin they coulda built or they fail, building a bin they coulda stolen. Note that this post puts off worrying about dependencies, because 1, 2 & 3 can worry about those, too, if you do it right.