Great article about how to get started with bld.
There's a lot of momentum and activity around bld at the moment, perfect time to jump on board!
Great article about how to get started with bld.
There's a lot of momentum and activity around bld at the moment, perfect time to jump on board!
Adam Bien from Airhacks.fm made a great 3 minute intro video to our pure Java build tool: bld
Check it out!
https://www.youtube.com/watch?v=gpuuetZqe8U
Someone asked us if bld could be used to generate native applications with GraalVM. Even though we didn't explicitly plan for this with bld, it was really impressive how straightforward and simple this was to achieve. Check it out!
#java #buildtools #graalvm
https://erik.thauvin.net/blog/posts/9927/graalvm-native-image--bld
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 https://esbuild.github.io for building and https://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:
https://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 https://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?
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.
bld is starting to build up a nice collection of extensions, many contributed by @ethauvin!
If you haven't checked out #bld yet, please do so. You can thank us later: https://rife2.com/bld
Also, a pull request from hedger that adds the official ufbt GitHub Action. Super kind https://github.com/instantiator/flipper-zero-experimental-apps/pull/8
#developer #community #C #clang #ufbt #FlippzerZero #BuildTools #GitHub #GitHubActions