Skip to content
General:
- New build environment for Linux. Linux binaries are now build on Debian Bookworm.
- Fixed a potential deadlock situation. When lazy-compiling functions, the calling
  thread is blocked entirely to preserve thread-related semantics. However, this
  means that if the compilation process needs to interact with the blocked thread,
  everything would deadlock. This is now fixed by not entirely blocking threads,
  but only allowing "high-priority" threads (such as threads stemming from
  lazy compilation requests) to run in the meantime.
- Better stack traces in the presence of thread switches. Now, the stack trace of
  the thread that is waiting is also added to any exceptions that are thrown. That
  way it is possible to find the reason why a new thread was spawned.
- `Name`, `SimpleName`, and `NamePart` are now actor types since they get called
  from the compiler thread.
- The `Str` class now has a `contains` member.
- The `Str` class now provides `nat`, `int`, etc. that returns `Maybe<T>` for
  more convenient type conversions from strings to numbers.
- Calling members of `TObject` reflects the thread affinity of subclasses. For
  example, calling `toS()` that is not overloaded would previously have caused a
  thread switch even if it would not have been necessary. See commit
  `e32b9373777fa1c84956f701dcc9aeefd0a8d080` for details.
- Proper support for pointer authentication on Arm.
- Improved abilities to reload code live, partially through Active DSU. This also
  makes package loading more robust if the loading fails for some reason.

Basic Storm:
- Don't evaluate the LHS of combined operators more than once in Basic Storm.
- Allow using getters in weak casts without specifying a target.
- Add the special parameter `@parent` to the `named{}` syntax to make looking up
  member functions more convenient.

Progvis:
- Progvis now detects busy waits, with an optional marker (`atomics_busy_wait()`)
  for known busy-waits.
- Allow saving screenshots.

I/O:
- Add support for communicating through serial ports.
- Improvements to the handling of closing file descriptors and sockets.
- Storm now uses io_uring on Linux for better async I/O.
- Sockets allow specifying timeouts on read and write operations.
- Fixed a minor bug in the SSL integration on Windows.

Gui library:
- Updated to Skia version 141.
- Fixed a data race in the initialization of the Gui library.
- Empty Labels will still have a height.
- Fixed a bug in the window timer on Win32.
- Allow extracting images rendered by the library.

Database library:
- Support for PostgreSQL. Originally contributed by Erik Eklöf.
- More functionality in the library that is not supported natively by all databases.
  Particularly, the `RETURNING` clause for various queries.
- Support for explicit transactions.

New http library:
- The new library contains code both for simple http servers and clients. The
  http/https protocols are moved to this library. The library was initially
  implemented by Christoffer Lundell, Erik Bäck Lindström, Filip Wojtulewicz,
  Fabian Pranke, Joel Gustafsson, and Martin Weman.
- The library also provides a basic json library.

Graphics library:
- Re-structured the library to provide loading and saving images.