freenode/#clasp - IRC Chatlog
Search
13:24:02
Bike
you said you wanted something you could like print on a poster, right? how many pixels is that?
13:26:07
drmeister
This is just at the beginning I'm sure. It's probably that graphviz uses a 16 byte word to represent edge lengths.
13:33:24
Bike
okay, so my new catch thing works. now for suspend and resume, how do condition variables work? can we just unschedule a thread until resume is called on it?
13:35:25
drmeister
I have to read the literature on condition variables every time I use them to refamiliarize myself with them.
13:36:22
drmeister
You got - like you got this lock and this other thing and then one thread hands the lock to another thread and then waits for the other thing to change it's value.
13:36:59
Bike
"Even if the shared variable is atomic, it must be modified under the mutex in order to correctly publish the modification to the waiting thread." weird things, cool
13:37:23
drmeister
I ccould scale down the svg's but they are tied to the font size (12pt). I'd have to scale that down to 1.2 pt or something. bleh.
13:38:29
drmeister
Graphviz is written in C - and they use a unsigned short to represent node lengths - great.
13:40:16
Bike
hm, condition variables sometimes just spontaneously fuck up and trigger early. this is part of the standard. super
13:44:52
Bike
fifty years later, someone tries to use your tool to make a billboard... but tragedy strikes...!
13:50:14
drmeister
My intuition here is spot on - I really need to generate this graph - it will give me a lot of insight on how to implement what I'm working on.
13:50:53
drmeister
Those are the nodes for one small part of the graph. The real graph would have maybe a hundred of these connected by edges.
13:51:33
drmeister
Notice how they all look very similar? They are all aligned with each other and the different parts are dangling down. I'm very proud of that.
13:53:02
drmeister
Every one of those was generated using a simulation to maximize beauty (kind of like Tex but for molecules). The bigger ones use a smaller one as a template so that they all share an orientation.
14:07:54
kpoeck
I use it, since with cst all libraries with readtable modifications fail (see issue https://github.com/robert-strandh/Eclector/issues/52 and https://github.com/robert-strandh/Eclector/issues/53)
14:08:39
kpoeck
but I understand that maintaining Generate-AST is double work, so lets try to resolve the readtable problem for CST
14:09:57
kpoeck
Its not so much an error in Eclector, more that I need design guidance on how to integrate it correctly
14:11:05
kpoeck
If there is a scetch on how to integrate Eclector properly I believe I could make the changes to clasp
14:14:18
kpoeck
bike locally I have integrated newest eclector into clasp, Is this a change we could do? I had to update cleavir-file-list.lisp and cleavir_file_list.py
14:15:48
kpoeck
I just did locally on my machine, didn't want to disturb anything for clasp or cando
14:16:01
beach
scymtym: I am not referring to anything since I have no idea what the problems might be.
14:16:52
kpoeck
I upgraded in wscript and had to update cleavir-file-list.lisp and cleavir_file_list.py by running regenerate-cleavir-file-list.lisp
14:17:38
kpoeck
Was waiting for scymtym to describe the full eclector integration in https://github.com/robert-strandh/Eclector/issues/53
14:19:36
kpoeck
Yesterday for the first time I was able to compile stock ironclad with Clasp (took some hours and needed 10 GB)
14:25:09
beach
kpoeck: There is a simple thing you can do for now. You can use the normal reader and then call cst-from-expression to use CST-to-AST.
14:34:55
drmeister
And that doesn't appear to have a solution according to random anonymous people on the interwebs
14:42:41
kpoeck
I believe clasp in cst mode does call cst-from-expression (see https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cleavir/translate.lisp#L771)
14:44:53
kpoeck
The issue is that modification to the reader are done in clasp readers but are not reflected in eclector
14:47:05
kpoeck
so for example in cl-iterate the following is called (set-dispatch-macro-character #\# #\L #'sharpL-reader)
14:52:04
Bike
we could bind that variable to our readtable in compile-file, and define methods on the readtable protocol in eclector so it can work with clasp's readtable.
14:53:09
scymtym
by the way, here is an updated version of the diagram i mentioned: https://techfak.de/~jmoringe/reader-implementation.pdf (warped arrows courtesy of inkscape), chapter 4 in https://techfak.de/~jmoringe/eclector.pdf has the corresponding (initial) text, tables and an example
14:55:14
kpoeck
so better teach clasp to use eclectors readtable or map eclectors readtable to clasps readtable?
14:56:28
Bike
i think defining the eclector protocol to work with clasp's readtables makes more sense with how bootstrapping works in clasp
15:00:27
scymtym
even then you still have set things up at the symbol level so e.g. CL:READ is fbound
15:01:47
Bike
I mean I don't think using a different READ function for manual calls versus in compile-file is too bad if we have to have both anyway, and they use the same readtable
15:04:13
scymtym
yes, using only one readtable should help. either by implementing elector's protocol for clasp's readtables or by using eclector's readtables throughout
15:05:19
Bike
the former means defining some methods. the latter means rewriting a bunch of old C++. so the former seems preferable to me in our case
15:05:51
Bike
looks like we just need the macro character stuff, plus syntax-type aspects that aren't exposed in the standard? seems simple enough
15:06:30
kpoeck
apart from the readtable - where I will follow Bike proposal - I understand that we need to redefine the functions in "wants to implement" to call eclectors functions in "eclector reader"
15:13:51
kpoeck
That would allow us not fix all errors in https://github.com/clasp-developers/clasp/blob/master/src/core/lispReader.cc but to use eclectors reader instead
15:15:03
kpoeck
Having said that I have a lot of fixes to https://github.com/clasp-developers/clasp/blob/master/src/core/lispReader.cc, but perhaps we would need to decide whether - after bootstrapping - we want the reader code in lisp or c++
15:29:05
beach
Is it a correct estimate that Clasp contains around 200kLOC of C or C++ and around 40kLOC of Common Lisp?
15:42:41
kpoeck
Cleavir, Eclector, alexandria, closer-mop ..... probably should be counted separately
16:11:45
beach
You are right that it is hard to estimate when there is so much code that is separate and shared.
16:12:49
beach
So it depends on what you want to measure. All code in order to make things work, code that needs to be maintained, something else?
16:33:38
kpoeck
i'd count all code in order to make things work but distinguish between code maintained by clasp and maintained by others (e.g. all cleavir)
16:53:02
Bike
i tried to install netcdf with homebrew but apparently all my directory permissions are messed up, so that's... mysterious
18:49:21
kpoeck
The results of sloccount include/ src/ for clasp are in https://gist.github.com/kpoeck/cc78401244d561cbd05cd8951b9a4dfd
20:14:19
kpoeck
working around that, it errors whith ; caught ERROR:; #<CLASP-CLEAVIR-AST:NAMED-FUNCTION-AST> is not of type LIST.
20:21:32
Bike
wow, you got the same error i hit doing something completely different. what the hell is going on there.
20:39:09
kpoeck
in my case (core:source-pos-info-inlined-at spi) -> #<SOURCE-POS-INFO :fileId 261 :filepos 33240 :lineno 719 :column 43>
20:39:38
kpoeck
so (COMPILER::CACHED-FUNCTION-SCOPE (core:source-pos-info-function-scope spi)) gets executed
20:40:22
kpoeck
(core:source-pos-info-function-scope spi) -> #<CLASP-CLEAVIR-AST:NAMED-FUNCTION-AST>
20:44:06
Bike
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cleavir/inline-prep.lisp#L134
21:01:42
selwyn_
i decided to implement cliff click's implementation its quite pretty compared to the other ones i've seen