Provide xod/core/buffer?

I see. The feature you’re talking about is arrays/lists/vectors/sequences (no matter how we call them) which are quite fundamental to be supported at the core level of the XOD language for any types. XOD lacks this feature yet. Almost lacks: there is the List<T> type in the C++ API which implements lazy sequences, but there’s no integration with it at the visual part of XOD. This yet to be done.

Your proposal may work well in some cases but in general, I see some danger with it. It involves data mutation which is a source of many bugs in programs. Consider:

   A
 /   \
 B    C
 |
 D

Let’s imagine all these nodes are passing a byte buffer around. And somewhere deep inside D there’s a set-byte node. When it’s get triggered the observable data changes for C as well which might be very surprising and confusing because visually it depends on the effects of A only. Furthermore, C won’t even notice the change after D’s update until it is evaluated for other reasons.

A “proper” solution might be passing around immutable buffer references which is allocated and owned by a single entity (A) plus a changeset that allows to “change” the upstream buffer and pass it down without actually overwriting the master data. This is exactly what List<T> with its various ListView<T> do.

I can’t promise the implementation of the system soon. Meanwhile, your proposal can work fine. Maybe, it is a good idea to encapsulate all necessary in a single regular library. Then the auto-generated libs can simply use it. From the users perspective, that should work fine because once he installs a library (wrapper) all dependencies (awgrover/byte-buffer) will install automatically.