Skip to content

Releases: Bears-R-Us/arkouda

Arkouda v2026.02.27

27 Feb 17:39
2de4c4a

Choose a tag to compare

Supported environments and dependencies

This release was tested in CI with the following language versions:

  • Python: 3.10, 3.11, 3.12, 3.13
  • Chapel: 2.4.0, 2.5.0, 2.6.0, 2.7.0

What's Changed

  • Modernized CI: added Chapel 2.7, removed Chapel 2.4, reduced
    multi-dim testing scope, lowered CI RAM usage, and temporarily
    disabled Codecov. (#5358, #5387, #5389)

  • Expanded NumPy alignment test coverage across utils, numeric, char,
    sorting, strings, generator, random, pdarray modules, segarray,
    dtypes, and related functionality. (#5292, #5245, #5242, #5285,
    #5287, #5297, #5294, #5272, #5278, #5252, #5258, #5261, #5255,
    #5269)

  • Improved NumPy API consistency: aligned round, zeros/ones/full,
    added divide-by-zero warnings and regression fix, expanded in1d
    overloads, improved linspace, added ufunc interface and additional
    dunder operators. (#5415, #5175, #5380, #5382)

  • Strengthened pandas ExtensionArray integration: enabled dtype=ak,
    expanded Series and Index accessors (groupby, argsort, apply,
    locate), improved value_counts, comparison methods, astype handling,
    and GroupBy reductions. (#5303, #5336, #5404, #5406, #5424, #5426,
    #5371, #5141, #5219, #5421, #5417, #5394)

  • Fixed multiple pandas interop bugs involving index conversion and
    dtype handling, including RangeIndex issues and ak.bigint behavior.
    (#5410, #5419, #5428, #5413)

  • Added ndarray return support for isna/isnull (including Categorical)
    and expanded ExtensionArray inherited method tests. (#5392, #5395,
    #5096)

  • Performance improvements: bigint array transfer, CSV string reads,
    flatten benchmark improvements, benchmark v2 fixes, and updated
    benchmarks to use numNodes. (#5330, #5397, #5360, #5400)

  • Added arkouda.core module and introduced deprecation warnings for
    old module structure. (#5366, #5362)

  • Miscellaneous fixes including reverting balancedSegStringRetrieval
    and test/docstring fixes. (#5089, #5298, #5402)


Full Changelog

v2026.02.02...v2026.02.27

Auto-generated release notes

What's Changed

Read more

Arkouda v2026.02.02.1

11 Feb 22:29

Choose a tag to compare

Arkouda v2026.02.02.1

Fix

  • Added --no-print-directory to nested $(MAKE) invocation in make/prologue/checks.mk.

  • Fixes /bin/sh: gmake[2]:: command not found error when running make check-arrow or full make builds.

Thanks to the reporting user for identifying the fix.

#5402: make check-arrow fails with command not found

Arkouda v2026.02.02

02 Feb 19:06
31975dd

Choose a tag to compare

Arkouda v2026.02.02 Release Notes

This release focuses on pandas ExtensionArray compatibility, NumPy semantic alignment, typing improvements, benchmarks, and build / CI cleanup, while continuing to harden correctness and performance across the codebase.

Supported environments and dependencies

This release was tested in CI with the following language versions:

  • Python: 3.10, 3.11, 3.12, 3.13
  • Chapel: 2.4.0, 2.5.0, 2.6.0, 2.7.0

Notable dependency requirements

Runtime dependencies include:

  • NumPy ≥ 2.0
  • pandas ≥ 1.4.0, excluding 2.2.0 (!= 2.2.0)
  • pyarrow ≥ 6.0.1, < 21.0.0
  • tables (PyTables) ≥ 3.10.0
  • h5py ≥ 3.7.0
  • typeguard pinned to 2.10.0

For the full list of dependencies (including optional dev tools such as pytest, Sphinx, and linters), see pyproject.toml.


🚀 New Features & Enhancements

  • Added ak.minimum and ak.maximum functions (#5125)
  • Implemented unary plus (pdarray.pos) to match NumPy semantics (#5126)
  • Added overloads for:
  • Added arithmetic methods (add, sub, mul) for ArkoudaArray (#5333)
  • Improved ArkoudaExtensionArray._reduce (#5309)
  • Simplified deepcopy for potential performance improvements (#5277)
  • Added SplitMix64 RNG (#5323)
  • Added Chapel 2.7 to CI (#5361)

🧮 Pandas & NumPy Compatibility

  • Significant progress on pandas ExtensionArray support:
    • Implemented eq, getitem, view, arithmetic, and correct isna return types (#5123, #5106, #5345, #5231, #5313)
    • Centralized and clarified unimplemented ExtensionArray APIs (#5329)
    • Added NotImplemented stubs for ArkoudaStringArray and ArkoudaCategoricalArray (#5207, #5210)
  • Normalized datetime and string dtypes to match NumPy / pandas defaults (#5328, #5343)
  • Improved pandas Series conversion and normalization in from_series (#5190, #5352)
  • Fixed Index and Series string/object dtype handling (#5354)
  • Added alignment tests across NumPy manipulation functions (#5241, #5111)
  • Fixed MultiIndex issues:
    • .collect() bug (#5154)
    • .lookup() illegal dtype cast for tuple keys (#5156)

🐛 Bug Fixes

  • Fixed formatting errors from alignment reorganization (#5163)
  • Fixed unary negation semantics for ak.uint64 to match NumPy (#5124)
  • Fixed floor division (//) behavior (#5131)
  • Fixed pdarray.copy() for uint8 (#5348)
  • Fixed incorrect results for bool ** bool (#5357)
  • Fixed formatting and lint issues in benchmarks and utilities (#5314, #5368)
  • Improved bigint performance (#5151)
  • Fixed issues preventing benchmark_v2 from running (#4837)

🧪 Benchmarks & Testing

  • Added benchmarks for:
    • Multidimensional binary operations (#5186)
    • Unique string concatenation (#5160)
  • Improved benchmark stability and configuration:
    • Added warning filters to benchmark configuration (#5310)
    • Removed unnecessary pytest markers (#5215, #5320)
  • Added xfail for known pandas GroupBy behavior difference (#5263)

🧹 Tooling, Typing & Code Quality

  • Expanded typing across the project:
    • Added TypeGuards to dtypes module (#5214)
    • Increased usage of Literal typing (#5184)
    • Removed unnecessary type: ignore comments (#5229)
  • Removed camelCase naming inconsistencies (#5218)
  • Resolved flake8, Ruff, and N806 errors (#5226, #5271, #5347)
  • Added flake8 checks for the tests directory (#5317)
  • Alphabetized pytest.ini (#5165)

🛠 Build, CI & Infrastructure

  • Dropped support for Chapel versions < 2.4 (#5129)
  • Added -fPIC option for Arrow builds (#5188)
  • Split and reorganized Makefile infrastructure (#5167)
  • Cleaned up linker warnings in make (#5145)
  • Enabled coverage uploads on main to fix Codecov base report issues (#5322)
  • Updated .coveragerc and limited coverage reporting to the arkouda package (#5257, #5276)
  • Temporarily lowered docstring coverage threshold (#5221)
  • Configured GitHub Pages workflows to cancel in-progress runs (#5169)

📦 Module Organization

  • Reorganized accessor modules to align with NumPy / pandas / SciPy layout (#5331)
  • Moved from_series into the pandas module (#5190)
  • Split Prologue.mk for maintainability (#5167)

👥 Contributors

Thanks to all contributors to this release:


For questions, issues, or upgrade guidance, please open an issue on GitHub.

Auto-generated release notes

What's Changed

Read more

Release Notes v2025.12.16

16 Dec 21:40
a7a063a

Choose a tag to compare

Arkouda v2025.12.16

This release continues Arkouda’s push toward full NumPy and pandas compatibility, with major progress on multi-dimensional arrays, pandas ExtensionArray support, distributed performance, and developer tooling cleanup.


Supported environments and dependencies

This release was tested in CI with the following language versions:

  • Python: 3.10, 3.11, 3.12, 3.13
  • Chapel: 2.4.0, 2.5.0, 2.6.0

Notable dependency requirements

Runtime dependencies include:

  • NumPy ≥ 2.0
  • pandas ≥ 1.4.0, excluding 2.2.0 (!= 2.2.0)
  • pyarrow ≥ 6.0.1, < 21.0.0
  • tables (PyTables) ≥ 3.10.0
  • h5py ≥ 3.7.0
  • typeguard pinned to 2.10.0

For the full list of dependencies (including optional dev tools such as pytest, Sphinx, and linters), see pyproject.toml.


Highlights

Multi-Dimensional Array Expansion

Multi-dimensional support is now significantly more complete across the API:

  • Multi-dimensional support added to or enhanced:
  • Fixed Chapel instantiation limits for 3+ dimensions (#4227)
  • Reorganized broadcasting logic and internals (#4978, #4737, #4737)

Distributed Performance & Algorithms

  • New repartitionByHash API for distributed workflows (#4500)
  • Adopted Chapel standard sort for distributed sorting (#5039)
  • Refactored FeistelShuffle into innerArray for better performance (#5069)
  • Performance improvements to cumSum / cumProd (#4810)

pandas Integration & ExtensionArray Progress

  • New Arkouda accessor for pandas Index (#5074, #5110)
  • pandas DataFrame accessor for Arkouda (#4983)
  • Renamed ArkoudaBaseArrayArkoudaExtensionArray (#5001)
  • ExtensionArray API improvements: _from_sequence (#5078), copy (#5076), argsort (#4993)
  • Refactored factorize to remove pandas dependency (#4940)
  • Registered extension dtypes (#4946)

Developer Experience & CI Modernization

  • CI updated to support Chapel 2.6; dropped Chapel 2.0–2.3 (#4986, #4991)
  • Automated CI build improvements (#4892, #4893)
  • Improved Makefile structure and debug ergonomics (#5128, #5133)
  • Configurable compiled Arkouda dimensionality via make (#5091)
  • Updated Arrow / Parquet handling, including Arrow <19 compatibility (#5146, #5164)

Tooling Cleanup & Code Quality

  • Removed isort, darglint, and pydocstyle (#5060, #5072)
  • Reduced ruff ignores and resolved formatting issues (#4979, #4980, #4982)
  • Fixed mypy issues and improved type precision (#5093)
  • Removed deprecated tests and legacy code paths (#5031)

Bug Fixes & Correctness

  • Fixed edge-case failures for small sizes (size <= 10) (#5054, #5052, #5045)
  • Fixed ak.array negative number handling (#4984)
  • Fixed concatenate(axis=1) behavior (#5030)
  • Fixed CSV parsing for quoted and multiline records (#5080)
  • Improved numerical consistency with NumPy (allclose) (#2956)

Full Changelog
v2025.09.30...v2025.12.16

Auto-Generated Release Notes

What's Changed

Read more

Release Notes v2025.09.30

30 Sep 19:54
e077dc4

Choose a tag to compare

Release Notes

This release introduces several major new features, performance improvements, and bug fixes across Arkouda’s Python and Chapel codebases.
Highlights include the new pandas ExtensionArray implementation, expanded random number generation features, and improvements to Parquet I/O performance.

Supported environments and dependencies

This release was tested in CI with the following language versions:

  • Python: 3.10, 3.11, 3.12, 3.13
  • Chapel: 2.0.0, 2.1.0, 2.2.0, 2.3.0, 2.4.0, 2.5.0

Notable dependency requirements

Runtime dependencies include:

  • NumPy ≥ 2.0
  • pandas ≥ 1.4.0, excluding 2.2.0 (!= 2.2.0)
  • pyarrow ≥ 6.0.1, < 21.0.0
  • tables (PyTables) ≥ 3.10.0
  • h5py ≥ 3.7.0
  • typeguard pinned to 2.10.0

For the full list of dependencies (including optional dev tools such as pytest, Sphinx, and linters), see pyproject.toml.

Major Changes

Implemented pandas ExtensionArray for Arkouda (Closes #4597, #4907, #4876, #4947) by @ajpotts

Added ak.rand to match np.random.rand (Closes #4736) by @drculhane

Added ak.shares_memory function (Closes #3284) by @ajpotts

Added ak.errstate context manager for error handling (Closes #3286) by @ajpotts

Added ak.Index.sort_values (Closes #3177) by @ajpotts

Added ak.fabs (Closes #4921) by @1RyanK

Added ascending argument to ak.argsort (Closes #4782) by @ajpotts

Improved Parquet read performance, especially for multiple column reads (Closes #4906) by @e-kayrakli

Enabled multi-dim output for ak.random.standard_exponential (Closes #4924) by @drculhane

Added destructors for Chapel-side and Python-side RNGs (Closes #4898) by @drculhane

Minor Changes

Expanded axis validation standardization across array API functions (Closes #4831, #4858, #4909, #4932) by @drculhane

Improved docstrings (Closes #3941, #3942, #4852, #4849, #4853, #4947) by @ajpotts, @1RyanK

Added global seed support for reproducibility (Closes #4777, #4726) by @drculhane

Improved shuffle benchmark with Feistel and alternatives (Closes #4818, #4845, #4787) by @1RyanK

Improved benchmark framework (Closes #4811, #4814, #4808, #4816, #4856) by @ajpotts

Added pytest-benchmark dependency (Closes #4821) by @jabraham17

Improved CI builds: Chapel 2.5 support, automated builds, Dockerfile fixes (Closes #4783, #4891, #4910, #4908) by @jaketrookman, @jabraham17

Added pyproject.toml for modern packaging (Closes #4209) by @ajpotts

Refined multi-dim build to reduce size (Closes #4791) by @ajpotts

Improved nbytes handling for bigint arrays (Closes #4850, #4896) by @1RyanK

Improved command registration (Closes #4953) by @e-kayrakli

Bug Fixes

Fixed ak.where for Categorical (Closes #4881) by @1RyanK

Fixed ak.randint behavior for bool (Closes #4872) by @1RyanK

Fixed conversion of numpy bigint zeros producing empty arrays (Closes #4884) by @1RyanK

Fixed cumsum vs cumulative_sum typo (Closes #4804) by @drculhane

Fixed handling of size/shape in ak.random.poisson (Closes #4916) by @drculhane

Fixed common type promotion in concat and stack (Closes #4889) by @drculhane

Fixed benchmark issues: average rate always zero, array_transfer.dat not populating, io_benchmark parsing (Closes #4824, #4863, #4862) by @ajpotts

Fixed doc build failures with Chapel 2.5.0 (Closes #4838) by @ajpotts

Fixed clang bitshift issue (Closes #4894) by @1RyanK

Fixed MaxArrayDims incorrectness (Closes #4565) by @1RyanK

Fixed negative server return values in rare cases (Closes #4157) by @ajpotts

Fixed intermittent test failures (test_set_uint) (Closes #4153) by @ajpotts

Fixed delGeneratorMsg bug (Closes #4933) by @ajpotts

Fixed PT003, T201, E127, Flake8 errors (Closes #4806, #4874, #4903, #4871) by @ajpotts

Fixed doctest failures in random and client modules (Closes #4798, #4860) by @ajpotts, @drculhane

Auto-generated release notes

What's Changed

Read more

Release Notes v2025.08.20

20 Aug 17:22
147a08b

Choose a tag to compare

Introduction

This release delivers a mix of new functionality, performance improvements, infrastructure updates, and ongoing work to align Arkouda more closely with NumPy and modern Python standards.

Highlights include:

  • New array operations and utilities (Strings.argsort, Categorical.argsort, isnumeric, deepcopy for ak.array, max_bits_list, and a new searchsorted implementation).
  • Major system-level improvements such as MergeShuffle, repartitionByLocale, enhanced checkpointing (including a server heartbeat and bigint array support), and better configuration utilities.
  • Expanded test coverage and benchmarking, with many benchmarks refactored for maintainability and consistency.
  • Significant documentation work: missing docstrings filled in, doctests added, and adoption of NumPy-style docstring conventions with ruff-based linting.
  • CI and infrastructure updates to improve reliability, including fixes for intermittent failures, expanded multi-dimensional test support, and branch migration from master to main.
  • A number of important bug fixes addressing auto-checkpointing, Arrow dependency compatibility, type hinting, and CI stability.

Together, these changes improve Arkouda’s stability, usability, and developer experience, while continuing to advance its alignment with NumPy semantics.

Major Changes


Minor Changes

Benchmarks

Documentation

CI / Testing / Infra

  • Set max-parallel for multi-dim tests in CI (#4696, PR #4697)
  • Reactivate pytest timeout for unit tests (PR #4689)
  • Parameterize size in test_multi_col_merge (#4713, PR #4714)
  • Update CI to use a slim build for multi-dim testing (#4778, PR #4778)
  • Switch branch from master to main + port PRs (#4733, PR #4734, PR #4740)
  • Skip testing of auto-checkpoints.py on unsupported hardward (PR #4707)

Other

  • Remove redundant cumsum, align cumulative ops to NumPy (#4749, PR #4755)

Bug Fixes

Auto-generated release notes

What's Changed

Read more

Release Notes v2025.07.03

22 Jul 17:53
88f2a83

Choose a tag to compare

Arkouda v2025.07.03

We're excited to announce a feature-packed release of Arkouda with enhanced NumPy compatibility, powerful new array functions, performance improvements, CI tooling, and major documentation progress.


Features

Array Functions

Checkpointing and Logging

  • Introduced experimental checkpointing of server state, with support for numeric arrays and automatic checkpointing triggered by memory limits or idle time.
    (#2384, PRs #3915, #4391, #4549, PR #4592, #4644)

  • Improved logging behavior:

    • Logs can now be redirected to a file using the server’s logging mechanism (PR #4152)
    • Reduced use of throws in logging routines (PR #4433)

Project Infrastructure

Other


API Enhancements and Compatibility

API Enhancements and Compatibility


Performance Improvements

  • Improved performance and stability in ak.permutation, distributed array creation, and sorting
    (#3974, PRs #3975, #4242)

Deprecations and Refactors

  • Removed deprecated or obsolete features:

  • Refactored and modernized core logic:

  • Simplified internals and extended platform support:

  • Added internal or system-level functionality:

    • repartitionByLocaleString and repartitionByHashString server functions
      (#4497, #4499, PRs #4557, #4617)
    • Set union function for Strings arrays (#4244, PR #4245)
    • Compatibility module for Time.totalMicroseconds() (PR #4142)
    • Added missing __all__ to ensure symbol export consistency (#4426, PR #4427)

Benchmark Refactor

Read more

Release Notes v2025.01.13

13 Jan 16:06
a3aa4c3

Choose a tag to compare

Bug Fixes

  • Issues #3931 and #3933: fixes bug in the Makefile preventing make install-arrow from successfully completing on some systems.
  • Issue #3947: fixes bug where reshape was failing for a single integer argument.

Major changes

  • Issues #3939 and #3957: refactors of the Makefile to streamline offline arkouda builds
  • Issue #3960: creates a comm_diagnostics module for querying comm diagnostic statistics.

Minor changes

  • Issue #3929: Adds chapel 2.1, 2.2 to the github CI
  • Issue #3911: minor performance improvement to reduction module
  • Issues #3881, #3882, and #3872: Completes the refactoring of all functions in EfuncMsg.chpl to the new interface.
Auto-generated release notes

New Contributors

Full Changelog: v2024.12.06...v2025.01.13

Release Notes v2024.12.06

07 Dec 02:31
9eba2ce

Choose a tag to compare

Bug Fixes

  • Issue #3870 - fixes bug in reshape for bigint type
  • Issue #3821 - fixes bug in stridable indexing of Strings in multilocale
  • PR #3804 - fixes sparseMatToPdarray test failures for distributed arrays
  • PR #3857 - fixes file location reporting in register-commands.py
  • Issue #3842 - fixes mypy CI failures

Major changes

Minor changes

  • Numpy Alignment
    • Issues #3868, #3884, #3781 - code reorganization to align with numpy
    • Issue #3864 - max and min of bool to return bool to match numpy
    • Issue #3714 - pdarray.shape returns a tuple
    • Issue #3283 - adds mixed types to work with histogram2d and match the return dtypes with Numpy
  • Issues #3839, #3560, #3796 - refactor benchmarks to use pytest framework and add to CI.
  • Issue #3815, PRs #3880, #3812, #3926, #3912, #3802 - unit test improvements
  • Issues #3902, #3896, #3818, #3883, #3887 - reduce warnings
  • Issue #3708 - refactors array_api to call functions from arkouda.pdarray_creation
  • PRs #3814 and #3826 - performance improvements to array function
  • PR #3862 - updated the hdf5 download link in the Makefile
  • Issue #3905 - assert_equivalent compares shapes of pdarrays
  • PR #3818 - improves documentation for LINUX_INSTALL
  • Issue #3849 - adds SortingAlgorithm enum to all in sorting module
Auto-generated release notes

New Contributors

Full Changelog: v2024.10.02...v2024.12.06

Release Notes v2024.10.02

03 Oct 00:12
a44dd0f

Choose a tag to compare

Bug Fixes

  • Issue #3762 - Fix dataframe groupby aggregations when keys contain NaNs
  • Issues #3658, #3650, #3654, #3783, #3784, #3788 and PR #3386 - Fix IO bugs including:
    • reading segarrays containing NaNs and empty segments with hdf5 and parquet
    • reading dataframes containing uint and int segarray columns
    • CSV address sanitizer "use after free" memory issues
  • Issues #3648, #3676, #3682, #3679, #3687, #3666 - Fix multidimensional bugs in sorting, nonzero, repeat, flatten, and unflatten
  • Issue #3367 - Fixes racy condition in SegHead function
  • Issue #3468 - Fixes round trip discrepancies for Index with Categorical values
  • Issue #3649 - Fixes bitshift failures
  • Issue #3467 - Fixes indexing error in DataFrame instantiation

Major Updates

Minor Updates

Auto-Generated Release Notes
Read more