freenode/#clasp - IRC Chatlog
Search
23:02:03
Bike
because there are probably several flags like that already, and they're all pretty ad hoc, and mean we're doing things at runtime every time solely because booting is weird
4:22:41
drmeister
General: I think I have the whole CI thing sorted out now. I have a free tier machine on AWS running buildbot and I can set up latent EC2 instances that get spun up as they are needed to build different things.
7:49:57
heisig
beach: I just read Pascal Costanza's paper. I think you are right about MAKE-METHOD-LAMBDA - using a compile-time instance of the generic function solves the issue of macroexpansion time dispatch.
7:52:21
beach
Yes, I can't see what information MAKE-METHOD-LAMBDA could extract from the generic function, so it might as well just be a class prototype.
7:52:40
heisig
What I am still not sure is how a method function can access its associated generic-function and method metaobjects when calling no-next-method.
7:55:05
heisig
It is not very important at the moment. The same goes for CLOS optimizations. Might be a paper for 2020 :)
8:08:25
beach
Hmm, my plan was to create an initial SICL image without the compiler in it, but if compute-effective method requires the compiler, that won't work.
8:09:48
beach
I guess I'll have to include some temporary non-conforming mechanism for doing it and just replace it later by loading FASLs.
8:13:58
beach
Well, during bootstrapping I have no problem. I can include the Cleavir-based compiler in the first-class global environment.
8:14:54
beach
And if I need to load the compiler (which contains tons of generic functions) I need COMPUTE-EFFECTIVE-METHOD to do something reasonable.
8:16:40
heisig
I see. Why do you not just load the compiler during bootstrapping and have it placed directly in the initial image?
8:20:28
heisig
So the alternative is to have the initial image dispatch its calls to compile to another process (e.g. Cleavir in SBCL)?
8:52:21
makomo
morning! i was reading costanza's paper as well but i don't see how MAKE-METHOD-LAMBDA is called during macroexpansion, given the code on page 3?
8:53:22
makomo
it says "here's the expansion of the above DEFMETHOD" and this expansion includes a call to MAKE-METHOD-LAMBDA. doesn't this mean it will be called only when the expansion is finally evaluated?
8:58:59
makomo
beach: hm, that's what i understood from what Bike said yesterday. i also thought costanza was getting at the same problem a page or so later.
8:59:45
makomo
costanza says: "This implies two problems: The generic function metaobjects have to be present at macroexpansion time, ..."
9:00:02
makomo
and i understood the reason as "because MAKE-METHOD-LAMBDA is called at macroexpansion time"
9:00:35
beach
The proble is that if the defgeneric followed by the defmethod are in the same file, and the file is processed by the file compiler,..
9:01:28
makomo
and Bike said yesterday: "make-method-lambda is called during the macroexpansion, which is most of why it's a weird part of the protocol"
9:02:31
makomo
beach: right, but that would only be a problem if some "trickery" was going on at macroexpansion-time, right? such as calling MAKE-METHOD-LAMBDA
9:03:51
makomo
that's why i'm confused. page 3 only shows the final expansion, but it includes MAKE-METHOD-LAMBDA -- shouldn't it already have been called?
9:04:41
makomo
beach: btw, i think there's a typo in http://metamodular.com/CLOS-MOP/make-method-lambda.html "convert the lambda expression a method function"
9:10:11
beach
If the code on page 3 is correct, then the generic function *will* be avalable when make-method-lambda is called.