[R-pkg-devel] User defined RNG and code registration.
? 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