samtalki opened a new pull request, #607: URL: https://github.com/apache/arrow-julia/pull/607
## Summary First PR of the C Data Interface stack for GH-184, extracting null and primitive array import from #603 as requested there. - Immutable `ArrowSchema` and `ArrowArray` C layout structs with layout assertions. - `Arrow.from_c_data(schema_ptr, array_ptr; convert=true)` for null and primitive arrays. - Validates pointer layout, child and buffer counts, offset arithmetic, known flag bits, dictionary pointer consistency, release idempotency, and reads after release. Declared null counts are trusted like Arrow C++ and arrow-rs; `null_count == -1` requires the validity bitmap it is resolved from, like nanoarrow; reserved flag bits are ignored. - Import moves the base `ArrowSchema` and `ArrowArray` structures into Julia owned storage and marks the sources released without calling their callbacks; callers may free or reuse the passed structures once `from_c_data` returns. - Aligned buffers are viewed zero copy behind a shared release owner; misaligned fixed width buffers are copied into aligned storage; `copy`, `collect`, `deepcopy`, and `serialize` materialize Julia owned data through the release liveness gate. Struct, boolean, string, binary, list, and export support land in the follow up PRs. ## Stack Base is `main`. Follow up PRs: - #603 adds struct array import as Tables.jl column tables. - #604 expands import coverage. - #605 adds C Data export. - #606 adds hardening and smoke tests. ## Size Against `main`: 6 files changed, 1246 insertions, 1 deletion. ## Validation - `git diff --check main...HEAD`: passed. - ABI smoke: `ArrowSchema` and `ArrowArray` are isbits structs with expected C layout sizes. - Focused C Data tests: 93/93 passed. - Full package tests (bounds checked): 66278/66278 passed. ## AI Assistance Co-authored-by: Robert Buessow <[email protected]> Co-authored-by: Olle Martensson <[email protected]> Generated-by: OpenAI Codex -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
