freenode/#clasp - IRC Chatlog
Search
20:23:40
karlosz
Bike: ocf.io/~karlos/ironclad-60s.svg if you ctrl-f for CLONE-AST you'll see that there's a lot of overhead to doing it
20:24:36
karlosz
i looked at the actual code and it seemed like it was building a dictionary for every instance and then reconstructing it piece by piece
20:24:59
karlosz
so over just splicing in cons cells like with compiler macros its definitely a tad slower
21:01:31
copec
drmeister should take this as a challenge https://twitter.com/BadCOVID19Takes/status/1333504356386287621?s=20
21:16:53
Bike
there are amoebas that are bigger than insects, so logically there should be some oxygen molecules that are bigger than viruses.
21:21:29
Bike
generalized local calls are working in my branch now. i also extended the closure-less calls to work with ignored &rest parameters
22:03:17
Bike
do you think keeping local-mv-calls in the same local-calls slot of the function could be a problem?
22:06:10
karlosz
its a local call, and i don't think the anything that grovels that slot really care at all
22:06:36
karlosz
its a backpointer used for making representation strategy decisions for environments for the time bein
22:54:41
drmeister
Guys - this just resurfaced - does anything you have done in the last little while explain this?
22:55:06
drmeister
No applicable method for RELATE with arguments (:CANDO NIL #<LOGICAL :op logLowPrecedenceAnd> #<ATOM-TEST >)
23:02:17
drmeister
Do you have any ideas as to what you could unwind so that we can maybe get back to something that works and then apply changes more carefully to figure out what is going on?
23:06:53
karlosz
drmeister: the buildbot started failing on your accidental push, but it seemed to work before in terms of clasp commits
23:08:17
karlosz
does (defun f (x) (labels ((g ())) (g 3) (g 4)))) still do the right thing in terms of warnings and errors?
23:11:14
Bike
https://github.com/clasp-developers/clasp/blob/master/src/lisp/kernel/cleavir/translate.lisp#L571-L582
23:14:06
karlosz
it seems like we unconditionally convert it to a local call even if the call is invalid
23:15:37
karlosz
hm, i think not converting to a local call if the args are not right will save a lot of the logic though
23:18:22
karlosz
also the ignored rest detection is a little brittle; it relies on the leti being deleted.
23:33:37
Bike
as for invalid calls, the main thing is i wanted to separate the analysis of whether a lambda list allows inlining
23:35:32
Bike
plus i think maybe the client should be the one deciding how to deal with invalid calls mainly. someone's got to do the logic
23:41:35
karlosz
right... i mean the tension is what we want to leave up to the client versus what we want to do in cleavir so that clients don't need to write the same logic over and over again
23:42:44
karlosz
i guess here the client could choose just to directly insert a runtime error in lieu of the call
23:46:40
karlosz
but reusing the runtime error in the called function seems like the "natural" way of handling things, so it would be nice if clients could at least default to that logic without haivng to rewrite it
1:13:30
Bike
got your voicemail. i have plans tonight but i can look at it tomorrow. it would be good to know if it's deterministic now, and to get a reduced case, since it feels like a miscompilation
1:33:36
Bike
maybe if you compile the file directly you can get a real backtrace. having an error in the compiler makes it more tractable, anyway
1:51:39
drmeister
Yeah - I'm not sure what is going on there. I'm trying a different tack - I'm adding a feature that shuts off the parallel compiler.
2:58:03
drmeister
It's being passed to delete-computation but it is (cleavir-bir:unused-p *e*) is NIL
3:14:18
drmeister
I can interrogate the stack - it's a bit clumsy. Do you have anything you would like to see?
3:17:35
drmeister
19: (CLASP-CLEAVIR::COMPILE-FILE-CST #<CONS-CST raw: (DEFUN LPARALLEL.COGNATE::SUBDIVIDE-LIST (LIST LPARALLEL.COGNATE::SIZE LPARALLEL.COGNATE::PARTS-HINT) (LPARALLEL.COGNATE::WITH-PARTS LPARALLEL.COGNATE::SIZE LPARALLEL.COGNATE::PARTS-HINT (LOOP LPARALLEL.COGNATE::WITH LPARALLEL.COGNATE::P = LIST LPARALLEL.COGNATE::WHILE (LPARALLEL.COGNATE::NEXT-PART) LPARALLEL.COGNATE::COLLECT LPARALLEL.COGNATE::P DO (SETF
3:17:35
drmeister
LPARALLEL.COGNATE::P (NTHCDR (LPARALLEL.COGNATE::PART-SIZE) LPARALLEL.COGNATE::P))))) @0x11ed027d1> NIL)
3:23:43
drmeister
In the meantime I'm setting up something else. I'm setting things up so that instead of starting cando we can run slime and then start cando from within it.
3:31:12
drmeister
~/Development/cando-master/build/boehm/icando-boehm -f dont-start-cando-user -f force-compile-file-serial
3:31:40
drmeister
Slime starts up like normal and then you can tell it to build the cando quicklisp code using (start-cando-user)
3:35:10
karlosz
Bike: it sounds like this might be happening because local call analysis got changed up a bit
3:37:42
karlosz
Bike: i think you fat fingered your local call change a bit, i can fix it really quick
3:38:33
karlosz
just making sure this part was not intentional, right? https://paste.gnome.org/p0sufwhay
3:40:47
karlosz
ah okay. i mean im fairly certain it as just a typo with his change and i pushed the fix
3:41:18
karlosz
drmeister: if you just try this the patch with commit 7166084dc669413f9031a773cfa46436d20aba8a it should fix it
3:41:49
karlosz
https://github.com/s-expressionists/Cleavir/commit/7166084dc669413f9031a773cfa46436d20aba8a
3:45:14
drmeister
How do you control the indentation for doset? I get the next line going way over to the right.
3:46:51
drmeister
I edited the function and C-c C-c compiled it and then ran (start-cando-user) again.
3:48:57
drmeister
Ok. For gnarly code generation problems that will be helpful. I was all excited about using it with the REDUCE problem - but things went a little sideways.
3:52:05
drmeister
You guys could switch to using cando for development. There's twice as many C++ files to compile - but with this slime override - it starts up just like clasp.
3:52:17
drmeister
Then you can tell it to compile all of the quicklisp code for cando with one call.
4:51:37
karlosz
::notify Bike there's a problem with the way arguments are checked in interpolate-function. this will for example interpolate if you have 2 invalid calls but 1 valid call: https://github.com/s-expressionists/Cleavir/blob/7166084dc669413f9031a773cfa46436d20aba8a/BIR-transformations/interpolate-function.lisp#L308
4:52:21
karlosz
so (labels ((f () (print 2))) (f 3) (f 4) (f)) is going to try to interpolate which is a no no
7:44:49
drmeister
I build a cando from just before I changed how single dispatch generic functions work.
7:45:18
drmeister
It builds ironclad with time: Time real(164.116 secs) run(164.151 secs) consed(9884750800 bytes) unwinds(1625)
7:45:41
drmeister
An up to date cando gives: Time real(148.557 secs) run(148.553 secs) consed(9549080608 bytes) unwinds(1625)