Release 0.8.1 NEWS With 238 commits since 0.8.0, this release brings in another set of improvements the code of the machine; stronger compile-time checks, improved entry function generation in assembler, different flavours of main function and fixed FFI scheduling. STRONGER COMPILE-TIME CHECKS Assembler is now able to better verify function calls; a whole new verification stage was introduced into the assembler's code which is able to detect arity mismatches between function calls and declarations, frames with gaps (i.e. when not all parameter slots in the frame are filled), and double-passing parameters. Also, all errors are now enabled by default - this change was suggested by Harald Eilertsen (https://github.com/snake66), who also provided valuable insight on the topic of multithreading in C++, which is highly relevant to another part of this release. FIXED FFI SCHEDULING Viua VM spawns two threads when it launches: one runs virtual processes of the machine, and the other runs functions executed directly on the host CPU (the foreign functions). Release 0.8.0 shipped with a race-condition which sometimes could make the machine hang after the FFI call was scheduled. IMPROVED EXPIRED POINTER HANDLING When an expired pointer is encountered, its type may be safely inspected and its string representation may be safely generated. In previous releases this would throw an exception. This is particularly important when an expired pointer is present in stack trace after a virtual process crash as it may be printed without any problems. FATAL VM EXCEPTION WHEN WATCHDOG PROCESS EXITS Watchdog process cannot finish execution normally. If the machine detects it did, it throws a fatal exception and shuts itself down. IMPROVED SAMPLE CODE Sample code must have been updated for current release due to stricter compiler checks. As a bonus, old non-testing code has been cleaned up and rewritten in up-to-date VM assembly. FUTURE Next release will be mostly a refactoring one, so should arrive in less than a month if everything goes smooth and as planned (fingers crossed). It will bring a new virtual process scheduler, extracted from the main CPU code; the CPU will become more static - only providing information about entry points locations, type hierarchy status and routing calls between virtual and FFI schedulers.