Releases: vygr/ChrysaLisp
PI in the Sky
First version up and running on PI3 :)
Debian Linux based PI64 from Github, https://github.com/bamarni/pi64.
Further work on optimising for the PI3 is needed, but this self compiles everything just fine on the PI3.
Needed to change a couple of syscall functions to fit in with Debian Linux on the PI3, but both OSX and Ubuntu on x64 had the same syscalls available so things turned out pretty portable.
The bootstrap is now in C, just loads in the sys/boot_image file into ram and jumps to it, nothing fancy.
Enjoy.
Regards to all
Chris
Remember September
Major push on Aarch64 ARM code generation, feature complete now. Next step is to prepare the platform isolation layer for the ARM Linux on the PI3. But I think the ARM codegen work is worth releasing.
Added 2 new VM ops, vp-land-rrr, and vp-lnot-rr, that expose the logical and and not to CPU specific feature generation.
OK, now to push on to get the 64bit PI3 Linux port running !
Regards all
Chris
August of Wind
Lots of work on the compiler front end. Gaining almost 50% improvement in build time, now regularly hit 4 second full builds and occasionally 3 seconds.
Added a README_LISP covering a little of the how and why of the Lisp itself.
Refreshed the screen shot with some of the latest canvas api features shown.
The link drivers now have multiple message buffers per channel to allow less waiting for the neighbour CPU to clear the buffer for writing.
Lots of tweaks and general refactoring of things as I've spotted stuff.
Regards to all
Chris
Goodbye July
Time for a release !
The canvas drawing tools are now done, and the various generators and strokers for the usual suspects in a vector drawing api are now all in native. Next stage on this work would be a slightly higher level api along the lines of SVG import and rendering...
Various tidy ups to the code as they have been spotted, plus a fix to the minimal 4KB kernel with dynamic bound everything was spotted and fixed.
The Lisp has a few extra user commands added like 'bind' and 'read' to let user code access parameter binding and the parser. Bind also implements destructing and is used by lambda function calls as well so destructing is now a feature across the board.
Regards to all
Chris
Hot Hot Hot
Seriously warm today !
However, the line stroking and points classes are now in native and working. So good time for a snapshot release.
Now can come the optimisations of this new code, plenty places to squeeze out some extra performance.
The vector math DSL has been a great success in getting this going. Take a look in sys/math/math.inc to see what it can do.
Regards to all
Chris
Pretty Poly
Good time for a release.
The polygon rasteriser is now in native code and filtering of over sampled transparent canvas regions is correct. Next step will be to add the src_over scan line functions and get the alpha composite drawing running.
Then gradually lower all the 2D vector stroking to a canvas drawing context class and build up the retained stroked shape api's.
I might take some time to convert the somewhat silly, but fun, raymarch demo to spawning multiple child tasks in native for the compute. Still won't be a patch on a GPU like my other Raymarch project, but will be a good demo of farming some worker tasks.
Regards all
Chris
May Day
New canvas object and the beginnings of the 2D vector graphics API. Canvas demo shows off what you will be able to do, pipelining various path generators and path strokers.
Most of the drawing code is in Lisp at the moment, as is the low level vector math, so it's not full speed. But this allows me to prototype the API quickly for what will become Canvas class methods in assembler.
The Canvas demo also shows how to spawn off a Lisp thread to interact with GUI components.
Enjoy
Chris
Easter Holiday
New vector get_iter method, used all over the lisp functions to compact stack use and squeeze a little more performance out. Mainly though this improves source readability and that's always a good thing.
Use of each! and some! primitives throughout the code base has improved performance and eliminated some nasty tricks to keep performance up in the emit-xxx functions.
Done a lot of compilation thrash testing on various numbers of CPU networks, and all is looking very stable, so worth a release.
Enjoy, and happy Easter to all.
Chris
Spring has sprung IIII
Fix for single CPU networks compilation.
Chris
Spring has sprung
Lots of work on mainstream styling of the code. Error conditions are now out of line and enclosed in forms that produce no code in release mode. Even in debug build mode, only non taken branches to error cases are in the main path of execution.
At the top of inc/func.inc you will see (defcvar debug_mode t), if that is set to nil, then all asserts, errorif/ifnot, errorassign and errorcases forms will produce no code. errorassign will assign -1 for ok.
A release mode build will remove all syntax checking from the Lisp interpreter etc, so never ever use this mode for anything other than a fully tested application boot image.
Do not use errorif/errorifnot/errorcases statements to handle runtime validation of input ! These statements should only be used for code that is expecting to never fail in a production boot image.
Having said all that, the speed and footprint savings are worth it. 17KB saved on the current 156KB boot image in release mode, and a few seconds faster on a system build test.
Much stricter checking for redefinition of fields, bits, enums too. Checkout the project history to see all the new changes.
Enjoy
Chris