Ocamlobjinfo Interfaces vs. Implementations

I’m in the process of updating the rpm Provides/Requires generator for OCaml files to handle also *.cmx* files.

I wonder why cma/cmi/cmo have just Interfaces, while cmx/cmxa/cmxs have both Interfaces and Implementations according to the ocamlobjinfo some.cmxa output. What does Implementation mean in this context?

Hello, have you seen this: https://www.redhat.com/archives/fedora-packaging/2007-May/msg00105.html

I have not seen this (very old) discussion. Neither do I see how this thread would answer my question.

The bytecode compiler doesn’t do cross-module optimisations, so all it needs to know about other modules is their type (so .cmi files).
The native compiler (both the default one and the flambda-enabled version) actually reads and exports information about implementations, and so the produced .cmx file records which other .cmx files it looked into during compilation. This allows checking at link time that every module is linked with the versions it was compiled against.