Skip to content

Instantly share code, notes, and snippets.

View alice-i-cecile's full-sized avatar

Alice Cecile alice-i-cecile

View GitHub Profile
@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-10-05.md
Created October 5, 2026 07:14
Bevy Merge Train for 2026-10-05
  1. bevy_ecs fuzzing (#23682)

Smarter testing strategies! After all these years! Glorious! But what is fuzzing? It sounds very cute, but for a long time I only had a very fuzzy conception of it: "throw a bunch of random crap at your program and see if it breaks".

It turns out, that's not a terrible explanation, but the devil is in the detail. What does "random" mean, and how do you tell when something is broken? You can't rely on the potentially buggy program to tell you!

To do better than "stick monkeys at a typewriter and look for crashes",

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-09-27.md
Created September 28, 2026 06:04
Bevy Merge Train for 2026-09-27
  1. Run the tonemapping pass for cameras off the SDR in-shader fast path (#25544)

Starting off with an HDR PR I see. This part of a long series of PRs to refactor Bevy's rendering pipelines to allow us to render more, brighter colors on monitors that support it. Doing so breaks a number of critical assumptions, so the refactoring required to do it properly is pretty rough. And the reviewers have been pretty brutal too: "Conversation: 60" is pretty typical.

Still, this looks like it's in a good spot now. The details here are not super interesting: we're moving some code around to make sure we're not wasting work and can support both tonemapped and not tonemapped scenes, even in the same project or scene. The important thing for me as a maintainer is that we have two reviewers who've been brought up to speed on this stuff and fully internalize the new model,

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-09-21.md
Created September 22, 2026 04:17
Bevy Merge Train for 2026-09-21
  1. Enable GameMode on linux (#25714)

Starting off with an interesting little PR today I see.

So, every operating system (well, at least Windows and normal Linux distros) has a set of hyperparameters that can be controlled by the running application: think overclocking. The basic idea here is that if you're writing a document you want to prioritize battery life, but if you're playing a video game, you probably want performance.

If you are making a video game, your application should probably turn these on correctly,

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-09-14.md
Created September 15, 2026 04:09
Bevy Merge Train for 2026-09-14
  1. Optimize shadow material queuing by caching is_depth_only_opaque (#23834)

+20/-21 for a 40% speed-up in a shadows system? Sign me up! Oh, it's smarter caching. Of course it's smarter caching. One of these days we're going to find a new optimization I promise.

Benchmarks look great (don't merge performance PRs without at least some attempt please...); code is sane, merging.

This is only one small bit of rendering, but we'll chop up this elephant 1000 cuts at a time.

@alice-i-cecile
alice-i-cecile / Bevy Merge train for 2026-08-31.md
Created August 31, 2026 23:07
Bevy Merge train for 2026-08-31
  1. Add get_attributes_mut for Mesh (#18976)

A "only-in-Rust" PR to open us off. Accessing multiple parts of the same data mutably is a headache because of the borrow checker.

Because we're not just using field access (this is a Mesh, with fancy/janky raw data access), we have to reinvent the wheel ourself. Rendering code is often very C-brained like this...

Reasonable code, nice tests. It would be good to avoid allocations like beicause suggests, but that's non-blocking.

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-08-10.md
Created August 11, 2026 02:28
Bevy Merge Train for 2026-08-10
  1. UI CPU clipping implementation supporting rotation and scaling (#24148)

An excellent and long-suffering PR, adding the ability to properly rotate and scale UI elements. That might seem useless and goofy if you come from a traditional app UI background, but there's a long and delightful tradition of weird animated UIs in games!

That sort of creative flexibility is one of the major unique requirements for Bevy's UI solution. Game devs fundamentally want more creative freedom in their UI, and regularly blur the boundary between "UI" and "gameplay".

As for this PR, it's in good shape, and I tried to merge it 3 days ago.

@alice-i-cecile
alice-i-cecile / Bevy merge train for 2026-07-20.md
Created July 21, 2026 05:56
Bevy merge train for 2026-07-20
  1. Add AlignedVec and use it to improve ShaderBuffer (#24938)

Oh, this is an interesting PR. It's a nice little vendored + adapted data structure used for rendering thing.

Code itself is fine and this is reasonable to want. Nice benchmarks! Three questions though!

First, is this something we should be vendoring?

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-07-13.md
Created July 14, 2026 00:33
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.

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-06-22.md
Created June 22, 2026 19:53
Bevy Merge Train for 2026-06-22
  1. Allow entity wrappers in entity set and map types (#18408)

This PR was nearly ready to go, but needed a couple of tests :) That stalled out, so it was temporarily adopted, with some new tests in place. The original author noticed that, said hi, and now the tests are back in the original PR.

Great! This is a nice bit of usability work for our specialized Entity containers, allowing them to be used with newtyped Entitys, like you might use to add type-safety.

@alice-i-cecile
alice-i-cecile / Bevy Merge Train for 2026-06-16.md
Created June 17, 2026 05:09
Bevy Merge Train for 2026-06-16
  1. Fix Deserialize derive for BrpResponse (#24305)

One of the most annoying things about serialization is that it requires a ton of boilerplate. Thankfully, in Rust, we can use derive macros to get automatically generate that. What's that you say? The derive macro is insufficient here?

Nooo. That's a +114/-14 LoC PR :( Well, at least it's well-isolated. Clearly correct (see the linked PR). Merging and backporting.