freenode/#sicl - IRC Chatlog
Search
15:29:33
beach
I should let everyone know what I am working on. I "finished" phase 3, which now covers all the preparations for evaluating DEFGENERIC, DEFMETHOD, DEFCLASS, etc. in environment E5 (which is still the one that I think will be the "final" one. I can create a generic function in E5, using DEFGENERIC, but it lacks some slots, so I need to debug that.
15:29:34
beach
After that, I will make sure the other DEF macros work in E5 as well. Once that is done, I think I will replace the existing bootstrapping procedure, and commit the new one.
15:30:30
beach
I am hoping that I can interest some others in the new bootstrapping procedure, which is a lot nicer than the existing one, because I think I could use some help in cleaning things up once the new one is working.
15:31:47
beach
If things go according to plan, I no longer have to separate DEFGENERIC forms for slot accessors from the DEFCLASS form that defines the slot. Then, it will be possible to make the class definitions more idiomatic.
15:32:09
beach
There is going to be lots of that stuff to work on, and I think I could use some help with it.
15:33:59
beach
Furthermore, I am not planning to make the "mistake" I did in the existing bootstrapping procedure, namely to make E5 as self-contained as possible as early as possible. I think it is going to be better to load as much as possible into E5 first, without making the graph cyclic.
15:34:59
beach
One reason for that is that the functions in E4, i.e. the ones that operate on SICL objects, but that aren't themselves SICL objects, are now very likely faster than before, since they are using the AST evaluator.
15:36:34
beach
So, starting tomorrow, I will figure out why DEFGENERIC in E5 does not initialize certain slots. Then when DEFGENERIC works, I'll work on DEFCLASS and then DEFMETHOD.
16:16:39
beach
The lacking slots in the generic function turned out to be a simple omission in the bootstrapping procedure. I define a special version of ENSURE-GENERIC-FUNCTION for the purpose of bootstrapping, and I forgot to include the :NAME initarg.
16:18:03
beach
Speaking of which, in the new bootstrapping procedure, it should be necessary to create a lot less bootstrapping-specific code, but I haven't thought it through yet. So that's another task that should be worked on, once the basic stuff is up and running.