v1.4.0

Tue, 09 Apr 2024 00:00:00 GMT

Features:

* Added a warning message about debug builds in CLI start.
* Moved JWKS cache storage to memory.
* Overhauled force implementation.
* Added `DEFINE TABLE ... RELATION`.
* Allowed RPC calls to be made over an HTTP connection, not just WebSocket.
* Allowed the highlighter to only highlight the matching searched token rather than the whole term.
* Added an `INCLUDE ORIGINAL` option to change-feeds.
* Added an `insert` method to the Rust SDK to allow bulk inserts.

Bug fixes:

* Fixed export generating unparsable code with the new parser.
* Eliminated a potential panic in MsgPack format implementation.
* Fixed `string::is::longitude` RegEx.
* Improved CBOR decoding.
* Fixed relation type parsing.
* Fixed handling of empty array on index.
* Allowed legacy headers in CORS.
* Allowed `surreal upgrade` to detect when upgrading to the same version and return early.
* Fixed certain environment variables to allow configuration at runtime.
* Reduced the byte size of datetime and uuid types using CBOR format.
* Fixed `array::group` in a group by query.

Performance improvements:

* Improved query aggregation handling.

#### Bulk insert support in the Rust SDK

This was one of the frequently requested features. While this was already possible using the `query`
method, this release adds an `insert` method that makes it more convenient.

```rust
db.insert(Resource::from("person"))
.content(vec![
User {
id: thing("person:tobie")?,
name: "Tobie",
settings: Settings {
active: true,
marketing: false,
},
},
User {
id: thing("person:jaime")?,
name: "Jaime",
settings: Settings {
active: true,
marketing: true,
},
},
])
.await?;
```