feature: Use Struct.ptr instead of :pointer for struct pointers
enhancement: use Struct.by_value where possible so callers get Structs instead of FFI::Pointers