freenode/#clasp - IRC Chatlog
Search
17:54:57
slyrus
It's that time of year again. The time where I try to dust off my build environment and get clasp working.
17:55:34
slyrus
when I run waf I get: "Exception: You must have clang/llvm version 9 installed - you have 1"
17:56:23
Bike
if you build it, it's just clasp. it has bir stuff loaded but doesn't use it. it just uses hir
17:56:38
karlosz
5: (_ERROR^COMMON-LISP^FN^^ COMMON-LISP::UNDEFINED-FUNCTION :NAME CORE::COMMON-LISP-BACKTRACE-FRAMES )
17:57:31
Bike
you might want to wipe your swank fasls. github master clasp.lisp doesn't refer to tht function any more
18:31:55
Bike
for compile-file, bind cmp:*cleavir-compile-file-hook* to clasp-cleavir-translate-bir::bit-loop-read-and-compile-file-forms
18:41:59
karlosz
i have to admit, even in hir i never really understood the point of having both |x| and X in the ir
18:42:44
Bike
whena lambda list is processed another variable is made. one holds the actual argument and one is after defaulting
18:45:01
Bike
lexical-bind is the abstract class i made. leti, catch, and function are all lexical-binds
18:46:15
Bike
right now i'm trying to avoid generating catch at ast-to-bir time like you also suggested, and then maybe i can look at the function/leti thing
18:46:26
Bike
unfortunately there are still some pretty basic errors in ast-to-bir, which is why build isn't happening
18:53:57
karlosz
btw, indefinite extent variables don't need cells most of the time, but i guess we should keep it simple for now
18:54:58
Bike
right now there's no actual cell introduction pass, clasp just works with the more abstract environment information
19:01:36
karlosz
i was thinking of LETI as sort of also initializing the variable, so that variables without a setq would actually have no writevar associated
19:19:04
slyrus
FWIW, I get the following error when building McCLIM on clasp but not sbcl: https://gist.github.com/slyrus/53113ed2da59f47980846c1497be1e14
19:28:11
kpoeck
slyrus :for installation, have a look at https://github.com/clasp-developers/clasp/wiki/Road-to-clasp-with-lvm@9
19:35:50
kpoeck
Building mcclim now. But had mcclim running last weekend, perhaps with a bit older version of mcclim
19:38:30
kpoeck
regarding congruent lambda lists, we have this issue: https://github.com/clasp-developers/clasp/issues/733
19:55:01
drmeister
We have been having fantastic results on the chemistry side of things and on the Cando application side of things.
19:55:03
kpoeck
Errors in this instruction: (define-presentation-method accept ((type null) stream (view textual-view) &key ) ....)
19:57:00
drmeister
I'm tied up working with chemists and developing application software in Cando - but if you need me for anything just ask.
20:09:15
kpoeck
I am working around that by adding &key #+clasp &ALLOW-OTHER-KEYS in every accept methods that reads ... &key )
20:18:23
karlosz
with bir compile (disassemble '(lambda (x) x) :type :ir) throws "Could not recover jitted module..."
20:22:25
Bike
put a (cmp::potentially-save-module) in TRANSLATE after memoized-layout-procedure has run
20:33:14
kpoeck
Bike: do you believe that https://github.com/clasp-developers/clasp/issues/733 is an error that needs to be fixed? This issue is happening now a lot in mcclim (found like 20 places already)
20:35:10
Bike
i don't think the standard is very clear, so i wouldn't mind changing clasp to undo the bug.
20:40:18
Bike
i'm definitely happy with the faster turnaround disassemblywise, but there are some obvious improvements to be made
20:40:47
Bike
not just the verifier and ast-to-bir, but like more making names consistent. functions have names now but the disassembler ignores them. iblocks should probably have names as well
20:46:28
karlosz
and designing the disasm tool in such a way that it can also just output into a graphviz to stuff the text into a basic block cfg
21:04:28
karlosz
Bike: do you particularly care about having a sexp trace or do you think it would be cleaner to just print the IR to a stream
21:05:17
Bike
i do kind of like the sexp trace. i was kind of imagining something like ccl's disassemblies
21:06:34
Bike
i certainly wouldn't mind having a print to stream thing, since that's probably the most common action anyway
22:13:56
karlosz
Bike: i hacked up a prettier printer for the disasm. just a fun called print-disasm while keeping things sexp based
22:24:37
karlosz
a cool way to make traversing forward flow order on the blocks super efficient would be to cache a forward flow ordering in a list, and having that cache invalidated by triggers on graph modifications which change the iblock structure
22:25:24
karlosz
that would make things really efficient while at the same time giving a consistent view on forward flow, which is pretty important for forward dataflow analysis
22:28:40
Bike
the translator has to use map-reachable-iblocks instead of map-iblocks because map-iblocks is in some random order that doesn't work with llvm's ssaness
22:29:02
Bike
and map-reachable-iblocks does the whole seen table thing, so it's dumb, and caching the order would be much nicer
22:30:11
karlosz
we might want both if we're really tight on efficiency, but i don't think that's necessary
22:30:20
karlosz
its probably just better to use clos to cache just the forward flow ordering blocks
22:33:01
karlosz
anyway, at the very least there should be an interface to get the forward flow order blocks
22:35:04
karlosz
especially when you are doing a worklist algorithm, you'd have to do map-reachable-iblocks and build up the list anyway
22:35:39
Bike
yeah, we can define it in terms of map-reachable-iblocks for now and then make it a slot later
22:55:03
karlosz
yeah so the idea of forward flow order is that parents are always looked at before children
22:55:46
karlosz
it makes forward flow analysis converge much faster because you make sure to always propagate as much as possible from the parent to the child
22:56:21
karlosz
so like, with the flow graph A -> B, A -> C, B -> D C -> D you want to go A, B, C, D
22:57:57
karlosz
i tried changing map-reachable-blocks to forward flow and i got a problem in verify though
22:59:37
Bike
still, i don't understand how the traversal would matter. are you hitting iblocks more than once? that would probably screw it up.
23:01:38
karlosz
i guess it makes sense to start of with some kind of set api so not everything is just a list
23:03:07
Bike
basically yes i didn't want the api to guarantee things are lists when they don't need to be ordered.
23:39:41
karlosz
i wanted to see what non local exits looked like but (lambda (x) (block hey (lambda () (return-from hey)))) gives an error
23:44:17
Bike
some stuff with blocks and conditions was pretty broken. i'm HOPING i through debugging that kind of basic codegen now but who knows