Feature #16827

C API for writing custom random number generator that can be used as Random objects

Added by mrkn (Kenta Murata) 7 months ago. Updated 6 months ago.

Target version:


I want to write custom random number generators (RNGs) that can be used as an alternative to a Random object.
Now custom RNGs with #rand method can be used for that purpose, but there is the method call overhead in the current implementation because #rand method is called through rb_funcallv_public.
I want C API for writing RNGs because all of the random number generator algorithms I want to write are originally written in C.

Nobu already created a pull-request for such purpose.

Updated by matz (Yukihiro Matsumoto) 6 months ago

Sounds OK. Go ahead.


Updated by Eregon (Benoit Daloze) 6 months ago

IMHO it's not nice to replace a nice Ruby-level API by a C API one.
Is there a benchmark of how much is it slower with rb_funcallv_public?

Also, will it still work when passing a custom object understanding rand?
If so, there are two ways to dispatch, doesn't seem nice either API-wise.

Also available in: Atom PDF