This is going to be a short little post about the coming week "as it is about to begin" (rough translation of the latin, which is more specifically "in the state of being born").
Last week, as I mentioned in the last post, I wrote up skelleton versions of my allocator functions. I haven't written anything more advanced, and I dont really have any deallocators finished as I was supposed to, but I am delaying those details for a later time when the rest of my work is a little further along. My deadline for this isn't until the 5th anyway, so I have 4 days worth of work to make up later (and I move on to the next thing 4 days earlier).
Coming up next, I'm going to start work on the "generational" part of the design. I'm going to write the functions necessary to implement generations, including adding some generational facilities to my allocators, adding functions to manipulate generations, functions to keep track of inter-generational pointers, etc. At least, this is what I am supposed to be working on according to the timeline I gave for the SOC application.
A better use of my time might be (and I won't decide finally until I wake up tomorrow, and I might try to talk to chromatic now to see if he has any preferences on where to focus) to start working on the tracing algorithm. Once I get the basics of the tracing algorithm down, it should be easy enough to limit those traces to specific generations at a time.
I could move on to tracing and collecting simple buffers first, followed by aggregates (PMCs). After that, if it hasn't been done yet, I will have to work to ensure I can break everything up into relatively small increments, and set up the allocator to be thread-aware, if not completely thread-safe. Best case scenario, I get a GC that can run in parallel to other processes when there is a threading environment, and can quickly run in short bursts otherwise.
Once the basics are in, it's test, fix, test optimize, test, fix, test, document (repeating, if necessary).
I'll try to get moving tomorrow, and post information about what directions I choose.