ruby / fiddle

A libffi wrapper for Ruby.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implement buffer protocol for Ruby

kou opened this issue · comments

See also PEP-3118 -- Revising the buffer protocol
https://www.python.org/dev/peps/pep-3118/

You want to implement support for python buffers in Ruby?

No.
It's for Ruby. It doesn't care about compatibility with Python's buffer protocol (at least for now).
Apache Arrow, XND or something will be suitable for data exchange over languages.

How does it fit with existing I/O operations? Can we use this new proposed buffer instead of strings for I/O?

I don't think about I/O related operations for the buffer protocol. I just think about data exchange.
It may be interesting. Do you have any (potential) use-case with I/O operations? Async I/O related?

It would be great to support readv and writev by supplying array rather than string. Maybe buffer operation can do the same. It would be nice to handle explicit offsets into buffers for both read and write operations, e.g. https://bugs.ruby-lang.org/issues/15560.

There are issues with handling binary string concatenation, e.g. https://bugs.ruby-lang.org/issues/14975.

We end up treating a string like a binary buffer, but it's often the case this duality causes weird interface issues, e.g. https://bugs.ruby-lang.org/issues/13626.

If we can introduce some kind of buffer concept, with mapping to string, and support for multiple chunks, to make I/O operation more efficient, it would be fantastic. But it needs to be built with I/O readv and writev in mind.

Thanks.
I'll read them later.

I added this to developers meeting- Hopefully it gets accepted https://bugs.ruby-lang.org/issues/16933

It's discussing in ruby/ruby#3261 .