{"id":15096122,"url":"https://github.com/apache/arrow-go","last_synced_at":"2025-04-13T04:09:21.632Z","repository":{"id":255639688,"uuid":"849127594","full_name":"apache/arrow-go","owner":"apache","description":"Official Go implementation of Apache Arrow","archived":false,"fork":false,"pushed_at":"2025-04-11T17:40:34.000Z","size":20007,"stargazers_count":150,"open_issues_count":65,"forks_count":25,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-04-13T02:15:04.959Z","etag":null,"topics":["apache-arrow","go"],"latest_commit_sha":null,"homepage":"https://arrow.apache.org/go/","language":"Assembly","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":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-29T03:03:01.000Z","updated_at":"2025-04-12T19:38:20.000Z","dependencies_parsed_at":"2024-09-17T04:55:19.917Z","dependency_job_id":"b9c701bc-3063-4f65-b739-123577ed5ea4","html_url":"https://github.com/apache/arrow-go","commit_stats":{"total_commits":742,"total_committers":130,"mean_commits":5.707692307692308,"dds":0.7722371967654986,"last_synced_commit":"1ad41e1911ae427601829b455be2b6378b76029a"},"previous_names":["apache/arrow-go"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Farrow-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/arrow-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248661704,"owners_count":21141450,"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":["apache-arrow","go"],"created_at":"2024-09-25T15:45:44.203Z","updated_at":"2025-04-13T04:09:21.604Z","avatar_url":"https://github.com/apache.png","language":"Assembly","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\nApache Arrow for Go\n===================\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/apache/arrow-go/v18.svg)](https://pkg.go.dev/github.com/apache/arrow-go/v18)\n\n[Apache Arrow][arrow] is a cross-language development platform for in-memory\ndata. It specifies a standardized language-independent columnar memory format\nfor flat and hierarchical data, organized for efficient analytic operations on\nmodern hardware. It also provides computational libraries and zero-copy\nstreaming messaging and inter-process communication.\n\n### A note about FlightSQL drivers\n\nGo FlightSQL drivers live in the\n[ADBC repository](https://github.com/apache/arrow-adbc/tree/main/go/adbc).\nIn particular, to use the Golang `database/sql` interface:\n```golang\nimport (\n    \"database/sql\"\n    _ \"github.com/apache/arrow-adbc/go/adbc/sqldriver/flightsql\"\n)\n\nfunc main() {\n    dsn := \"uri=grpc://localhost:12345;username=mickeymouse;password=p@55w0RD\"\n    db, err := sql.Open(\"flightsql\", dsn)\n    ...\n}\n```\n\nDSN option keys are expressed as `k=v`, delimited with `;`. \nSome options keys are defined in ADBC, others are defined in the FlightSQL ADBC driver.\n- Arrow ADBC [developer doc](https://arrow.apache.org/adbc/main/driver/flight_sql.html#client-options)\n- ADBC [source code](https://github.com/apache/arrow-adbc/blob/3d12fad1bae21029a8ff25604d6e65760c3f65bd/go/adbc/adbc.go#L149-L158)\n- FlightSQL driver option keys [source code](https://github.com/apache/arrow-adbc/blob/3d12fad1bae21029a8ff25604d6e65760c3f65bd/go/adbc/driver/flightsql/flightsql_adbc.go#L70-L81)\n\nReference Counting\n------------------\n\nThe library makes use of reference counting so that it can track when memory\nbuffers are no longer used. This allows Arrow to update resource accounting,\npool memory such and track overall memory usage as objects are created and\nreleased. Types expose two methods to deal with this pattern. The `Retain`\nmethod will increase the reference count by 1 and `Release` method will reduce\nthe count by 1. Once the reference count of an object is zero, any associated\nobject will be freed. `Retain` and `Release` are safe to call from multiple\ngoroutines.\n\n### When to call `Retain` / `Release`?\n\n* If you are passed an object and wish to take ownership of it, you must call\n  `Retain`. You must later pair this with a call to `Release` when you no\n  longer need the object.  \"Taking ownership\" typically means you wish to\n  access the object outside the scope of the current function call.\n\n* You own any object you create via functions whose name begins with `New` or\n  `Copy` or when receiving an object over a channel. Therefore you must call\n  `Release` once you no longer need the object.\n\n* If you send an object over a channel, you must call `Retain` before sending\n  it as the receiver is assumed to own the object and will later call `Release`\n  when it no longer needs the object.\n\nPerformance\n-----------\n\nThe arrow package makes extensive use of [c2goasm][] to leverage LLVM's\nadvanced optimizer and generate PLAN9 assembly functions from C/C++ code. The\narrow package can be compiled without these optimizations using the `noasm`\nbuild tag. Alternatively, by configuring an environment variable, it is\npossible to dynamically configure which architecture optimizations are used at\nruntime. We use the (cpu)[https://pkg.go.dev/golang.org/x/sys/cpu] package to\ncheck dynamically for these features.\n\n### Example Usage\n\nThe following benchmarks demonstrate summing an array of 8192 values using\nvarious optimizations.\n\nDisable no architecture optimizations (thus using AVX2):\n\n```sh\n$ INTEL_DISABLE_EXT=NONE go test -bench=8192 -run=. ./math\ngoos: darwin\ngoarch: amd64\npkg: github.com/apache/arrow-go/arrow/math\nBenchmarkFloat64Funcs_Sum_8192-8   \t 2000000\t       687 ns/op\t95375.41 MB/s\nBenchmarkInt64Funcs_Sum_8192-8     \t 2000000\t       719 ns/op\t91061.06 MB/s\nBenchmarkUint64Funcs_Sum_8192-8    \t 2000000\t       691 ns/op\t94797.29 MB/s\nPASS\nok  \tgithub.com/apache/arrow-go/arrow/math\t6.444s\n```\n\n**NOTE:** `NONE` is simply ignored, thus enabling optimizations for AVX2 and SSE4\n\n----\n\nDisable AVX2 architecture optimizations:\n\n```sh\n$ INTEL_DISABLE_EXT=AVX2 go test -bench=8192 -run=. ./math\ngoos: darwin\ngoarch: amd64\npkg: github.com/apache/arrow-go/arrow/math\nBenchmarkFloat64Funcs_Sum_8192-8   \t 1000000\t      1912 ns/op\t34263.63 MB/s\nBenchmarkInt64Funcs_Sum_8192-8     \t 1000000\t      1392 ns/op\t47065.57 MB/s\nBenchmarkUint64Funcs_Sum_8192-8    \t 1000000\t      1405 ns/op\t46636.41 MB/s\nPASS\nok  \tgithub.com/apache/arrow-go/arrow/math\t4.786s\n```\n\n----\n\nDisable ALL architecture optimizations, thus using pure Go implementation:\n\n```sh\n$ INTEL_DISABLE_EXT=ALL go test -bench=8192 -run=. ./math\ngoos: darwin\ngoarch: amd64\npkg: github.com/apache/arrow-go/arrow/math\nBenchmarkFloat64Funcs_Sum_8192-8   \t  200000\t     10285 ns/op\t6371.41 MB/s\nBenchmarkInt64Funcs_Sum_8192-8     \t  500000\t      3892 ns/op\t16837.37 MB/s\nBenchmarkUint64Funcs_Sum_8192-8    \t  500000\t      3929 ns/op\t16680.00 MB/s\nPASS\nok  \tgithub.com/apache/arrow-go/arrow/math\t6.179s\n```\n\n[arrow]:    https://arrow.apache.org\n[c2goasm]:  https://github.com/minio/c2goasm\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Farrow-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Farrow-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Farrow-go/lists"}