Skip to main content

external_effect_barrier

Function external_effect_barrier 

Source
pub fn external_effect_barrier(op: &Op) -> Option<&'static str>
Expand description

Whether the reverse executor supports op yet — the GROWING reversible subset. R1 covers the abelian core (RevSwap, zero garbage), straight-line scalar compute (overwritten_reg), the global write/read, output, and program stop. A program containing any other op declines recording with a clear error rather than silently mis-reversing; the subset expands (control flow, collections, effects) in R2/R3. If op is a truly-EXTERNAL effect that cannot be un-done — the honest Landauer wall, an already-sent network message can’t be un-sent — name the irreversibility barrier. None for reversible ops and for internally-modeled effects (buffered output, in-process channels, the clock) that DO reverse. This turns an irreversibility into a NAMED, enumerable boundary instead of a generic “unsupported”, so the reverse executor never silently pretends the world can be rewound.