Release notes


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










Bugfixes in the code generation:







Added support for global variables.




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


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.




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>.


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.


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.



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:


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.



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.


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


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.


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.


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.


Stability improvements in the threading system for all platforms.


Stability improvements for Linux.



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.