2026-06-17

This release brings back profiling with --profiling, and adds a new exit() API for closing the application. In Swamp it adds erase for removing items from mutable collection loops. Fixes bugs regarding Block<T> copy handling, resource ID naming, and none coalesce (??) lowering.

Lily Runtime 0.4.1

Added

  • Render: Comparison functions Never and GreaterEqual were added in wgpu::CompareFunction
  • Profiling support was added. Use --profiling as a command line argument.
  • API: Added the app module with can_exit() and exit(return_code: Int) functions.

Changed

  • Render: Simplified vertex attributes in wgpu.

Swamp 0.5.7

Added

  • Language: Added the erase keyword for mutable collection for loops, making it easy to remove the current item in the loop.
  • Analyzer: Member calls for structs with embedded fields, now fallbacks to find that function for any of its embedded fields.
  • Lowering: Introduced the new MIR lowering pipeline.
  • Type system: Added distinct types using the type keyword.
  • Sprout: Added support for local_dependencies, making local packages easier to depend on during development.
  • LSP: Added showDebug, buildOnSave.

Changed

  • Analyzer: Unused mutable parameters and variables are now reported.

Fixed

  • Lowering: ?? now correctly materialized aggregate values into the destination place.
  • Lowering: Block<T> copies now works for block-to-block, Vec to Block, and Wrap to Block conversions.
  • DepLoader: Resolved the currently compiled package correctly when importing local modules with mod.
  • Analyzer: Resource IDs no longer clash between packages.

Marsh VM

Changed

  • VM: Removed the bl opcode - unconditional branching now uses b only.