Hello,

We have been discussing the creation of a minimalist C-based data
interface for applications to exchange Arrow columnar data structures
with each other. Some notable features of this interface include:

* A small amount of header-only C code can be copied independently into
third-party libraries and downstream applications, no dependencies are
needed even on Arrow C++ itself (notably, it is not required to use
Flatbuffers, though there are trade-offs resulting from this).

* Low development investment (in other words: limited-scope use cases
can be accomplished with little code), so as to enable C or C++
libraries to export Arrow columnar data with minimal code.

* Data lifetime management hooks so as to properly handle non-trivial
data sharing (for example passing Arrow columnar data to an async
processing consumer).

This "C Data Interface" serves different use cases from the
language-independent IPC protocol and trades away a number of features
in the interest of minimalism / simplicity. It is not a replacement for
the IPC protocol and will only be used to interchange in-process data at
C or C++ call sites.

The PR providing the specification is here:
https://github.com/apache/arrow/pull/5442

In particular, you can read the spec document here:
https://github.com/pitrou/arrow/blob/doc-c-data-interface2/docs/source/format/CDataInterface.rst

A fairly comprehensive C++ implementation of this demonstrating its
use is found here:
https://github.com/apache/arrow/pull/5608

(note that other applications implementing the interface may choose to
only support a few features and thus have far less code to write)

Please vote to adopt the SPECIFICATION (GitHub PR #5442).

This vote will be open for at least 72 hours

[ ] +1 Adopt C Data Interface specification
[ ] +0
[ ] -1 Do not adopt because...

Thank you

Regards

Antoine.


(PS: yes, this is in large part a copy/paste of Wes's previous vote
email :-))

Reply via email to