Releases: TheRealMichaelWang/minima
Various Performance-Related Improvements
While the syntax hasn't changed significantly, or for that matter at all in this release (should it ever?), several major changes and upgrades have been made to Minima's virtual machine and compiler, mostly regarding performance.
Those changes include, but are not limited to the following:
- Added a grey-stack area for constants that doesn't rely on dynamic allocations. Because of the fundamental nature of a stack's behavior, certain allocations for constants, not references, can utilize a contiguous block of memory.
- Branch jumps, referred to as a skip within the opcode enum, are have their destinations pre-computed during compilation. Minima's previously, and still does utilize a stack-based branching system chiefly because it's easy to compile and doesn't impose any significant performance limitations.
- Added tail call optimizations for top-level procedures. Labels are ultimately still utilized, but Minima's compiler may forgo including a new scope/gc clean opcode.
- Removed windows dependent code, and added a makefile for compiling with gcc on windows.
Also, it should be noted that a ton of other bugs were patched and fixed - pretty much every issue between #9 and #18 were fixed. And as always, if you notice any bugs or if you're so inclined to propose a feature - feel free to go and make a new issue.
Follow this installation guide if you require detailed installation instruction or if you're not running 64-bit windows.
Operator Overloading
Changes in this Release
- Added operator overloading for records
- Created a separate area in memory that doesn't require dynamic allocation, thereby dramatically increasing performance.
- Added
hashset.min
to the STL - Added
map.min
to the STL
Inheritance
Merge pull request #5 from TheRealMichaelWang/inheritance Inheritance
Records and Objects
Minima, version 0.1.1
The biggest additions in this update revolve around records (Minima's equivalent of C structs, although they support much much more). You can read more about records here. Other major changes include major bug fixes, most notably several involving the garbage collector.
Aside from updates to the Minima interpreter, a small somewhat functional standard library has been added - though, at present, it's still in its's testing phase. To utilize the standard library, which includes a linked list for dynamically sized collections, unzip stl.zip
and place it's contents in the same directory as minima.exe
. Use the include
keyword (ie include "list.min"
) to include the library.
First Workable Release
0.1 Add files via upload