The SPITBOL Project is pleased to announce that Unix SPITBOL 13.01 is available.
It can be downloaded from Github: HARDBOL/SPITBOL:
This release supports floating-point arithmetic and save files. Load modules and the loading of external functions are still not supported.
Oh my heavens, it has a generational GC of sorts (the “sediment” described in the big GBCOL comment around line 20452 in the s.min file). An in-place, compacting, mark-sweep GC that (mostly) only touches ephemeral data in the heap, since longer-lived stuff stays in the sediment and doesn’t get scanned. I guess this has to depend on pointer fields never mutating between GC calls?
I’m not enough of a loremeister to know whether this scheme is/was widely used in smaller Lisp implementations, but it’s pretty clever. I guess all blocks have to be of some minimal size since unmarked blocks get overwritten with some relocation pointers to tell the compaction phase where to move the marked blocks. So small integers shouldn’t go in the heap, etc.
This is just going by the block comments. I haven’t tried understanding the MINIMAL code. I guess I should do that. I’m thinking of trying to port the algorithm for a small Lisp that I sometimes mess with, that happens to have immutable data.
Do you know if Spitbol 360 worked the same way?
Fill in your details below or click an icon to log in:
You are commenting using your WordPress.com account. ( Log Out / Change )
You are commenting using your Twitter account. ( Log Out / Change )
You are commenting using your Facebook account. ( Log Out / Change )
You are commenting using your Google+ account. ( Log Out / Change )
Connecting to %s
Notify me of new comments via email.
Notify me of new posts via email.