diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index d0c0494c5..db2f6abca 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -128,6 +128,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' - name: Install system dependencies run: | diff --git a/.github/workflows/dev.yaml b/.github/workflows/dev.yaml index 730fad0e4..914acab3f 100644 --- a/.github/workflows/dev.yaml +++ b/.github/workflows/dev.yaml @@ -38,6 +38,8 @@ jobs: fetch-depth: 0 persist-credentials: false - uses: actions/setup-python@v5 + with: + python-version: '3.x' - name: pre-commit (cache) uses: actions/cache@v4 with: diff --git a/.github/workflows/examples.yaml b/.github/workflows/examples.yaml index 7650bd54a..c90e15a1c 100644 --- a/.github/workflows/examples.yaml +++ b/.github/workflows/examples.yaml @@ -43,6 +43,9 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' - name: Install dependencies run: | diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml index 2dd7490eb..1bb8da383 100644 --- a/.github/workflows/python.yaml +++ b/.github/workflows/python.yaml @@ -82,6 +82,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 + with: + python-version: '3.x' - name: Install packaging tools run: | pip install --upgrade pip diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c328042fa..09b35fa07 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,7 +47,7 @@ repos: - id: black types_or: [pyi, python] - repo: https://github.com/PyCQA/flake8 - rev: 4.0.1 + rev: 7.1.1 hooks: - id: flake8 types_or: [python] diff --git a/CHANGELOG.md b/CHANGELOG.md index e35af5161..787c3b069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -240,3 +240,100 @@ - **docs**: Shuffle organization of sections to multiple pages (#460) - **python**: Reorganize strategies for building arrays (#444) - **r**: remove unnecessary package name call (#381) + +## nanoarrow 0.6.0 + +### Docs + +- **python**: Add example of python package with nanoarrow C extension (#645) + +### Feat + +- Add ArrowArrayView accessors to inspect buffer properties (#638) +- String/Binary View Support (#596) +- add Footer decoding (#598) +- Revendor flatcc (#592) +- Add IPC integration test executable (#585) +- Add `ArrowArrayViewCompare()` to check for array equality (#578) +- Add IPC stream writing (#571) +- add ipc RecordBatch encoding (#555) +- add ArrowIpcOutputStream (#570) +- Add IPC schema encoding (#568) +- Add IPC writer scaffolding (#564) +- Add ArrowArrayViewComputeNullCount (#562) +- Add Meson support in nanoarrow_device (#484) +- Meson build system for nanoarrow-ipc extension (#483) +- Add support for run-end encoded array (#507) +- Add float16 support for `ArrowArrayViewGet{Double,Int,UInt}Unsafe()` (#501) +- Add support for appending values to half float `ArrowArray` (#499) +- **extensions/nanoarrow_device**: Implement asynchronous buffer copying (#509) +- **python**: Add StringView and BinaryView IO to Python bindings (#637) +- **python**: Implement array from buffer for non-CPU arrays (#550) +- **python**: Implement bindings to IPC writer (#586) +- **python**: Implement CUDA build in Python bindings (#547) +- **r**: Add float16 support for R bindings (#650) +- **r**: Implement string view support in R bindings (#636) +- **r**: Allow opt-out of warning for unregistered extension types (#632) +- **r**: Add bindings to IPC writer (#608) + +### Fix + +- Remove unreachable code (#649) +- Properly ingest Binary View types without variadic buffers (#635) +- python schema repr does not truncate output (#628) +- Accommodate IPC messages without continuation bytes (#629) +- Ignore empty (but present) union validity bitmaps from before 1.0 (#630) +- Only validate relevant type_ids for array view slice (#627) +- Improve validation of offset buffers for sliced arrays (#626) +- Ensure CMake linking against built/installed nanoarrow works for all components (#614) +- Ensure footer test passes on big endian (#609) +- ensure 1 is written for boolean True (#601) +- Ensure that schema metadata is always present even if empty (#591) +- Include missing cases in `ArrowArrayInitFromType()` (#588) +- Silence warning when compiling nanoarrow.hpp on at least one version of MSVC (#590) +- don't require metadata order in nanoarrow_ipc_integration (#589) +- IPC streams did not include RecordBatch headers (#582) +- Fix Meson build for separated nanoarrow_testing target (#574) +- Ensure `children` is NULL for zero children in ArrayViewAllocateChildren (#556) +- CMake deprecation warnings from subprojects (#535) +- Meson install header files and pkgconfig (#542) +- Fix symbol export visibility in c_data_integration_test (#531) +- Fix Meson include directories (#532) +- Ensure we don't call cuMemAlloc with 0 bytesize (#534) +- Ensure ArrowDeviceArray implementation for AppleMetal passes tests on newer MacOS (#527) +- Check for offset + length > int64_max before using the value to calculate buffer sizes (#524) +- check `run_ends_view->length` before accessing its values (#518) +- Force static library build on Windows when building with Meson (#496) +- **ci**: Fix verify, meson-build, and docker-build weekly runs (#581) +- **ci**: Fix build and test of nanoarrow on centos7 and s390x (#576) +- **ci**: Pin r-lib actions as a workaround for latest action updates (#572) +- **ci**: Fix verification workflow (#552) +- **ci**: Stop building unbuildable image based on centos7 (#553) +- **python**: Fix detection of cuda library on hosted runner (#554) +- **r**: Avoid flatcc aligned_alloc() call when compiling R package (#494) + +### Refactor + +- Consolidate per-target actions in CMakeLists.txt (#573) +- Separate implementation from interface for nanoarrow_testing component (#561) +- Separate components into folders under src/nanoarrow (#536) +- Use ArrowStringView C++ literal in tests (#528) +- Move Meson build targets to top level directory (#530) +- Simplify Meson test generation (#525) +- Remove CMake requirement from Meson IPC config (#522) +- Use inttypes.h macros instead of casts to print fixed-width integers (#520) +- Consolidate device extension into main project (#517) +- Consolidate IPC extension into main project (#511) +- **extensions/nanoarrow_device**: Migrate CUDA device implementation to use the driver API (#488) +- **python**: Split ArrowArray and ArrowArrayStream modules (#559) +- **python**: Separate schema cython classes into their own module (#558) +- **python**: Split buffer Cython internals into a separate module (#549) +- **python**: Split device functionality into its own module (#548) +- **python**: Split type identifier utilities into their own module (#545) +- **python**: Extract utility functions into _utils.pyx (#529) +- **r**: Use JSON in experimental R vctrs extension type (#533) + +### Test + +- Fix meson build and clean up some warnings (#595) +- test with the `HalfFloatType` from arrow (#503) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5941438a7..04419839c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ message(STATUS "Building using CMake version: ${CMAKE_VERSION}") cmake_minimum_required(VERSION 3.14) -set(NANOARROW_VERSION "0.6.0-SNAPSHOT") +set(NANOARROW_VERSION "0.7.0-SNAPSHOT") string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" NANOARROW_BASE_VERSION "${NANOARROW_VERSION}") project(nanoarrow VERSION "${NANOARROW_BASE_VERSION}") diff --git a/meson.build b/meson.build index eec773f0e..ba68167a1 100644 --- a/meson.build +++ b/meson.build @@ -18,7 +18,7 @@ project( 'nanoarrow', 'c', 'cpp', - version: '0.6.0-SNAPSHOT', + version: '0.7.0-SNAPSHOT', license: 'Apache 2.0', meson_version: '>=1.3.0', default_options: [ diff --git a/python/src/nanoarrow/_static_version.py b/python/src/nanoarrow/_static_version.py index aa7006ca6..0d7154553 100644 --- a/python/src/nanoarrow/_static_version.py +++ b/python/src/nanoarrow/_static_version.py @@ -18,7 +18,7 @@ # This file is part of 'miniver': https://github.com/jbweston/miniver # Replaced by version-bumping scripts at release time -version = "0.6.0.dev0" +version = "0.7.0.dev0" # These values are only set if the distribution was created with 'git archive' refnames = "$Format:%D$" diff --git a/r/DESCRIPTION b/r/DESCRIPTION index addb1381d..45bea7fa2 100644 --- a/r/DESCRIPTION +++ b/r/DESCRIPTION @@ -1,6 +1,6 @@ Package: nanoarrow Title: Interface to the 'nanoarrow' 'C' Library -Version: 0.5.0.9000 +Version: 0.6.0.9000 Authors@R: c( person(given = "Dewey", family = "Dunnington", diff --git a/src/nanoarrow/device/device.c b/src/nanoarrow/device/device.c index 8178b9526..a7aea2a27 100644 --- a/src/nanoarrow/device/device.c +++ b/src/nanoarrow/device/device.c @@ -626,9 +626,7 @@ struct ArrowDevice* ArrowDeviceCuda(ArrowDeviceType device_type, int64_t device_ #endif #if !defined(NANOARROW_DEVICE_WITH_METAL) -struct ArrowDevice* ArrowDeviceMetalDefaultDevice(void) { - return NULL; -} +struct ArrowDevice* ArrowDeviceMetalDefaultDevice(void) { return NULL; } ArrowErrorCode ArrowDeviceMetalInitDefaultDevice(struct ArrowDevice* device, struct ArrowError* error) {