freenode/#clasp - IRC Chatlog
Search
21:08:51
drmeister
apropos is blowing up - I guessed (wrongly) it had something to do with cyclic package uses - I fixed cyclic package uses - apropos continues to blow up.
21:11:56
Bike
if we have the lambda list X we basically do "x1 = va_arg(va_list); x2 = x1;" and then x1 is never referred to again, unless i'm missing something
21:15:38
drmeister
I'm pretty sure they are how I deal with bclasp needing to put them into lexical variables stored in value-frames (until they are optimized away) or in Cleavir to put them in lexical variables.
21:16:51
Bike
i'lll look at it... it just seems pretty bizarre since they both have to be allocas anyway.
21:17:38
karlosz
a little stupid but contifying can reduce this down to nop infinite loop https://paste.gnome.org/pp7s1rflb
21:27:29
Bike
The curreng arguments code increments an arg-idx-alloca for every argument processed. But then the rest argument compiler ignores that and uses calling-convention.nargs* instead. How does that know how manya rguments are left?
21:33:17
Bike
i think we are probably giving llvm kind of stupid code, and doing lotsof weirdthings beside.like i'm pretty sure we initialize va_lists if we just use register arguments
21:34:34
drmeister
I think we initialize va_lists when we use register arguments to spill them for backtraces.
21:38:39
Bike
ok, wait.maybe calling-convention-args.va-start only sometimes actually generates a va_start
21:42:08
Bike
vaslists are a va_list plus the count,right? where do we use the count? i don't think we need it for argument parsing.
21:45:00
Bike
right, that's where we need some kind of size, but we can deal with it separately in the arguments code, rather than embedding it in the vaslist
21:59:54
drmeister
While you are working on the &key argument handling - are you taking out the PHI node code>?
22:02:00
drmeister
It's funny how I said that about needing tail-call optimization and we both keyed in on using tagbody/go
22:03:27
Bike
I'm still using phi nodes a bit, but I put a lot of comments, and pseudo-C to explain what it's supposed to look like.
23:40:33
drmeister
I haven't seen that - but I suspect something weird in the file system and an infinite recursive loop due to a symlink or something.
0:11:08
karlosz
drmeister: you won't believe this. the culprit is python3.7, which has a breaking change
1:50:48
karlosz
looks like we cant afford to do value numbering on closure vars. dataflow analysis on a higher order graph requires kCFA which is a known exponential/nfeasible problem
1:51:34
karlosz
our best bet is to aggressively inline and get rid of local functions whenever possible for dataflow
1:54:09
karlosz
i don't know if anyone is still interested in at least getting something like 0CFA for cleavir. could be useful for a static analysis, rather than actually compiling http://matt.might.net/articles/implementation-of-kcfa-and-0cfa/
2:28:31
drmeister
The article says that there are cubic implementations - is that still out of the question?
3:13:14
karlosz
oh, well if you include higher order functions then you are lucky if you can make it polynomial time
3:15:44
karlosz
the third to last paragraph of this article is extremely enlightening https://wingolog.org/archives/2011/07/12/static-single-assignment-for-functional-programmers
3:17:27
karlosz
we should closure convert as much as possible so that we *can* leverage traditional optimizations
3:18:18
karlosz
i mean, this isnt scheme either though, so i dont know how common functional style even is
3:19:03
karlosz
but since we are thinking about treating closures right, it probably makes more sense to eliminate as many closures as we can and appply linear dataflow optimizations rather than do some cubic or exponential cfa
3:20:39
karlosz
on another note, drmeister: the arch thing people were running into with the boost symbol disaappeared when i reverted to a May 20th version of clasp
3:22:14
karlosz
i started the build a few hours ago on my laptop and it still hasnt finished though so i dont think its possible for me to bisect this issue
3:31:11
karlosz
and clasp bundles waf right? so is there an easy way to use the systems or wait for clasp to update it?
4:08:28
drmeister
The usual strategy for this kind of implementation is to write it all in C++. The latency requirements are too strict to do otherwise. Once you start down this road, you never stop: your life as an implementor is that of a powerful, bitter C++ wizard.
4:08:45
drmeister
https://wingolog.org/archives/2015/11/03/two-paths-one-peak-a-view-from-below-on-high-performance-language-implementations
4:27:14
karlosz
is there an incanctation for only rebuilding the ceavir part of clasp? i am used to making a small change or print statements in cleavir and starting a quick self compile to check my work
4:45:31
scymtym
beach: i'm getting close to pushing the parse result protocol to the eclector master branch. if you have time, could you have a brief look at the documentation and tell me whether it makes sense to you? the current version is https://techfak.de/~jmoringe/eclector.pdf , section 2.4 is about the new package and protocol