I’m in the process of updating the rpm Provides/Requires generator for OCaml files to handle also
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?
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
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.