ChrysaLisp

Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...

GPL-2.0 License

Stars
1.6K
Committers
13

Bot releases are hidden (Show)

ChrysaLisp - August of Wind

Published by vygr about 7 years ago

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

ChrysaLisp - Goodbye July

Published by vygr about 7 years ago

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

ChrysaLisp - Hot Hot Hot

Published by vygr over 7 years ago

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

ChrysaLisp - Pretty Poly

Published by vygr over 7 years ago

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

ChrysaLisp - May Day

Published by vygr over 7 years ago

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

ChrysaLisp - Easter Holiday

Published by vygr over 7 years ago

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

ChrysaLisp - Spring has sprung IIII

Published by vygr over 7 years ago

Fix for single CPU networks compilation.

Chris

ChrysaLisp - Spring has sprung

Published by vygr over 7 years ago

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

ChrysaLisp - Sierra Fix

Published by vygr over 7 years ago

Fix for Mac Sierra, sorry this took a while to notice, must upgrade my MacBook OS more often !

Also the NASM test suite has now been retired as the code produced by the compiler has now diverged from the old NASM macros. But it served it purpose well.

Best Regards

Chris

ChrysaLisp - Chinese Festival

Published by vygr over 7 years ago

Happy Chinese new year all !

Started to add some UI extra's, min/max/close buttons to the window furniture and changed the demo apps to make use of the close button. Finally testing the widget dereference code.

Regards all

Chris

ChrysaLisp - New Year Resolution

Published by vygr almost 8 years ago

Worth a new release as the new improvements to the (make-boot) system are worth it. 35 seconds to compile the whole system from scratch, on 1 CPU (I'll parallelise that soon), and less than 1 second to build and save a boot image containing the entire Lisp ! The NASM based Makefile now just incbin's the obj/sys/boot_image that is self created to generate an ELF or Mach executable.

From the Lisp command prompt, try (make-boot t 'class/lisp/init), the t means recursive and the lisp init function has static references to all the Lisp built in functions, and that means all the class libraries that the Lisp needs etc etc.

For those that don't know the (make), (make-all) and (make-boot) functions are defined in the auto run cmd/lisp.lisp file. Please take a look, improvements are welcome.

By default the (make) and (make-all) just use (make-boot) and so create a minimal, everything dynamically bound, image, currently this is 4.5 KB. The kitchen sink Lisp boot image is 90 KB.

(make) and (make-all) can take optional parameters for platform and cpu, so you can cross compile for Linux/Darwin/x86_64/ARM as you please.

Have a good year all.

Regards

Chris

ChrysaLisp - Christmas Cracker !

Published by vygr almost 8 years ago

Good point to make a release. Various additions to the Lisp and clean ups of the class library object new's.

New experimental 'scope' function for the Lisp to allow OOPS style calling, a little code example at the end of the cmd/lisp.lisp boot file.

Regards to all

Chris

ChrysaLisp - There is no NASM...

Published by vygr almost 8 years ago

Well, only for the little bootstrap.

This version is now completely self compiling, the make system now work rather well (make) from the Lisp command prompt and there is now a TUI, Text User Interface to go along with the GUI interface.

./run_tui.sh

Gives you the same terminal as the GUI Terminal app.

Enjoy

Chris

ChrysaLisp - Self Compilation of all source !

Published by vygr almost 8 years ago

First version that is able to self produce identical binaries to the NASM bootstrapped system. At this point NASM use will be removed except for creating the extremely simple bootstrap, and even that won't get compiled very often and will most likely also disappear.

I think this marks the first point that deserves a release tag. Thanks NASM, you proved my point that all you need to do anything is a decent macro assembler !