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.
12:35:59
Bike
beach: right now clasp doesn't refer to the sicl repo at all - just s-expressionists/Cleavir - so you're good on that front
12:57:36
beach
More tasks: CL:SYMBOL-VALUE, CL:BOUNDP, and CL:MAKUNBOUND should call functions with that name in SICL-RUN-TIME. For example, CL:SYMBOL-VALUE should close over the global value cell and the global unbound value and it should call SICL-RUN-TIME:SYMBOL-VALUE with those two arguments and the symbol name. Currently, CL:SYMBOL-VALUE passes the Clostrum environment to the equivalent run-time function.
13:00:22
beach
The AST evaluator and the HIR evaluator share some stuff like *CALL-STACK*. These modules useful only for bootstrapping, so maybe they should be located in a place that makes that fact more obvious. The structure of the call stack is shared between those two and the bootstrap backtrace inspector.
13:01:04
beach
Perhaps the bootstrap backtrace inspector can be factored so that the GUI part is usable in the production system. If so, the stack-inspection part may have to be factored out.
13:02:49
beach
There is probably code in several Test/ directories that I haven't adapted to Clostrum, so this needs to be done.
13:04:28
beach
The system SICL-EXTRINSIC-ENVIRONMENT should be eliminated. But it is used by the Test code for LOAD-TIME-VALUE hoisting.
13:06:43
beach
Since I have started using package-local nicknames, this might be a good opportunity to use more of them in various places, if for nothing else to make package prefixes shorter.
13:07:22
beach
Perhaps there should even be a SICL-wide convention. Like I started using ENV for SICL-ENVIRONMENT in the bootstrapping procedure.
13:09:26
beach
And stuff like sicl-evaluation-and-compilation and sicl-data-and-control-flow is pretty long. But then, those might not be used very much as package prefixes.
13:10:55
beach
In summary then, there are lots of tasks like that, and I would very much appreciate some help with them. I myself need to concentrate on the last phases of bootstrapping.