Release notes

0.5.5 (2021-04-26)

0.5.4 (2021-04-23)

0.5.3 (2021-04-12)

0.5.2 (2021-04-10)

0.5.1 (2021-04-08)

0.5.0 (2021-04-02)

0.4.20 (2021-03-04)

Minor improvements to Progvis.

0.4.19 (2021-02-25)

Major improvements:


0.4.18 (2021-01-12)

0.4.17 (2021-01-04)

Fixed a minor issue when using the Cairo OpenGL rendering on Linux.

In some cases (for example in the image viewer), images would disappear after resizing the window. Commit 3cf4a95505e82f063fad66edf7733458bfb05ba1 fixes this.

0.4.16 (2020-12-22)

Fixed a bug in the stack workaround that caused crashes in rare cases. See commit e5bc0de85eb30ba53e50fda9dc28d21ecb76abdc for details. This only affects the Linux builds.

0.4.15 (2020-12-20)

Fixed a bug in the GUI library. Changing properties of a brush would not be reflected if the brush had been used at some point earlier.

0.4.14 (2020-12-14)

Major cleanup in the GUI library. Now, the rendering is able to support different backends more easily (not only Direct 2D and Cairo). Added a workaround for a bug in a graphics driver on Linux that caused Storm to crash when using hardware accelerated rendering. See the documentation on the GUI library for more details.

0.4.13 (2020-09-04)

Updated the rendering system on Linux to allow selecting between different backends.

By default, Storm now utilizes the same background that Gtk+ uses, which is usually hardware accelerated in some way (for example, on X11, the Cairo manual states that the XRender extension is used if it is available). This has the benefit of improving the copying from the rendering buffer to the window, as the buffers usually reside in the same location. It also avoid crashes when running OpenGL against certain drivers. A software fallback is also available.

It is possible to select which backend to use by setting an environment variable, as described in the documentation for the GUI library, if OpenGL rendering is still desired.

0.4.12 (2020-09-04)

0.4.11 (2020-07-05)

0.4.10 (2020-06-28)

0.4.9 (2020-04-27)

0.4.8 (2020-04-22)

0.4.7 (2020-04-20)

0.4.6 (2020-04-16)

0.4.5 (2020-04-15)

0.4.4 (2020-04-05)

0.4.3 (2020-03-08)

Improvements to the UI library:

Improvements to Basic Storm:

Improvements in the core:

0.4.2 (2020-02-08)

0.4.1 (2020-01-28)

0.4.0 (2020-01-27)

0.3.0 (2020-01-05)

0.2.39 (2019-12-30)

0.2.38 (2019-12-28)

0.2.37 (2019-11-07)

0.2.36 (2019-08-01)

0.2.35 (2019-06-06)

0.2.34 (2019-06-05)

0.2.33 (2019-02-06)

The GUI library supports Wayland. There may still be some quirks and inefficiencies left.

0.2.32 (2019-01-17)

0.2.31 (2018-12-23)

0.2.30 (2018-12-09)

0.2.29 (2018-12-06)

0.2.28 (2018-12-03)

0.2.27 (2018-11-10)

0.2.26 (2018-10-14)

0.2.25 (2018-10-08)

0.2.24 (2018-09-29)

Bugfixes in the code generation:

0.2.23 (2018-09-26)

0.2.22 (2018-08-31)

0.2.21 (2018-08-01)

0.2.20 (2018-07-30)

0.2.19 (2018-07-30)

0.2.18 (2018-07-19)

Added support for global variables.

0.2.17 (2018-07-11)

0.2.16 (2018-06-19)

0.2.15 (2018-06-13)

Revised visibility of members in BSFunction and BSCtor, which caused the layout extension to not compile.

0.2.14 (2018-06-08)

Robustness improvements for hash tables containing actors (where hashes depend on the object identity). Previously, some object identities were cleared from the location dependency object even if they were still needed.

0.2.13 (2018-06-08)

0.2.12 (2018-06-06)

0.2.11 (2018-05-07)

The type Maybe<T> (used for T? in Basic Storm) is now extended to support T being a value type in addition to T being a class or an actor. For example, it is now possible to use Maybe<Int>.

0.2.10 (2018-04-29)

Basic Storm supports the keywords abstract, final and override in order to provide additional help to programmers. Corresponding support is also present in Storm itself in the form of flags that can be set on specific functions.

0.2.9 (2018-04-16)

Support for TCP sockets is added to the standard library in the package The IO system is also improved to properly handle the asynchronous nature of sockets (eg. closing a socket while a read operation is in progress). Furthermore, it is no longer possible to copy streams based on handles from the operating system, as that would cause race conditions and possibly break the IO system.

0.2.8 (2018-03-31)

0.2.7 (2018-03-25)

A library for layout is now included with Storm, including a small domain specific language for specifying layouts. The library is integrated with the UI library to simplify creation of user interfaces.

In addition, the following improvements are included:

0.2.6 (2018-03-09)

It is no longer possible to accidentally share data between threads by reading/writing variables inside actors. Previously, Basic Storm allowed this without proper synchronization and copying, which made it possible to accidentally create shared data structures (of non-actor types), which in turn broke assumptions made by the threading system. From now on, such accesses are synchronized as if they were done by calling a member function, and thus copies are being made. This does, however, mean that it is no longer possible to assign directly to these variables. Assignment functions can be used to circumvent the problem. See the documentation for further details.

On Linux: the GUI library uses a different approach when displaying content rendered using OpenGL. This approach is more cooperative towards Gtk+, but is slightly more demanding. The problem with the old approach was that some configurations experienced regular freezes of up to 0.5 s. This seems to be resolved now.

0.2.5 (2018-03-07)

0.2.4 (2018-03-03)

Storm includes a built-in help system. All objects in the name tree can refer to their documentation. The documentation is loaded from disk when it is required rather than being kept in memory all the time. In Basic Storm and C++, documentation is generated from the source code by examining the comment directly preceding the corresponding declaration, much like Doxygen and Javadoc. However, no special comment syntax is needed at the moment.

The documentation can be accessed from the Basic Storm REPL using help core:Str, or from the Emacs plugin using M-x storm-doc. The Emacs plugin also works properly on Linux now.

0.2.3 (2018-02-04)

Improved handling of comparisons throughout Storm and added new functionality to the standard library.

0.2.2 (2018-01-27)

All named objects are not always public. It is now possible to associate a Visibility object with each named object to restrict access to them. This is used to implement the keywords public, protected, package and private in Basic Storm.

0.2.1 (2018-01-18)

Improved stack traces and stack handling on Windows. Previously, only functions that used exception handling were shown properly in stack traces (by core:debug:stackTrace). This release fixes that issue by making stack unwinding more similar to the table-based approach used in the Linux version.

The Linux release now includes libpng and libjpeg, so that a system with incompatible versions do not cause the graphics or the ui module to fail to load.

0.2.0 (2018-01-15)

The GUI and Sound libraries are now available for Linux as well as Windows. Code using these libraries should behave mostly the same between the two platforms, even though there are still differences between the platforms. Some functionality is not yet complete, and some parts could use some refactoring.

In addition to porting the libraries to Linux, support for more file formats have been added to the Sound and Graphics libraries. Now, mp3 and ppm files are supported in addition to ogg, flac, wav, png, jpeg and bmp.

0.1.3 (2017-12-08)

Stability improvements in the threading system for all platforms.

0.1.2 (2017-12-06)

Stability improvements for Linux.

0.1.1 (2017-12-02)

0.1.0 (2017-11-14)

First release with a version number!

Note that the Linux version of Storm does not yet include the sound and gui libraries available on Windows.