{"id":28989706,"url":"https://github.com/man-group/sparrow","last_synced_at":"2026-04-01T19:55:40.363Z","repository":{"id":221373388,"uuid":"754128266","full_name":"man-group/sparrow","owner":"man-group","description":"C++20 idiomatic APIs for the Apache Arrow Columnar Format","archived":false,"fork":false,"pushed_at":"2026-03-30T20:54:51.000Z","size":3112,"stargazers_count":137,"open_issues_count":23,"forks_count":25,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-03-30T22:24:40.577Z","etag":null,"topics":["apache","apache-arrow","cpp20"],"latest_commit_sha":null,"homepage":"https://man-group.github.io/sparrow/","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/man-group.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-07T13:06:48.000Z","updated_at":"2026-03-27T13:31:33.000Z","dependencies_parsed_at":"2024-02-21T17:00:34.992Z","dependency_job_id":"82052ac5-b400-41d6-8344-6abf184474ba","html_url":"https://github.com/man-group/sparrow","commit_stats":null,"previous_names":["xtensor-stack/xparrow","xtensor-stack/sparrow"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/man-group/sparrow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/man-group%2Fsparrow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/man-group%2Fsparrow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/man-group%2Fsparrow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/man-group%2Fsparrow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/man-group","download_url":"https://codeload.github.com/man-group/sparrow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/man-group%2Fsparrow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["apache","apache-arrow","cpp20"],"created_at":"2025-06-24T23:30:43.989Z","updated_at":"2026-04-01T19:55:40.355Z","avatar_url":"https://github.com/man-group.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sparrow\n\n[![GHA Linux](https://github.com/man-group/sparrow/actions/workflows/linux.yml/badge.svg)](https://github.com/man-group/sparrow/actions/workflows/linux.yml)\n[![GHA OSX](https://github.com/man-group/sparrow/actions/workflows/osx.yml/badge.svg)](https://github.com/man-group/sparrow/actions/workflows/osx.yml)\n[![GHA Windows](https://github.com/man-group/sparrow/actions/workflows/windows.yml/badge.svg)](https://github.com/man-group/sparrow/actions/workflows/windows.yml)\n[![GHA Docs](https://github.com/man-group/sparrow/actions/workflows/deploy-pages.yaml/badge.svg)](https://github.com/man-group/sparrow/actions/workflows/deploy-pages.yaml)\n[![Codecov](https://codecov.io/gh/man-group/sparrow/graph/badge.svg)](https://app.codecov.io/gh/man-group/sparrow)\n[![Integration tests](https://github.com/man-group/sparrow/actions/workflows/integration_tests.yaml/badge.svg?branch=main)](https://github.com/man-group/sparrow/actions/workflows/integration_tests.yaml)\n\nC++20 idiomatic APIs for the Apache Arrow Columnar Format\n\n## Introduction\n\n`sparrow` is an implementation of the Apache Arrow Columnar format in C++. It provides array structures\nwith idiomatic APIs and convenient conversions from and to the [C interface](https://arrow.apache.org/docs/dev/format/CDataInterface.html#structure-definitions).\n\nTry it online without any installation ! [![Try Sparrow in JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge.svg)](https://man-group.github.io/sparrow/jupyterlite)\n\n`sparrow` requires a modern C++ compiler supporting C++20.\n\n## Installation\n\n### Package managers\n\nWe provide a package for the mamba (or conda) package manager:\n\n```bash\nmamba install -c conda-forge sparrow\n```\n\n### Install from sources\n\n`sparrow` has a few dependencies that you can install in a mamba environment:\n\n```bash\nmamba env create -f environment-dev.yml\nmamba activate sparrow\n```\n\nYou can then create a build directory, and build the project and install it with cmake:\n\n```bash\nmkdir build\ncd build\ncmake .. \\\n    -DCMAKE_BUILD_TYPE=Debug \\\n    -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \\\n    -DBUILD_EXAMPLES=ON \\\n    -DBUILD_TESTS=ON \\\n    -DBUILD_DOCS=ON \\\n    ..\nmake install\n```\n\n## Usage\n\n### Requirements\n\nCompilers:\n- Clang 18 or higher\n- GCC 11.2 or higher\n- Apple Clang 16 or higher\n- MSVC 19.41 or higher\n\n### Initialize data with sparrow and extract C data structures\n\n```cpp\n#include \"sparrow/sparrow.hpp\"\nnamespace sp = sparrow;\n\nsp::primitive_array\u003cint\u003e ar = { 1, 3, 5, 7, 9 };\nauto [arrow_array, arrow_schema] = sp::extract_arrow_structures(std::move(ar));\n// Use arrow_array and arrow_schema as you need (serialization, passing it to\n// a third party library)\n// ...\n// You are responsible for releasing the structure in the end\narrow_array.release(\u0026arrow_array);\narrow_schema.release(\u0026arrow_schema);\n```\n\n### Initialize data with sparrow and use C data structures\n\n```cpp\n#include \"sparrow/sparrow.hpp\"\nnamespace sp = sparrow;\n\nsp::primitive_array\u003cint\u003e ar = { 1, 3, 5, 7, 9 };\n// Caution: get_arrow_structures returns pointers, not values\nauto [arrow_array, arrow_schema] = sp::get_arrow_structures(ar);\n// Use arrow_array and arrow_schema as you need (serialization, passing it to\n// a third party library)\n// ...\n// do NOT release the C structures in the end, the \"ar\" variable will do it for you\n```\n\n### Read data from somewhere and pass it to sparrow\n\n```cpp\n#include \"sparrow/sparrow.hpp\"\n#include \"third-party-lib.hpp\"\nnamespace sp = sparrow;\nnamespace tpl = third_party_library;\n\nArrowArray array;\nArrowSchema schema;\ntpl::read_arrow_structures(\u0026array, \u0026schema);\n\nsp::array ar(\u0026array, \u0026schema);\n// Use ar as you need\n// ...\n// You are responsible for releasing the structure in the end\narray.release(\u0026array);\nschema.release(\u0026schema);\n```\n\n### Read data from somewhere and move it into sparrow\n\n```cpp\n#include \"sparrow/sparrow.hpp\"\n#include \"third-party-lib.hpp\"\nnamespace sp = sparrow;\nnamespace tpl = third_party_library;\n\nArrowArray array;\nArrowSchema schema;\ntpl::read_arrow_structures(\u0026array, \u0026schema);\n\nsp::array ar(std::move(array), std::move(schema));\n// Use ar as you need\n// ...\n// do NOT release the C structures in the end, the \"ar\" variable will do it for you\n```\n\n## Documentation\n\nThe documentation (currently being written) can be found at https://man-group.github.io/sparrow/index.html\n\n## Acknowledgements\n\nThis development has been funded as part of a collaboration between [ArcticDB](https://github.com/man-group/ArcticDB), Bloomberg, and [QuantStack](https://quantstack.net/).\n\n## License\n\nThis software is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fman-group%2Fsparrow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fman-group%2Fsparrow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fman-group%2Fsparrow/lists"}