libera/#sicl - IRC Chatlog
Search
13:19:12
beach
Interestingly, there is a possible bootstrapping technique that I hadn't thought of before. When we create an ersatz function in E5, the HEADER is a host FUNCALLABLE-STANDARD-OBJECT that is used when the function is to be executed in the host, but the rack is (or will be) what determines the code that goes into the executable, and the two are entirely separate.
13:19:18
beach
Right now, when we load a function definition in the form of a file containing a DEFUN form into E5, the HIR evaluator will create an object of its own type which is also a host funcallable-standard-object, and it will call the host SET-FUNCALLABLE-INSTANCE-FUNCTION to make that object executable. This object is then stored in the environment as usual.
13:19:23
beach
But I want to change that so that the HIR evaluator creates instances of SICL SIMPLE-FUNCTION. But nothing prevents us from calling SET-FUNCALLABLE-INSTANCE-FUNCTION with an imported host function while keeping the rack as the result of the compilation.
13:19:24
beach
We could then sometimes use a faster host version of a function, like say MEMBER for execution during bootstrapping, while still have the rack reflect the compiled SICL version. Of course, doing it that way means the SICL version won't be tested during bootstrapping.