Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save alice-i-cecile/b8327447d2c454cfecd2b2dd3b38e60b to your computer and use it in GitHub Desktop.

Select an option

Save alice-i-cecile/b8327447d2c454cfecd2b2dd3b38e60b to your computer and use it in GitHub Desktop.
Bevy Merge Train for 2026-07-13
  1. Fallback fonts (#24378)

Ooh, font fallbacks. Those are a nice web feature, where you have an ordered list of fonts that you want to use in each spot. Substantially less useful in the context of a game engine, where you just embed all of your font assets by default. Still, the people doing weird web app nonsense with Bevy will appreciate it!

Reasonably large bit of code, but well-made, as expected for an ickshonpe PR. Two migration guides and a release note: perfect. Merging :)

  1. Update ddsfile requirement from 0.5.2 to 0.6.0 (#24601)

A routine version bump for a file format dependency in bevy_image. I wonder if this should be an optional dependency. I wish managing huge numbers of feature flags was easier in Rust. Bevy has like 100 already and users still want more.

Release notes look fine; CI isn't panicking about a security advisory. Sure, let's merge.

  1. Handle optional depth and stencil views of view depth and prepass depth texture (#24725)

A niche but important bug fix / feature for rendering. Standard "feature X is missing edge case Y" sort of problem. 99% of users will never encounter this, but the 1% who does will be extremely annoyed that their cool niche shader that they want to write just inexplicably doesn't work.

Fix is reasonable, reviews are good, related PR is closed, migration guide is excellent. Merging.

  1. Add mutation_by_reflection example (#24747)

Oh hey! It's my PR! In the course of my entity inspector work, I've been forced to learn a lot more about reflection. The most painful part of that was working out the "how do I mutate a component's value in a fully abstract way". You know, the thing that inspectors need to do.

Our docs on this were not very good, so I spent quite a while mucking about and peeking at what related crates did. That was disappointing, because this sort of "automatically build a GUI for anything" is one of the prime use cases of reflection! So, I spent a couple days making and then revising an example to teach the core patterns.

Much better after surviving review (there was a whole trait-reflection bit of the path that I hadn't covered), but we have 5 approvals now (lol), so it's time to merge. Thanks!

  1. Bump actions/checkout from 6.0.3 to 7.0.0 (#24759)

Upgrade a dependency for our CI. Sure, might as well stay current and reduce potential security flaws. Merging.

  1. Solari v7 (#24767)

Solari rewrite! We love revising our raytracing code. Do click through for the pretty pictures! We should show off some proper scenes on the home page TBH.

The screenshots really shows the value of denoising, wow. Anyways, the advantages/disadvantages list is compelling, and the reviewers have clearly taken their time to test and understand this code properly. Stub release note is fine; this sort of incremental refinement is easier to package up later. No red flags in the code, merging.

  1. Elliptical border radius support (#24779)

!! Elliptical border radius is really nice for making procgen GUIs look nice :D No, that's not a term anyone else uses, but in the context of game UI, it makes sense to me. A ton of games use hand-painted nine-patches (or just plain images) for their GUI, so the web-standard "set a bunch of properties" approach feels like procgen by contrast.

Anyways, fun story here: I was asking for reviews here and @pcwalton chimes in, explaining that he wrote the Firefox implementation of this feature 15 years ago or whatever. Yep, that would qualify you as a reviewer... Anyways, he helped us revise our algorithm to something faster and more correct. Lovely! Very happy to have this: merging.

TBH there's a real chance that this is one of my favorite features for Bevy 0.20. This sort of "make stuff look nice easily" feature does wonders for both your frameworks and your projects. I really love the experience of twiddling knobs and exploring generative manifolds :D

  1. chore: update glam to 0.33.2 (#24814)

Another version bump. More involved because of a complex web of dependencies. Definitely upgrading.

Looks fine; merging.

  1. Allow material to disable OIT and fix OIT with forward decal (#24856)

Another rendering corner-case: order-independent transparency (make things transparent nicely) and forward decals (draw stuff stuck flat to surfaces). Great, good to fix this.

I like the thoughtful configuration approach here, and this is a very reasonable bug fix. Let's merge this.

I hope I get to see what beicause is building one day: their rendering PRs are always solid, and they exercise real features in a corner-case sort of way that makes me suspect that this is motivated by real limitations encountered in prod. Thanks!

  1. Fix SubApp::add_message does not schedule message_update_system (#24866)

I hate SubApps. Bad abstraction! Messy! Still, they should work as expected. Simply not clearing messages in subapps is bad and surprising.

Very straightforward fix, and catching this regression is good. Because this is a surprise memory leak, this goes into the 0.19.1 milestone. Merging. We should release a point release for that soon; enough fixes have piled up. I'll poke that tomorrow.

  1. Fix mismatch in UI color conversions (#24886)

Today in "I wish we had unit tests for shaders": a color round-tripping bug due to very subtle mathematical divergences. Sigh, merging.

  1. forward custom trait methods to entity set types (#24887)

More polish on our fancy custom entity collection types. Oh interesting, I didn't expect this to be a performance gain: apparently we were missing the special optimized methods that the standard library ships for a lot of these methods. Neat!

Anyways, LGTM: very straightforward code. Merging.

  1. Clear stale components when FullscreenMaterial is removed (#24907)

Another rendering lifecycle bug. Bah. We really need better patterns here. Maybe I should dust off my archetype invariants notes and see what the rendering team wants. This really wants declarative enforcement. Probably not the right use of my time right now still: that would be multiple weeks of design, review and implemntation, optimistically.

Anyways, fix is fine, merging.

  1. Pass command panics to the fallback error handler (#24911)

Yay, more error handling work! I'm so pleased about that; robust error handling is a huge part of production-ready frameworks :3 "Currently, if a command panics, any unapplied commands are left in the command queue. This means they will get run, but at an unpredictable time in the future." Very good explanation, thank you <3

Ah yep, uses catch_unwind under the hood. Very cool that this is working for both systems and commands. I wonder how we can surface this to users better... Probably just in a book chapter TBH.

Anyways, this is well-made, very desired, and has tests. Can't ask for more. The type_name_of_val helper for DebugName is fine to include here too. Merging.

  1. Include two missing methods from NestedQuery example. (#24923)

"I was trying to use this and the docs were wrong." Classic; thanks for the fix.

Reasonable change, important little fix. Merging.

  1. Bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 (#24937)

What the hell is zizmor again? Oh, security scanner thing for Github. Sure, fine, you can get updated.

  1. Add #\[serde(default)\] support to GltfLoaderSettings (#24948)

#[serde(default)] is neat! It lets you omit fields in your serialized form and fill them in with their default values when missing. Reminds me of what we do with BSN implicitly, as well as the upcoming default_field_values feature.

Anyways, this is a reasonable and pleasant change. Filing off little rough edges like this is important. Merging.

  1. Make Ctrl+C plugin instant for reactive apps (#24959)

"This is a mild annoyance when developing, but one that I hit many times per day." Ha, fair!

Now how did they manage that... reactive mode apps should be totally frozen when there's no user input. Oh lol, they inject code directly into the event loop with a static Mutex holding function pointers that wakes the loop. Okay, yeah, that would do it. Conditional registration makes this so much more complicated. Mildly cursed, but I really can't think of anything better, and this is not too obtrusive.

Definitely not D-Trivial, but I'm around so I'll give it the second approval. Merging.

  1. Fix: Add warning for meshes with no vertices in MeshAllocator (#24960)

Ah custom allocators: very useful for performance, very prone to horrible memory bugs. Meshes are very hot and contain a ton of data, so it makes sense that we have one there.

Anyways, this is a very nice fix: warn users that their zero-vertex mesh is invalid, then reject it to avoid later problems. We could maybe support this later if someone has a compelling use case. Good defensive programming. Merging. Thanks @Tatsuya: nice to see this sort of thing from a first-time contributor.

  1. fix(tab_navigation): skip hidden subtrees during focusable gathering (#24968)

A recent, very reasonable PR broke some of our UI code. Yay interactive examples: great for testing! We needed to be skipping the entire hidden subtree. My bad, I missed that during review!

Merging.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment