The nanoarrow library is a set of helper functions to interpret and generate Arrow C Data Interface and Arrow C Stream Interface structures. The library is in active development and should currently be used only for entertainment purposes. Everything from the name of the project to the variable names are up for grabs (i.e., suggest/pull request literally any ideas you may have!).
Whereas the current suite of Arrow implementations provide the basis for a comprehensive data analysis toolkit, this library is intended to support clients that wish to produce or interpret Arrow C Data and/or Arrow C Stream structures. The library will:
While it will not provide full support for nested types, it should provide enough infrastructure that an extension library with a similar format could implement such support.
You can use nanoarrow in your project in two ways:
src/nanoarrow/into your favourite include directory and
#include <nanoarrow/nanoarrow.c>somewhere in your project exactly once.
cmake --build, and
cmake --installto build/install the static library and add
-L/path/to/nanoarrow/lib -lnanoarrowto your favourite linker flag configuration.
All public functions and types are declared in
In all cases you will want to copy this project or pin your build to a specific commit since it will change rapidly and regularly. The nanoarrow library does not and will not provide ABI stability (i.e., you must vendor or link to a private version of the static library).
The design of nanoarrow reflects the needs of a few previous libraries/prototypes requiring a library with a similar scope: