This little bit of code tested as being about the same as reinterpret for single values, and it probably should reuse the IOBuffer yet. May require a seek(b, 0) every hundred(?) or so calls to prevent the buffer growing indefinitely when reusing, and UInt8/64 read specifics - number of bytes/elements to read, as the eof won’t be as reliable
function mwsr(data, getFloat=false) ##Mark /Write /Seek /Read
b = IOBuffer();
mark(b);
write(b, data);
reset(b);
if(getFloat) return read(b, Float64); end;
return read(b); ##UInt8's
end;
It’s still a little unclear how/why arrow files need to be reinterpreted, but as long as a parse/convert definitely isn’t sufficient, it’s probably fine