본문으로 건너뛰기

Releases

Release notes for aerospike-py. See all releases on GitHub.

v0.10.11

Released: 2026-05-23

What's Changed

Bug Fixes

  • list/map BY_VALUE 연산 val 필수화: list/map BY_VALUE 연산에서 val 미지정 시 자동으로 Nil이 대입되는 문제를 방지하기 위해 val 파라미터를 필수로 변경 (#373)
  • HLL/map_put_items val 필수화: HLL 및 map_put_items 연산에서 val 미지정 시 자동으로 Nil이 대입되는 문제를 방지하기 위해 val 파라미터를 필수로 변경 (#372)
  • bit 연산 val 필수화: bit 연산에서 val 미지정 시 자동으로 Nil이 대입되는 문제를 방지하기 위해 val 파라미터를 필수로 변경 (#371)
  • list_trim count 필수화: list_trim 연산에서 count 미지정 시 리스트가 자동으로 잘리는 문제를 방지하기 위해 count 파라미터를 필수로 변경 (#370)
  • connect() 취소 교착 및 에러 매핑 개선: connect() 취소 시 발생하는 교착 상태(wedge) 수정, result_code 테이블 완성, batch 에러 매핑 개선 (#369)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.10...v0.10.11


v0.10.10

Released: 2026-05-22

What's Changed

Bug Fixes

  • increment offset validation: increment()에 숫자가 아닌 offset(문자열, 리스트, bool 등)을 전달하면 서버로 전송되기 전에 TypeError를 발생시키도록 수정 (#368)
  • server-timeout error mapping: 서버 측 ResultCode::Timeout(코드 9)과 ResultCode::QueryTimeout(코드 212)이 ServerError 대신 AerospikeTimeoutError로 정확히 매핑되도록 수정 (#368)
  • bit_resize flag guard: BitwiseResizeFlags에 OR 조합된 플래그(예: GROW_ONLY | FROM_FRONT)가 조용히 Default로 무시되던 문제를 ValueError로 거부하도록 수정 (#368)
  • map index/rank range ops: count를 생략한 map_get_by_index_range, map_get_by_rank_range 등이 전체 범위 대신 1개만 반환하던 버그 수정 — open-ended *_range_from variant 사용 (#367)
  • explicit key digest validation: 4-element key tuple의 digest가 20바이트가 아닐 때 조용히 무시하고 digest를 재계산하던 문제를 ValueError로 거부하도록 수정 (#366)
  • BatchRecord.record mutex poisoning: poisoned mutex에서 조용히 복구하던 BatchRecord.record getter가 이제 RustPanicError를 발생시켜 데이터 손상 가능성을 명확히 알림 (#365)
  • sleep_between_retries 정책 누락: WritePolicy, BatchPolicy, QueryPolicy에서 sleep_between_retries 필드가 파싱되지 않아 재시도 간 대기 없이 즉시 재시도하던 문제 수정 (#364)
  • list_increment 타입 검증: 정수가 아닌 val(float, string 등)이 조용히 +1로 변환되던 문제를 ValueError로 거부하도록 수정 (#363)
  • batch keys() 오류 전파: BatchReadHandle.keys()에서 key 변환 실패가 조용히 무시되어 반환 리스트 길이가 배치와 불일치하던 문제 수정 (#363)
  • uint64 정수 지원: 공식 C 클라이언트가 기록한 [2^63, 2^64-1] 범위의 큰 부호 없는 정수가 OverflowError를 발생시키던 문제 수정 (#363)
  • numpy sub-array 데이터 손실: structured-dtype sub-array 필드(예: ('vec','(4,)f8'))가 batch read 시 base_itemsize만큼만 읽혀 나머지 바이트가 손실되던 문제 수정 (#362)

CI/CD

  • cargo test를 CI lint job에 추가하고 test-rust Makefile target 신설 (#362)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.9...v0.10.10


v0.10.9

Released: 2026-05-21

What's Changed

Bug Fixes

  • maintenance docs alignment: Improve consistency and accuracy of public maintenance docs (#361)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.8...v0.10.9


v0.10.8

Released: 2026-05-20

What's Changed

Bug Fixes

  • bug_report UTF-8 handling: Truncate at character boundaries when generating GitHub issue titles so multi-byte UTF-8 text no longer triggers a panic (#360)
  • query OTel span timing: Start the OTel span before the operation so query latency is reflected accurately (previously the span was created after completion and duration was ~0) (#360)
  • query OTel span panic path: Ensure the OTel span is properly closed even on the catch_panic path (#360)
  • client_policy auth_mode validation: Reject unknown auth_mode values instead of silently falling back, and add AUTH_PKI (2) → AuthMode::PKI mapping (#360)
  • partition_filter range validation: Reject begin >= 4096 even when count == 0, matching the documented [0, 4096) contract (#360)
  • runtime consistency: Unify the async Tokio runtime to use enable_io() + enable_time(), matching the sync RUNTIME configuration (#360)
  • type stub bit_operations missing: Re-export the bit_operations submodule in __init__.pyi (present at runtime but missing from the type stub) (#360)
  • docs constants value errors: Correct POLICY_EXISTS_* constant values in the docs to match the actual code (#360)

Docs

  • performance docs readability: Use Tabs components and ASCII bar charts to significantly improve readability of the benchmarks, free-threaded-python, bottleneck-analysis, and overview pages (#359)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.7...v0.10.8


v0.10.7

Released: 2026-05-17

What's Changed

Bug Fixes

  • batch_to_dict_py: Drop errored records from the batch result dict and tighten the retry merge logic so only accurate results are returned (#358)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.6...v0.10.7


v0.10.6

Released: 2026-05-15

What's Changed

Bug Fixes

  • panic-safety hardening: Update the panic-safe wrapper module docs to match actual coverage, and add C-contiguous layout validation for NumPy arrays plus a compile-time layout guard for BatchRecordMirror (#357)

CI/CD

  • Change the daily release schedule from UTC 00:00 to UTC 22:00 (KST 07:00) (#356)
  • Fix docs: freeze version commits cascading into empty releases (#343)
  • Switch release-target change detection from commit-message matching to a path-based allowlist (rust/, src/, pyproject.toml, etc.) to avoid unnecessary releases for CI/docs-only commits (#344)

Documentation

  • Add a Throughput (TPS) section to the Free-Threaded Python performance docs — includes k6 iterations/s and server-side Prometheus metric comparisons (#346)
  • Overhaul the performance docs based on benchmark results — restructured into four pages: overview, benchmarks, free-threaded-python, bottleneck-analysis (EN + KO) (#345)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.5...v0.10.6


v0.10.5

Released: 2026-05-08

What's Changed

Documentation

  • Freeze v0.10.4 documentation (docs freeze)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.4...v0.10.5


v0.10.4

Released: 2026-05-07

What's Changed

Documentation

  • version freeze: Freeze v0.10.3 documentation

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.3...v0.10.4


v0.10.3

Released: 2026-05-06

What's Changed

CI/CD

  • daily-release auto-bump: The daily-release workflow now only auto-bumps minor/patch versions. Major version bumps must be tagged manually by a maintainer. feat!: / BREAKING CHANGE markers still appear in release notes but no longer trigger an automatic major bump. (#342)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.2...v0.10.3


v0.10.2

Released: 2026-05-06

What's Changed

Documentation

  • v0.10.1 docs snapshot: Freeze v0.10.1 docs in Docusaurus versioned_docs to add a per-version documentation archive

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.1...v0.10.2


v0.10.1

Released: 2026-05-05

What's Changed

Documentation

  • v0.10.0 docs snapshot: Freeze the v0.10.0 API docs and guides for Docusaurus versioning

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.10.0...v0.10.1


v0.10.0

Released: 2026-05-04

What's Changed

Features

  • REGEX_ flag constants*: Expose and document REGEX_* flag constants usable with PK regex scans in expression filters (#338)

Improvements

  • PK regex scan tests and docs: Add edge-case tests for PK regex scan and expand docs around the flags=0 default (#340)
  • README Repository Automation section: Add a Repository Automation section to the README describing the automation workflows (#337)

CI/CD

  • Improve the workflow to idempotently create the tracking label before opening an issue when the label does not yet exist (#341)

Dependencies

  • Bump actions/upload-pages-artifact (gha-deps group) (#330)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.9.2...v0.10.0


v0.9.2

Released: 2026-05-04

What's Changed

Documentation

  • version freeze: Freeze v0.9.1 documentation

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.9.1...v0.9.2


v0.9.1

Released: 2026-05-03

What's Changed

Documentation

  • version freeze: Freeze v0.9.0 documentation

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.9.0...v0.9.1


v0.9.0

Released: 2026-05-02

What's Changed

Features

  • batch_apply(): Add a batch_apply() method and BatchUDFPolicy for running UDFs in batch (#334)
  • ScanPolicy: Add a ScanPolicy TypedDict for Python type definitions (#333)
  • BatchPolicy.concurrency: Expose the concurrency option (Sequential/Parallel) on BatchPolicy (#331)
  • BasePolicy.timeout_delay: Expose the timeout_delay field across read/write/batch/query policies (#332)

Docs

  • Reflect the follow-up policy fields and batch_apply in the docs (#336)

CI/CD

  • Add a workflow that automatically creates follow-up issues at PR time for ACE plugins (#335)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.8.0...v0.9.0


v0.8.0

Released: 2026-05-01

What's Changed

Features

  • admin privilege string support: grant_privileges / revoke_privileges now accept standard string privilege names like "read" and "write" in addition to integer codes (#327)
  • BatchReadPolicy / BatchDeletePolicy split: Split the previous single BatchPolicy into BatchReadPolicy and BatchDeletePolicy, enabling finer-grained policy configuration per batch operation (#314)
  • QueryPolicy field expansion: Add expected_duration, replica, include_bin_data, and partition_filter fields to QueryPolicy (#313)
  • ReadPolicy read-path field expansion: Add replica, read_mode_ap, and read_touch_ttl_percent fields to the read-path policy (#312)

Improvements

  • Type stub hardening: Significantly expand .pyi stubs for policy constants and numpy batch APIs to improve IDE autocomplete and type-checker accuracy (#324)
  • Remove legacy expressions alias: Clean up the unused legacy expressions alias on policy TypedDicts (#311)

Documentation

  • API reference policy fields: Reflect the new policy fields in the API docs (#321)
  • SECURITY.md and performance tuning guide: Add a security policy doc, a concurrency performance tuning guide, and a NumPy usage example to the README (#325)
  • QueryPolicy default fixes: Fix incorrect QueryPolicy defaults and restore the sync/async tabs for batch_remove (#322)
  • Repository URL normalization: Replace fork URLs with canonical org URLs across the repo (#328)

CI/CD

  • Apply cargo fmt + clippy checks automatically in pre-commit and CI (#323)
  • Add a performance hot-path review gate at PR creation time (#329)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.7.1...v0.8.0


v0.7.1

Released: 2026-04-30

What's Changed

Improvements

  • batch_write API docs: Reflect batch_write policy fields (key, exists, gen, commit_level, durable_delete, ttl, etc.) in the API reference, and add a write-field precedence table along with usage examples (#310)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.7.0...v0.7.1


v0.7.0

Released: 2026-04-29

What's Changed

Features

  • Full batch_write policy field exposure: batch_write() now supports every write field of aerospike-core 2.0's BatchWritePolicy at both the batch level and per-record (WriteMeta) level. Adds key (send_key), exists, gen, commit_level, durable_delete, and filter_expression, while preserving the existing ttl/gen precedence where per-record meta overrides batch-level policy. Resolves issue #303. (#304)

Improvements

  • Extract POLICY enum mapping helpers: Extract parse_record_exists_action / parse_generation_policy / parse_commit_level into rust/src/policy/mod.rs so write_policy.rs and batch_policy.rs share the same mapping logic. (#304)
  • BatchPolicy TypedDict accuracy: Declare allow_inline, allow_inline_ssd, and respond_all_keys fields in the stub — Rust was already parsing them but they were missing from the stub. (#304)

Behavior change (non-breaking)

  • Previously batch_write(records, policy={"gen": N}) was silently ignored; starting with this release the gen key is interpreted as a POLICY_GEN_* enum index. Since the prior behavior was a no-op there is no compatibility impact, but any pattern that placed generation directly at the batch level should move to per-record WriteMeta.

Follow-up backlog

Additional missing fields on ReadPolicy / QueryPolicy / BasePolicy surfaced during this analysis are tracked separately:

  • #305 ReadPolicy: replica, read_mode_ap, read_mode_sc
  • #306 QueryPolicy: expected_duration, replica, partition_filter, etc.
  • #307 Split BatchReadPolicy / BatchApplyPolicy / BatchRemovePolicy
  • #308 Clean up legacy expressions alias
  • #309 BasePolicy.consistency_level / read_touch_ttl

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.7...v0.7.0


v0.6.7

Released: 2026-04-29

What's Changed

Docs

  • Version docs snapshot: Freeze v0.6.6 docs into Docusaurus versioned_docs

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.6...v0.6.7


v0.6.6

Released: 2026-04-28

What's Changed

Documentation

  • version freeze: Freeze v0.6.5 documentation

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.5...v0.6.6


v0.6.5

Released: 2026-04-26

What's Changed

Documentation

  • v0.6.4 docs snapshot: Freeze v0.6.4 docs in Docusaurus versioned_docs to support browsing previous versions

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.4...v0.6.5


v0.6.4

Released: 2026-04-25

What's Changed

Bug Fixes

  • RustPanicError: Fix panics inside aerospike-core (e.g., unreachable!() on legacy PYTHON_BLOB/JAVA_BLOB particle types) terminating the Python process with SIGABRT. Switched to panic = "unwind" and applied panic-catching at every Client/AsyncClient data-path entry point so panics are safely converted to RustPanicError (a ClientError subclass). (#280) (#301)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.3...v0.6.4


v0.6.3

Released: 2026-04-25

What's Changed

Bug Fixes

  • docs site config: Update the release fetcher and site config repository paths to the new repo path (#300)

Improvements

  • README badges: Refresh README badge links to the latest state (#299)
  • benchmark docs: Remove internal references from benchmark results to tidy up the public docs (#298)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.2...v0.6.3


v0.6.2

Released: 2026-04-24

What's Changed

Documentation

  • Create v0.6.1 docs snapshot (Docusaurus versioned_docs archive)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.1...v0.6.2


v0.6.1

Released: 2026-04-23

What's Changed

Documentation

  • Create v0.6.0 docs snapshot (Docusaurus versioned_docs archive)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.6.0...v0.6.1


v0.6.0

Released: 2026-04-22

What's Changed

Features

  • Internal Stage Profiling: Add an internal per-stage profiling toggle — zero runtime cost when disabled (#291)

Bug Fixes

  • AsyncClient.close unification: Consolidate AsyncClient.close() and __aexit__ into a shared helper so async shutdown behaves consistently (#295)

Improvements

  • BatchWritePolicy sharing optimization: Share BatchWritePolicy across batch_write records via Arc to avoid unnecessary clones (#296)

Documentation

  • Fix CHANGELOG and async troubleshooting code snippets (#297)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.5.13...v0.6.0


v0.5.13

Released: 2026-04-21

What's Changed

Documentation

  • Create v0.5.12 docs snapshot

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.5.12...v0.5.13


v0.5.12

Released: 2026-04-20

What's Changed

Documentation

  • Create v0.5.11 docs snapshot

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.5.11...v0.5.12


v0.5.11

Released: 2026-04-19

What's Changed

Documentation

  • version freeze: Freeze v0.5.10 documentation

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.5.10...v0.5.11


v0.5.10

Released: 2026-04-18

What's Changed

Dependencies

  • ripemd 0.2 / rand 0.10: Update Rust dependencies and adapt to breaking API changes (RngRngExt, thread_rng()rng(), gen_range()random_range()) (#266)

Full Changelog: https://github.com/aerospike-ce-ecosystem/aerospike-py/compare/v0.5.9...v0.5.10