Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • v0.4.2
    ef07e4ba · Release 0.4.2 ·
    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.1
    a4947397 · Release 0.4.1 ·
    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.0
    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.1
    96e434c2 · Release 0.3.1 ·
    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.0
    a73ee38e · Release 0.3.0 ·
    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.4
    090e7e31 · Release 0.2.4 ·
    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.3
    15f1f8b9 · Release 0.2.3 ·
    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.2
    7fe15981 · Release 0.2.2 ·
    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.1
    392d93ac · Release 0.2.1 ·
    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.0
    8175a57f · Release 0.2.0 ·
    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.0
    d19dc905 · Release 0.1.0 ·
    Name changed from "Tatanka" to "Wudoo", some very basic instructions and
    assembler features are implemented
  • v0.0.1
    47b133b1 · Better string support lib ·