freenode/#sicl - IRC Chatlog
Search
10:06:29
beach
Here are some things I could use help with. Not because they are difficult, but because they are tedious, and I am currently bored to tears with stuff like that. The repository need some serious cleanup.
10:08:08
beach
Then merge the Cleavir2/ and Cleavir/ directories into a single Cleavir/ directory that contains what SICL uses from Cleavir2 and what SICL uses from Cleavir.
10:09:51
beach
The HIR evaluator needs some IGNORABLE declarations to avoid style warnings when the sicl-boot system is loaded.
10:11:20
beach
The sicl-global-environment system, a.k.a sicl-genv should be phased out. There are components that still depend on it. They should be updated to use the sicl-environment system instead.
10:14:07
beach
After each modification, I recommend you do (asdf:load-system '#:sicl-boot) then (in-package #:sicl-boot) then (time (defparameter *b* (boot))) then (repl *e5*) and perhaps (defgeneric foo (x)) (defmethod foo ((x cons)) (car x)) (foo '(a b))
10:14:49
beach
Before you take on any of these tasks, please let everyone know so as to avoid duplicate work and/or clashes.
10:16:26
beach
Note, in the systems that are obsolete, there might still be code that has not been adapted to the new environment or bootstrapping code, so don't necessarily just delete it without checking that first.
10:29:23
beach
Next, since I can now evaluate a DEFGENERIC form for some slot accessor and then evaluate the DEFCLASS form in the same environment, there is no longer a need to separate these DEFGENERIC forms from the DEFCLASS forms they refer to. I would like to see those forms in the same place. But I can't guarantee that there won't be problems.
10:30:49
beach
If that works out OK, then an entire file could contain the MOP class definitions, rather than one file per class definition.
10:32:50
beach
Another task: I have tried to separate definitions of macros from the expander code, so that the host can execute the expanders during bootstrapping. However, the AST evaluator used for the new bootstrapping procedure is significantly faster than the HIR evaluator, so such separation may no longer be required, at least for macros that are used infrequently.
10:33:32
beach
So the task would be to try to merge the expander code with the DEFMACRO forms for selected macros and observe the impact on bootstrapping time. If the difference is negligible, keep the merged code.
11:12:56
beach
The same idea is true for some separation between DEFMETHOD forms and a function that implements the real action of the method.
11:13:56
beach
The reason was that, in the previous bootstrapping procedure, The two often had to be loaded into different environments. There are fewer such cases now.
11:14:59
beach
So the thing would be to look in the boostrapping procedure for triples of files xxx-defgeneric.lisp xxx-support.lisp and xxx-defmethods.lisp. They can probably frequently be merged now.
11:17:20
beach
Yet another task would be to separate out the code utilities to a separate repository, or alternatively, to investigate whether an existing repository exists that will do the trick, and perhaps add some missing code to it.
11:43:26
beach
Instead, it should refer to the standard functions such as FDEFINITION, fboundp, MACRO-FUNCTION, etc.
11:43:56
beach
If no standard function exists, such as FUNCTION-CELL, we need to invent it, which I did in this particular case.
11:44:35
beach
These standard functions will be defined as closures in the production environment, and they will close over the environment and call the Clostrum function.
11:45:36
beach
The reason for this rule is that user code should not have access to the Clostrum functions in the default environment. Only some privileged environment will have such privilege.
11:46:53
beach
Plus, this new rule is what is going to make it possible to create a Clostrum environment as a SICL object during bootstrapping, and to store create bindings in that environment to the other SICL objects created during bootstrapping.
11:47:15
beach
This was one of the conundrums I was unable to solve in the previous bootstrapping procedure.