This is an automated email from the ASF dual-hosted git repository.

xiazcy pushed a commit to branch TINKERPOP-3186
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/TINKERPOP-3186 by this push:
     new 68c8b296c2 Update CHANGELOG & docs
68c8b296c2 is described below

commit 68c8b296c263111cbd1fac7e81c0eea787000de7
Author: xiazcy <[email protected]>
AuthorDate: Thu Oct 16 10:30:49 2025 -0700

    Update CHANGELOG & docs
---
 CHANGELOG.asciidoc                      |  3 ++-
 docs/src/upgrade/release-3.8.x.asciidoc | 19 ++++++++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index dde7953b08..f8754043e2 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,8 +28,9 @@ This release also includes changes from <<release-3-7-XXX, 
3.7.XXX>>.
 * Added the Air Routes dataset to the set of available samples packaged with 
distributions.
 * Added a minimal distribution for `tinkergraph-gremlin` using the `min` 
classifier that doesn't include the sample datasets.
 * Removed Vertex/ReferenceVertex from grammar. Use vertex id in traversals now 
instead.
-* Renamed `none()` step to `discard()`.
 * Fixed bug where `InlineFilterStrategy` could add an empty `has()`.
+* Normalized python and javascript `Element.properties` to lists.
+* Renamed `none()` step to `discard()`.
 * Repurposed `none()` step as a list filtering step with the signature 
`none(P)`.
 * Modified mathematical operators to prevent overflows in steps such as 
`sum()` and 'sack()' to prefer promotion to the next highest number type.
 * Added `DateTime` ontop of the existing 'datetime' grammar.
diff --git a/docs/src/upgrade/release-3.8.x.asciidoc 
b/docs/src/upgrade/release-3.8.x.asciidoc
index 65b5e6a71b..f5de25e718 100644
--- a/docs/src/upgrade/release-3.8.x.asciidoc
+++ b/docs/src/upgrade/release-3.8.x.asciidoc
@@ -301,10 +301,27 @@ g.inject("Hello").split("")
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-3083[TINKERPOP-3083]
 
 ==== asString() No Longer Allow Nulls
-The `asString()` step will no longer allow `null` input. An 
`IllegalArgumentException` will be thrown for consistency with all other 
parsing steps (i.e. `asDate()`, `asBool()`, `asNumber()`).
+
+The `asString()` step will no longer allow `null` input. An 
`IllegalArgumentException` will be thrown for consistency
+with all other parsing steps (i.e. `asDate()`, `asBool()`, `asNumber()`).
 
 See: 
link:https://lists.apache.org/thread/q76pgrvhprosb4lty63bnsnbw2ljyl7m[DISCUSS] 
thread
 
+==== Properties on Element Serialization in Python & Javascript
+
+Element properties handling has been inconsistent across GLVs. Previously, 
`gremlin-python` deserialized empty properties as `None`, while
+`gremlin-javascript` returned properties as objects or arrays, with empty 
properties as null or undefined depending on the serializer.
+
+This inconsistency is now resolved. Both GLVs will deserialize 
Element.properties into lists of property objects, returning empty lists
+instead of null values for missing properties.
+
+This is a breaking change. Applications using gremlin-python and 
gremlin-javascript must update code to expect properties as lists rather than 
the
+previous formats.
+
+Note: This change affects only GLV behavior, not underlying IO formats.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-3186[TINKERPOP-3186]
+
 ==== Javascript Set Deserialization
 
 Starting from this version, `gremlin-javascript` will deserialize `Set` data 
into a ECMAScript 2015 Set. Previously,

Reply via email to