Module Ocaml_plugin.Plugin_cache

This cache avoid recompilation of sources if there are no changes in the files. Since we want the side effects to be executed in case of a re-loading, this isn't a cache of dynloading. The purpose of this cache is to speed up the initialization of programs relying on an ml config set up. The cache is meant to be persistent between different executions of the program. Basically, cmxs files are stored in a specific location. This is not a ram cache. This module handles version upgrades. The info file contains the version of the executable using the cache. If the version doesn't match, the cache is deleted (or just skipped if no write access).

type t

Mutable type containing information about the cached files.

type filename = string
module Sources : sig ... end
module Plugin : sig ... end
module Config : sig ... end
val create : Config.t -> t Async.Deferred.Or_error.t

Loading info and cache initialization, including some clean-up if needed, etc. cleaning old version files if present.

val digest : Ocaml_plugin__.Ml_bundle.t list -> Sources.t Async.Deferred.Or_error.t
val find : t -> Sources.t -> Plugin.t option
val add : t -> Sources.t -> Ocaml_plugin__.Plugin_uuid.t -> filename -> unit Async.Deferred.Or_error.t

Update the info in the file system, perform some clean-up if needed.

val clean : t -> unit Async.Deferred.Or_error.t

Release this plugin cache lock.

module Digest : sig ... end

Exported to be used in some other part of ocaml_plugin.