freenode/#clasp - IRC Chatlog
Search
14:45:03
Colleen
kpoeck: drmeister said 29 minutes, 43 seconds ago: Within slime - when I (setf eclector.reader::*backquote-in-subforms-allowed-p* t) then I am able to load the regression-tests;run-all.lisp
14:54:34
kpoeck
I am also amazed that the test "describe-alltogether" fails (https://github.com/clasp-developers/clasp/blob/dev/src/lisp/regression-tests/environment.lisp#L186)
14:55:09
kpoeck
Could you just execute the with-output-to-string and see with which object the describe fails?
15:01:45
Bike
"unexpected failures (SBCL-CROSS-COMPILE-4 INCLUDE-LEVEL-2B INCLUDE-LEVEL-3 TEST-CHAR-2A TEST-CHAR-3A TEST-CHAR-4A TEST-CHAR-5A TEST-CHAR-6A TEST-CHAR-7A TEST-CHAR-8A TEST-CHAR-9A TEST-CHAR-10A TEST-CHAR-11A)"
17:07:11
kpoeck
drmeister so your problem with eclector.reader::*backquote-in-subforms-allowed-p* might be been solved already
17:36:40
drmeister
Pretty up to date - I just pulled the latest - only src/lisp/regression-tests/misc.lisp changed.
17:50:39
drmeister
So I think eclector is out of date in clasp and I should bring it up to the latest commit.
17:54:07
drmeister
Requires a bit more - AssertionError: Could not find waf node for lisp file src/lisp/kernel/contrib/Eclector/code/readtable/condition-reporters-english - did you run './waf update_dependencies'?
17:56:29
drmeister
We have tools-for-build/regenerate-cleavir-file-list.lisp - I use that I presume.
17:57:30
drmeister
Ah - but clasp needs to be built to run it and I can't build clasp without it fixed.
18:12:15
kpoeck_
No its a change for eclector. Am sitting in a bus to home, please give me 30 minutes to arrive
18:16:34
drmeister
In asdf... #+clasp (cleavir-env:optimize (cleavir-env:optimize-info CLASP-CLEAVIR:*CLASP-ENV*))
18:33:37
drmeister
I'm going to need a macpro in my house going forward. The speed of this imacpro is great.
18:36:24
kpoeck
In https://github.com/s-expressionists/Eclector/blob/master/code/reader/macro-functions.lisp#L323
18:38:43
drmeister
What is the best course of action. I have upgraded eclector and I have fixed and run regenerate-cleavir-file-list.lisp
18:44:52
Bike
if you mean update a fork to match upstream? i think you're just supposed to do it normally on your system
19:21:58
Bike
if an anonymous function is in an sbcl backtrace, instead of just 'lambda', it writes '(lambda [lambda-list])'
21:20:43
kpoeck
unsurprisingly I just build with the newest wscript using newest eclector from clasp-developers (and regression-test give the expected results)
21:36:15
Bike
i've been trying to target ugly bugs rather than embark on anything big, for the sake of releasing... i think this one is important but it seems more like what drmeister has been working on https://github.com/clasp-developers/clasp/issues/943
21:59:17
kpoeck
Yes, I believe this one is important. I tried to understand what is being done here but didn't suceed
22:03:05
Bike
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/codegen-special-form.lsp#L1372-L1432
22:04:18
Bike
it uses internals from literals, which is probably where that unbound variable is coming from
22:05:38
Bike
we might want to put the lisp functions in some kind of more global table rather than hack up the literals table like this
22:08:48
Bike
kpoeck: if you have a file with just the %defcallback, do you still get the dlsym problem, or is that caused by the use of %callback? I suspect the latter.
22:09:30
Bike
kpoeck: actually - i think the %callback form is wrong - the name shouldn't be quoted. is that what cffi expands to?
22:12:08
Bike
i think defcallback not working when loaded from source has been the case since i rewrote it, so while unfortunate that's less of a concern than the dlsym problem
22:15:43
kpoeck
Did I now say something wrong, what does not work are the cffi-tests, so right now it does not work, even compile-filed
22:16:12
Bike
right, if it doesn't work when compile filed that's definitely a problem, but maybe it's as simple to fix as replacing %callback with %get-callback
22:50:55
drmeister
The issue may be that the defcallback symbol is not external linkage. Can you get the llvm-ir for the generated code?
22:59:51
drmeister
If it were an internal symbol it would be "define internal i8 @clasp_ffi_cb_SUM-UNSIGNED-CHAR"
23:00:25
drmeister
The presence of "internal" means it's internal linkage. No "internal" means "external" linkage.
23:14:29
Bike
yeah. well, thes econd value would be the error string, but we can see that in inferior lisp anyway
23:14:39
Bike
i'll rewrite it to signal an actual error. this will not fix the actual problem, of course
23:16:40
Bike
oh, we have clasp-ffi:%dlsym but also core:dlsym. having one function for everything is too hard
23:17:33
Bike
core:dlsym even returns the same values, but it takes an additional argument as rtld_default or what eer
0:16:16
Bike
it's the first block in https://github.com/clasp-developers/clasp/issues/943, except i took out the quote in the TEST function.
0:17:40
drmeister
Bike: You rewrote defcallback - right? I had a horrid macroexpansion hack to make it work.
0:18:11
Bike
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/codegen-special-form.lsp#L1372-L1432 here again
0:32:01
drmeister
Ok, I'm just doing some graph theory code. I have to finish it up or I'll lose my place.
0:34:28
drmeister
The (similarity-graph molecules similarity-matrix) generates a single graph - but there are disconnected subgraphs within it.
0:34:54
drmeister
(connected-components graph) returns list of list of vertices. Each list of vertices is vertices from one subgraph.
0:36:46
drmeister
The edges are molecuels that are similar to each other and the weight is the similarity score.
0:37:59
drmeister
The work we are doing requires each graph to contain one single connected component - so I'm isolating the components.
0:38:57
drmeister
Right - I didn't state that - but yes - there will be only one edge between each pair of vertices.
0:39:39
drmeister
I think it is - but the picture is a bit too low res for you to see. Let me check though - you make a good point.
0:41:34
Bike
component-edges = (remove-if-not (lambda (edge) (or (find (vertex1 edge) component) (find (vertex2 edge) component))) remaining-edges)
0:42:32
Bike
this also isn't very efficient either way, but i guess if the graphs are small enough to look at it won't matter too much
0:42:50
drmeister
Yes yes - you are right. Then I want 'append' rather than 'collect' in the loop - right?
0:44:00
drmeister
I want all the component-edges to be all the edges that connect vertices in the component
0:45:15
Bike
at the end i'd do (setf remaining-edges (set-difference remaining-edges component-edges))
0:47:07
Bike
the remove-if-not just looks through the edges and collects only those that have a vertex in the component
0:47:56
Bike
and "for efficiency" i'd skip the remaining-edges stuff and just keep looking through all of the edges - you'll do redundant searching, but it should cons less, which seems more important
0:53:05
Bike
you could also go through the whole list separating out the component... let me write that out
0:54:05
no-defun-allowed
Well, if you put the objects through a filter, are you going to keep the objects that are stuck in the filter or the objects that go through?
0:55:00
no-defun-allowed
List.partition returns a tuple with the objects in the filter and the objects that fell through.
0:56:13
no-defun-allowed
(defun partition (predicate list) (loop for item in list if (funcall predicate item) collect item into positive else collect item into negative finally (return (values positive negative)))) ;; look ma, no parens
0:59:57
no-defun-allowed
Very funny, but you can use it. Short of some α-transforms (renaming) there's few reasonable ways to do that, IMO.
1:03:39
no-defun-allowed
Maybe too much of a stretch, but you could invent a function that's called like (list-funcall-if <test> (lambda (object) <then>) (lambda (object) <else>) <list>)