Release 0.4.0 There were 243 commits since last release. This release brings in various new features along with numerous bug fixes and improvements. First thing: function return values. Functions can now return values as well as references. Also, RET instruction has been deleted as it was redundant; it may be easily replaced by one of these: 0) move N 0 1) copy N 0 as callers take return values from zeroth register. Support for tmpri and tmpro instructions was added. This means it is possible to move objects between different register sets. These two instructions made it possible to write new version of the Fibonacci function which turned out to be about 20,000 times faster than the previous one. A very useful feature is introduced in this release: static linking. This means that VM supports basic separate compilation. Assembler directive for this is `.link: <module>`. Also, there is no difference between bytecode format of dynamic and static libraries. Another new feature of the VM is *basic* support for strings. It is possible to store and print them. The not-included-after-all functionality that has been moved to experimental branch is memory management for the VM which would prevent some memory leaks and hopefully decrease amount of allocs. It turned out, though, that the number of allocs *increased* even if total memory usage was lower. Memory management will be probably added as an optional feature or in later release. Minor changes include (among others): * default file generated by assembler is now `a.out`, * asm has only one switch for library assembling: --lib, New tests arrived for: * free, empty and isnull instructions * stacktrace generation (needs further fixing but is non-blocking for release), * static registers in functions, Fixes in this release include (among others): * memory leaks, * instructions sizes, * jump calculations, * more exceptions are raised instead of segfaults, * better error catching in assembler, * accuracy of some comments,