Brioche Project Update - December 2025
Published on
By Kyle Lacy
Brioche is a new package manager and build tool that we're making from scratch! Build scripts are written in TypeScript, so you get type-checking and editor completions with no hassle. We have a growing package ecosystem, so you can bring your favorite languages and dev tools into your own projects!
Check out our docs if you want to give it a spin! If you like it, consider helping fund Brioche's development and hosting costs via Liberapay or GitHub Sponsors, or check out other ways you can get involved with Brioche!
It’s the final project update of the year! With the holidays and… life stuff, this month was a little slower for me for Brioche work. But there’s still a lot of exciting stuff to share, and we just crossed another major package milestone!!! 🎉
Highlights from the year
Highlights from the yearWith the year coming to a close, I wanted to start with a quick look back at some of the major milestones we reached this year:
- Packages: from 50 packages at the start of January to over 500 packages 🎉
- Brioche: 3 new releases this year:
- Brioche v0.1.4 (January): prettier output, packed Brioche builds
- Brioche v0.1.5 (April): new cache, debug shell for failed builds
- Brioche v0.1.6 (November): aarch64 support, new release process
- Made possible with the help of 10 contributors in the past year!
- Members of the
brioche-devorg: @jaudiger, @asheliahut, and @kylewlacy (me!) - @chad-russell, @jokeyrhyme, @paricbat, @kaathewisegit, @running-grass, @nz366, and @easrng
- …plus everyone who participated with issues, discussions, and ideas (and any other contributors I missed!)
- Members of the
Status report
Status reportTypeScript 5.9.3 upgrade
TypeScript 5.9.3 upgrade@jaudiger opened #388 to upgrade the TypeScript version embedded in Brioche from v5.3.3 to v5.9.3! We didn’t spot any breakages across the brioche-packages repo during this upgrade, so this should be a pretty safe update that should give us a few new type-level tools and checks for free.
This feels like the right time to upgrade, since this is the last TypeScript version before v6.0, which is then the final release before the native TypeScript port in v7.0! There was a blog post earlier this month about TypeScript’s progress towards the native port in v7.0. I’m hoping that we’ll be able to integrate TypeScript 7 into Brioche not long after it’s ready to go, so we can take advantage of the major speed boost in type-checking!
brioche fmt improvements
brioche fmt improvementsThe brioche fmt got some nice quality-of-life improvements from @jaudiger in #386.
The -p flag is no longer necessary (since you’d only ever want to format a local project, never one remotely!), and additionally you can now format individual .bri files instead of a full project directory!
These commands are now all (roughly) equivalent:
brioche fmt packages/stdbrioche fmt -p packages/stdbrioche fmt packages/std/**/*.briMore major groundwork packages
More major groundwork packages@jaudiger has continued a streak of gettings lots of new exciting packages done, and that includes a ton more work towards Linux GUI applications! I’ll share his summary of the changes from just the past week:
I did a lot of things during the last week, I was mainly focused on:
- packaging the core libraries to later build bigger ones such as Mesa, FFMPEG, Wayland, etc. We do need a lot of core things right now, but I’m moving in the right direction
- adding more common CLI tools to reach a broader audience
There’s a lot of X11/Wayland packages in the modern Linux desktop stack, but we’re starting to get a lot of packages from that ecosystem wired up, so it’s really exciting progress!
(and personally, ffmpeg is one I’m really excited about— although that one is kind of its own little black hole of package management challenges!)
Sad personal news
Sad personal newsMidway through the month, we put our 15-year-old cat to sleep. She was amazing and lived a long, loving, happy life, but it was still sudden and it’s been real hard.

So overall, this month has been pretty slow-going for me.
If you’ve got a cat or other fuzzy creature, give them cuddles and a big pet for me.
Continued infrastructure work
Continued infrastructure workWell, with the time I did spend on Brioche this month, I mostly continued on with the infrastructure work I discussed last month. I made some good steps forward, and the foundation is pretty sturdy now! …although a lot of it is “in the weeds” Kubernetes stuff (Longhorn for storage, Grafana for monitoring, etc.), so nothing really exciting to share yet.
Minor caching tweaks
Minor caching tweaksI opened and merged #379, which added some very minor tweaks to the cache:
- Retry
PUTrequests - Allow customizing cache timeouts through config / env vars
This change is pretty unassuming, but came up after a hair-pulling debugging session of failures in the brioche-packages repo, where builds were failing to upload to the cache sporadically. I think the root cause was related to some weird DNS quirks from some of my recent infrastructure work. But after getting this change in, then bumping up one of the timeouts in the brioche-packages workflow in brioche-dev/brioche-packages#2073, things have been running smoothly.
Housekeeping
HousekeepingNew packages
New packagesSince the last update, there were 159 new packages. During this month, we blew past another major milestone:
(At the time of writing, we’re sitting at 514, with about 2 dozen more in the build queue!)
As is tradition, here are all the new packages this month:
-
3cpio -
6tunnel -
aardvark_dns -
acl -
acme_redirect -
act -
aerleon -
aften -
age -
age_plugin_yubikey -
argocd -
audit -
autoprefixer -
bacon_ls -
berkeley_db -
bkmr -
bosh_cli -
c_ares -
cairo -
cargo_shear -
ccusage -
cdebug -
cf_terraforming -
cglm -
cilium_cli -
cliproxyapi -
clive -
clorinde -
cloud_nuke -
comrak -
copilot_language_server -
coredns -
cpio -
cppcheck -
cubejs_cli -
docker_compose -
dolt -
dysk -
esbuild -
fabio -
fabric_ai -
flac -
fmt -
forgejo_runner -
freeimage -
fresh_editor -
gflags -
gfold -
giflib -
gitlab_runner -
gleam -
glib -
glm -
go_security_tracker -
gost -
graphite2 -
graphql_client_cli -
hwloc -
ipsw -
jarl -
jbig2dec -
jd -
lazygit -
lefthook -
lf -
libaec -
libbsd -
libgcrypt -
libgpg_error -
libiconv -
libidn -
libidn2 -
libmd -
libogg -
libpipeline -
libsamplerate -
libselinux -
libsemanage -
libsepol -
libtasn1 -
libudev_zero -
liburing -
libvorbis -
libwebp -
lz4 -
mailpit -
mcp_server_kubernetes -
meilisearch -
melange -
mesheryctl -
microsoft_gsl -
monocle -
mq -
munge -
nghttp2 -
nghttp3 -
npq -
numactl -
oh_my_posh -
open_policy_agent -
openjpeg -
orc -
oterm -
p11_kit -
pack -
parlay -
parquet_tools -
pcsc_lite -
pinact -
poetry -
popt -
prek -
prettier -
ragel -
range_v3 -
rbspy -
resterm -
restish -
rnr -
robotframework -
rosa -
rqlite -
rust_bindgen -
rustic -
rv -
sass -
shadowsocks_rust -
simdjson -
soxr -
spirv_headers -
swc -
systemfd -
tinyxml2 -
tllist -
tombi -
topgrade -
treemd -
tuios -
tzdata -
utf8proc -
valkey -
vespa_cli -
vgt -
vite -
viu -
watchexec -
wayland -
wayland_protocols -
weaviate -
xcb_util_cursor -
xcb_util_keysyms -
xcb_util_renderutil -
xcb_util_wm -
xk6 -
xvidcore -
z3 -
zerofs -
zimg -
zuban
Brioche core updates
Brioche core updates- build: update dependencies in runtime NPM project (#375)
- Tweak cache timeouts and retries (#379)
- Update package-lock.json (#377)
- build: update transient dependencies to latest versions (#378)
- chore: resolve new warnings from Clippy 1.92 (#387)
- feat: update typescript to its latest version (5.3.3) (#388)
- Update Dependabot config to ignore major versions of Bincode (#391)
- chore: revamp the command format, and add the ability to format files (#386)
- Fix typo in dependabot.yml (#393)