Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:38
146d28b

Release Date: October 10, 2026

First stable release of the Aerospike Python Native Client (aerospike-native), the low-level client that the Aerospike Python SDK is built on. Built on Aerospike Rust client core 3.0.0.

Wheels are published for Python 3.11 – 3.15 on Linux (x86_64, aarch64; manylinux_2_28), macOS (x86_64, arm64), and Windows (x86_64), plus free-threaded Python 3.14t and 3.15t on Linux and macOS arm64.

Breaking Changes

These apply when upgrading from the aerospike-async 0.6.0 alphas.

  • Rename the package from aerospike-async to aerospike-native. Install aerospike-native and import aerospike_native instead of aerospike_async.
  • Require Python 3.11 or later. 32-bit wheels are no longer published.
  • Return operate() results per operation: record.results holds one value per operation in order (None for writes), and a bin touched by several operations holds a list of the per-operation values.
  • Make ResultCode an IntEnum with human-readable descriptions, and carry the result code on client-side errors. [CLIENT-5492]
  • Raise CommitFailedError for transaction commit failures instead of a bare ServerError, and raise a typed BatchFailedError carrying the per-key outcomes when a batch fails.
  • Raise RuntimeError instead of PanicException when the core panics on a blocking call.
  • Return an IndexTask from create_index. Task waits now raise when their deadline passes.
  • Accept a raw integer for the read-touch TTL percent and let the server validate it. Out-of-range values raise an AerospikeError-family ValueError. [CLIENT-4994]
  • Remove FilterExpression.device_size() and FilterExpression.memory_size(), and the server-version supports_* predicates.
  • Remove MetricsPolicy.histogram_type. Use latency_shift instead.

New Features

  • Support server-side AEL parsing. [CLIENT-4878]
  • Support server-side index selection, including QueryPlan.where_flags, include_bin_data, and index_range_bytes. [CLIENT-5011] [CLIENT-5207] [CLIENT-5053]
  • Support string operations and expressions, including string_append / string_prepend, the 1-argument snip(start), the CREATE_ONLY and UPDATE_ONLY string write flags, and write flags on regex_replace. [CLIENT-4827] [CLIENT-5358] [CLIENT-5368]
  • Expose the list join operation and expression. [CLIENT-5339]
  • Expose the bit base64-encode operation and expression. [CLIENT-5348]
  • Accept collection, bit, HLL, string, and path operations in background query_operate. [CLIENT-5575]
  • Support set indexes with create_set_index and CTX.to_bytes, and add IndexType.SET, IndexType.BLOB, and IndexType.INTEGER. [CLIENT-4318]
  • Expose client metrics collected by the core. [CLIENT-5036] [CLIENT-5205]
  • Enable dynamic configuration. [CLIENT-5046]
  • Surface extended server error detail (server_message, exp_trace) on errors and on BatchRecord. [CLIENT-4792]
  • Improve client-side error messages and expose Operation.bin_name. [CLIENT-4791]
  • Expose a typed in_doubt on client-side exceptions, and surface the transaction in-doubt flag. [CLIENT-5177]
  • Surface the ROLL_FORWARD_ABANDONED commit status. [CLIENT-5413]
  • Expose the server-reported cluster name. [CLIENT-5498]
  • Identify the client on the wire through the user agent, and support setting app_id. [CLIENT-5060]
  • Add transparent read and write coalescing and a get_many / put_many window API for async throughput. [CLIENT-5168]
  • Expose the remaining batch sub-policy fields (commit_level, batch-apply TTL, delete generation policy), BatchPolicy.concurrency, and read_mode_ap / read_mode_sc on BatchPolicy.from_fields. [CLIENT-5240] [CLIENT-5319]
  • Add partition_filter_sync() for the blocking query path. [CLIENT-5191]
  • Expose close() on batch streams. [CLIENT-5024]
  • Add SortedMap to declare a map bin key-ordered on a plain write.
  • Add BatchUDFOp for applying UDFs in heterogeneous batches.
  • Add FilterExpression.exclusive.
  • Expose Key.partition_id, ExecuteTask.task_id, and Node.info_blocking.
  • Expose WritePolicy.records_per_second, WritePolicy.xdr, timeout_delay, and the transaction verify and roll policies.
  • Expose the full set of TLS options supported by rustls, including for_login_only, and add AuthMode.EXTERNAL_INSECURE.
  • Publish Python 3.15 and free-threaded 3.15t wheels.

Improvements

  • Reduce per-operation overhead on the async completion path. [CLIENT-4987]
  • Deliver batch results in place, with a per-row async hook. [CLIENT-5461]
  • Update logging for GA. [CLIENT-5008]
  • Speed up free-threaded builds by skipping pyclass freelists, whose mutex serialized allocation, and by removing an import convoy.
  • Hash Key by digest, and accept a bins dict in BatchWriteOp to skip per-bin Operation objects.
  • Build Linux wheels on manylinux_2_28, lowering the glibc floor to 2.28.
  • Generate the policy and flag type stubs from the Rust sources.
  • Require uvloop 0.23 for its free-threading race fix.
  • Add SubCode.OPNOT_STRING_B64_INVALID, SubCode.OPNOT_STRING_REGEX_LIMIT_EXCEEDED, and INVALID_ENCODING.

Bug Fixes

  • Fix inverted list reads in CDT expressions, which returned the non-inverted selection. [CLIENT-4984]
  • Fix a batch with one invalid-namespace key failing the entire batch. [CLIENT-5172]
  • Fix the to_string expression returning a parameter error on server 8.1.3 and later. [CLIENT-5186]
  • Fix the per-namespace bytes-received metric always recording 0. [CLIENT-5425]
  • Fix server error messages showing only the result-code name. [CLIENT-5492]
  • Fix BatchPolicy.filter_expression never reaching the server.
  • Stop inferring a filter miss from an empty bin map.

Full Changelog: v0.6.0-alpha.6...v1.0.0