|
| 1 | +--- |
| 2 | +title: Brioche Project Update - December 2025 |
| 3 | +pubDate: 2025-12-31T02:45:08-08:00 |
| 4 | +author: Kyle Lacy |
| 5 | +authorUrl: https://kyle.space |
| 6 | +showBlurb: true |
| 7 | +tableOfContents: true |
| 8 | +--- |
| 9 | + |
| 10 | +import PackageList from "./project-update-2025-12/PackageList.astro"; |
| 11 | + |
| 12 | +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!!! 🎉 |
| 13 | + |
| 14 | +## Highlights from the year |
| 15 | + |
| 16 | +With 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: |
| 17 | + |
| 18 | +- _Packages_: from **50 packages** at the start of January to [**over 500 packages 🎉**](#new-packages) |
| 19 | +- _Brioche_: **3 new releases** this year: |
| 20 | + - [Brioche v0.1.4](/blog/announcing-brioche-v0-1-4) (January): prettier output, packed Brioche builds |
| 21 | + - [Brioche v0.1.5](/blog/announcing-brioche-v0-1-5) (April): new cache, debug shell for failed builds |
| 22 | + - [Brioche v0.1.6](/blog/brioche-v0-1-6) (November): aarch64 support, new release process |
| 23 | +- Made possible with the help of **10 contributors** in the past year! |
| 24 | + - Members of the `brioche-dev` org: [**@jaudiger**](https://github.com/jaudiger), [**@asheliahut**](https://github.com/asheliahut), and [**@kylewlacy**](https://github.com/kylewlacy) (me!) |
| 25 | + - [**@chad-russell**](https://github.com/chad-russell), [**@jokeyrhyme**](https://github.com/jokeyrhyme), [**@paricbat**](https://github.com/paricbat), [**@kaathewisegit**](https://github.com/kaathewisegit), [**@running-grass**](https://github.com/running-grass), [**@nz366**](https://github.com/nz366), and [**@easrng**](https://github.com/easrng) |
| 26 | + - ...plus everyone who participated with issues, discussions, and ideas (and any other contributors I missed!) |
| 27 | + |
| 28 | +## Status report |
| 29 | + |
| 30 | +### TypeScript 5.9.3 upgrade |
| 31 | + |
| 32 | +[**@jaudiger**](https://github.com/jaudiger) opened [#388](https://github.com/brioche-dev/brioche/pull/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. |
| 33 | + |
| 34 | +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](https://devblogs.microsoft.com/typescript/progress-on-typescript-7-december-2025/). 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! |
| 35 | + |
| 36 | +### `brioche fmt` improvements |
| 37 | + |
| 38 | +The `brioche fmt` got some nice quality-of-life improvements from [**@jaudiger**](https://github.com/jaudiger) in [#386](https://github.com/brioche-dev/brioche/pull/386). |
| 39 | + |
| 40 | +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! |
| 41 | + |
| 42 | +These commands are now all (roughly) equivalent: |
| 43 | + |
| 44 | +```sh |
| 45 | +brioche fmt packages/std |
| 46 | +brioche fmt -p packages/std |
| 47 | +brioche fmt packages/std/**/*.bri |
| 48 | +``` |
| 49 | + |
| 50 | +### More major groundwork packages |
| 51 | + |
| 52 | +[**@jaudiger**](https://github.com/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: |
| 53 | + |
| 54 | +> I did a lot of things during the last week, I was mainly focused on: |
| 55 | +> |
| 56 | +> - 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 |
| 57 | +> - adding more common CLI tools to reach a broader audience |
| 58 | +
|
| 59 | +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! |
| 60 | + |
| 61 | +(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!) |
| 62 | + |
| 63 | +### Sad personal news |
| 64 | + |
| 65 | +Midway 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. |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | +So overall, this month has been pretty slow-going for me. |
| 70 | + |
| 71 | +If you've got a cat or other fuzzy creature, give them cuddles and a big pet for me. |
| 72 | + |
| 73 | +### Continued infrastructure work |
| 74 | + |
| 75 | +Well, with the time I did spend on Brioche this month, I mostly continued on with the [infrastructure work I discussed last month](/blog/project-update-2025-11/#infrastructure-rework). 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. |
| 76 | + |
| 77 | +### Minor caching tweaks |
| 78 | + |
| 79 | +I opened and merged [#379](https://github.com/brioche-dev/brioche/pull/379), which added some very minor tweaks to the cache: |
| 80 | + |
| 81 | +- Retry `PUT` requests |
| 82 | +- Allow customizing cache timeouts through config / env vars |
| 83 | + |
| 84 | +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`](https://github.com/brioche-dev/brioche-packages/pull/2073), things have been running smoothly. |
| 85 | + |
| 86 | +## Housekeeping |
| 87 | + |
| 88 | +### New packages |
| 89 | + |
| 90 | +Since the last update, there were **159** new packages. During this month, we blew past another major milestone: |
| 91 | + |
| 92 | +<div class="font-bold text-xl">🎉 Brioche now has over 500 packages! 🎉</div> |
| 93 | + |
| 94 | +(At the time of writing, we're sitting at 514, with about 2 dozen more in the build queue!) |
| 95 | + |
| 96 | +As is tradition, here are all the new packages this month: |
| 97 | + |
| 98 | +<PackageList |
| 99 | + packages={[ |
| 100 | + "3cpio", |
| 101 | + "6tunnel", |
| 102 | + "aardvark_dns", |
| 103 | + "acl", |
| 104 | + "acme_redirect", |
| 105 | + "act", |
| 106 | + "aerleon", |
| 107 | + "aften", |
| 108 | + "age", |
| 109 | + "age_plugin_yubikey", |
| 110 | + "argocd", |
| 111 | + "audit", |
| 112 | + "autoprefixer", |
| 113 | + "bacon_ls", |
| 114 | + "berkeley_db", |
| 115 | + "bkmr", |
| 116 | + "bosh_cli", |
| 117 | + "c_ares", |
| 118 | + "cairo", |
| 119 | + "cargo_shear", |
| 120 | + "ccusage", |
| 121 | + "cdebug", |
| 122 | + "cf_terraforming", |
| 123 | + "cglm", |
| 124 | + "cilium_cli", |
| 125 | + "cliproxyapi", |
| 126 | + "clive", |
| 127 | + "clorinde", |
| 128 | + "cloud_nuke", |
| 129 | + "comrak", |
| 130 | + "copilot_language_server", |
| 131 | + "coredns", |
| 132 | + "cpio", |
| 133 | + "cppcheck", |
| 134 | + "cubejs_cli", |
| 135 | + "docker_compose", |
| 136 | + "dolt", |
| 137 | + "dysk", |
| 138 | + "esbuild", |
| 139 | + "fabio", |
| 140 | + "fabric_ai", |
| 141 | + "flac", |
| 142 | + "fmt", |
| 143 | + "forgejo_runner", |
| 144 | + "freeimage", |
| 145 | + "fresh_editor", |
| 146 | + "gflags", |
| 147 | + "gfold", |
| 148 | + "giflib", |
| 149 | + "gitlab_runner", |
| 150 | + "gleam", |
| 151 | + "glib", |
| 152 | + "glm", |
| 153 | + "go_security_tracker", |
| 154 | + "gost", |
| 155 | + "graphite2", |
| 156 | + "graphql_client_cli", |
| 157 | + "hwloc", |
| 158 | + "ipsw", |
| 159 | + "jarl", |
| 160 | + "jbig2dec", |
| 161 | + "jd", |
| 162 | + "lazygit", |
| 163 | + "lefthook", |
| 164 | + "lf", |
| 165 | + "libaec", |
| 166 | + "libbsd", |
| 167 | + "libgcrypt", |
| 168 | + "libgpg_error", |
| 169 | + "libiconv", |
| 170 | + "libidn", |
| 171 | + "libidn2", |
| 172 | + "libmd", |
| 173 | + "libogg", |
| 174 | + "libpipeline", |
| 175 | + "libsamplerate", |
| 176 | + "libselinux", |
| 177 | + "libsemanage", |
| 178 | + "libsepol", |
| 179 | + "libtasn1", |
| 180 | + "libudev_zero", |
| 181 | + "liburing", |
| 182 | + "libvorbis", |
| 183 | + "libwebp", |
| 184 | + "lz4", |
| 185 | + "mailpit", |
| 186 | + "mcp_server_kubernetes", |
| 187 | + "meilisearch", |
| 188 | + "melange", |
| 189 | + "mesheryctl", |
| 190 | + "microsoft_gsl", |
| 191 | + "monocle", |
| 192 | + "mq", |
| 193 | + "munge", |
| 194 | + "nghttp2", |
| 195 | + "nghttp3", |
| 196 | + "npq", |
| 197 | + "numactl", |
| 198 | + "oh_my_posh", |
| 199 | + "open_policy_agent", |
| 200 | + "openjpeg", |
| 201 | + "orc", |
| 202 | + "oterm", |
| 203 | + "p11_kit", |
| 204 | + "pack", |
| 205 | + "parlay", |
| 206 | + "parquet_tools", |
| 207 | + "pcsc_lite", |
| 208 | + "pinact", |
| 209 | + "poetry", |
| 210 | + "popt", |
| 211 | + "prek", |
| 212 | + "prettier", |
| 213 | + "ragel", |
| 214 | + "range_v3", |
| 215 | + "rbspy", |
| 216 | + "resterm", |
| 217 | + "restish", |
| 218 | + "rnr", |
| 219 | + "robotframework", |
| 220 | + "rosa", |
| 221 | + "rqlite", |
| 222 | + "rust_bindgen", |
| 223 | + "rustic", |
| 224 | + "rv", |
| 225 | + "sass", |
| 226 | + "shadowsocks_rust", |
| 227 | + "simdjson", |
| 228 | + "soxr", |
| 229 | + "spirv_headers", |
| 230 | + "swc", |
| 231 | + "systemfd", |
| 232 | + "tinyxml2", |
| 233 | + "tllist", |
| 234 | + "tombi", |
| 235 | + "topgrade", |
| 236 | + "treemd", |
| 237 | + "tuios", |
| 238 | + "tzdata", |
| 239 | + "utf8proc", |
| 240 | + "valkey", |
| 241 | + "vespa_cli", |
| 242 | + "vgt", |
| 243 | + "vite", |
| 244 | + "viu", |
| 245 | + "watchexec", |
| 246 | + "wayland", |
| 247 | + "wayland_protocols", |
| 248 | + "weaviate", |
| 249 | + "xcb_util_cursor", |
| 250 | + "xcb_util_keysyms", |
| 251 | + "xcb_util_renderutil", |
| 252 | + "xcb_util_wm", |
| 253 | + "xk6", |
| 254 | + "xvidcore", |
| 255 | + "z3", |
| 256 | + "zerofs", |
| 257 | + "zimg", |
| 258 | + "zuban", |
| 259 | + ]} |
| 260 | +/> |
| 261 | + |
| 262 | +### Brioche core updates |
| 263 | + |
| 264 | +- build: update dependencies in runtime NPM project ([#375](https://github.com/brioche-dev/brioche/pull/375)) |
| 265 | +- Tweak cache timeouts and retries ([#379](https://github.com/brioche-dev/brioche/pull/379)) |
| 266 | +- Update package-lock.json ([#377](https://github.com/brioche-dev/brioche/pull/377)) |
| 267 | +- build: update transient dependencies to latest versions ([#378](https://github.com/brioche-dev/brioche/pull/378)) |
| 268 | +- chore: resolve new warnings from Clippy 1.92 ([#387](https://github.com/brioche-dev/brioche/pull/387)) |
| 269 | +- feat: update typescript to its latest version (5.3.3) ([#388](https://github.com/brioche-dev/brioche/pull/388)) |
| 270 | +- Update Dependabot config to ignore major versions of Bincode ([#391](https://github.com/brioche-dev/brioche/pull/391)) |
| 271 | +- chore: revamp the command format, and add the ability to format files ([#386](https://github.com/brioche-dev/brioche/pull/386)) |
| 272 | +- Fix typo in dependabot.yml ([#393](https://github.com/brioche-dev/brioche/pull/393)) |
0 commit comments