-
v0.4.2ef07e4ba · ·
Release 0.4.2 There were 21 commits since last release. This release is another one of the "not much commits but big if we speak of features" as in this version Wudoo VM gained support for vectors so now it is possible to store sequences of objects in single registers. Also, a serious flaw has been fixed. Before this release branches had not been calculated properly if strings were used in a program. Now this issue is resolved and strings can be used freely.
-
v0.4.1a4947397 · ·
Release 0.4.1 There were 3 commits since last release. This release is small in terms of code, but quite big in terms of functionality. Execution look has been refactored and it is now possible to write custom execution loops and start execution with non-standard frames.
-
v0.4.0d45b7e27 · ·
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,
-
v0.3.196e434c2 · ·
Release 0.3.1 There were 35 commits since last release. This release brings gradual improvements to the VM: - basic stack traces are printed on errors, so it is easier to find bugs, - frames remember calling function names (enabled stack traces), - global/local register sets can be switched, - assembler always generates entry function, - main fuction is required to return a value, The last two changes required small changes to be made in all sample assembly files, but thanks to them the overall quality of the VM has greatly increased. The execution is now more predictable, i.e. entry function always starts a program and program always returns exit code. Stack traces are available in Poor Man's Edition(TM), but are an improvement over previous state where VM only gave information *what* went wrong but not *where*.
-
v0.3.0a73ee38e · ·
Release 0.3.0 There were 51 commits since last release. This release comes with minor bugfixes, major new features and medium-sized revamp of the VM frontend. Most interesting new features are: - `.main:` asm instruction which lets programmer set main function, - `itof` and `ftoi` CPU instructions for int/float conversion, - `ress` CPU instruction for switching register sets (global and local), The last feature is groundwork for the 0.4.0 release which will introduce static registers. Virtual machine frontend received some love in this release. Apart from improved messages and new command-line switches, assembler and CPU runner, had some memory leaks fixed. Assembler also counts bytes correctly and does not segfault on empty functions.
-
v0.2.4090e7e31 · ·
Released version 0.2.4 There were 64 commits since last release. This version includes some new features and a few architectural changes to the VM itself. First most important thing is the implementation of the call-by-ID scheme. It is much more flexible and powerful than old call-by-address scheme. The new approach performs call calculation at runtime which introduces a small overhead in comparison to the previous call scheme but is essential for further growth of the VM. It provides for better debugging messages and the ability to implement shared modules. Second new feature is introduction of partial floating point support. All float-related instructions are supported, floats can be passed and returned from functions, etc. What is missing is conversion between integers and floats. Apart from that, this release fixes one *very severe* bug in the assembler. Prior to this version branches and jumps were not calculated correctly for functions other than the first one defined. There is also a standard does of commitless fixes, small improvements and an overall improvement in the quality of the VM.
-
v0.2.315f1f8b9 · ·
Released version 0.2.3 This is a small release featuring only 8 commits. Changes: - implemented returning values from functions, - refactored `CPU::call()` function a little bit, - fixed memory leaks in `Frame` objects during function calls, - fixed issues with tests,
-
v0.2.27fe15981 · ·
Version 0.2.2 There were 69 commits since last release. This release brings general improvement to the VM, thanks to all the bugs that were fixed. Apart from that this release also comes with several small new features, i.e. support for new instructions (FRAME, PARAM, PAREF and ARG) and improved function call mechanism. The improvement here means that functions can now be passed parameters and access them. Functions are now also equipped with local scopes - global scope cannot be accessed from them but it is possible to make changes in non-local scopes by passing parameters by reference. Quick list: - bugfixes, - local function scopes, - improved function call mechanism, - function parameters,
-
v0.2.1392d93ac · ·
Released version 0.2.1 There were 43 commits since v0.2.0 and the changes include: - fix: short forms are now usable ina ll instructions that support them; - small change in how CPU debugging messages are printed; - implementation of RET and SWAP instructions; - other small changes and fixes; Apart from that, this release also features a *major* refactoring of assembler and bytecode generation API. New code in the assembler uses some magic which made it possible to significantly reduce code repetition. This magic may appear black and voodoo at first, but once you know how it works it's not that bad.
-
v0.2.08175a57f · ·
Release v0.2.0 of Wudoo VM (53 commits since last release) This release introduced: * aptly named `.name:` assembler directive which allows to name registers, * small update to string support library, * new CPU instructions, * better sample files in some cases, * support for references so should be now possible to emulate pointers (to some degree) and references,
-
v0.1.0d19dc905 · ·
Name changed from "Tatanka" to "Wudoo", some very basic instructions and assembler features are implemented
-