freenode/#clasp - IRC Chatlog
Search
17:09:32
drmeister
https://s3.us-east-2.amazonaws.com/clasp-cando/deploy/Darwin-base-opt-clasp.tar.gz
19:01:48
Shinmera
Clasp is going to be a bit more complicated to implement since MPS needs to be supported
19:15:41
drmeister
stassats: We are a clasp shop here - if you can't do it in clasp - it's not worth doing :-)
19:16:32
drmeister
I'm probably going to have to do the static-vector myself so that it works properly in boehm and mps.
19:18:14
drmeister
Yeah - we can't use the ECL code - because it relies on the Boehm GC not moving things around in memory.
19:19:14
drmeister
Well - not so differently. Clasp's arrays are implemented the way that sbcl implements them.
19:23:53
Shinmera
Pretty much. https://github.com/sionescu/static-vectors/blob/master/src/pkgdcl.lisp#L12-L26
19:26:53
Shinmera
The answer is as I said -- anything for which upgraded-array-element-type does not return T.
19:30:03
drmeister
It makes a huge difference in how the implementation manages it - that's why I'm asking.
19:30:06
Bike
So you have to make a static vector with type single-float and hope that's the cffi :float type? i mean, it probably is
19:30:15
Shinmera
The point is just that if the element-type is T, then you can't really portably know what's in there, so there's no point trying to share it with C
19:31:52
frgo
Looking at impl-allegro.lisp we should be able to more or less translate literally to corresponding calls as in fli.lisp
19:32:07
drmeister
Sometimes these lisp definitions are hard for me to parse into terms I understand as an implementor. It's about getting from "anything for which upgraded-array-element-type does not return T" to "you can use malloc to allocate the memory".
19:32:59
Shinmera
drmeister: I don't see how malloc comes into it? You create a lisp array like normal, provide a way to get a pointer to its data part, and then pin it in the GC.
19:34:16
drmeister
"then pin it in the GC" is easy with Boehm - a lot of work with MPS. So I can't put Common Lisp pointers into the vector then I'd rather use an allocator that doesn't move memory.
19:35:10
Shinmera
Should be easy with MPS too since you can just forbid arrays with pointers (since they'd be element-type T anyway)
19:36:51
kpoeck
Woudnât it be simpler to say its an array with a chunk of bytes that are not moved from the lisp gc
19:37:14
Shinmera
Has nothing to do with it being a simple-vector, but the library does not promise GC of static-arrays.
19:37:19
Bike
kpoeck: well the elements are still supposed to be accessible from lisp, if i understand correctly
19:39:28
Shinmera
static-vectors allows me to, for instance, fill an array with vertex data from lisp, then just pass that on to OpenGL to upload to the GPU without having to first copy it to C memory.
19:45:18
Shinmera
while we're on the talk of compatibility libraries, aside from dissect I have another for additional float features. Does clasp offer constants for the various float infinities, testing for float-nan, and masking the float traps/signals?
19:47:32
kpoeck
Drmeister: the franz doc for static arrays in gc.htm seems to be written more from a implementers perspective, perhaps worth a read
19:56:15
Shinmera
Here's an issue to track it more easily. https://github.com/clasp-developers/clasp/issues/583