freenode/#clasp - IRC Chatlog
Search
13:06:16
Colleen
Bike: karlosz said 7 hours, 50 minutes ago: i see the problem in your example. yes, if you always insert cells at the top of the procedure, you are going to run into the issue. if you insert the cell inside the loop using the closure fix i wrote with dominators it works correctly
13:59:47
beach
Bike: Suppose we had a graph where the nodes are 1) functions (as represented either by an ENTER-INSTRUCTION, by the name of a global function, or UNKNOWN) and 2) call sites (as represented by CALL-INSTRUCTIONS.
13:59:48
beach
The arcs would be 1) PARENT (between two functions represented by ENTER-INSTRUCTION), 2) MAY CALL (from call sites to functions), 3) MAY BE CALLED BY from functions to call sites, 4) MAY BE THE NTH ARGUMENT OF (from functions to call sites), and 5) may be returned as the nth value of (from functions to call sites)
14:02:48
beach
Also general escape (argument of an unknown function or of a function known to hold on to its argument, or return value of a top-level function).
14:15:59
drmeister
I want to add a quicklisp: hostname for logical pathnames because cando depends on quicklisp.
14:16:28
drmeister
First shot - I'll have a CLASP_QUICKLISP environment variable, then /opt/clasp/lib/quicklisp then ~/quicklisp ?
14:16:56
drmeister
Clasp will set the quicklisp hostname by checking those things in that order - how does that sound?
14:18:13
drmeister
Why /opt/clasp/lib/quicklisp - because we are trying to collect all of jupyterlab and quicklisp that cando needs to run into one directory tree.
14:18:29
drmeister
Then we can create a tarball of that tree and drop it into a minimal docker image.
14:19:39
drmeister
Our current docker problems are largely caused by poor version hygiene when building the docker image. We are attempting to clean this up.
14:20:19
drmeister
Shinmera: waf 2.0.7 supports Python3.7 and waf 2.0.6 (which we currently have) does not. I'll upgrade to 2.0.7 today.
14:20:43
karlosz
Shinmera: its because Python3.7 made a breaking change with respect to generators, raising a runtime exception when there was none before
14:23:42
beach
GAH, I have a strange problem. I get things like: caught ERROR: ; (during EVAL of LOAD-TIME-VALUE); The variable #:G402562 is unbound.
14:24:34
beach
It is happening when I try to compile a very simple DEFMACRO that uses a &KEY parameter.
14:44:24
drmeister
Ok - we've been improving argument handling in clasp - just making sure the world has not turned upside down and you are doing anything with clasp.
14:47:06
Bike
i'm just wondering what's dealing with the lambda list. with macrolet it would definitely be cleavir. with defmacro it depends on the definition of defmacro.
14:47:48
beach
It am pretty sure that it is something that I accidentally made the host do as opposed to Cleavir.
14:53:23
Bike
no, i can get going on that in a minute. wanted to finish something else up but it'll take time
15:15:12
drmeister
Because if it's about computers - I'll join in with you for a good 'ole "two minutes hate".
15:16:11
beach
This happened when I tried to trace all the functions in the cst-to-ast package and then translate a very simple expression.
15:16:53
karlosz
well, this is asmusing. inlining out of extent returns causes them to act like scheme's indefinite extent returns introduced by call/cc
15:17:53
karlosz
and it makes sense too, if we ignore what is out of extent or not we get a valid continuation anywhere in the function body, just like scheme
15:19:17
karlosz
so when partial inlining and hitting unwind it will inline the function by unwinding
15:21:06
karlosz
right, we want to throw an error on UB behavior - but it is still amsuing that it does what scheme would do with call/ccc
15:22:33
karlosz
yes, the inline method for unwind instruction doesnt check whether the place its unwinding to is really valid
15:23:16
karlosz
and if it isn't, we can still inline the function, but we should replace the unwind instruction with an illegal unwind instruction that will throw an error when its inlined
15:25:56
beach
In SICL, I definitely want the ordinary machinery to be invoked if there is a non-local exit to an exit point that has been abandoned.
15:27:00
karlosz
so then one possible way to achieve that is to not bother inlining any function with unwind instruction in it
15:27:32
karlosz
https://paste.gnome.org/pdqwigrb2 it would mean something like this doesn't get constant folded to 24 though
15:28:34
beach
Are you sure there are only two possibilities: Never inline in that case, or do the wrong thing sometimes?
15:30:21
beach
Anyway, if you want the second option, you should make a method specialized to your system, because I do not want it for SICL.
15:31:26
karlosz
OK. i am curious how you will fix the inliner to always do the right thing though, because i would like that too
15:33:10
karlosz
sure, i was bringing it up because thats what the current code that is in the repository does
15:36:02
beach
I don't get it though. If you can detect the situation and replace the unwind with an illegal unwind instruction, how come it is not possible to avoid inlining when that situation is detected?
15:37:26
karlosz
you would have to look inside every function to see if it odes anything weird before you start the inlining process to fix it
18:20:15
frgo
Guys, where can I find a PDF detailling Cleavir? I need to read up on some of its features ...
19:43:20
Bike
ok. got a bug or something in sicl. if you run segregate-lexicals, sometimes it will want to turn a function parameter into a cell. when it does it knocks the enter-instruction's lambda-list and outputs out of sync. and i'm not sure it results in something sane, either, let me check
19:47:53
Bike
ok, the generated code is sane actually. so it's just the lambda-list/outputs mismatch.
19:51:27
karlosz
okay, thanks. how long does it take to build clasp on the hardware you have? i have a new laptop, yet i still takes about 4 hours to build clasp
20:09:40
karlosz
maybe it would help catch bugs if we had an ir consistency checker that just makes sure everything is what they should be
20:10:01
karlosz
like checking successors, inputs, using-instructions, etc... are all what they should be
20:11:34
karlosz
i can imagine a verifier for closure conversion that tests whether any location is used by a function that doesnt own it, for example
20:18:17
karlosz
yeah, it probably makes sense to program different consistency checks individually. usually they can be associated with some pass, like checking successors and predecessors agree like for cleavir-ir:set-predecessors
20:18:40
karlosz
could also be used to empirically determine whether we need things like reinitialize-data and set-predecessors after certain passes
20:52:48
drmeister
karlosz: I'll be able to give you more of a hand there once I get done what I'm working on now.