I’ve been looking into writing ppx_deriving plugins and one thing that keeps popping up are these runtime files.
ppx_deriving
For example, ppx_deriving itself has src/ppx_deriving_runtime.ml[i] and ppx_deriving_yojson has src/ppx_deriving_yojson_runtime.ml[i].
src/ppx_deriving_runtime.ml[i]
ppx_deriving_yojson
src/ppx_deriving_yojson_runtime.ml[i]
What do these files do?
Replying to my own question, but the runtime wraps around builtin types and modules. This way ppx_deriving is guaranteed to work over builtin types and modules instead of user defined types and values that shadow the builtins.