Message-ID: <20230923223031.55e249ba@parabola>
Date: 2023-09-23T19:30:31Z
From: Ivan Krylov
Subject: [R-pkg-devel] User defined RNG and code registration.
In-Reply-To: <CAFQwRQyN1rGYCUR5wf96dfaomtCdQ8SOjBLkxZ6GCKkUrLo8NA@mail.gmail.com>
? Sat, 23 Sep 2023 08:42:25 +0000
Ralf Stubner <ralf.stubner at gmail.com> ?????:
> ?Random.user describes a way to hook a user- defined
> RNG into R. However, it looks like these two things are not
> compatible, i.e. `user_unif_rand` et al. are not found, if dynamic
> symbols are not allowed.
You're right! Looking at the code, if R_useDynamicSymbols(dll, FALSE)
has been called for a DLL, the branch that calls dlsym() or
GetProcAddress() to find symbols from that library by their shared
object symbol names gets completely disabled; only the registered
function names known to R matter at this point.
> Or can one register these routines somehow even though they are not
> following one of the standard calling conventions?
It sounds unsatisfying, but if you register your user_unif_rand
function with the right name and any of the ABIs supported by R, it
sounds like it should work as long as you never call it using the
.Call/.C/.Fortran ABI it's registered for.
--
Best regards,
Ivan