{"id":27594463,"url":"https://github.com/apache/arrow-nanoarrow","last_synced_at":"2025-05-15T11:08:53.868Z","repository":{"id":44148294,"uuid":"511532067","full_name":"apache/arrow-nanoarrow","owner":"apache","description":"Helpers for Arrow C Data \u0026 Arrow C Stream interfaces","archived":false,"fork":false,"pushed_at":"2025-05-03T19:30:25.000Z","size":30377,"stargazers_count":188,"open_issues_count":48,"forks_count":43,"subscribers_count":33,"default_branch":"main","last_synced_at":"2025-05-09T15:26:32.310Z","etag":null,"topics":["arrow"],"latest_commit_sha":null,"homepage":"https://arrow.apache.org/nanoarrow","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-07-07T13:08:51.000Z","updated_at":"2025-05-03T19:27:55.000Z","dependencies_parsed_at":"2024-01-23T17:31:31.164Z","dependency_job_id":"cceaee7a-dad8-4664-9eca-4f94f566819d","html_url":"https://github.com/apache/arrow-nanoarrow","commit_stats":{"total_commits":346,"total_committers":13,"mean_commits":"26.615384615384617","dds":0.5260115606936416,"last_synced_commit":"61d1264e464d7a475e0ed9062d09760b8405c4ea"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-nanoarrow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-nanoarrow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-nanoarrow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-nanoarrow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/arrow-nanoarrow/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254050794,"owners_count":22006363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arrow"],"created_at":"2025-04-22T10:32:57.576Z","updated_at":"2025-05-15T11:08:53.850Z","avatar_url":"https://github.com/apache.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!---\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n--\u003e\n\n# nanoarrow\n\n[![Codecov test coverage](https://codecov.io/gh/apache/arrow-nanoarrow/branch/main/graph/badge.svg)](https://app.codecov.io/gh/apache/arrow-nanoarrow?branch=main)\n[![Documentation](https://img.shields.io/badge/Documentation-main-yellow)](https://arrow.apache.org/nanoarrow/)\n[![nanoarrow on GitHub](https://img.shields.io/badge/GitHub-apache%2Farrow--nanoarrow-blue)](https://github.com/apache/arrow-nanoarrow)\n\nThe nanoarrow libraries are a set of helpers to produce and consume Arrow data,\nincluding the\n[Arrow C Data](https://arrow.apache.org/docs/format/CDataInterface.html),\n[Arrow C Stream](https://arrow.apache.org/docs/format/CStreamInterface.html),\nand [Arrow C Device](https://arrow.apache.org/docs/format/CDeviceDataInterface.html),\nstructures and the\n[serialized Arrow IPC format](https://arrow.apache.org/docs/format/Columnar.html#serialization-and-interprocess-communication-ipc).\nThe vision of nanoarrow is that it should be trivial for libraries to produce and consume\nArrow data: it helps fulfill this vision by providing high-quality, easy-to-adopt\nhelpers to produce, consume, and test Arrow data types and arrays.\n\nThe nanoarrow libraries were built to be:\n\n- Small: nanoarrow’s C runtime compiles into a few hundred kilobytes and its R and Python\n  bindings both have an installed size of ~1 MB.\n- Easy to depend on: nanoarrow's C library is distributed as two files (nanoarrow.c and\n  nanoarrow.h) and its R and Python bindings have zero dependencies.\n- Useful: The Arrow Columnar Format includes a wide range of data type and data encoding\n  options. To the greatest extent practicable, nanoarrow strives to support the entire\n  Arrow columnar specification (see the\n  [Arrow implementation status](https://arrow.apache.org/docs/status.html) page for\n  implementation status).\n\n## Getting started\n\nThe nanoarrow Python bindings are available from [PyPI](https://pypi.org/) and\n[conda-forge](https://conda-forge.org/):\n\n```sh\npip install nanoarrow\nconda install nanoarrow -c conda-forge\n```\n\nThe nanoarrow R package is available from [CRAN](https://cran.r-project.org):\n\n```r\ninstall.packages(\"nanoarrow\")\n```\n\nThe C library can be used by generating bundled versions of the core library\nand its components. This is the version used internally by the R and Python\nbindings.\n\n```shell\npython ci/scripts/bundle.py \\\n  --source-output-dir=dist \\\n  --include-output-dir=dist \\\n  --header-namespace= \\\n  --with-device \\\n  --with-ipc \\\n  --with-testing \\\n  --with-flatcc\n```\n\nCMake is also supported via a build/install with `find_package()` or using\n`FetchContent`:\n\n```\nfetchcontent_declare(nanoarrow\n                     URL \"https://www.apache.org/dyn/closer.lua?action=download\u0026filename=arrow/apache-arrow-nanoarrow-0.6.0/apache-arrow-nanoarrow-0.6.0.tar.gz\")\n\nfetchcontent_makeavailable(nanoarrow)\n```\n\nThe C library can also be used as a Meson subproject installed with:\n\n```shell\nmkdir subprojects\nmeson wrap install nanoarrow\n```\n\n...and declared as a dependency with:\n\n```\nnanoarrow_dep = dependency('nanoarrow')\nexample_exec = executable('example_meson_minimal_app',\n                          'src/app.cc',\n                          dependencies: [nanoarrow_dep])\n```\n\nSee the [nanoarrow Documentation](https://arrow.apache.org/nanoarrow/latest/) for\nextended tutorials and API reference for the C, C++, Python, and R libraries.\n\n- [Getting started in C/C++](https://arrow.apache.org/nanoarrow/latest/getting-started/cpp.html)\n- [Getting started in Python](https://arrow.apache.org/nanoarrow/latest/getting-started/python.html)\n- [Getting started in R](https://arrow.apache.org/nanoarrow/latest/getting-started/r.html)\n\nThe [nanoarrow GitHub repository](https://github.com/apache/arrow-nanoarrow) additionally\nprovides a number of [examples](https://github.com/apache/arrow-nanoarrow/tree/main/examples)\ncovering how to use nanoarrow in a variety of build configurations.\n\n## Development\n\n### Building with CMake\n\nCMake is the primary build system used to develop and test the nanoarrow C library. You can build\nnanoarrow with:\n\n```sh\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build .\n```\n\nTo build nanoarrow along with tests run:\n\n```sh\nmkdir build \u0026\u0026 cd build\ncmake .. -DNANOARROW_BUILD_TESTS=ON\ncmake --build .\n```\n\nIf you are able to install [Arrow C++](https://arrow.apache.org/install/) you can enable\nmore testing:\n\n```sh\nmkdir build \u0026\u0026 cd build\ncmake .. -DNANOARROW_BUILD_TESTS=ON -DNANOARROW_BUILD_TESTS_WITH_ARROW=ON\ncmake --build .\n```\n\nTests can be run with `ctest`.\n\n### Building with Meson\n\nCMake is the officially supported build system for nanoarrow. However, the Meson\nbackend is an experimental feature you may also wish to try.\n\n```sh\nmeson setup builddir\ncd builddir\n```\n\nAfter setting up your project, be sure to enable the options you want:\n\n```sh\nmeson configure -Dtests=enabled -Dbenchmarks=enabled\n```\n\nYou can enable better test coverage if Apache Arrow is installed on your system\nwith `-Dtest_with_arrow=enabled`. Depending on how you have installed Apache Arrow,\nyou may also need to pass `--pkg-config-path \u003cpath to directory with arrow.pc\u003e`.\n\nWith the above out of the way, the `compile` command should take care of the rest:\n\n```sh\nmeson compile\n```\n\nUpon a successful build you can execute the test suite and benchmarks with the\nfollowing commands:\n\n```sh\nmeson test nanoarrow:  # default test run\nmeson test nanoarrow: --wrap valgrind  # run tests under valgrind\nmeson test nanoarrow: --benchmark --verbose # run benchmarks\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Farrow-nanoarrow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Farrow-nanoarrow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Farrow-nanoarrow/lists"}