2024-07-11 –, REPL (2, main stage)
Rising from the ashes of its languid repose over the last two years, BinaryBuilder development makes a triumphant reentry into the public world with a brand new implementation and improved ergonomics around almost every aspect of the entire project. Faster, more modular, configurable, and extensible than ever, the new BinaryBuilder release will change the lives of anyone forced to deal with native code compilation.
BinaryBuilder development hit a plateau about two years ago, when the core developers collected a laundry list of pain points:
- Complex software projects such as LLVM do not fit nicely into a single
build_tarballs()
invocation; there are potentially multiple stages to the build, outputs may need to be split across multiple JLLs, different platforms may need different recipes, etc... - Extending BinaryBuilder to work with more compilers/platforms is a painful and arcane process that typically requires someone very well versed in the BB world to take to the finish line.
- BinaryBuilder itself was so monolithic and interconnected that small changes could cause failures in seemingly unrelated areas, slowing development dramatically.
Once these pain points accumulated to a certain point, the core developers realized that the very architecture of BinaryBuilder (particularly, how the build environment, so called "compiler shards" were constructed) contributed directly to many of these problems. Never to shrink away from ambitious projects, the developers rolled up their sleeves and began a from-scratch rework of every component and subsystem of the BinaryBuilder suite.
This talk will cover not just the new end-user capabilities such as staged builds, but also some of the rationale behind the new organization of the codebase and why this organization unlocks new capabilities for users that are not even using BinaryBuilder directly. One consequence of some of the reorganization will be that pieces of the new BinaryBuilder (such as compilers) will be usable outside of the build environment.
Elliot has been a core developer on the Julia language project for over ten years. He is one of the primary authors of the BinaryBuilder.jl project and associated efforts. He is currently the Director of EDA Engineering at JuliaHub, working on the CedarEDA suite of circuit simulation tools.