pub struct RuntimeMetadata {Show 38 fields
pub executed: usize,
pub runtime_errors: usize,
pub timeouts: usize,
pub oom: usize,
pub host_calls: usize,
pub mutations: usize,
pub instance_writes: usize,
pub list_writes: usize,
pub binding_errors: usize,
pub resolve_failures: usize,
pub data_reads: usize,
pub unsupported_host_calls: usize,
pub probe_skips: usize,
pub variables_scripts_collected: usize,
pub variables_data_items_collected: usize,
pub script_objects_registered: usize,
pub script_objects_register_failed: usize,
pub script_objects_subform_scoped: usize,
pub som_lookups_total: usize,
pub som_lookup_successes: usize,
pub som_lookup_failures: usize,
pub som_lookup_ambiguous: usize,
pub som_subform_scripts_exposed: usize,
pub som_occur_path_refs: usize,
pub occur_lookups_total: usize,
pub occur_lookup_successes: usize,
pub occur_lookup_failures: usize,
pub occur_property_reads: usize,
pub occur_property_writes: usize,
pub occur_min_writes: usize,
pub occur_max_writes: usize,
pub occur_mutations_captured: usize,
pub occur_mutations_applied: usize,
pub occur_mutations_skipped: usize,
pub occur_application_ambiguous: usize,
pub occur_application_targets: usize,
pub som_data_root_hits: usize,
pub som_items_path_hits: usize,
}Expand description
Cumulative metadata for a single document’s flatten. The runtime
adapter accumulates counters across calls; the dispatch site reads
them via XfaJsRuntime::take_metadata when the document is done.
Fields§
§executed: usizeScripts that ran to completion inside the sandbox.
runtime_errors: usizeGeneric runtime / script errors (parse, throw, NoBindings, …).
timeouts: usizeTime-budget exhaustions.
oom: usizeMemory-budget exhaustions.
host_calls: usizePhase C host-binding invocations.
mutations: usizePhase C successful field.rawValue writes.
instance_writes: usizePhase D successful instanceManager structure writes.
list_writes: usizePhase D-β successful listbox clearItems / addItem writes.
binding_errors: usizePhase C binding-level failures (type, activity, cap, parse).
resolve_failures: usizePhase C SOM resolution misses / failures.
data_reads: usizePhase D-γ successful DataDom reads (children / value / child-by-name).
unsupported_host_calls: usizePhase E (XFA-JS-HOST-STUBS): Calls into host capabilities that require
genuine viewer / user interaction (UI dialogs, signature panels,
network submit). The sandbox cannot honestly satisfy these during a
non-interactive flatten; instead of raising a TypeError (which would
abort the script and inflate runtime_errors)
the stubs return a safe default value and increment this counter so
the dispatch site keeps observability of “would-have-been-interactive”
touch points. Note: this counter is intentionally NOT folded into
is_clean — a script that touched
xfa.host.messageBox is still considered to have run cleanly because
the sandbox did not error; embedders that care about UI gaps should
inspect this field explicitly.
probe_skips: usizePhase D-θ.2 probe calls skipped because parentIds.length == 1 && chain.length == 1 (no same-name ambiguity possible). Every skipped
call saves one resolveWithFullChainStrict host round-trip.
variables_scripts_collected: usizeD3 (trace-only): <variables> <script> objects collected from the
template for this document (root + subform scopes).
variables_data_items_collected: usizeD3 (trace-only): <variables> <text> data items collected.
script_objects_registered: usizeD3 (trace-only): script objects whose JS-side registration returned
success (namespace bound into variablesScripts / subformVariables).
script_objects_register_failed: usizeD3 (trace-only): script objects that did NOT register — either a Rust
skip (BodyTooLarge / RegexRejected / panic) or a JS-side eval
failure (setVariablesScript returned false). Pure observability;
never folded into is_clean or rollback.
script_objects_subform_scoped: usizeD3 (trace-only): script objects collected under a NESTED subform scope
(registered into subformVariables only, hence not reachable as a bare
identifier today — the “scope_hidden” gap class).
som_lookups_total: usizeD4: total SOM lookups observed at the host resolve boundary (successes +
failures across the instrumented resolve_* entry points).
som_lookup_successes: usizeD4: SOM lookups that resolved to at least one node.
som_lookup_failures: usizeD4: SOM lookups that returned NoMatch.
som_lookup_ambiguous: usizeD4: subform-scoped script-object names NOT exposed because the same name is declared by ≥2 subforms (fail-closed ambiguity).
som_subform_scripts_exposed: usizeD4: subform-scoped script objects exposed to bare-identifier lookup (unique-name, sandboxed-only).
som_occur_path_refs: usizeD4 (trace-only): SOM NoMatch references whose path is an occur path
(occur / occur.min / occur.max …). Classified, NOT resolved.
occur_lookups_total: usizeD5: node.occur handle accesses (successes + failures).
occur_lookup_successes: usizeD5: node.occur accesses where the node handle was live.
occur_lookup_failures: usizeD5: node.occur accesses where the node handle was not live.
occur_property_reads: usizeD5: reads of an occur property (min/max/initial).
occur_property_writes: usizeD5: writes to an occur property (captured, not applied).
occur_min_writes: usizeD5: writes specifically to occur.min.
occur_max_writes: usizeD5: writes specifically to occur.max.
occur_mutations_captured: usizeD5: occur mutations captured as intent (no layout effect).
occur_mutations_applied: usizeD5: occur mutations APPLIED to layout. Always 0 in D5 (capture-only);
D6 bumps this when XFA_OCCUR_APPLY=1 applies a captured occur.min.
occur_mutations_skipped: usizeD6: captured occur mutations NOT applied (rollback, apply-flag off, dead/non-repeatable target, unsupported prop, negative value).
occur_application_ambiguous: usizeD6: captured occur mutations skipped because the target node is not a repeatable container (Subform/Area/ExclGroup) — fail-closed.
occur_application_targets: usizeD6: distinct form nodes whose occur was applied.
som_data_root_hits: usizeBE-1: $data bare-global intercepts resolved successfully (JS layer).
som_items_path_hits: usizeBE-1: #items property accesses resolved to a non-empty item list.
Implementations§
Source§impl RuntimeMetadata
impl RuntimeMetadata
Sourcepub fn accumulate(&mut self, other: RuntimeMetadata)
pub fn accumulate(&mut self, other: RuntimeMetadata)
Add another metadata snapshot into this one.
Trait Implementations§
Source§impl Clone for RuntimeMetadata
impl Clone for RuntimeMetadata
Source§fn clone(&self) -> RuntimeMetadata
fn clone(&self) -> RuntimeMetadata
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RuntimeMetadata
impl Debug for RuntimeMetadata
Source§impl Default for RuntimeMetadata
impl Default for RuntimeMetadata
Source§fn default() -> RuntimeMetadata
fn default() -> RuntimeMetadata
Source§impl PartialEq for RuntimeMetadata
impl PartialEq for RuntimeMetadata
Source§fn eq(&self, other: &RuntimeMetadata) -> bool
fn eq(&self, other: &RuntimeMetadata) -> bool
self and other values to be equal, and is used by ==.impl Copy for RuntimeMetadata
impl Eq for RuntimeMetadata
impl StructuralPartialEq for RuntimeMetadata
Auto Trait Implementations§
impl Freeze for RuntimeMetadata
impl RefUnwindSafe for RuntimeMetadata
impl Send for RuntimeMetadata
impl Sync for RuntimeMetadata
impl Unpin for RuntimeMetadata
impl UnsafeUnpin for RuntimeMetadata
impl UnwindSafe for RuntimeMetadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().