freenode/#clasp - IRC Chatlog
Search
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)
10:04:27
phoe
I'll be submitting a proposal to the WebAssembly group against their current idea of adding exception handling to WebAssembly
10:04:58
phoe
my current writeup is at https://gist.github.com/phoe/8350650cac1a4ed6ea5c16b84c598557 and #sicl mentioned that this post could make use of the issues that Clasp faces when doing unwinding the C++ way
10:05:55
phoe
I'd like to ask you for support with that - in form of a writeup of some sort, if possible, that would be understandable to people who are not CL programmers but are reasonably expertful with regard to exceptions in general
13:34:14
Colleen
Bike: karlosz said 8 hours, 42 minutes ago: 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
14:58:59
drmeister
A thing where you can run icando-boehm to start slime and THEN build all of the cando quicklisp code.
14:59:25
drmeister
So compilation problems of the quicklisp code can be debugged with all the facilities of slime.
15:01:18
drmeister
Bike: If you are developing with clasp you can clone cando into the clasp/extensions directory and build as normal. There are more C++ files - but you do those once and they are done.
15:02:13
drmeister
<path-to-clasp>/build/boehm/icando-boehm -f dont-start-cando-user -f force-compile-file-serial
15:03:02
drmeister
It will start up just like you are used to and do a little more work setting up directories and load quicklisp automatically.
15:03:42
drmeister
Then you can do all your normal development stuff but when you want to see if cando's quicklisp code all builds you evaluate (start-cando-user)
15:04:29
drmeister
Right - then you have sldb and inspectors and all that for debugging code generation problems.
15:05:48
drmeister
So while you were out "living your life and exercising good work/life balance" - we were here slaving over a hot compiler.
15:49:23
yitzi
drmeister: Not sure if you got my response on the Cando arch stuff on gchat. Did you need some clarification?
15:49:52
Bike
karlosz: https://github.com/s-expressionists/Cleavir/blob/master/BIR-transformations/inline.lisp#L49 why is this "unless" rather than "when"?
16:39:06
Bike
well i ask because if i make it a when, it makes the compilation failure in the tests go away
16:43:27
karlosz
i mean the idea is that we'll clean up encloses if all non-local call references disappear
16:53:17
karlosz
the interpolation thing with the "generalized" local call thing is less broken now, but still broken
16:54:36
karlosz
we could of course solve it by defining local calls as "legal calls to functions in the same module"
16:54:56
karlosz
but to be honest its not even that important because you'll only see problems if you write obviously invalid code
16:59:29
Bike
the main thing was separating determination of what can be interpolated (lambdalist wise) versus what's a local call. if we put something else back in to check legality i don't mind too much
17:20:27
karlosz
er, at least i don't see why keywords will be less weird if we do the legality checking in the client vs straight away in cleavir
18:16:13
Bike
if we contify local mv calls, and why not, it would be more efficient to have a single values/arguments processor, unlike with local calls we have now where each call site feeds into a shared phi (if i'm reading correctly)
18:37:18
Bike
actually i suppose there's no reason we can't contify mv calls and regular calls together, not that it would come up much in practice i imagine
18:41:05
Bike
okay, i mean, for a multiple-value-call, we look at the number of values in the values location, and based on that number assign whether options are taken from the values vector or have suppliedp nil, etc., that kind of thing.
18:42:21
karlosz
well if the phi had the type annotated onto it like (&values t t t t) or something, then that info would still be there
18:42:46
karlosz
but i guess we'd want to duplicate the call site for each phi def like with if-if elim and then contify that way
18:43:21
karlosz
so you're probably right that it would be more efficient if we could avoid the phi feeding
18:44:25
Bike
i was imagining some kind of more involved multiple-to-fixed instruction, which would be complicated
18:45:47
Bike
well, right now i'm thinking in terms of how to make multiple-value-call primitive kind of like sbcl does
18:45:48
karlosz
the only thing i was hoping for was that we could delay these coercion instructions till later, but maybe with mv-bind that doesn't make sense
18:48:00
Bike
it doesn't leave closures around for multiple-value-bind, right? no way. does it leave a (mv) call?
18:50:39
karlosz
https://github.com/sbcl/sbcl/blob/1c10a449acf5f892e55e9bf94f85f291cfbacc74/src/compiler/ir2tran.lisp#L963
18:52:23
Bike
i mean in bir terms, if we leave in the call that means we have variables that are now shared, etc
18:55:08
karlosz
DX analysis knows that if the function doesn't have an enclose (i.e. doesn't escape)
18:57:51
karlosz
in sbcl there's no such thing as interpolation, clambdas (our bir:function) just always stay around and the backend knows how to compile them like lets or whatever