freenode/#clasp - IRC Chatlog
Search
12:48:22
Bike
beach: about storing docstrings in cleavir - in clasp we have enter instructions that store function names, and then the translate-to-llvm step specially load time value hoists it. i'm not sure how else to deal with it, since it's more a property of the enter than of the enclose even if enclose is what does the allocation- and if it's not a normal input to something it won't be hoisted normally.
12:51:49
attila_lendvai
drmeister: I stopped working on the build refactor for now. I'd fancy some quick feedback on it if you see anything objectionable: https://github.com/drmeister/clasp/pull/419
13:33:49
drmeister
frgo: Everyone here is excited about pybind11 - a lighter weight binding library between C++ and Python. https://github.com/pybind/pybind11
13:34:21
drmeister
It looks like boost.python where they stripped away a lot of boost dependencies and took advantage of C++11's variadic templates.
14:20:52
Bike
can't really reconstruct a lambda list suitable for debug from the enter-instruction's
14:30:48
Bike
drmeister: why does init.lsp make a bunch of compiler variables special? stuff like *clang-bin* that isn't used until bclasp
14:58:11
beach
Bike: Sorry, was busy making lunch for my favorite coauthor and then working in the afternoon.
14:59:04
beach
I haven't really thought much about docstrings. Is there anything you want me to give some thought? Or perhaps you have some direct question?
15:00:36
Bike
Well basically I want cleavir to be able to compile functions with docstrings. It can't right now, it discards them.
15:04:32
Bike
I think it makes sense to store it in the enter instruction. Then when an enclose is being translated it can grab that docstring and do whatever it does.
15:12:30
beach
True that. And this problem is implementation specific. We need an implementation-specific way of compiling ASTs in LOAD-TIME-VALUEs.
15:16:58
jackdaniel
ecraven: that's part of c++ awesomeness (and why interoperability with it is so hard)
15:18:23
ecraven
stassats: well, there obviously is a sort of unofficial ABI, clang and GCC can interact, as far as I know
15:19:30
jackdaniel
but calling full-blown C++ function without C wrappers compiled with C++ compiler – futile task
15:21:37
Bike
as far as i understand, C++ manglers have to include the entire template language, which is pretty involved
15:21:44
ecraven
so this means that theoretically a C++ library compiled with one compiler cannot be linked with a program compiled with a different compiler?
15:22:35
ecraven
yea, just thinking, if CL were as wide-spread as C++, I might ask this question the other way around
15:56:30
Bike
gonna try rewriting how allocate instance works. right now it does a bunch of initialization stuff it shouldn't
18:34:17
attila_lendvai2
drmeister: hi! it's nothing urgent, but when you are in an appropriate phase you could look at the build refactor PR and see if you see anything objectionable. especially regarding the building of extensions/ that I couldn't test. the commit messages should be enough, unless you catch something fishy
18:35:30
attila_lendvai2
ACTION has flashed libreboot bios on his thinkpad x200 and is watching a movie now
18:35:31
drmeister
attila_lendvai2: Great! Thanks! I'll be able to look at it tomorrow. I'm traveling and heading straight to a dinner when I land tonight.
18:36:55
drmeister
shiho: The latest cando/clasp build fine. I think it would be a fine idea to pull it and start it building when you head home tonight.
18:39:37
drmeister
I think what allocate_class does could be rolled into the other allocator method.
18:42:38
Bike
what i don't get is that it takes two classes as arguments (one of them is "this"), and uses one for the creator but the other for the rest
18:44:47
drmeister
Which method takes two classes? allocate_class has the implicit "this" yes and it takes a metaClass.
18:45:50
drmeister
It uses the metaClass to set the _Class of the instance and the stamp of the new class (Instance_O instance).
18:48:49
Bike
but allocate_class is called from C++, rather than CL like the rest, so i'm less flexible with it.
18:49:37
drmeister
It might be a good idea to put a sanity check that checks if metaClass == newClass->_Class right after Instance_sp newClass = this->CLASS_get_creator()->creator_allocate();
18:49:55
drmeister
But I'm pretty sure that slots aren't allocated until newClass->initializeSlots(...) is called
18:51:09
Bike
well, assuming InstanceCreator_O::creator_allocate() is the normal one, it doesn't set anything
18:52:25
Bike
the first thing i noticed was that allocate-instance does a subclassp check on everything, and then allocate_raw_instance checks for class-ness again
18:55:18
drmeister
I have to board the plane - but I'll put a break in allocate_class and see what newClass looks like freshly created by the creator_allocate. I also want to find the creator_allocate code - I'm not quite sure where it is.
18:55:54
drmeister
Then I can figure out if it's redundant. If _Class is set by the creator then we can get the stamp and if so - then we don't need to pass the metaClass - right?
19:00:21
Bike
basically what i've been doing is: 1) separating funcallable instance from instance (having different allocators instead of checking in them, and such) 2) eliminating all the stuff clasp does when allocating classes that should be done in the CL initialization 3) removing instance-sig-set and doing that in the allocator instead
19:00:45
Bike
an object is coherent if it has a class, a rack, and a sig. if it's missing one of those lisp shouldn't be seeing it
20:10:19
DVSSA
I seem to be having issues getting my cando & jupyter to play well together, could someone maybe provide some insight?
20:11:14
DVSSA
Run a script similar to https://www.irccloud.com/pastebin/8Zs3bX9M/ (only AWS credentials replaced with mine)
20:11:22
DVSSA
Edit ~/cl-jupyter/install-cl-jupyter.py to point to my clasp (/out/clasp/bin/cclasp_boehm)
20:12:40
DVSSA
I have tried creating a symbolic link in ~/quicklisp/local-projects to ~/Development/clasp/extensions/cando/src/lisp/
20:14:25
DVSSA
(where I found build-cando.asd and setup-cando.asd) but when I try start a clasp image and run (ql:quickload "build-cando") I get nothing
20:29:38
DVSSA
So I can now load (within slime & jupyter) (ql:quickload "build-cando") and it seems to work.
20:34:29
DVSSA
I can also load "build-clasp-jupyter", from what I can see the differences between the two is when i run (list-all-packages) the dif between the two is #<CANDO-USER> #<CLEXT.QUEUE> #<NGLV> #<PYTHREAD>
20:35:07
DVSSA
But when I try run an example I got from drmeister's docker images I get the following
20:39:14
Colleen
attila_lendvai: drmeister said 7 hours, 10 minutes ago: Thank you - I'll be able to take a look at it tomorrow.
20:42:10
DVSSA
attila_lendvai: I tried that but I'm not sure that is what it's supposed to be, the code is a copy-paste from drmeisters docker and he uses it like that
20:42:43
attila_lendvai
DVSSA: probably in his context it didn't make a difference, but it does in your package
20:43:30
attila_lendvai
DVSSA: you seem to be new to lisp, right? read up on packages, http://www.gigamonkeys.com/book/programming-in-the-large-packages-and-symbols.html
20:44:20
attila_lendvai
what happens is that symbols are read in the current package. a package is a collection of symbols, possibly imported from other packages. basically a namespace...
20:44:56
attila_lendvai
unprefixed symbols are read in the current package -- that is. if you prefix it, then the current package is irrelevant
21:00:14
Bike
probably drmeister's code is in some other package. maybe there's in-package in the files somewhere, dunno.
22:00:20
Bike
drmeister: a hinta bout what "The dispatch function has two selectors with different outcomes" would be helpful, because i'm pretty clueless
22:13:52
drmeister
two selectors with different outcomes is bad - I think it means the generic function dispatch is building the dispatch tree and it got to a point where it was going to add an outcome and there was one already there.
22:15:37
drmeister
But I think it means that the call history has two entries with the same key but different outcomes (really bad) - or the same outcome (and then the two entries are only redundant - but still bad). The keys in the call history should always be unique.
22:21:08
drmeister
While I was on the plane I started working on getting Maxima to work in Clasp - wow - it goes to town on symbol properties.
23:09:30
Bike
the underlying issue is probably that i messed up whatever magical process gives boot classes stamps
23:09:30
Colleen
Bike: drmeister said 51 minutes, 38 seconds ago: - I just put some stuff in the log for you.
23:19:24
Bike
the last problem i fixed as that nothing in lisp actually initialized the specializer call history slot
23:25:57
drmeister
I’m at some life sciences dinner - there’s 1300 people here and they are making speeches and giving out awards.