2025.2.1 released! Highlights + notes

2025.2.1 is now available!

Use version control/backup (always) and switch your modules.lx version over to try it and let us know if you run into any issues.

Agent / completion

The luxe agent has been fighting with a few issues in the last releases, things like spawning too many processes, one of them getting stuck and either stopping completion from working, or expanding memory until it crashes or makes the system sad.

This should be drastically improved now :seedling:

When vscode asked for e.g completion before, it would send along a few requests at once (like /symbols, /inlayhints, /complete) and they would wait on each other to finish. If one got stuck, everything stalled. And, if one took too long, they all ran in order, waiting for the previous. As we added features to the agent, it was starting to stall more often and get in the way of the original responsive experience. No more!

We’ve now made the server fully async, it runs in a thread, but each request is also run in a separate thread. This means all 3 requests can happen in parallel, no more waiting or blocking.

We also removed a lot of work on each request, and cleaned up a lot of memory, leading to far less memory bloat and the memory will go down a lot more after each. It’s not perfect yet, but significantly improved.

And the last big thing is the vscode extension now tracks the process it created, and when restarting the agent will take that process down first. It still can accidentally spawn a few extra instances, we’ll fix that soon, but it shouldn’t run away any more.

Key points:

  • SO much more snappy
  • Way more reliable and consistent again
  • Clean up memory more effectively
  • Runs each http request in it’s own thread making it fully async
  • VSCode extension now manages the process better
  • The exit request should be handled reliably
  • Fixed a few bugs where certain useful info was dropped

Fixed point support

Just the first part of our work to support fixed point numbers natively in luxe: our version of Wren now supports fixed point numbers as a type!

There’s more to add soon (like modifier field types, more explicit conversions/helpers), but you can already start playing with it now.

var num = 0f32.2 + 0f25.5

Tasks

Early stages, but running Wren code with the internal job system on a different thread (and isolated vm) is now in testing.

It doesn’t magically make everything thread safe, and it doesn’t mean everything will just work - but if you know what you’re doing and communicate purely through your typed block interface you can already do a lot of things with it! Ask us how if you want to play with it.

Text

While we were adding text effects previously, a bug snuck in when using text styles. This has been fixed and text is now back to being clean and crisp in all situations as intended. (Side note: you can play the demo of Mossfield Origins on Steam here - a game made with luxe!)

Next time: Animation

For the next release, we’re making solid progress on converting the animation system to the new workflows, and bringing the animation editor back online :sparkles:

Other notes

  • Add initial tasks tools (running wren code in an isolated vm in a thread)
  • Add 16.16 fixed point type to Wren (as Fixed with 0f1.25 syntax)
  • Text; fix text rendering issues from using Text Styles and more
  • Text; effects now have explicit enabled flag
  • Add TransformLinkAction to choose what happens when linking/unlinking a transform
  • Add Transform.create(entity, link_to: Entity) for immediate attach
  • Fix rename entities to handle empty name as intended
  • Desktop; Make http server properly async + add fully async option
  • Render; fix cropped OBS capture when UI is smaller than window
  • Render; clean up render set when WorldRenderDesc is used
  • UI; fix bug with default label color sometimes not showing up
  • UI; fix scrollbar offscreen scroll bug
  • UI; tabs; make content vfit by default
  • World; add world.keep_on_clear note to entities, so World.clear leaves them alone
  • World; fix several issues with cleaning up worlds
  • String; add url_encode helper
  • Wren; fix issue in string.split() that could trigger GC and crash early
  • Wren; fix string.trim() not releasing roots on early return, leading to crash
  • Wren; fix class.methods() also not stopping GC from pulling the rug
  • Latest libraries: ozz, Jolt, recast, meshoptimizer, cdt, ufbx, httplib, openssl3

Editor

  • Tiles; don’t crash on empty project
  • Tiles; add backspace key to delete as well
  • Tiles; delete tiles deselects them as well
  • Tiles; fix undo on bg color + grid
  • Tiles; fix tile stack lingering around
  • Tiles; if no layer active select last used
  • Tiles; always save all visuals instead of only used visuals
  • Tiles; fix visual id creation when adding visuals
1 Like