0.22.0
Release notes
July 2, 2025

Package Manager

The package manager has received several enhancements to improve navigation and display more information about packages, including icons, statuses, and descriptions. Some of these features are not yet available for users to add to their own packages without manual configuration, but they will be supported in future releases.

  • The package manager now displays icons for packages that declare them in their manifest.
  • Packages can specify a status, such as "alpha" or "beta," which is shown in the package manager.
  • Categorized package collections are now presented, organized by specific use cases to enhance discoverability and navigation.

Execution Engine

The Midio engine has been upgraded across multiple subsystems to improve performance, especially for tasks that spawn many processes.

  • A new timing module has been introduced, significantly improving the performance of functions like Std.Delay. It also enables internal capabilities, such as allowing async functions to declare timeouts.
  • The engine now uses a shared thread pool to run blocking tasks, making process spawning much more efficient.
  • Traces are now only reported for processes that have actually been executed.

Search

Searching with Ctrl/Cmd-F is now much more relevant and effective for finding the code you're looking for.

  • Ctrl/Cmd-F now searches only within the currently selected module, function, or event.
  • Shift-Ctrl/Cmd-F searches the entire project.

Changes

  • Changes to inline expressions are now committed only when the input box loses focus, reducing transient error messages while typing.
  • The selected entry point is now persisted in local storage.
  • Various visual improvements have been made to the project settings panel.

Bug Fixes

  • Fixed a bug that caused the entry point selector combobox to fail to reposition its item list when changing selections.
  • Resolved several issues related to the entry point picker.

Standard Library

Changes

  • Added a timeout input to Channel.ReceiveFromChannel, allowing you to set a maximum wait time when receiving messages in blocking mode.
  • Added support for configuring delimiters and comment characters when parsing CSV data with Std.CSV.Parse.
  • Combined this with the previous bullet to clarify that you can now configure the delimiter as well as comment characters when parsing CSV data with Std.CSV.Parse in Std.CSV.Parse.

Additions

We’ve added basic functions to the Object and List modules that allow direct mutation of objects. Use these functions carefully, as mutation can lead to code that is harder to debug if misused.

  • Std.List.AddItemMutating – A version of Add that mutates the input list. This is useful when you need to modify a nested list in place.
  • Std.List.RemoveItemMutating – A mutating version of RemoveItem.
  • Std.List.SetAtMutating – A mutating version of SetAt.
  • Std.Object.SetValueMutating – A mutating version of Object.SetValue.
  • Std.EphemeralStore.GetOrSetDefault – A helper function that retrieves a value from the ephemeral store with a fallback default.

New Experimental Library: web-tools

This release introduces an experimental native library called web-tools, which provides a few useful operations. As this package is experimental, its API may change substantially in future releases, so avoid relying on it heavily for now.

  • Crawling – Crawl a domain and extract links and page content.
  • HtmlToMarkdown – Convert HTML to Markdown.