From 550b0addac388bb4babdbdb1376319a607d571a1 Mon Sep 17 00:00:00 2001 From: GW Date: Thu, 2 Jul 2026 10:55:16 +0100 Subject: [PATCH 1/6] Add UUID packstream type --- modules/ROOT/pages/packstream/index.adoc | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index c11f9f1..23feeaa 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -38,6 +38,9 @@ The core data types are described in the table below. | <> | unicode text, *UTF-8* +| <> +| 128-bit identifier + | <> | ordered collection of values @@ -493,6 +496,57 @@ 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[Introduced in bolt 6.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 +``` + +==== Unsupported Bolt Versions +Clients that negotiate a protocol version which does not support the UUID type will instead +recieve a backwards compatible placeholder. The placeholder value depends on which version +has been negotiated. + +===== 5.8 and earlier +Clients that have negotiated version 5.8 or earlier will instead recieve a Dictionary type as a placeholder with +the following content: + + +---- +{"originalType": "UUID", "reason": "UNKNOWN_TYPE"} +---- + + +===== 6.0 +Clients that have negotiated version 6.0 will receive a +xref:bolt/structure-semantics.adoc#structure-unsupported-type[`Unsupported Type`] with the following values: + +---- +{ + name: "UUID", + minimum_protocol_major: 6, + minimum_protocol_minor: 1, + extra: {} +) +---- + + [[data-type-list]] === `List` From 0050a46d6e986ec7a8c65136c75de2ed97ecb2be Mon Sep 17 00:00:00 2001 From: GW Date: Thu, 17 Sep 2026 13:25:31 +0100 Subject: [PATCH 2/6] new sentences, new lines, new life --- modules/ROOT/pages/packstream/index.adoc | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index 23feeaa..a9fceae 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -500,28 +500,20 @@ N.B. While the unsigned 32-bit integer following `D3` could hold a bigger number === `UUID` label:new[Introduced in bolt 6.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 (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. +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: +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 ``` ==== Unsupported Bolt Versions -Clients that negotiate a protocol version which does not support the UUID type will instead -recieve a backwards compatible placeholder. The placeholder value depends on which version -has been negotiated. +Clients that negotiate a protocol version which does not support the UUID type will instead receive a backwards compatible placeholder. +The placeholder value depends on which version has been negotiated. ===== 5.8 and earlier Clients that have negotiated version 5.8 or earlier will instead recieve a Dictionary type as a placeholder with From ebd53d9e8af237b71f3c87b293cdf6cb8d277460 Mon Sep 17 00:00:00 2001 From: GW Date: Thu, 17 Sep 2026 14:08:03 +0100 Subject: [PATCH 3/6] Remove explicit version headers. Add PackStream versioning description and supported bolt versions. Add section for packstream changes --- modules/ROOT/pages/packstream/index.adoc | 63 ++++++++++++------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index a9fceae..61827c4 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]. @@ -498,7 +515,7 @@ N.B. While the unsigned 32-bit integer following `D3` could hold a bigger number [[data-type-uuid]] === `UUID` -label:new[Introduced in bolt 6.1] +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. @@ -510,35 +527,6 @@ For example the UUID `550e8400-e29b-41d4-a716-446655440000` is represented as fo ``` E0 55 0E 84 00 E2 9B 41 D4 A7 16 44 66 55 44 00 00 ``` - -==== Unsupported Bolt Versions -Clients that negotiate a protocol version which does not support the UUID type will instead receive a backwards compatible placeholder. -The placeholder value depends on which version has been negotiated. - -===== 5.8 and earlier -Clients that have negotiated version 5.8 or earlier will instead recieve a Dictionary type as a placeholder with -the following content: - - ----- -{"originalType": "UUID", "reason": "UNKNOWN_TYPE"} ----- - - -===== 6.0 -Clients that have negotiated version 6.0 will receive a -xref:bolt/structure-semantics.adoc#structure-unsupported-type[`Unsupported Type`] with the following values: - ----- -{ - name: "UUID", - minimum_protocol_major: 6, - minimum_protocol_minor: 1, - extra: {} -) ----- - - [[data-type-list]] === `List` @@ -922,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. + +[[packstream-summary]] +== Summary of changes per version + +[[packsteam-summary-2]] +=== Version 1.1 + +** Introduction of `UUID` type. + +[[packstream-summary-1]] +=== Version 1 + +** Initial version consisting of `NULL`, `Boolean`, `Integer`, `Float`, `Bytes`, `String`, `List` `Dictionary` and `Structure` types. From 1484fb790b40c11f8583e964bdd431b1244b1a8d Mon Sep 17 00:00:00 2001 From: GW Date: Thu, 17 Sep 2026 14:19:11 +0100 Subject: [PATCH 4/6] Add bolt 6.1 to various places --- modules/ROOT/pages/bolt-compatibility.adoc | 11 +++++++++-- modules/ROOT/pages/bolt/message.adoc | 6 ++++++ modules/ROOT/pages/packstream/index.adoc | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) 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 61827c4..dab82c5 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -920,6 +920,6 @@ Instead, refer to the xref:bolt/structure-semantics.adoc[] for the Bolt version ** Introduction of `UUID` type. [[packstream-summary-1]] -=== Version 1 +=== Version 1.0 ** Initial version consisting of `NULL`, `Boolean`, `Integer`, `Float`, `Bytes`, `String`, `List` `Dictionary` and `Structure` types. From b013e9d34b4c259448091caa525e8ebf762e4478 Mon Sep 17 00:00:00 2001 From: Greg Woods <42248895+gjmwoods@users.noreply.github.com> Date: Tue, 29 Sep 2026 14:33:40 +0100 Subject: [PATCH 5/6] Update modules/ROOT/pages/packstream/index.adoc Co-authored-by: Stefano --- modules/ROOT/pages/packstream/index.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index dab82c5..6e7909d 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -911,8 +911,8 @@ 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. -[[packstream-summary]] -== Summary of changes per version +[[changelog]] +== Changelog [[packsteam-summary-2]] === Version 1.1 From 004e319203c8108aca5cb2cd5f07785277992060 Mon Sep 17 00:00:00 2001 From: Greg Woods <42248895+gjmwoods@users.noreply.github.com> Date: Mon, 5 Oct 2026 10:04:46 +0100 Subject: [PATCH 6/6] Update modules/ROOT/pages/packstream/index.adoc Co-authored-by: Robsdedude --- modules/ROOT/pages/packstream/index.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ROOT/pages/packstream/index.adoc b/modules/ROOT/pages/packstream/index.adoc index 6e7909d..630076f 100644 --- a/modules/ROOT/pages/packstream/index.adoc +++ b/modules/ROOT/pages/packstream/index.adoc @@ -914,7 +914,7 @@ Instead, refer to the xref:bolt/structure-semantics.adoc[] for the Bolt version [[changelog]] == Changelog -[[packsteam-summary-2]] +[[packsteam-summary-1-1]] === Version 1.1 ** Introduction of `UUID` type.