ChrysaLisp
github.com
github.com
I wasn't trying to create a Lisp, at least not at first. I started with a simple VP (Virtual Processor) macro set for NASM in order to look again at some issues raised by my old Taos OS back in the 90's.
More of a personal project to work out some angst to start with.
I used the macro set to create a simple task switcher and get myself to the stage of creating a simulation of a multi-cpu network like the old Transputer days. I wanted to play around with various routing and task distribution ideas. That's probably when ChrysaLisp was just called AsmKernel and the first link appeared on Hacker News, with a 'but what is it...' set of comments.
Around this time I was having issues keeping the compilation performance up due to trying to get NASM macros to do what I wanted. I contacted the NASM forums to ask if there was any chance of getting some extra features added to NASM, but that wasn't to happen. And that's when I decided to write my own assembler.
I've been having a long running debate with a friend, Darren, about Lisp for many years :) He’s crazy about it and has always been pushing me to try it. So I decided to create a Lisp interpreter and code the assembler using that Lisp interpreter. And looking through the project commits you’ll see how that work went.
Pretty soon I had a reasonable Lisp, all be it with my own brand of quirks. And I quickly managed to port over the VP assembler source to the new format. Lisp style () but apart from that pretty much just raw VP assembler. And yes, Darren, Lisp was good and the assembler was crazy powerful being written in Lisp ! So Darren won me round to Lisp.
The next stage was that I wanted to be able to have a slightly higher level to code in, for prototype assembler functions, and that’s when I used the Lisp to add higher level support for stack variables and a C like syntax for expression parsing. The idea here was not to create a full blown C/C++ compiler, but to let me hammer out assembler code without worrying about register numbers and so forth. But I was always intent on converting the time critical functions to the lower level raw VP code.
I had also been experimenting with a GUI based on a software compositer I wrote back in 1990, and so that got included in the project, and eventually I got that hooked up to the Lisp so I could create GUI apps in Lisp with no assembler. Most of the time in these apps is spent in VP coded optimised functions anyway.
Along the way I’ve coded up the VP macro set for the ARM64. Which got me up and running on the Raspberry PI. And recently I’ve pushed towards a Windows port after some nudging from one of the projects recent followers.
There is still lots to do, and many many things I’d like to clean up. But It’s been a labour of love so far as well as personal therapy :)
Regards
Chris
edit: is there any way people can help you in a way that makes sense for you?
https://news.ycombinator.com/item?id=15466124
https://news.ycombinator.com/item?id=15527936
https://news.ycombinator.com/item?id=9806607
https://news.ycombinator.com/threads?id=vygr
... and I think a few other cool threads if anyone wants to dig them up.
From looking at the code, this looks like an attempt to recapture a stand-alone Lisp operations system and Lisp development system. I had a Lisp Machine in the 1980s, so projects like this and also Mezzano interest me.
Any opinion article worth reading about this programming language and how it compares over the rest of Lisps?
> Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...