Phase_cache.With_cachemodule Version : sig ... endVersion represents a naive, generic stamp of a cache entry and is recomputed each time the cache is refreshed. It is robust to Fingerprint.make errors.
apply ~cache_disabling ~force_invalidation phase_input runs the phase computation Phase.f phase_input, if there's some cache_disabling. Otherwise, the phase computation is run with a cache mechanism. Whether the cache is invalidated depends on the outcome of a Phase.Fingerprint comparison between the current fingerprint and the last one. Additionally, the invalidation of the cache can be forced by setting the force_invalidation parameter to true.