DasBetterR

jmh530 john.michael.hall at gmail.com
Fri Jul 7 21:54:12 UTC 2023


On Friday, 7 July 2023 at 20:33:08 UTC, bachmeier wrote:
> [snip]
>
> I was wrong. They added custom allocators a while back, but 
> didn't tell anyone.
>
> Actually, what I said before is technically correct. The SEXP 
> struct itself still has to be allocated by R and managed by the 
> R garbage collector. It's just that you can use a custom 
> allocator to send a pointer to the data you've allocated, and 
> once R is done with the data, it'll call the function you've 
> provide to free the memory before destroying the SEXP struct 
> that wraps it.
>
> I uploaded [an example 
> here](https://github.com/bachmeil/betterr/blob/main/testing/testalloc.d).
>
> It's still a bit hackish because you need to adjust the pointer 
> for a header R inserts when it allocates arrays. Adjusting by 
> 10*double.sizeof works in this example, but "my test didn't 
> segfault" doesn't exactly inspire confidence. Once I am 
> comfortable with this solution, I'll do a new release of 
> betterr.
>
> This'll be kind of a big deal if it works. For instance, if you 
> want to use a database interface and D doesn't have one, you 
> can use R's interface to that database without having R manage 
> your project's memory. You could use any of the available R 
> interfaces (databases, machine learning libraries, Qt, etc.)

Cool.

The main thing I want to try is rstan. They have an interface 
called cmdstan that you can call from the command line that would 
be possible to use with D. The problem is that you have to write 
the data to a CSV file and then read it. So it would be kind of 
slow and I never got around to playing around with it in D. With 
your tool as it is, I would just have to copy the data in memory, 
which I would expect not to be as bad of an overhead as IO (but 
again haven't gotten around to do anything with it).


More information about the Digitalmars-d-announce mailing list