Skip to content
Agents tracked: 378 Downloads (7d): 244M down 5.7% GitHub stars: 8.4M VS Code installs: 151M Releases (7d): 407 Agent status: 1 with issues Updated Oct 10, 2026

Cocoindex changelog: what's new each month

Every stable Cocoindex release summarised by month: the highlights, new features, improvements, fixes and anything you need to act on. 3 months covered; the current month updates daily.

October 2026 · so far

1 release: 1.0.25

October brought performance improvements and memory optimizations across Cocoindex, along with enhancements to the Rust SDK and GPU handling capabilities.

Highlights

  • GPUPool rewritten in Rust with support for acquiring multiple GPUs at once and improved event loop reliability.
  • Significant memory reduction for declared target states through early release and encoded row storage.
  • Fingerprint computation now ~9× faster by computing plain data natively.
  • New memo state recollection option for states that depend on function body reads.
  • Target handlers can now skip reconciliation for unchanged values to improve performance on partial updates.

New

  • Environment.close() method to explicitly release LMDB environments and allow reopening without waiting for garbage collection.
  • MemoStateOutcome.recollectafterrun option to have memo state functions re-collected after a re-run when their results depend on what the function read.
  • Rust SDK support for per-item memoization with #[cocoindex::function(memo, batching)] decorator.
  • contextkey! macro for Rust SDK.
  • Connector schemas can now be derived from Rust row types via SchemaFields and TableSchema::fromrow.
  • tracksvaluefingerprint option for target handlers to skip reconcile() calls for rows with unchanged values.

Improved

  • GPUPool can now acquire multiple whole GPUs at once instead of single GPUs.
  • GPUPool no longer loses wake-ups across event loops.
  • Performance improved for large target updates.
  • Declared target states now released immediately after pre-commit instead of held in memory.
  • Python row values stored in encoded form to reduce memory footprint.
  • Fingerprint computation for both fingerprintobject and memo fingerprints now uses native plain data handling.

Fixed

  • Large component memory usage reduced by ~1.33 GiB on a 1.14 M-row component through optimized state storage.

September 2026

4 releases: 1.0.21 → 1.0.24

September brought critical fixes for concurrency and memoization, along with API changes for custom target connectors. The month focused on reliability improvements across the engine and state management.

Action needed
  • Custom target connector sinks: returning ChildTargetDef lists is deprecated in favor of per-action child slots.
  • Sinks with callbacks that compare equal but differ in type no longer share sink identity.
  • Callbacks that cannot be weak-referenced (e.g. NamedTuple instances) now raise TypeError.

Highlights

  • Fixed long App.update() runs on Linux that could hang permanently due to LMDB write transaction issues.
  • Resolved spurious re-execution of memoized functions under concurrency and during notebook reloads.
  • Updated custom target connector sink API to use per-action child slots instead of returning lists.
  • Fixed embedding response alignment in LiteLLM integration.
  • Added Lua syntax-aware code splitting support via tree-sitter grammar.

New

  • Lua language support for syntax-aware code splitting.
  • Per-action child slots for container sinks (TargetActionSink.fromfnwithchildren and fromasyncfnwithchildren).
  • Explicit component activity tracking independent of reference counting.

Improved

  • Target action sinks now use value-based identity instead of previous behavior.
  • Memoized components now execute once when run concurrently with the same memo key, with queued runs reusing results.
  • Memoization now persists through notebook cell re-runs and importlib.reload operations.
  • Child target provider generation is now properly refreshed for newly created target states.
  • Component exception handlers receive the original typed Python exception instead of wrapping.
  • Event loop no longer blocks during iterator cleanup.

Fixed

  • Schema reconciliation for Neo4j and FalkorDB during full reprocessing.
  • Column DDL failures in Doris are no longer silently swallowed.
  • Windows app target path parsing in CLI.
  • Child-existence reconciliation logic on demote-only deletes.
  • Merged target-action batch failures now confined to failing component instead of propagating.
  • LiteLLM embedding responses misaligned with inputs.

August 2026

2 releases: 1.0.19 → 1.0.20

August brought critical stability fixes and security updates to Cocoindex. The month focused on resolving issues with indexing consistency and memoization reliability.

Highlights

  • Fixed target invalidation preservation through memoization to prevent stale cached results
  • Resolved inverted index corruption on component deletion that could cause data inconsistency
  • Patched critical security vulnerabilities in dependencies (CVSS 7.5 DoS and XSS issues)
  • Improved schema consistency handling during failed column migrations

New

  • New example demonstrating meeting notes to knowledge graph conversion using SurrealDB

Improved

  • Fingerprint key canonicalization now deterministic for consistent memoization
  • Column schema evolution in LanceDB now applies under full reprocess for data integrity
  • Dependency chain upgraded with security alerts cleared

Fixed

  • Inverted target-owner index now correctly cleared on component deletion
  • SQLite schema consistency preserved when column migrations fail
  • Memoization cache now properly invalidates targets to prevent stale data
  • Security vulnerabilities in SurrealDB (quinn-proto DoS) and ammonia (XSS) patched

Summaries are written automatically from the official release notes (full changelog ↗); check the original notes before relying on a detail. Cocoindex: pricing, features and alternatives · All changelogs