freenode/#clasp - IRC Chatlog
Search
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