Skip to content

The 2026 annual merging to main#21

Merged
jessstringham merged 149 commits intomainfrom
wip
Feb 6, 2026
Merged

The 2026 annual merging to main#21
jessstringham merged 149 commits intomainfrom
wip

Conversation

@jessstringham
Copy link
Copy Markdown
Owner

@jessstringham jessstringham commented Feb 6, 2026

Well I suppose it’s time for my annual merge to main! It looks like I have commits starting from nearly exactly a year ago, oh my. Who doesn't love a PR with 100 file changes and 14,000 new lines of code (and in case you're wondering because the year is 2026, only a small fraction of that is AI-bot generated (I try to annotate that code).)
I’m just merging what I have, so this won’t represent a big checkpoint of stablility. I did a vague code review on it (mostly removing commented out code). Also nice to notice some trends I can work on as I go.

You may also notice I’m trying out using more traits to attach methods to things, and then macros to reduce the code. Still figuring out how this should look..

Changelog

Thesis work: Generating and GUIs

  • Some cool new things are MurreletGen (which can turn a struct into an array of random numbers, that is the foundation of some of my thesis work like Silverspot and some code needed for the initial version of dovekie (use murrelet in javascript).

Drawing things!

I’ve been drawing specific objects more often. I’m very slowly moving all of my private curve drawing functions into the public one.

  • Added Bézier curves to curve drawers and interactive compass
  • really exciting for me, I’m leaving arcs and Bézier curves as curves instead of turning them into points! It’s making things a lot more smooth for vector export and efficient for realtime (because I’m using lyon instead of my own code), yay! Starting to try to get rid of Polyline, because I usually feel dread when a function returns it.
  • I now have a DrawnShape that just pairs up a curve drawer with its style. This has been useful to have one system draw something without knowing about the DrawCtx it’s going to use. (sdraw traits are also due for a revisit.)

Livecoding

  • Added a way to send midi back to devices using ‘outgoing messages” in the livecode sources. That let me light up my midi controller when I’m using a dial, wooo.
  • Introduced a way to get all the variable names (and function names) needed to compute a specific parameter value. I was using this for things like OSC-filled variables, where it would crash if it hadn’t received osc data yet. So this lets me fill in a default for those variables.

Graphics/wgpu!

  • over the summer I used more of wgpu graphics things (like instead of just drawing a shader onto two triangles, I make a shape and then draw weird shaders on the triangulation of that!??). so I have a triangulate.rs to hold some types.
  • I also tried out compute shaders, so I have the start of some abstraction for that work. I’m not totally sure how I want it to work: sometimes I want it to write to a texture (the current code), but others I want to get it back into the CPU. I also am playing with using a macro for defining the data input, instead of the hardcoded template strings in the package.
  • Some things of my dreams: I’m able to recompile a shader live without restarting the entire program!
  • Now I can put entire pipelines as a variable! This helps me break out reused sequences, like bloom filters.

Optimization

  • I also switched a lot of things in the world state over to Arcs (as in references, not compass arcs) and Refs. this sped up lazy computations a lot!

Murrelet features, like blending lists and lazy items

  • From the bird program, I was blending a lot of sequences, so I moved some of those features up into the list.
  • the repeat used in lists can now use variables.
  • Lazy items can now be lerped (it just builds up a little data structure for keeping the lazy items until we have the context). And how lists are able to have repeat objects in it, now those repeat objects can blend with the next item. I’m working on this right now so I’ll probably find some issues.

CachedCompute

  • After scheming about using the AST to figure out intermediate computational values, i threw in the towel and added a manual way for doing that. Basically you make a structure with all your intermediate computed values, and then define how to compute each of those values (possibly in terms of the other computed values). And then a macro takes care of computing them for you.

Base data type updates

  • Color is now directly floats instead of using the palette types. that lets me control interpolation and such. On the other hand.. I still need to figure out if I’m working in linearsrgb or not.
  • Time internal representation is switched from milliseconds to microseconds
  • Elevated AnglePi up into livecode, so I wouldn’t need the new type LivecodeAnglePi anymore. Figured out how to use glam serde as well. There are a few other new types I could clear up.

Etc

  • I realized I could use glam’s feature flag, so I could clean up other new types.
  • And as always, I’ve dropped in various helpers, like around the simple transforms, curve drawers, and idx.
  • I removed the web examples. I think I’ll probably just have external repos depend on murrelet instead.

@jessstringham jessstringham changed the title Wip The 2026 annual merging to main Feb 6, 2026
@jessstringham jessstringham merged commit fc324a7 into main Feb 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant