diff --git a/modules/ROOT/pages/bolt-compatibility.adoc b/modules/ROOT/pages/bolt-compatibility.adoc index 5037f07..ce19852 100644 --- a/modules/ROOT/pages/bolt-compatibility.adoc +++ b/modules/ROOT/pages/bolt-compatibility.adoc @@ -8,12 +8,19 @@ As soon as a decision is made, it will be documented here.]] == Bolt 6.x -[cols="^,^",options="header"] +[cols="^,^,^",options="header"] |=== | Neo4j version | Bolt `6.0` +| Bolt `6.1` -| `2025.10` - current{fn-version-plus} + +| `2025.10` - `2026.08` +| `x` +| + +| `2026.09` - current{fn-version-plus} +| `x` | `x` |=== diff --git a/modules/ROOT/pages/bolt/message.adoc b/modules/ROOT/pages/bolt/message.adoc index 1edc295..81e524d 100644 --- a/modules/ROOT/pages/bolt/message.adoc +++ b/modules/ROOT/pages/bolt/message.adoc @@ -2171,6 +2171,12 @@ RECORD [{"point": [1, 2]}, "example_data", 123] The sections below list the changes of messages compared to the previous version. Please also check for changes in xref:./structure-semantics.adoc#structure-summary[Structure Semantics]. +[[messages-summary-61]] +=== Version 6.1 + +** Update to PackStream `1.1` (introducing `UUID` type) + + [[messages-summary-6]] === Version 6.0 diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index c11f9f1..630076f 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -4,7 +4,24 @@ PackStream is a binary presentation format for the exchange of richly-typed data. It provides a syntax layer for the Bolt messaging protocol. -== Version 1 +== Versioning + +PackStream is versioned independently of the bolt protocol. +Only one version of PackStream is supported in each bolt protocol version. + + +|=== +|Bolt Protocol Version |PackStream Version + +|< 6.0 +|1.0 + +|>= 6.1 +| 1.1 + +|=== + +== Definition PackStream is a general purpose data serialisation format, originally inspired by (but incompatible with) link:https://msgpack.org/[MessagePack]. @@ -38,6 +55,9 @@ The core data types are described in the table below. | <> | unicode text, *UTF-8* +| <> +| 128-bit identifier + | <> | ordered collection of values @@ -493,6 +513,20 @@ N.B. While the unsigned 32-bit integer following `D3` could hold a bigger number | `D0 12 47 72 C3 B6 C3 9F 65 6E 6D 61 C3 9F 73 74 C3 A4 62 65` |=== +[[data-type-uuid]] +=== `UUID` +label:new[PackStream 1.1] + +A UUID (Universally Unique Identifier, https://www.rfc-editor.org/rfc/rfc9562.html[RFC 9562]) is a 128-bit value used to uniquely identify information. +UUIDs are commonly represented as a hyphenated hexadecimal string such as `550e8400-e29b-41d4-a716-446655440000`, which encodes the 16 bytes in big-endian order across five groups separated by hyphens. + +A UUID type is represented with marker byte `E0` followed by the 16 bytes that represent the UUID as defined in RFC 9562. + +For example the UUID `550e8400-e29b-41d4-a716-446655440000` is represented as follows: + +``` +E0 55 0E 84 00 E2 9B 41 D4 A7 16 44 66 55 44 00 00 +``` [[data-type-list]] === `List` @@ -876,3 +910,16 @@ The *tag byte* is used to identify the type or class of the structure and may ho PackStream itself does not define semantics for different structures. Instead, refer to the xref:bolt/structure-semantics.adoc[] for the Bolt version in question. + +[[changelog]] +== Changelog + +[[packsteam-summary-1-1]] +=== Version 1.1 + +** Introduction of `UUID` type. + +[[packstream-summary-1]] +=== Version 1.0 + +** Initial version consisting of `NULL`, `Boolean`, `Integer`, `Float`, `Bytes`, `String`, `List` `Dictionary` and `Structure` types.