v2.4.0

Mon, 24 Nov 2025 00:00:00 GMT

Features:

* [Added CONTAINS/INSIDE planning consistent with substring semantics; use indexes only for flattened or set-based operators](https://github.com/surrealdb/surrealdb/pull/6264)
* [Made WebSocket limits configurable](https://github.com/surrealdb/surrealdb/pull/6478)
* [Added 32-bit floats by default for HNSW vector indexes](https://github.com/surrealdb/surrealdb/pull/6590)
* [Exposed and tune RocksDB BlobDB options via environment variables](https://github.com/surrealdb/surrealdb/pull/6457)
* [Aligned RocksDB blob defaults with upstream and make blob compression optional](https://github.com/surrealdb/surrealdb/pull/6464)
* [Added configurable slow-query logging with parameter allow/deny filtering and normalized single-line output](https://github.com/surrealdb/surrealdb/pull/6410)
* [Added disk space limits and read-only/deletion-only modes for RocksDB](https://github.com/surrealdb/surrealdb/pull/6530)
* [Added notification caller when a connection is dropped](https://github.com/surrealdb/surrealdb/pull/6387)
* [Added COUNT Index Support with Compaction System and Enable Concurrent Index Building for WASM](https://github.com/surrealdb/surrealdb/pull/6492)
* [Added minimal implementation for `2.0 → 3.0` migration tool](https://github.com/surrealdb/surrealdb/pull/6555)
* [Ensured reverse scan is used only with compatible datastore](https://github.com/surrealdb/surrealdb/pull/6466)

Bug fixes:

* [Fixed `SELECT` with `SPLIT` so `ORDER BY` and `START/LIMIT` apply after splitting](https://github.com/surrealdb/surrealdb/pull/6561)
* [Fixed OOM crash in `COUNT` index on large datasets by batching key retrieval](https://github.com/surrealdb/surrealdb/pull/6601)
* [Fixed insert ignore with unique index still creates a record when index violated](https://github.com/surrealdb/surrealdb/pull/6344)

Breaking changes:

* [CONTAINS/INSIDE planning made consistent with substring semantics](https://github.com/surrealdb/surrealdb/pull/6264) - see language test example [in this file](https://github.com/surrealdb/surrealdb/pull/6264/files#diff-a96a7db94b94e106ee5ec5c333b49d35430f5e9495c47b05c17584580d058856R51) with details on using the CONTAINSANY operator with indexes