v3.0.0-beta

Wed, 17 Dec 2025 00:00:00 GMT

Features: * [Added Support for ORDER BY DESC on Indexes (RocksDB + TiKV)](https://github.com/surrealdb/surrealdb/pull/5438) * [Added booleans as literal types](https://github.com/surrealdb/surrealdb/pull/5532) * [Implemented `TryFrom` for basic types](https://github.com/surrealdb/surrealdb/pull/5537) * [Enable query planner on DELETE, UPDATE and UPSERT statements](https://github.com/surrealdb/surrealdb/pull/5544) * [Added array functions for natural and/or lexical sorting](https://github.com/surrealdb/surrealdb/pull/5585) * [Implemented reverse scan for table and range iterator](https://github.com/surrealdb/surrealdb/pull/5595) * [Introduced Regex size limit configuration](https://github.com/surrealdb/surrealdb/pull/5638) * [Implemented kind regex](https://github.com/surrealdb/surrealdb/pull/5654) * [Added Filesystem support](https://github.com/surrealdb/surrealdb/pull/5701) * [Added memory limit threshold check to all statements](https://github.com/surrealdb/surrealdb/pull/5704) * [Added cbor encoding and decoding functions](https://github.com/surrealdb/surrealdb/pull/5763) * [Imrpoved RPC protocol implementation](https://github.com/surrealdb/surrealdb/pull/5796) * [Added support for distributed sequences](https://github.com/surrealdb/surrealdb/pull/5583) * [Added SQL base64 encoding/decoding with & without padding](https://github.com/surrealdb/surrealdb/pull/5748) * [Reduced storage and serialisation cost](https://github.com/surrealdb/surrealdb/pull/5806) * [Added support for `INFO FOR` as a subquery](https://github.com/surrealdb/surrealdb/pull/5817) * [Added support for filtering down graph selections with a range selection](https://github.com/surrealdb/surrealdb/pull/5831) * [Optimised index iterators: stop scanning after LIMIT](https://github.com/surrealdb/surrealdb/pull/5858) * [Exposed `QueryType` for `live` and `kill` responses](https://github.com/surrealdb/surrealdb/pull/5870) * [Added RPC live statement options](https://github.com/surrealdb/surrealdb/pull/5878) * [Added LQ `Killed` notification](https://github.com/surrealdb/surrealdb/pull/5876) * [Allowed passing `fields` to RPC `live`](https://github.com/surrealdb/surrealdb/pull/5882) * [Added support for partial array types in schemafull tables](https://github.com/surrealdb/surrealdb/pull/5865) * [Introduced `ALTER FIELD`, update `ALTER TABLE`](https://github.com/surrealdb/surrealdb/pull/5863) * [Ensured NS/DB is set; Ensure transaction is committed or cancelled](https://github.com/surrealdb/surrealdb/pull/5962) * [Added Record type with metadata support](https://github.com/surrealdb/surrealdb/pull/6243) * [Added support for multiple writers in Full-Text search implementation](https://github.com/surrealdb/surrealdb/pull/5571) * [Enhanced Full-Text Search with OR Boolean Operation](https://github.com/surrealdb/surrealdb/pull/6179) * [Added support for range scans on compound indexes (prefix + range)](https://github.com/surrealdb/surrealdb/pull/6210) * [Added support for converting to/from protobufs and flatbuffers](https://github.com/surrealdb/surrealdb/pull/6177) * [Introduced a `None Type`](https://github.com/surrealdb/surrealdb/pull/6339) * [Added `record::is::edge()`](https://github.com/surrealdb/surrealdb/pull/6266) * [Optimised START/LIMIT execution: correct semantics with WHERE/ORDER and early-stop iteration](https://github.com/surrealdb/surrealdb/pull/6354) * [Added support for log files, json log format, and advanced log span filtering](https://github.com/surrealdb/surrealdb/pull/6048) * [Introduced COUNT indexes for constant-time count() queries](https://github.com/surrealdb/surrealdb/pull/6343) * [Added `Infinity` float value](https://github.com/surrealdb/surrealdb/pull/6431) * [Added method syntax for `record::is_edge()`](https://github.com/surrealdb/surrealdb/pull/6306) * [Exposed SurrealDB init as a library entrypoint with pluggable datastore builders](https://github.com/surrealdb/surrealdb/pull/6423) * [Infered `max_frame_size` from `max_message_size`](https://github.com/surrealdb/surrealdb/pull/6439) * [Introduced composable HTTP router factory for embedders](https://github.com/surrealdb/surrealdb/pull/6438) * [Added `string::capitalize` function](https://github.com/surrealdb/surrealdb/pull/6452) * [Added Support of standard deviation and variance in foreign tables](https://github.com/surrealdb/surrealdb/pull/6450) * [Added environment variables for RocksDB BlobDB](https://github.com/surrealdb/surrealdb/pull/6457) * [Use `surrealdb_types::*` in SDK and as core’s public interface.](https://github.com/surrealdb/surrealdb/pull/6402) * [Ensured reverse scan is used only with compatible datastore](https://github.com/surrealdb/surrealdb/pull/6466) * [Introduced CommunityComposer and remove global config state](https://github.com/surrealdb/surrealdb/pull/6471) * [Extended mock syntax to support full range](https://github.com/surrealdb/surrealdb/pull/6483) * [Added `array::sequence` function](https://github.com/surrealdb/surrealdb/pull/6485) * [Added configurable slow-query logging with parameter allow/deny filtering and normalized single-line output](https://github.com/surrealdb/surrealdb/pull/6410) * [Added support for variables in closures and live queries](https://github.com/surrealdb/surrealdb/pull/6455) * [Allow access to `$input` parameter in EVENTS](https://github.com/surrealdb/surrealdb/pull/6468) * [Added support for multi-session support in RPC protocol](https://github.com/surrealdb/surrealdb/pull/6496) * [Added Out of Disk (OOD) Error Handling for RocksDB Backend](https://github.com/surrealdb/surrealdb/pull/6198) * [Implemented Distributed Batch-Based ID Generation for Catalog Entities](https://github.com/surrealdb/surrealdb/pull/6511) * [Fixed CBOR and add `type::of` function.](https://github.com/surrealdb/surrealdb/pull/6523) * [Added GraphQL back and upgrade to the latest async-graphql crates](https://github.com/surrealdb/surrealdb/pull/6507) * [Added `Value::Set` / Set type](https://github.com/surrealdb/surrealdb/pull/6535) * [Added refresh token support to the RPC protocol and SDK](https://github.com/surrealdb/surrealdb/pull/6510) * [Added disk space limits and read-only/deletion-only modes for RocksDB](https://github.com/surrealdb/surrealdb/pull/6530) * [Added support for Surrealism](https://github.com/surrealdb/surrealdb/pull/6522) * [Added support for client-side transactions](https://github.com/surrealdb/surrealdb/pull/6533) * [Added set literal syntax](https://github.com/surrealdb/surrealdb/pull/6556) * [Improved `DEFINE INDEX` validation and diagnostics: enforce field count per index type with precise error spans](https://github.com/surrealdb/surrealdb/pull/6404) * [Memory‑bounded LRU cache for HNSW vectors; remove deprecated MTREE index](https://github.com/surrealdb/surrealdb/pull/6553) * [Stabilized record references & support reference by field](https://github.com/surrealdb/surrealdb/pull/6557) * [Moved strict mode to DB definition, add strict object type](https://github.com/surrealdb/surrealdb/pull/6539) * [Added improvements to views and `$this`, `$parent`](https://github.com/surrealdb/surrealdb/pull/6562) * [Exposed cancellation token in datastore initialization API](https://github.com/surrealdb/surrealdb/pull/6583) * [Use 32‑bit floats by default for HNSW vector indexes](https://github.com/surrealdb/surrealdb/pull/6590) * [Added `ALTER INDEX` statement with `PREPARE REMOVE` for safe index decommissioning](https://github.com/surrealdb/surrealdb/pull/6603) * [Added Default `NS` & `DB`](https://github.com/surrealdb/surrealdb/pull/6623) Bug fixes: * [Fixed array slice iterating over own items](https://github.com/surrealdb/surrealdb/pull/5550) * [Fixed arithmatic wrap panic in duration functions](https://github.com/surrealdb/surrealdb/pull/5569) * [Fixed index out of bounds error](https://github.com/surrealdb/surrealdb/pull/5570) * [Fixed overflow and panics in math functions](https://github.com/surrealdb/surrealdb/pull/5572) * [Improved `ALL/ANYINSIDE` behaviour with strings and arrays of strings](https://github.com/surrealdb/surrealdb/pull/5584) * [Improved over-fetch documents when LIMIT and START used together](https://github.com/surrealdb/surrealdb/pull/5590) * [Fixed Tokeniser fail with successive punctuations characters](https://github.com/surrealdb/surrealdb/pull/5596) * [Fixed the default endpoint for exports and imports](https://github.com/surrealdb/surrealdb/pull/5599) * [Fixed Graph clauses `->(SELECT ...` issue in Rust SDK](https://github.com/surrealdb/surrealdb/pull/5606) * [Fixed select with start and limit for arrays](https://github.com/surrealdb/surrealdb/pull/5623) * [Fixed allowing null bytes in strings](https://github.com/surrealdb/surrealdb/pull/5652) * [Fixed duplicate ID in GraphQL](https://github.com/surrealdb/surrealdb/pull/5680) * [Fixed a bug with conversions to union types like `array | bool`](https://github.com/surrealdb/surrealdb/pull/5685) * [Fixed `rand::time` and other time-related issues](https://github.com/surrealdb/surrealdb/pull/5772) * [Canonicalised allowed paths](https://github.com/surrealdb/surrealdb/pull/5804) * [Normalised decimal values to fix indexing results](https://github.com/surrealdb/surrealdb/pull/5826) * [Fixed concurrent indexing on quoted table names](https://github.com/surrealdb/surrealdb/pull/5833) * [Fixed indexing on filtered count results](https://github.com/surrealdb/surrealdb/pull/5837) * [Ensured arguments for object idiom methods are computed](https://github.com/surrealdb/surrealdb/pull/5848) * [Fixed geometry parsing bug](https://github.com/surrealdb/surrealdb/pull/5866) * [Reworked subqueries/covered expressions](https://github.com/surrealdb/surrealdb/pull/5781) * [Allowed idiom functions to be restricted by capabilities](https://github.com/surrealdb/surrealdb/pull/5846) * [Fixed `regex_non_string.surql` language-test for UUIDs](https://github.com/surrealdb/surrealdb/pull/5852) * [Deprecate implicit `LET`](https://github.com/surrealdb/surrealdb/pull/6023) * [Fixed memory usage and performance of Garbage Collection on old databases](https://github.com/surrealdb/surrealdb/pull/6017) * [Fixed method calls on negative numbers](https://github.com/surrealdb/surrealdb/pull/6026) * [Fixed JSON multipoint parsing](https://github.com/surrealdb/surrealdb/pull/6041) * [Fixed START clause with WHERE; safer optimisation](https://github.com/surrealdb/surrealdb/pull/6201) * [Fixed LIVE SELECT parsing with type::table()](https://github.com/surrealdb/surrealdb/pull/6230) * [Limit fields in live query delete notifications](https://github.com/surrealdb/surrealdb/pull/6331) * [Fixed invalid table view results with sum() returning 0](https://github.com/surrealdb/surrealdb/pull/6328) * [Std index shouldn’t fail if value already exists](https://github.com/surrealdb/surrealdb/pull/6155) * [Fixed potential deadlock in distributed sequence allocation](https://github.com/surrealdb/surrealdb/pull/6337) * [Introduced a NONE type](https://github.com/surrealdb/surrealdb/pull/6339) * [Replaced BTreeDocIds with SeqDocIds in M-Tree, remove ANALYZE, use Strand for RecordKey::String](https://github.com/surrealdb/surrealdb/pull/6336) * [Added edge name binding tests](https://github.com/surrealdb/surrealdb/pull/6338) * [Enabled referencing fields in default value for defined fields.](https://github.com/surrealdb/surrealdb/pull/6341) * [Added http connection pooling to maximise throughput.](https://github.com/surrealdb/surrealdb/pull/6340) * [Removed dec when casting decimal to a string, allow string casting from None and Null](https://github.com/surrealdb/surrealdb/pull/6275) * [Added idiom fallback function](https://github.com/surrealdb/surrealdb/pull/6369) * [Added planner regression test for `ORDER BY/LIMIT` on compound index filters](https://github.com/surrealdb/surrealdb/pull/6371) * [Restricted supported types on id field](https://github.com/surrealdb/surrealdb/pull/6372) * [Included event errors in output](https://github.com/surrealdb/surrealdb/pull/6374) * [Fixed incorrect ORDER BY LIMIT results on multi-column index scans](https://github.com/surrealdb/surrealdb/pull/6376) * [Improved Parameterisation of statements](https://github.com/surrealdb/surrealdb/pull/6347) * [Added notification for caller when a connection is dropped in Rust SDK](https://github.com/surrealdb/surrealdb/pull/6387) * [Fixed warnings in language tests](https://github.com/surrealdb/surrealdb/pull/6401) * [Fixed ignored insert with unique index creating a record when index violated](https://github.com/surrealdb/surrealdb/pull/6344) * [Fixed strings, identifiers and escape sequences](https://github.com/surrealdb/surrealdb/pull/6417) * [Fixed Windows file path handling in bucket operations](https://github.com/surrealdb/surrealdb/pull/5925) * [Fixed WebSocket limits configurable and enforce max message size](https://github.com/surrealdb/surrealdb/pull/6416) * [Fixed possible invalid formatting of idioms](https://github.com/surrealdb/surrealdb/pull/6422) * [Fixed aliases not being respected in views](https://github.com/surrealdb/surrealdb/pull/6442) * [Fixed invalid formatting of statement expressions within general expressions](https://github.com/surrealdb/surrealdb/pull/6470) * [Ensured subqueries and blocks have consistent outputs](https://github.com/surrealdb/surrealdb/pull/6456) * [Added `CONTAINS/INSIDE` planning consistent with substring semantics](https://github.com/surrealdb/surrealdb/pull/6264) * [Ensured destructuring with computed fields returns correct output](https://github.com/surrealdb/surrealdb/pull/6481) * [Improve behavior of group by and improve performance and robustness of views](https://github.com/surrealdb/surrealdb/pull/6518) * [Fixed formatting bugs related to empty identifiers](https://github.com/surrealdb/surrealdb/pull/6497) * [Removed Force Index mechanism and unify index building across all platforms](https://github.com/surrealdb/surrealdb/pull/6500) * [fixed the info rpc](https://github.com/surrealdb/surrealdb/pull/6506) * [Make Java SDK compatible with SurrealDB `v3.0`](https://github.com/surrealdb/surrealdb/pull/6519) * [Fixed table serialization bug](https://github.com/surrealdb/surrealdb/pull/6526) * [Fixed `LIVE DIFF` response data structure](https://github.com/surrealdb/surrealdb/pull/6551) * [Ensured all statements return a value](https://github.com/surrealdb/surrealdb/pull/6548) * [Fixed TableCheck output for `TYPE RELATION / NORMAL`](https://github.com/surrealdb/surrealdb/pull/6532) * [Fixed SELECT with SPLIT so ORDER BY and START/LIMIT apply after splitting](https://github.com/surrealdb/surrealdb/pull/6561) * [Fixed surrealism crates](https://github.com/surrealdb/surrealdb/pull/6563) * [Added exact hint when path is deprecated](https://github.com/surrealdb/surrealdb/pull/6488) * [Fixed Number hash to use consistent value hashing](https://github.com/surrealdb/surrealdb/pull/6572) * [Fixed OOM crash in COUNT index on large datasets by batching key retrieval](https://github.com/surrealdb/surrealdb/pull/6601) * [Fixed provided vars not being attached to context in surrealism ‘sql\_with\_vars’ function](https://github.com/surrealdb/surrealdb/pull/6596) * [Fixed literal objects allow unknown keys](https://github.com/surrealdb/surrealdb/pull/6638) Performance and optimisations: * [Fetch ns, db, table, and fields once](https://github.com/surrealdb/surrealdb/pull/6677) * [Reduced heap modifications in `MemoryOrderedLimit`](https://github.com/surrealdb/surrealdb/pull/5895) * [Optimise index scans (descending) order and limit batches sizes](https://github.com/surrealdb/surrealdb/pull/6228) * [Yield during CF/GC collection](https://github.com/surrealdb/surrealdb/pull/6168) * [Unified lookups for graph & references](https://github.com/surrealdb/surrealdb/pull/6273) * [Optimise some array methods](https://github.com/surrealdb/surrealdb/pull/6047) * [Renamed Context and add trace level instrumentation.](https://github.com/surrealdb/surrealdb/pull/6672) * [Invert expression value relation and move ast types out of value.](https://github.com/surrealdb/surrealdb/pull/6079) Storage/index format and protocol: * [Normalised numeric key encoding to unify ordering](https://github.com/surrealdb/surrealdb/pull/6253) * [Introduced DecimalLexEncoder for Number](https://github.com/surrealdb/surrealdb/pull/6213) * [Used IndexId for Index keys](https://github.com/surrealdb/surrealdb/pull/6314) * [Stored keys using IDs for Namespace/Database](https://github.com/surrealdb/surrealdb/pull/6214) * [Upgraded surrealdb-protocol to `0.4.0`](https://github.com/surrealdb/surrealdb/pull/6260) * [Improved key-value storage engine layer](https://github.com/surrealdb/surrealdb/pull/6581) Observability and developer experience: * [Implemented Slow logs](https://github.com/surrealdb/surrealdb/pull/6182) * [Tokio Console integration](https://github.com/surrealdb/surrealdb/pull/6107) Security/networking: * [Reject IPs resolving to forbidden net targets](https://github.com/surrealdb/surrealdb/pull/6052) * [DNS resolution on Context::check\_allowed\_net](https://github.com/surrealdb/surrealdb/pull/6101) * [Configurable user agent for HTTP requests](https://github.com/surrealdb/surrealdb/pull/6169) Breaking changes: * [The rand::time function now returns a value between 0000-01-01T00:00:00Z and 9999-12-31T23:59:59Z instead of between 1970-01-01T00:00:00Z and +262142-12-31T23:59:59Z](https://github.com/surrealdb/surrealdb/pull/5772) * [Removed legacy SEARCH full‑text index implementation; consolidate on FULLTEXT](https://github.com/surrealdb/surrealdb/pull/6325) * [Dropped get() id special behaviour for complex record ids](https://github.com/surrealdb/surrealdb/pull/6241) * [Changed Math functions to no longer return `NONE`](https://github.com/surrealdb/surrealdb/pull/6324) * [Removed like operators](https://github.com/surrealdb/surrealdb/pull/5989) * [Error for deprecated let-less let syntax](https://github.com/surrealdb/surrealdb/pull/6321) * [Improved consistency in behaviour of functions](https://github.com/surrealdb/surrealdb/pull/6348) * [Replaced `` type with computed fields](https://github.com/surrealdb/surrealdb/pull/6240) * [Renamed `type::thing` to `type::record`](https://github.com/surrealdb/surrealdb/pull/6486) * [Renamed `rand::guid()` function to `rand::id()`](https://github.com/surrealdb/surrealdb/pull/6451) * [Renamed additional `type::thing` to `type::record`](https://github.com/surrealdb/surrealdb/pull/6505) * [Removed deprecated authentication statements](https://github.com/surrealdb/surrealdb/pull/6037) * [Removed FoundationDB storage engine](https://github.com/surrealdb/surrealdb/pull/6578) * [Format with backticks, deprecating angle brackets](https://github.com/surrealdb/surrealdb/pull/6642) * [Added batched group commit functionality for RocksDB](https://github.com/surrealdb/surrealdb/pull/6614) Workflow improvements: * [Refactored depencies to use workspace dependencies](https://github.com/surrealdb/surrealdb/pull/5464) * [Added more language tests and ports to the language suite](https://github.com/surrealdb/surrealdb/pull/5525) * [Added `/data` and `/logs` directories to the Docker container](https://github.com/surrealdb/surrealdb/pull/5575) * [Added Finnish to snowball filte](https://github.com/surrealdb/surrealdb/pull/5601) * [Move `yield_now` to after work has been done](https://github.com/surrealdb/surrealdb/pull/5612) * [Added additional clippy performance, soundness, and clarity lints](https://github.com/surrealdb/surrealdb/pull/5805) * [Ensured a checksum is generated for Windows binaries](https://github.com/surrealdb/surrealdb/pull/5807) * [Fixed JavaScript SDK compatibility tests](https://github.com/surrealdb/surrealdb/pull/5811) * [Made sub-crates inherit workspace lints](https://github.com/surrealdb/surrealdb/pull/5813) * [Ensured Clippy is applied to all sub-crates](https://github.com/surrealdb/surrealdb/pull/5843) * [Added debugger setup instructions](https://github.com/surrealdb/surrealdb/pull/5873) * [Removed `Error::Ignore` variant, moving into its own type](https://github.com/surrealdb/surrealdb/pull/5864) * [Removed duplicate tagging job](https://github.com/surrealdb/surrealdb/pull/5857) * [Improved test schema parsing and error handing](https://github.com/surrealdb/surrealdb/pull/5861) * [Implement a sub-command to run upgrade tests with the language test suite](https://github.com/surrealdb/surrealdb/pull/5752) * [Reused cargo workspace configuration](https://github.com/surrealdb/surrealdb/pull/5897) * [Removed redundant key encoding & made `Transaction` dyn compatible](https://github.com/surrealdb/surrealdb/pull/5892) * [Drop deprecated APIs in the SDK](https://github.com/surrealdb/surrealdb/pull/5937) * [Remove unnecessary Killed notification from the API](https://github.com/surrealdb/surrealdb/pull/5963) * [Moved errors over to use `anyhow` for future spliting of errors](https://github.com/surrealdb/surrealdb/pull/5923) * [Split AST & Logical Plan into separate components](https://github.com/surrealdb/surrealdb/pull/5977) * [Added cross-compile in CL as debug](https://github.com/surrealdb/surrealdb/pull/5983) * [Fixed Python SDK tests.](https://github.com/surrealdb/surrealdb/pull/5967) * [Fixed language tests floating point comparisons](https://github.com/surrealdb/surrealdb/pull/5868) * [Pinned the rust toolchains for CI](https://github.com/surrealdb/surrealdb/pull/5941) * [Improved authenticate configuration support in the testing suite](https://github.com/surrealdb/surrealdb/pull/5988) * [Improved metrics consistency](https://github.com/surrealdb/surrealdb/pull/6073) * [Add JSON serialization & deserialization tests](https://github.com/surrealdb/surrealdb/pull/6042) * [TIKV client update to `0.3.0-surreal.3`](https://github.com/surrealdb/surrealdb/pull/6010) * [Removed cedar-policy dependency](https://github.com/surrealdb/surrealdb/pull/6016) * [Overwrite by default during data import](https://github.com/surrealdb/surrealdb/pull/5971) * [Prepare client-side transactions](https://github.com/surrealdb/surrealdb/pull/6013) * [Default to FoundationDB `7.3`](https://github.com/surrealdb/surrealdb/pull/6424) * [Modified allocation tracking behaviour and implementation](https://github.com/surrealdb/surrealdb/pull/6636) * [Improve context cancellation checking with adaptive back-off strategy for better OOM protection](https://github.com/surrealdb/surrealdb/pull/6632) * [Improved Surrealism Wasm](https://github.com/surrealdb/surrealdb/pull/6633)