Skip to content

Overview of External Memory

Quxlang provides IBC pointers and references for access to external data. For example, an IBC pointer can expose an external packet through its binary layout:

::packet IBC_STRUCT
{
  .sequence VAR U32;
}

::read_sequence FUNCTION(@address ADDRESS): U32
{
  VAR packet_view IBC CONST->packet :=
    IBC_PUN#(IBC CONST->packet)(@ADDR address);
  RETURN packet_view->.sequence;
}

The caller must supply a valid address with the required layout and alignment. IBC_LOAD#T and IBC_WRITE#T transfer values directly; IBC_GETADDR exports a pointer as an address. These four operations require runtime execution.

IBC qualification propagates through field and element access. Adding or removing it on a pointer or reference requires an explicit cast. It is intended for external data and does not change the active-type and lifetime rules for ordinary Quxlang objects.

See the External Memory Reference.