
ChrysaLisp - tosh
https://github.com/vygr/ChrysaLisp/blob/master/README.md
======
vygr
Worth covering a few things about the project.

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

~~~
tosh
Wow, thanks for sharing this & for jumping into the comments. Truly inspiring!

edit: is there any way people can help you in a way that makes sense for you?

~~~
vygr
Yes, go grab a copy and start playing with some simple apps. I'd love others
to get more involved. Expanding the demo apps and maybe adding useful features
to the class libs. Maybe tweaking the VP optimiser with some extra cases. New
platform ports like the Windows port soon to come. New UI widgets etc. I'm
open to any ideas.

------
dang
Related:

[https://news.ycombinator.com/item?id=15466124](https://news.ycombinator.com/item?id=15466124)

[https://news.ycombinator.com/item?id=15527936](https://news.ycombinator.com/item?id=15527936)

[https://news.ycombinator.com/item?id=9806607](https://news.ycombinator.com/item?id=9806607)

[https://news.ycombinator.com/threads?id=vygr](https://news.ycombinator.com/threads?id=vygr)

... and I think a few other cool threads if anyone wants to dig them up.

------
vygr
Hi folks. Chris Hinsley here. Thanks for the interest again. Sorry the README
is a bit of a jumble. I’m just heading home from work ATM I’ll try answer
questions best I can once I get back. Regards Chris

------
mark_l_watson
This looks very cool, but I agree with the other comments that the README.md
needs a better top level description.

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.

~~~
kitd
Agreed. The description on the top-level repo page needs to be line 1 in the
Readme.

~~~
no_identd
[https://github.com/vygr/ChrysaLisp/commit/82a08a62c74ce71c8a...](https://github.com/vygr/ChrysaLisp/commit/82a08a62c74ce71c8ab9d59e9718437927aeeaf5)

Fixed.

------
nudpiedo
it looks like a big deal of work... is it just for hobbists or aimed also for
some kind of professional? if the latter applies, there is a lot of work
missing with the readme (starting by catchy headlines/marketing eye catchers,
etc).

Any opinion article worth reading about this programming language and how it
compares over the rest of Lisps?

------
BossingAround
I wish this had much better readme... What is this? And why is this
important/interesting..?

~~~
bonestamp2
Agreed. The first sentence in a readme should always be what it is, does and
why... even when it seems super obvious from the name (which is definitely not
the case this time around anyway).

~~~
detaro
repository description is a start: " Parallel OS, with GUI, Terminal, OO
Assembler, Class libraries, C-Script compiler, Lisp interpreter and more... "

~~~
BossingAround
Honestly, that seems like a string of unrelated things glued together. I don't
want to be mean of course, it's just confusing (though if the project is all
of that, the documentaiton might be reflective of the confusing state of the
project).

~~~
no_identd
You might want to go learn a bit of history:

[https://en.wikipedia.org/wiki/Lisp_machine](https://en.wikipedia.org/wiki/Lisp_machine)

------
alanbernstein
From a glance at the readme, my assumption is that this is a ray tracer.

~~~
phoe-krk
From the repo description at
[https://github.com/vygr/ChrysaLisp](https://github.com/vygr/ChrysaLisp):

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

~~~
alanbernstein
This is why I think the main repo page would have been a better link than the
Readme, which lacks that short description.

------
BucketSort
Terry 2.0?

~~~
jacobush
My mind went there too. Also to LISP machines of yore. And Smalltalk virtual
machines.

