Macaw.Data.Derived.Sandbox.Cache (macaw_data v0.5.3)

Copy Markdown View Source

Compiled functions by source (spec/02 §6.3, visualize D-194): a value, held by whatever owns the functions (the engine, a builder), not a process or a table, as the schema cache is (spec/01 §1.12).

An entry is keyed by the SHA-256 of the source, the arities and the fields it was checked against, and the digest of the registry its Macaw.Data.Ops calls were checked and compiled against (spec/04 §6.1), and holds the compilation's answer, a refusal included, so a source is checked and compiled once. A compilation the runner cut short (:reductions, :hung, :memory) is not kept, since it says nothing about the source. The cache never evicts.

Summary

Functions

compile(cache, source, opts): {:ok, compiled, cache} or {:error, faults, cache}, as Macaw.Data.Derived.Sandbox.compile/2 answers, compiled at most once per source, arities and fields.

The empty cache.

Types

t()

@type t() :: %Macaw.Data.Derived.Sandbox.Cache{entries: map()}

Functions

compile(cache, source, opts \\ [])

@spec compile(t(), String.t(), keyword()) ::
  {:ok, Macaw.Data.Derived.Sandbox.Compiled.t(), t()}
  | {:error, [Macaw.Data.Derived.Sandbox.fault(), ...], t()}

compile(cache, source, opts): {:ok, compiled, cache} or {:error, faults, cache}, as Macaw.Data.Derived.Sandbox.compile/2 answers, compiled at most once per source, arities and fields.

new()

@spec new() :: t()

The empty cache.