freenode/#clasp - IRC Chatlog
Search
12:36:35
beach
drmeister: Did you see my answer to your PM? We will be home during the time you are in Bordeaux.
12:37:09
drmeister
Yes - I did - thank you. I got distracted people here at the meeting and didn't follow up with an email.
12:44:35
attila_lendvai
ACTION is writing up his bootstrap design in the wiki and will post it here when done
12:45:55
ecraven
wow, I seriously need to stop web stuff, for a second, I didn't understand that sentence because "bootstrap" immediately meant the wrong thing to me :-/
12:46:58
drmeister
attila_lendvai: Bike and I have been talking about rearranging how cclasp starts up - loading classes first.
12:48:09
drmeister
We also need to compile generic function discriminators directly into the fasl file - to eliminate the warmup time for the first compilation.
12:48:28
drmeister
Good - I'm just mentioning it so that we are all on the same page and don't waste effort.
12:50:58
attila_lendvai
drmeister: I save the page, I'm mostly done with it for now: https://github.com/clasp-developers/clasp/wiki/The-Build-Process
13:14:30
Bike
speaking of rearranging things, standard-class is defined in the interpreter but i don't know why or to what extent it's valid
13:55:45
drmeister
Bike: I think I need it defined really early (https://github.com/clasp-developers/clasp/blob/dev/src/gctools/gc_interface.cc#L924)
13:58:55
drmeister
But this list causes several classes to be defined, redefined and re-re-defined - correct?
13:58:57
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/clos/hierarchy.lsp#L345
13:59:18
attila_lendvai
let me know guys when you have read my bootstrap vision, because you not freaking out reading it also bears important information for me... :) https://github.com/clasp-developers/clasp/wiki/The-Build-Process#plans-for-a-bootstrap-refactor
14:00:21
drmeister
attila_lendvai: I won't be able to read it until tonight - I can't focus that long because I'm at a scientific meeting.
14:08:00
drmeister
So here I define the hierarchy of meta-classes because I think I need them to define the hierarchy of builtin classes. Is it causing a problem?
14:08:05
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/gctools/gc_interface.cc#L922
15:16:02
karlosz
beach: the definition of loops in cleavir-loops with strongly connected components doesnt seem to be a very good one
15:16:26
karlosz
i implemented loop invariant code hoisting in HIR and i had to write a new loop finder
15:17:29
karlosz
whereas the one with natural loops treats it as two, an inner loops nested in an outerloop
17:48:19
drmeister
I have some ideas of how to do it. When we expose the functions we can create function-descriptions.
17:49:12
drmeister
The hierarchy is a bit of a mess - sorry about that. I was going to start at the leaf classes and prune them out.
17:50:17
drmeister
Hi dvssa: I built an joint-tree/atom-tree for the first time today. I'm working on verifying that I have what I think I have.
17:50:53
Bike
i'm going to reduce it to Function_O, and then Closure_O that has all the FunctionClosure, NamedFunction, etc stuff
17:51:03
Bike
then hopefully we can go back and eliminate everything but the description slot from Closure
17:56:56
dvssa
drmeister: Thats great! is there a code snippet/docker image I could look at to recreate it?
18:25:14
Bike
stuff like "CL_DEFMETHOD List_sp function_declares() const { return this->declares(); };"
19:49:57
drmeister
Bike: I think it's just an object I used to represent a closure (in the NIL environment) to a C++ function
19:51:59
drmeister
Bike: If we had a way to compile classes and instances into fasl files then we could store AST's for inlining in fasl files - right?
19:55:38
drmeister
That would just require an ltvc_make_instance and ltvc_set_instance_ref function - sort of like these for arrays: https://github.com/clasp-developers/clasp/blob/dev/src/llvmo/link_intrinsics.cc#L239
19:56:52
drmeister
Or we set up the rack as a simple-vector and then use ltvc_make_instance to create an Instance_O object, set the rack and set the stamp.
19:59:10
attila_lendvai
how do you decide what to do when an instance (or array for that matter) points to another instance that is not being saved into the fasl? IOW, how to you cut the serialized subgraph and then reconnect it at load time?
20:00:14
attila_lendvai
when we worked on hu.dwim.serializer this was the part that required the most attention
20:01:59
attila_lendvai
Bike: but that means that objects may lose identity and get replicated if two separate nodes of the same (potentially large) graph is saved in separate fasl's. in extreme cases that can mean huge graphs are replicated in each fasl.
20:02:41
drmeister
attila_lendvai: We solved that problem with arrays and cons cells. We create objects before they are put into objects that reference them. There is also circularity detection.
20:02:45
attila_lendvai
but it's essentially the same problem with arrays if they contain references to other arrays, potentially forming a large graph
20:04:42
drmeister
I think we can do this - we just need to add support for instance objects to cmpliteral.lsp
20:05:13
attila_lendvai
drmeister: that helps when saving one fasl. but what if another fasl is being saved that wants to store a literal instance that is another node of the same graph in memory. when the two fasl's are loaded they will load the same graph twice into the memory. if the user code relies on singletons or consistent caches or somesuch, then such a fasl save/load can disrupt those
20:05:41
Bike
probably we can have make-load-form-saving-slots return magical forms that cmpliteral knows how to deal with
20:06:55
attila_lendvai
I suggest to introduce safeguards while working on this mechanism, so that users can turn on/off, and/or customize the saving of literal instances and arrays.
20:07:24
drmeister
We could also limit this facility to building clasp at first and then extend it to general fasls later.
20:08:33
attila_lendvai
Bike: I'm only talking about turning off saving literal arrays and instances
20:09:45
drmeister
I'm not sure that there is a problem. The fasl files that we generate now come from compiling lisp source code. I don't see how you could run into this problem.
20:09:57
attila_lendvai
Bike: to send an error/warning for stuff like: (defun foo () #.*some-clos-instance-pointing-into-a-large-and-complex-graph*)
20:11:08
Bike
and i don't really get the point, i mean, if you're throwing a literal object into a fasl you know what you're doing enough to write a make-load-form method and all
20:11:24
attila_lendvai
I did run into sbcl throwing an error when I tried to save a literal instance a few times, and it was always due to some confusion on in some of my macros