ask's Avatar
ask
GitHub
Member since

Recent Activity

I have a todo list I'm slowly working on to call a new release finally with the lisp interpreter. It's nearly done except for finishing tests and a tutorial text file I'm going to embed. I'm also going to embed the hex editor I already wrote and let you just jump to arbitrary memory locations from lisp for bootstrappability.

I'll make an improved version of lisp in a later release. Another release will be finishing the assembler which I actually started before lisp. I've also wanted to do a bit of file saving and loading at some point and other nice to have features.

I got slightly distracted in a good way though. I've obtained an IBM 5150 Personal Computer. It's the first machine that has 16 bit x86 and BIOS which lasted from 1981 to 2020 officially. I'm going to run bootstrap-os on it and show that I have compatibility back to 1981.

I ran my bootable x86 assembly lisp interpreter test suite on my phone in termux. Randomly thought it might be possible and honestly I'm surprised. I think it's actually possible to do the display too but I haven't gotten it working yet.

I got GitHub actions working today. Somehow it was possible to run my hand written 8086 assembly lisp interpreter test suite and pipe out the status and output text to the website.

I also have a very nice debugger setup from before. It's amazing to have such nice tools for such low level code.

This is totally usable for other bootable projects to work on real hardware too.

Originally I planned for this project to be an assembler, then I made the hex editor first because it was simpler. I got a gap buffer text editor working, and most of an x86 assembler then life got in the way. I had only officially released the hex editor.

A while later I read Paul Graham's essay on writing lisp in lisp (https://paulgraham.com/rootsoflisp.html you have to download and read the postscript file) and I became interested in the idea of it. I realized it's the perfect thing to use if I want a high level language in bootstrap-os, it's much simpler than C (there's a 100 lines (!) of code in C implementation of lisp that helped me a lot https://github.com/Robert-van-Engelen/tinylisp), and actually the lisp interpreter is even simpler than the x86 assembler.

So I ended up trying to implement lisp in x86 in one weekend and actually got pretty close to getting it done but ended up having to finish it up a little while later.

I never ended up actually releasing it yet because I hadn't gotten it to a very nice place with full error messages etc and it took a long time thinking about what is actually the most minimum set of things required in a lisp implementation. I read McCarthy's paper and thought about it a lot and ended up with what I have almost done now.

Today I'm working on putting together a full release with the lisp text editor and the hex editor integrated as one binary. I also decided to write a test suite since I didn't want to spend the time to test it and not write down the work.

So I've got a pretty good sized todo list but hopefully I can get a release done relatively soon!

Attached is a demonstration of defining numbers even though the interpreter doesn't support integers at all!

Just published v0.6.6 yay! I'm excited about the logging changes, I was wanting accurate download size logging for a while and having the useragent is nice too. Also better support for TLS backends is always good, we want to encrypt everything.

I'm glad I waited because I realized I had updated the dependencies in a way that I didn't like that raised the minimum go compiler version. Now I have a nice script to do it next time.

Hopefully next release will be more features instead of bug fixes.

I started messing around with this again on this break after not coding for a while and got super into it. It started with accidentally finding a go issue about a potential bug I realized I had in my code and I wanted to fix.

I made several things more robust with detecting backend TLS support and made lots of improvements to the logging. I'm excited about accurately logging bytes served so I can tell how much bandwidth different pages are taking. I even ended up doing some windows specific platform code improvements.

There's even more, I'll do a new version soon, I just need to run it for 24 hours or so to make sure all the changes are working well. Can't take back a tag once it's in goproxy!

I've been working on this for several years off and on while I used it; it wasn't very well defined what it would be for a long time. I'm excited that it has come together into a neat package and it's finally ready to share with others.

I spent a good amount of time working to make it nice for newcomers. I'd love to hear if you try it out and what parts are confusing or didn't work when you tried to set it up.

I have a friend who has beta tested it for a while now and I have been running it for years so it should be relatively bug free but please let me know if there are problems of course.