CHANGELOG.asciidoc (707 lines of code) (raw):

//// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. //// = TinkerPop CHANGELOG == TinkerPop 4.0.0 (Gremlin's Wildest Dreams) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlins-wildest-dreams.png[width=185] [[release-4-0-0]] === TinkerPop 4.0.0 (NOT OFFICIALLY RELEASED YET) * Bumped SLF4j to 2.0.16. * Modified grammar to make `discard()` usage more consistent as a filter step where it can now be used to chain additional traversal steps and be used anonymously. * Bumped GMavenPlus to 4.1.1 [[release-4-0-0-beta-1]] === TinkerPop 4.0.0-beta.1 (January 17, 2025) * Added support for deserialization of `Set` for `gremlin-javascript`. * Added grammar-based `Translator` for all languages including explicit ones for Java and anonymization. * Removed old `Translator` infrastructure. * Removed grammar support for enums to be used as variables. * Changed `valueMap` in grammar to disallow the `boolean` argument as a variable to avoid ambiguous step calls. * Added integer overflow checks for `sum()`. * Modified Gremlin Server to only support instantiation of `authentication.authenticationHandler` with three-arg constructor. * Removed previously deprecated two-arg constructors for `authentication.authenticationHandler` implementations. * Removed previously deprecated one-arg constructor for `AbstractAuthenticationHandler`. * Renamed the traversal discarding `none()` step to `discard()`. * Added new list filtering step `none()`. * Replaced `gremlin-groovy` with `gremlin-lang` as the default language in `gremlin-server`. * Changed `sum()` to retain the type common to the stream rather than always promoting to `long` given the need for it to multiple by the `long` bulk value for the traverser. * Added support for `Set` in GraphSON and GraphBinary serialization for `gremlin-javascript`, where it previously just converted to array. * Added `Set` syntax in `gremlin-language`. * Modified RequestInterceptor to be a `UnaryOperator<HttpRequest>` to abstract the underlying implementation. * Renamed `MergeStep` to `MergeElementStep` as it is a base class to `mergeV()` and `mergeE()`. * Renamed `TraversalMergeStep` of `merge()` to `MergeStep` for consistency. * Removed the `gremlin-archetype` module in favor of newer sample applications in each GLV's `examples` folder. * Bumped to `commons-collection4`. * Made `mergeE()` and `mergeV()` consistent in their use as a start step and as mid-traversal by always promoting the currently created or matched `Element` to the `onCreate` or `onMatch` child traversal. * Switched to HTTP protocol in `gremlin-python` and replaced GraphSONV2, GraphSONV2 & GraphBinaryV1 with GraphBinaryV4 * Added support for chunked transfer in `gremlin-python` * Added TypeScript & ECMAScript module support. * Improved graph structures type definitions in TypeScript. * Removed usage of `Bytecode` for Gremlin Server and Java GLV, script engines and `GremlinExecutor` will not be able to handle `Bytecode`. * Removed `Bytecode` based authorization. * Added `GremlinLang` which allows to generate gremlin-lang compatible string based on Traversal. * Removed serialization support for `Bindings` and `Bytecode`. * Changed `EmbeddedRemoteConnection` to prefer the grammar-based translator. * Removed `Client.submit(Traversal)` as a mechanism for submitting traversal, prefer `DriverRemoteConnection` instead. * Removed usage of `Bytecode` from `gremlin-python`. * Added `auth` module in `gremlin-python` for pluggable authentication. * Fixed `GremlinLangScriptEngine` handling for some strategies. * Updated Docker test suite set-up in `gremlin-python` to work with HTTP driver/server. * Updated `DateTime` serializers for Java and Python according to GraphBinaryV4. * Defined GraphBinaryV4 specification. * Defined GraphSONV4 specification. * Update serializers for `label` of an `Element` as a singleton list of string for GraphBinaryV4. * Added `bulked` byte to `Response Message` serialization for GraphBinaryV4. * Added a `bulked` header set by cluster setting, as well as a with `bulked` request option to turn on the bulking of result data. * Updated `List` and `BulkSet` serializers to implement `bulk` value flag for `List`. * Renamed `maxContentLength` setting for Gremlin Driver to `maxResponseContentLength` and blocked incoming responses that are too large based on total response size. * Renamed `maxContentLength` setting for Gremlin Server to `maxRequestContentLength`. * Added missing strategies to the `TraversalStrategies` global cache as well as `CoreImports` in `gremlin-groovy`. * Added missing strategies to `strategies.py` in `gremlin-python`. * Updated `OptionsStrategy` in `gremlin-python` to take options directly as keyword arguments. * Added static `instance()` method to `ElementIdStrategy` to an instance with the default configuration. * Updated `ElementIdStrategy.getConfiguration()` to help with serialization. * Updated `TraversalStrategyProxy` to utilize strategy names instead of strategy classes * Established mechanism for using customer strategies in remote context by using `TraversalStrategyProxy` in Java, or `TraversalStrategy` in GLVs. * Removed `minSize` setting for Gremlin Driver connection pool since connections are now short-lived HTTP connections * Added `idleConnectionTimeout` setting for Gremlin Driver and automatic closing of idle connections * Enabled TCP Keep-Alive in GremlinServer. == TinkerPop 3.8.0 (NOT OFFICIALLY NAMED YET) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-standing.png[width=185] [[release-3-8.0]] === TinkerPop 3.8.0 (Release Date: NOT OFFICIALLY RELEASED YET) This release also includes changes from <<release-3-7-XXX, 3.7.XXX>>. * Added UUID() + UUID(value) to grammar * Modified `TraversalStrategy` construction in Javascript where configurations are now supplied as a `Map` of options. * Fixed bug in GraphSON v2 and v3 where full round trip of `TraversalStrategy` implementations was failing. * Added missing strategies to the `TraversalStrategies` global cache as well as `CoreImports` in `gremlin-groovy`. * Modified the `TraversalStrategy` format for GraphSON v2 and v3 so that it could work with `Bytecode` based requests. * Added a `Class` serializer to GraphBinary in Javascript and modified the `TraversalStrategy` serializer to use it so that specification was properly satisfied. * Added missing strategies to `strategies.py` in `gremlin-python`. * Fixed fully qualified class names for `TraversalStrategy` names in `gremlin-dotnet`. * Updated `OptionsStrategy` in `gremlin-python` to take options directly as keyword arguments. * Added static `instance()` method to `ElementIdStrategy` to an instance with the default configuration. * Updated `ElementIdStrategy.getConfiguration()` to help with serialization. * Added grammar-based `Translator` for all languages including explicit ones for Java and anonymization. * Deprecated `withEmbedded()` and `withRemote()` options on `AnonymousTraversalSource`. * Added `with()` on `AnonymousTraversalSource` to cover both embedded and remote creation options. * Added support for `Set` in GraphSON and GraphBinary serialization for `gremlin-javascript`, where it previously just converted to array. * Added `Set` syntax in `gremlin-language`. * Changed `sum()` to retain the type common to the stream rather than always promoting to `long` given the need for it to multiple by the `long` bulk value for the traverser. * Removed the deprecated `withGraph()` option from `AnonymousTraversalSource`. * Modified the `split()` step to split a string into a list of its characters if the given separator is an empty string. * Changed `GremlinLangScriptEngine` via `GenericLiteralVisitor` to treat floating-point literals as `Double` by default instead of `BigDecimal` for better alignment with common programming language conventions. * Modified the Gremlin grammar to to treat `Infinity` and `NaN` as floating-points. * Added `withoutStrategies()` syntax to the Gremlin ANTLR grammar. * Modified the Gremlin ANTLR grammar to more dynamically interact with any strategies registered globally to the `TraversalStrategies` cache sets. * Made `new` keyword optional in the Gremlin grammar. * Allowed keywords to be used as `Map` keys when defined using the shorthand without quotes. * Added `prettyPrint()` method to `Tree` to produce a formatted string representation of the tree structure. * Added integer overflow checks. * Added missing strategies to the `TraversalStrategies` global cache as well as `CoreImports` in `gremlin-groovy`. * Added missing strategies to `strategies.py` in `gremlin-python`. * Updated `OptionsStrategy` in `gremlin-python` to take options directly as keyword arguments. * Added static `instance()` method to `ElementIdStrategy` to an instance with the default configuration. * Updated `ElementIdStrategy.getConfiguration()` to help with serialization. * Fixed issue in `gremlin-go` where `Next()` didn't return the error from the server. * Changed type for `ReservedKeysVerificationStrategy.keys` in .NET to take a `Set<string>` rather than `List<string>`. * Fixed bug in `group()` value traversal of the second `by()` where a `CollectingBarrierStep` could produce an unexpected filtering effect when `ReducingBarrierStep` or `SupplyingBarrierStep` instances were not taken into account. * Changed `DetachedFactory` to special case the handling of `ComputerAdjacentVertex` which doesn't carry properties but still needs to be detachable for OLAP cases. * Deprecated `ProfilingAware.prepareForProfiling` method preferring to simply `resetBarrierFromValueTraversal` from the `Grouping` interface after strategy application. * Deprecated `Date` in favor of `OffsetDateTime` as the default date type in core, `Date` is still supported as input to date steps for compatibility. * Added and made `OffsetDateTime` serializers the default for existing date types in Python, Go, JavaScript, and .NET. `Date` is only used to deserialize from server. * Added missing strategies in `gremlin-go`, updated certain strategies to take varargs and updated `GoTranslatorVisitor` for corresponding translations. * Fixed `BigInt` and `BigDecimal` parsing in `gremlin-go` cucumber test suite, fixed `UnscaledValue` type in `BigDecimal` struct and added `ParseBigDecimal` method. * Added validation to `valueMap()`/`propertyMap()`/`groupCount()` to prevent an invalid usage of multiple `by()` modulators. * Added validation to `groupCount()`, `sack()` and `dedup()` to prevent an invalid usage of multiple `by()` modulators. * Deprecated `ProcessLimitedStandardSuite` and `ProcessLimitedComputerSuite` in favor of `ProcessEmbeddedStandardSuite` and `ProcessEmbeddedComputerSuite` respectively. * Deprecated `ProcessStandardSuite` and the `ProcessComputerSuite` in favor of Gherkin testing and the `ProcessEmbeddedStandardSuite` and `ProcessEmbeddedComputerSuite` for testing JVM-specific Gremlin behaviors. * Removed lambda oriented Gremlin testing from Gherkin test suite. * Moved all lambda oriented Gremlin tests to `LambdaStepTest` in the Java test suite. * Removed the `@RemoteOnly` testing tag in Gherkin as lambda tests have all been moved to the Java test suite. * Updated gremlin-javascript to use GraphBinary as default instead of GraphSONv3 * Renamed many types in the grammar for consistent use of terms "Literal", "Argument", and "Varargs" == TinkerPop 3.7.0 (Gremfir Master of the Pan Flute) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-zamfir.png[width=185] [[release-3-7-4]] === TinkerPop 3.7.4 (NOT OFFICIALLY RELEASED YET) * Added log entry in `WsAndHttpChannelizerHandler` to catch general errors that escape the handlers. * Added a `MessageSizeEstimator` implementation to cover `Frame` allowing Gremlin Server to better estimate message sizes for the direct buffer. * Improved logging around triggers of the `writeBufferHighWaterMark` so that they occur more than once but do not excessively fill the logs. * Added server metrics to help better detect and diagnose write pauses due to the `writeBufferHighWaterMark`: `channels.paused`, `channels.total`, and `channels.write-pauses`. * Changed `IdentityRemovalStrategy` to omit `IdentityStep` if only with `RepeatEndStep` under `RepeatStep`. * Changed Gremlin grammar to make use of `g` to spawn child traversals a syntax error. * Added `unexpected-response` handler to `ws` for `gremlin-javascript` * Fixed bug in `TinkerTransactionGraph` where a read-only transaction may leave elements trapped in a "zombie transaction". * Fixed bug in `gremlin.sh` where it couldn't accept a directory name containing spaces. * Fixed issue in `gremlin-console` where it couldn't accept plugin files that included empty lines or invalid plugin names. * Modified grammar to make `none()` usage more consistent as a filter step where it can now be used to chain additional traversal steps and be used anonymously. * Added missing anonymous support for `disjunct()` in Python and Javascript. * Fixed bug in 'gremlin-server.sh' to account for spaces in directory names. * Deprecated `gremlin_python.process.__.has_key_` in favor of `gremlin_python.process.__.has_key`. * Added `gremlin.spark.outputRepartition` configuration to customize the partitioning of HDFS files from `OutputRDD`. * Allowed `mergeV()` and `mergeE()` to supply `null` in `Map` values. * Change signature of `hasId(P<Object>)` and `hasValue(P<Object>)` to `hasId(P<?>)` and `hasValue(P<?>)`. * Improved error message for when `emit()` is used without `repeat()`. * Changed `PythonTranslator` to generate snake case step naming instead of camel case. * Changed `gremlin-go` Client `ReadBufferSize` and `WriteBufferSize` defaults to 1048576 (1MB) to align with DriverRemoteConnection. * Fixed bug in `IndexStep` which prevented Java serialization due to non-serializable lambda usage by creating serializable function classes. * Fixed bug in `Operator` which was caused only a single method parameter to be Collection type checked instead of all parameters. * Support hot reloading of SSL certificates. [[release-3-7-3]] === TinkerPop 3.7.3 (October 23, 2024) This release also includes changes from <<release-3-6-8, 3.6.8>>. * Refactored mutation events registration by moving reusable code from relevant steps to `EventUtil` * Opened `NoOpBarrierStep` for extensibility (removed `final` keyword). * Deprecated public constructor for `SeedStrategy` in favor of builder pattern to be consistent with other strategies. * Allowed specification of a customized Spark app name. * Added getter method to `CoinStep` for its probability field. * Prevented decimal values from being parsed by `asDate()`. * Prevented specification of `Cardinality` to `option()` when not used in conjunction with `mergeV()`. * Exposed a mechanism for providers to customize the assertion of error messages in feature tests. * Attempted to detect JDK version for Gremlin Console to avoid problems with Java 17 if `neo4j-gremlin` is used. * Fixed so that `TrimGlobalStep` and `TrimLocalStep` have the same character control handling as `Ltrim` and `Rtrim` * Fixed a bug in `MaxLocalStep`, `MinLocalStep`, `MeanLocalStep` and `SumLocalStep` that it throws `NoSuchElementException` when encounters an empty iterator as input. * Fixed cases where Map keys of incomparable types could panic in `gremlin-go`. * Fixed an issue where missing necessary parameters for logging, resulting in '%!x(MISSING)' output in `gremlin-go`. * Added getter method to `ConcatStep`, `ConjoinStep`, `SplitGlobalStep` and `SplitLocalStep` for their private fields. * Fixed older driver GraphBinary compatibility problems where using `ReferenceElementStrategy`, properties on elements returned as `null` instead of empty `List`. * Gremlin Server docker containers shutdown gracefully when receiving a SIGTERM. * Added 'userProvidedLabel' property to detect if the default label was supplied explicitly or not. * Added DefaultIdManager.STRING for proper string id creation/handling. * Allowed specification of an `Operator` as a reducer in `withSideEffect` when parsing with the grammar. * Fixed bug in Bytecode build logic where duplicate strategies were added instead of replacing the existing ones. * Bump Groovy to 4.0.23 ==== Bugs * TINKERPOP-3035 Add explicit property(IDictionary) for .NET * TINKERPOP-3050 security vulnerability in logback-core * TINKERPOP-3051 security vulnerability in logback-classic * TINKERPOP-3052 security vulnerability in ivy * TINKERPOP-3053 security vulnerability in netty-codec-http2 * TINKERPOP-3076 Incorrect handling of large requests in Go GLV * TINKERPOP-3077 Javascript translator incorrectly handle quotes, null and undefined values * TINKERPOP-3079 The test `TraversalStrategiesTest#shouldAllowUserManipulationOfGlobalCache` is not idempotent, as it passes in the first run and fails in repeated runs in the same environment. * TINKERPOP-3081 When using authentication, evaluationTimeout is ignored * TINKERPOP-3089 min() and max() local forms not working properly with empty iterator input * TINKERPOP-3090 trim() steps not handling unicode characters properly * TINKERPOP-3093 optimization of readmap function * TINKERPOP-3105 Running 3.6.x python-driver with 3.7.x server leads to deserialization errors * TINKERPOP-3110 Incorrect Bytecode when multiple options are used in traversal * TINKERPOP-3116 async_timeout not declared in gremlinpython dependencies ==== Improvements * TINKERPOP-2700 WebSocket compression may lead to attacks (CRIME / BREACH) * TINKERPOP-3041 Consistent construction of SeedStrategy * TINKERPOP-3080 AggregateStep can support all Operators predefined in TinkerPop * TINKERPOP-3082 Tinkerpop hardcoded the Spark AppName * TINKERPOP-3086 Upgrade gremlin-python to newer Python interpreter * TINKERPOP-3098 Gremlin Console bat file is missing log level configuration option * TINKERPOP-3102 Cardinality input with mergeE step shouldn't be allowed. [[release-3-7-2]] === TinkerPop 3.7.2 (April 8, 2024) This release also includes changes from <<release-3-6-7, 3.6.7>>. * Deprecated `ltrim()` and `rTrim()` in favor of `l_trim()` and `r_trim` in Python. * Fixed bug in `onCreate` for `mergeV()` where use of the `Cardinality` functions was not properly handled. * Fixed multiple concurrent initially requests caused authentication to fail. ==== Bugs * TINKERPOP-2132 Authentication when using multiple threads fails * TINKERPOP-2359 onShutDown not being called when docker container stopped * TINKERPOP-2913 Ensure that if tx.commit() is called remotely it does not hang for graphs without transactions * TINKERPOP-3012 Wrong hashCode implementation for DetachedVertexPropert * TINKERPOP-3022 JavaTranslator failing for has(String, null) * TINKERPOP-3025 l_trim() and r_trim() missing in python * TINKERPOP-3026 checkAdjacentVertices is misconfigured for python in SubgraphStrategy * TINKERPOP-3027 Pick.any should be any_() * TINKERPOP-3029 Gremlin.Net: Traversal enumeration fails on .NET 8 * TINKERPOP-3031 Bad translation for g.tx() * TINKERPOP-3039 Java driver won't propagate with args when using aliased client directly * TINKERPOP-3049 onCreate for mergeV() doesn't handle Cardinality functions * TINKERPOP-3054 RequestId serialization broken in Python GLV * TINKERPOP-3056 mergeE is updating vertices in certain conditions * TINKERPOP-3061 Concurrent queries will break authentication on javascript driver ==== Improvements * TINKERPOP-2456 Add missing tests for queries * TINKERPOP-2872 Inconsistency in comparing Elements in JavaScript tests * TINKERPOP-2995 Create Sample Applications in each GLV * TINKERPOP-3020 Incorrect tests * TINKERPOP-3021 Publish ARM64 Gremlin Console Images * TINKERPOP-3030 Update to .NET 8 * TINKERPOP-3068 Make serviceName and mergedParams public for provider usage in CallStep [[release-3-7-1]] === TinkerPop 3.7.1 (November 20, 2023) This release also includes changes from <<release-3-6-6, 3.6.6>> and <<release-3-5-8, 3.5.8>>. * Added the `asString()`, `length()`, `toLower()`, and `toUpper()` steps to perform `String` manipulations. * Added Gherkin parsing support for specific string results using `str[]`. * Added the `trim()`, `lTrim()`, `rTrim()`, and `reverse()` steps to perform `String` manipulations. * Added `replace()`, `split()` and `substring()` steps to perform `String` manipulations. * Added `Scope` to `asString()`, `length()`, `toLower()`, `toUpper()`, `trim()`, `lTrim()`, `rTrim()`, replace()`, `split()` and `substring()` to allow `String` manipulation inside incoming lists. * Update `concat()` to accept `Traversal` varargs. * Corrected `concat()` signatures in `gremlin-dotnet`, `Concat()` is now used instead of `Concat<object>()`. *(breaking)* * Update `concat()` to not special treat `inject` in arguments and use `TraversalUtil.apply` on it as with any other child traversals. *(breaking)* * Added `format()` step to perform `String` manipulations. * Checked graph features for meta-property support before trying to serialize them in `VertexPropertySerializer` for GraphBinary. * Fixed multiline query bug in console caused by upgrade to Groovy 4. * Added date manipulation steps `asDate`, `dateAdd` and `dateDiff`. * Added new data type `DT` to represent periods of time. * Added Gherkin support for Date. * Extended `datetime()` function to produce a current server date. * Added list filtering functions `all` and `any`. * Added list/set functions `conjoin`, `combine`, `difference`, `disjunct`, `intersect`, `merge`, and `product`. * Added getter for `isStart` on `UnionStep`. * Added `NullVariableResolver` that will quietly produce a `null` for each variable found when parsing with the grammar. * Changed the `@MultiMetaProperties` testing tag for Gherkin feature tests to instead be separate `@MetaProperties` and `@MultiProperties`. * Added `agent` parameter to `DriverRemoteConnection` options to allow a user-provided `http.Agent` implementation. * Fixed deserialization of element properties for GraphBinary. * Fixed bug in `union()` as a start step where the `Path` was including the starting dummy traverser. * Moved some TinkerGraph specific transaction tests from `TransactionMultiThreadedTest` to `TinkerTransactionGraphTest` * Fixed incorrect read operations in some cases for `TinkerTransactionGraph`. * Updated JavaScript tests to check equality on only id and class when comparing elements for consistency with other GLVs. * Improved performance for `Element` comparison by comparing hashCode() prior to doing more expensive checks. ==== Bugs * TINKERPOP-2811 ElementIdStrategy doesn't replace all references of an element's id with the specified custom id property * TINKERPOP-2921 Filters not working when side-effect is used with group() * TINKERPOP-2976 InvalidOperationException: Collection was modified in GraphBinary serialization * TINKERPOP-2983 Upgrade Netty for Security Reasons * TINKERPOP-2996 Golang Translator in core does not properly translate list arguments * TINKERPOP-2999 3.7.0 Remote Console Sends Incomplete Queries * TINKERPOP-3000 Issue with union step when using path().by() * TINKERPOP-3001 Gremlin Console complains about missing serializers field * TINKERPOP-3004 Low performance for queries with a large number of element comparisons * TINKERPOP-3009 SubgraphStrategy produces excessive filtering when multiple labels are filtered upon * TINKERPOP-3010 Move TinkerGraph specific transaction testing * TINKERPOP-3013 Console not sending scripts to the server when :remote console is enabled * TINKERPOP-3014 Dependencny jcl-over-slf4j in gremlin-core is declared but unused due to dependency conflict. * TINKERPOP-3016 TinkerTransactionGraph can incorrectly handle some read operations. ==== Improvements * TINKERPOP-2334 Add format() step * TINKERPOP-2672 Add String Manipulation Steps to Gremlin * TINKERPOP-2802 Support Adding Custom Serializer for Gremlin Go * TINKERPOP-2830 Handle User-Agent from HTTP Requests to server * TINKERPOP-2946 Resolve ordering issues in gherkin tests * TINKERPOP-2951 Add translator to the Go GLV * TINKERPOP-2964 Many TraversalParent's steps have a replaceLocalChild logic that can result in a new ChildTraversal having an ID that already exists. * TINKERPOP-2978 Add List Manipulation Steps to Gremlin * TINKERPOP-2979 Add Date Manipulation Steps to Gremlin * TINKERPOP-2982 Allow gremlin-driver usage over HTTP * TINKERPOP-2984 Replace Moq mocking library in .NET tests * TINKERPOP-2986 StarGraph shall drop edge properties when dropping edges * TINKERPOP-2988 Serialization error throws an Invalid OpProcessor exception when using stream() API * TINKERPOP-2991 Reformat Javadoc link in reference docs * TINKERPOP-2994 PartitionStrategy does not work with mergeV() and mergeE() * TINKERPOP-2998 UnionStep.isStart needs a public getter * TINKERPOP-3008 Update concat() to accept traversal varargs and remove special treatment of inject child traversals *(breaking)* [[release-3-7.0]] === TinkerPop 3.7.0 (Release Date: July 31, 2023) This release also includes changes from <<release-3-6-5, 3.6.5>> and <<release-3-5-7, 3.5.7>>. * Allowed `mergeV()` and `property(Map)` to more easily define `Cardinality` values for properties for `onMatch` and `onCreate` options. * Removed `connectOnStartup` configuration option from gremlin-javascript. * Added marker interface `PBiPredicate` for predefined predicates. * Changed `Gremlin.version()` to read from the more specifically named `tinkerpop-version` attribute. * Added warning on vertex property cardinality mismatch when reading GraphML. * Added a `union()` start step. * Added the `concat()` step to perform `String` concatenations. * Added `TinkerTransactionGraph`, a reference implementation of transactional `TinkerGraph` * Replaced instances of Neo4j transaction graph with `TinkerTransactionGraph` for server, driver, and GLV integration tests * Bumped to `ws` 8.x for `gremlin-javascript`. * Added support for mid-traversal `E()`-steps to Gremlin core and GLV's. * Added nullable annotations to Gremlin.NET. * Bumped Objenesis to 3.3 in `gremlin-shaded`. * Moved Java serializer, message and token classes from `gremlin-driver` to a new `gremlin-util` module. * Moved `SimpleSocketServer` and its initializers to a new `gremlin-tools/gremlin-socket-server` module. * Configured `gremlin-socket-server` to build a docker image which can be used for testing GLV's. (Can be skipped with -DskipImageBuild) * Reduced dependency from `gremlin-server` onto `gremlin-driver` to a test scope only. * Added `RequestOptions` and `RequestOptionsBuilder` types to Go GLV to encapsulate per-request settings and bindings. * Added `SubmitWithOptions()` methods to `Client` and `DriverRemoteConnection` in Go GLV to pass `RequestOptions` to the server. * Changed default behavior for returning properties on graph elements for OLTP queries so that properties are now returned. * Detachment is no longer performed in `TraverserIterator`. * Prevented `ConcurentModificationException` when removing all labels from a `Step`. * Added `materializeProperties` request option to control properties serialization. * Modified serializers in to handle serialization and deserialization of properties. * Added functional properties to the graph structure components for .NET, GO and Python. * Modified the `GremlinScriptChecker` to extract the `materializeProperties` request option. * `Neo4jVertexProperty` no longer throw Exception for `properties()`, but return empty `Iterable`. * Modified the grammar to allow for parameters to be specified in Gremlin. * Modified `GremlinLangScriptEngine` to take bindings. * Removed deprecated `getInstance()` method for grammar `Visitor` implementations. * Renamed all `MessageSerializer` implementations that used the "d0" suffix to drop that convention. * Removed deprecated `GraphSONMessageSerializerGremlinV1d0` as this is now `GraphSONMessageSerializerV1` to be consistent with other naming. * Added `GraphSONUntypedMessageSerializerV1` which was formerly `GraphSONMessageSerializerV1d0` to be consistent with other naming. * Added `GraphSONUntypedMessageSerializerV3` which essentially matches the format of GraphSON 1.0 in its untyped form. * Removed `gremlin-io-test` and moved that IO type of testing to `gremlin-util`. * Bumped Groovy to 4.0.9. * Bumped GMavenPlus to 2.1.0. * Bumped Spark to 3.3.2. * Enabled building and testing with JDK 17. * Raised minimum node version for gremlin-javascript and gremlint to node 18 ==== Bugs * TINKERPOP-2526 Gremlin Console performance with incomplete multi-line scripts * TINKERPOP-2677 Upgrade to Groovy 3.x to fix XStream security vulnerability * TINKERPOP-2708 unhandledRejection upon connection failure *(breaking)* * TINKERPOP-2734 NullPointerException when calling Client chooseConnection() * TINKERPOP-2736 PluginAcceptror interface no more available in 3.5.3+ but referred in documentation * TINKERPOP-2741 GraphMLWriter error message is not properly formatted * TINKERPOP-2742 IO read may use wrong cardinality for property * TINKERPOP-2746 Medium security vulnerabilities on logback-core * TINKERPOP-2751 Transaction: tx.commit() hangs up in javascript client-lib * TINKERPOP-2754 Javascript client hangs if the server restarts * TINKERPOP-2765 Race condition during script creation when using UnifiedChannelizer * TINKERPOP-2767 Repeat Out Times traversal hangs indefinitely on first execution * TINKERPOP-2768 BranchStep pickToken should be integrated when added as a child option * TINKERPOP-2769 gremlin-server does not reply with a timeout response to all timed out requests * TINKERPOP-2771 Critical severity security vulnerabilty in commons-configuration 2.7 * TINKERPOP-2775 Remove dependency on cloudflare CDN * TINKERPOP-2796 High severity security vulnerability found in snakeyaml * TINKERPOP-2801 Incorrect deprecation notice on gremlin-python * TINKERPOP-2803 Incorrect count() with sample() in TinkerGraph * TINKERPOP-2805 No results returned for multiple labels to select() * TINKERPOP-2809 High severity security vulnerability found in jackson databind * TINKERPOP-2815 Critical security vulnerability for apache commons-text * TINKERPOP-2816 Gherkin test issues for implementers * TINKERPOP-2817 "Could not find a type identifier for the class : class java.lang.Byte" occurs when dumping graph to graphson format * TINKERPOP-2820 gremlin-python _close_session race condition/FD leak * TINKERPOP-2826 Critical security vulnerability in ivy * TINKERPOP-2836 Github actions do not run java driver integration tests * TINKERPOP-2840 Test Failures on NonDex * TINKERPOP-2843 Security vulnerabilities found in netty version 4.1.77 * TINKERPOP-2849 Incorrect implementation for GraphTraversalSource.With in gremlin-go * TINKERPOP-2855 Performance degradation in TinkerGraph 3.5.4 and 3.5.5 * TINKERPOP-2856 math() step fails if variable name contains a keyword * TINKERPOP-2858 ConcurrentModificationException in ConnectiveStrategy * TINKERPOP-2861 Fix incorrect symlinks in source release zip * TINKERPOP-2863 HasId Step generates incorrect results when given a list of IDs mid-traversal * TINKERPOP-2870 mergeV requires key of 'new' to be quoted * TINKERPOP-2878 Incorrect handling of local operations when there are duplicate elements * TINKERPOP-2888 DefaultTraversal's applyStrategies performance decrease * TINKERPOP-2891 Inconsistent behavior when comparing a counted value with a negative value * TINKERPOP-2893 Incorrectly comparing a counted value with multiple predicates * TINKERPOP-2901 Incorrect result caused by has(key, predicate) * TINKERPOP-2902 Critical security vulnerability in snakeyaml * TINKERPOP-2905 gremlin-go gorillaTransporter.logHandler is not initialized correctly and leads to panic * TINKERPOP-2911 CountStrategy converts count().is(0) wrongly under ConnectiveStrategy * TINKERPOP-2918 Utils.GenerateUserAgent assumes Gremlin.Net.dll to be present when, in some environments, it is not. * TINKERPOP-2920 SubgraphStrategy failure when property key not present on vertex in by() * TINKERPOP-2922 GroovyTranslator produces a Map not parseable by the grammar * TINKERPOP-2925 mergeE() in javascript producing an error * TINKERPOP-2926 Gremlin-Java > An UnsupportedOperationException occurs on calling next() after a merge step with the option step modulator if the element does not exist * TINKERPOP-2928 element() not working in conjunction with edge properties * TINKERPOP-2937 Throw an error when trying to use a closed connection * TINKERPOP-2944 Memory leak in Gremlin.Net driver if CancellationToken is used * TINKERPOP-2945 TextP.regex() Serialization Failing in Java driver * TINKERPOP-2948 PRISMA security vulnerabilty for jackson-databind 2.14.0 *(breaking)* * TINKERPOP-2953 Static import for __.values() overriden by Column.values() * TINKERPOP-2957 mergeV with sideEffect not correctly updating properties * TINKERPOP-2958 ScheduledExecutorService for timeouts are never cancelled * TINKERPOP-2965 FilterRankingStrategy removing labels it shouldn't in certain conditions ==== Improvements * TINKERPOP-1403 Provide support for GraphFilter.vertexProperties() *(breaking)* * TINKERPOP-2229 JavaScript GLV: Add GraphBinary Support * TINKERPOP-2348 Enable nullable checks * TINKERPOP-2373 Bump to Groovy 4.0 * TINKERPOP-2471 Add logging to Gremlin.Net driver * TINKERPOP-2480 User agent for Gremlin drivers * TINKERPOP-2622 Enforce ordering semantics in feature tests * TINKERPOP-2631 GraphSON float serialization when ujson is used is imprecise * TINKERPOP-2633 Support Gremlin Console on Java 17 * TINKERPOP-2693 Complete GraphBinary support in Python * TINKERPOP-2696 Refactor Gherkin test framework to better handle bindings * TINKERPOP-2703 Build on JDK17 * TINKERPOP-2715 remove log4jv1 dependency * TINKERPOP-2723 Make GraphBinary the default serialization format for .NET and Python * TINKERPOP-2731 Bump to Spark 3.3.0 * TINKERPOP-2737 Dockerized Build and Test Environments * TINKERPOP-2747 Add function callback hooks for gremlin-go authentication * TINKERPOP-2748 Medium security vulnerability on netty-all and netty-codec * TINKERPOP-2749 Support Windows Build * TINKERPOP-2761 Gremlin: use another manifest name for version * TINKERPOP-2762 getScopeKeys should respect the order of keys passed in Step * TINKERPOP-2764 AWS Neptune returns an inaccessible structured error response * TINKERPOP-2772 Add Spark utility to load vertices as RDD * TINKERPOP-2776 Add website analytics for TinkerPop apache site * TINKERPOP-2779 Floating ConnectedComponent Feature Failures for GitHub Actions on windows * TINKERPOP-2785 Inability to Mock Returned Result Types in Gremlin-Go Driver * TINKERPOP-2792 Better exception when JavaTranslator finds a method but not the overload * TINKERPOP-2794 Allow cancellation of Gremlin.Net async methods * TINKERPOP-2798 Add support for mid-traversal E() * TINKERPOP-2804 gherkin feature files should be on the classpath * TINKERPOP-2806 Provide method for provider plugins to get notified on script/query processing * TINKERPOP-2808 Improve Compatibility on ARM machines * TINKERPOP-2810 gremlinpython aiohttp dependency requirement too strict * TINKERPOP-2813 Improve driver usability for cases where NoHostAvailableException is currently thrown * TINKERPOP-2814 Add a SSL handshake timeout configuration to the driver * TINKERPOP-2818 exclude mockito-core in gremlin-core [compile scope] (import by jcabi-manifests) * TINKERPOP-2824 Properties on Elements *(breaking)* * TINKERPOP-2834 CloneVertexProgram optimization on SparkGraphComputer * TINKERPOP-2838 Add UserAgent GLV Tests * TINKERPOP-2841 Test and Fix Per Request Settings in Go * TINKERPOP-2842 Expand GremlinScriptChecker to include request id overrides * TINKERPOP-2844 Test and Fix Per Request Settings in Python * TINKERPOP-2850 Modifications to mergeV/E semantics * TINKERPOP-2852 Update Maven plugin for docker-images building for M1 compatibility * TINKERPOP-2853 Gremlin.Net driver should throw better exception message for unsupported GraphBinary type * TINKERPOP-2857 GraphSONRecordReader does not allow configure a GraphFilter during deserialization * TINKERPOP-2865 Add has steps injected by PartitionStrategy at the end of the filter * TINKERPOP-2873 Allow Union of Traversals * TINKERPOP-2890 Avoid exceptions on local scope based steps where possible * TINKERPOP-2899 SampleGlobalStep samples inefficiently with TraverserSet running into hash collisions * TINKERPOP-2912 Improve error message for addE() when traverser is incorrect * TINKERPOP-2919 Improve performance of FilterRankingStrategy for deeply nested traversals * TINKERPOP-2924 Refactor PropertyMapStep to be able to overwrite map method * TINKERPOP-2929 Introduce new marker interfaces to identify whether a step can perform write or delete or both * TINKERPOP-2931 Fix a few minor mergeV/E issues * TINKERPOP-2934 Optimize ObjectWritable for displaying content of Java Collection or Map to reduce OOM * TINKERPOP-2938 Revisit merge step feature tests * TINKERPOP-2939 The Merge onMatch map validation is during execution instead of construction * TINKERPOP-2941 DO NOT purge the output location if it has content in SparkGraphComputer * TINKERPOP-2947 Provide a plain text serializer for HTTP * TINKERPOP-2949 More strict handling of predicates * TINKERPOP-2954 Pass Gremlin Version from Maven to Java Without Manifests * TINKERPOP-2955 Support SSL in WebSocketClient * TINKERPOP-2959 Allow the grammar to support parameters * TINKERPOP-2963 Introduce new mimeType to return GraphSon-1.0 in text format * TINKERPOP-2967 Add untyped GraphSON 3.0 format * TINKERPOP-2975 Native transaction support for Tinkerpop * TINKERPOP-2977 Deprecate Neo4j-Gremlin == TinkerPop 3.6.0 (Tinkerheart) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-victorian.png[width=185] [[release-3-6-8]] === TinkerPop 3.6.8 (October 23, 2024) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-8, 3.6.8 changelog>>. [[release-3-6-7]] === TinkerPop 3.6.7 (April 8, 2024) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-7, 3.6.7 changelog>>. [[release-3-6-6]] === TinkerPop 3.6.6 (November 20, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-6, 3.6.6 changelog>>. [[release-3-6-5]] === TinkerPop 3.6.5 (Release Date: July 31, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-5, 3.6.5 changelog>>. [[release-3-6-4]] === TinkerPop 3.6.4 (Release Date: May 12, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-4, 3.6.4 changelog>>. [[release-3-6-3]] === TinkerPop 3.6.3 (Release Date: May 1, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-3, 3.6.3 changelog>>. [[release-3-6-2]] === TinkerPop 3.6.2 (Release Date: January 16, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-2, 3.6.2 changelog>>. [[release-3-6-1]] === TinkerPop 3.6.1 (Release Date: July 18, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-1, 3.6.1 changelog>>. [[release-3-6-0]] === TinkerPop 3.6.0 (Release Date: April 4, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.6.x.asciidoc#release-3-6-0, 3.6.0 changelog>>. == TinkerPop 3.5.0 (The Sleeping Gremlin: No. 18 Entr'acte Symphonique) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-sleeping-beauty.png[width=185] [[release-3-5-8]] === TinkerPop 3.5.8 (Release Date: November 20, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-8, 3.5.8 changelog>>. [[release-3-5-7]] === TinkerPop 3.5.7 (Release Date: July 31, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-7, 3.5.7 changelog>>. [[release-3-5-6]] === TinkerPop 3.5.6 (Release Date: May 1, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-6, 3.5.6 changelog>>. [[release-3-5-5]] === TinkerPop 3.5.5 (Release Date: January 16, 2023) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-5, 3.5.5 changelog>>. [[release-3-5-4]] === TinkerPop 3.5.4 (Release Date: July 18, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-4, 3.5.4 changelog>>. [[release-3-5-3]] === TinkerPop 3.5.3 (Release Date: April 4, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-3, 3.5.3 changelog>>. [[release-3-5-2]] === TinkerPop 3.5.2 (Release Date: January 10, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-2, 3.5.2 changelog>>. [[release-3-5-1]] === TinkerPop 3.5.1 (Release Date: July 19, 2021) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-1, 3.5.1 changelog>>. [[release-3-5-0]] === TinkerPop 3.5.0 (Release Date: May 3, 2021) Please see the archived <<./docs/archive/changelogs/changelog-3.5.x.asciidoc#release-3-5-0, 3.5.0 changelog>>. == TinkerPop 3.4.0 (Avant-Gremlin Construction #3 for Theremin and Flowers) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/avant-gremlin.png[width=185] [[release-3-4-13]] === TinkerPop 3.4.13 (Release Date: January 10, 2022) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-13, 3.4.13 changelog>>. [[release-3-4-12]] === TinkerPop 3.4.12 (Release Date: July 19, 2021) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-12, 3.4.12 changelog>>. [[release-3-4-11]] === TinkerPop 3.4.11 (Release Date: May 3, 2021) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-11, 3.4.11 changelog>>. [[release-3-4-10]] === TinkerPop 3.4.10 (Release Date: January 18, 2021) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-10, 3.4.10 changelog>>. [[release-3-4-9]] === TinkerPop 3.4.9 (Release Date: December 7, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-9, 3.4.9 changelog>>. [[release-3-4-8]] === TinkerPop 3.4.8 (Release Date: August 3, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-8, 3.4.8 changelog>>. [[release-3-4-7]] === TinkerPop 3.4.7 (Release Date: June 1, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-7, 3.4.7 changelog>>. [[release-3-4-6]] === TinkerPop 3.4.6 (Release Date: February 20, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-6, 3.4.6 changelog>>. [[release-3-4-5]] === TinkerPop 3.4.5 (Release Date: February 3, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-5, 3.4.5 changelog>>. [[release-3-4-4]] === TinkerPop 3.4.4 (Release Date: October 14, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-4, 3.4.4 changelog>>. [[release-3-4-3]] === TinkerPop 3.4.3 (Release Date: August 5, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-3, 3.4.3 changelog>>. [[release-3-4-2]] === TinkerPop 3.4.2 (Release Date: May 28, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-2, 3.4.2 changelog>>. [[release-3-4-1]] === TinkerPop 3.4.1 (Release Date: March 18, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-1, 3.4.1 changelog>>. [[release-3-4-0]] === TinkerPop 3.4.0 (Release Date: January 2, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.4.x.asciidoc#release-3-4-0, 3.4.0 changelog>>. == TinkerPop 3.3.0 (Gremlin Symphony #40 in G Minor) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-mozart.png[width=185] [[release-3-3-11]] === TinkerPop 3.3.11 (Release Date: June 1, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-11, 3.3.11 changelog>>. [[release-3-3-10]] === TinkerPop 3.3.10 (Release Date: February 3, 2020) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-10, 3.3.10 changelog>>. [[release-3-3-9]] === TinkerPop 3.3.9 (Release Date: October 14, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-9, 3.3.9 changelog>>. [[release-3-3-8]] === TinkerPop 3.3.8 (Release Date: August 5, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-8, 3.3.8 changelog>>. [[release-3-3-7]] === TinkerPop 3.3.7 (Release Date: May 28, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-7, 3.3.7 changelog>>. [[release-3-3-6]] === TinkerPop 3.3.6 (Release Date: March 18, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-6, 3.3.6 changelog>>. [[release-3-3-5]] === TinkerPop 3.3.5 (Release Date: January 2, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-5, 3.3.5 changelog>>. [[release-3-3-4]] === TinkerPop 3.3.4 (Release Date: October 15, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-4, 3.3.4 changelog>>. [[release-3-3-3]] === TinkerPop 3.3.3 (Release Date: May 8, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-3, 3.3.3 changelog>>. [[release-3-3-2]] === TinkerPop 3.3.2 (Release Date: April 2, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-2, 3.3.2 changelog>>. [[release-3-3-1]] === TinkerPop 3.3.1 (Release Date: December 17, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-1, 3.3.1 changelog>>. [[release-3-3-0]] === TinkerPop 3.3.0 (Release Date: August 21, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.3.x.asciidoc#release-3-3-0, 3.3.0 changelog>>. == TinkerPop 3.2.0 (Nine Inch Gremlins) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=185] [[release-3-2-11]] === TinkerPop 3.2.11 (Release Date: January 2, 2019) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-11, 3.2.11 changelog>>. [[release-3-2-10]] === TinkerPop 3.2.10 (Release Date: October 15, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-10, 3.2.10 changelog>>. [[release-3-2-9]] === TinkerPop 3.2.9 (Release Date: May 8, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-9, 3.2.9 changelog>>. [[release-3-2-8]] === TinkerPop 3.2.8 (Release Date: April 2, 2018) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-8, 3.2.8 changelog>>. [[release-3-2-7]] === TinkerPop 3.2.7 (Release Date: December 17, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-7, 3.2.7 changelog>>. [[release-3-2-6]] === TinkerPop 3.2.6 (Release Date: August 21, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-6, 3.2.6 changelog>>. [[release-3-2-5]] === TinkerPop 3.2.5 (Release Date: June 12, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-5, 3.2.5 changelog>>. [[release-3-2-4]] === TinkerPop 3.2.4 (Release Date: February 8, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-4, 3.2.4 changelog>>. [[release-3-2-3]] === TinkerPop 3.2.3 (Release Date: October 17, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-3, 3.2.3 changelog>>. [[release-3-2-2]] === TinkerPop 3.2.2 (Release Date: September 6, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-2, 3.2.2 changelog>>. [[release-3-2-1]] === TinkerPop 3.2.1 (Release Date: July 18, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-1, 3.2.1 changelog>>. [[release-3-2-0-incubating]] === TinkerPop 3.2.0 (Release Date: April 8, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.2.x.asciidoc#release-3-2-0, 3.2.0 changelog>>. == TinkerPop 3.1.0 (A 187 On The Undercover Gremlinz) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-gangster.png[width=185] [[release-3-1-8]] === TinkerPop 3.1.8 (Release Date: August 21, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-8, 3.1.8 changelog>>. [[release-3-1-7]] === TinkerPop 3.1.7 (Release Date: June 12, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-7, 3.1.7 changelog>>. [[release-3-1-6]] === TinkerPop 3.1.6 (Release Date: February 3, 2017) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-6, 3.1.6 changelog>>. [[release-3-1-5]] === TinkerPop 3.1.5 (Release Date: October 17, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-5, 3.1.5 changelog>>. [[release-3-1-4]] === TinkerPop 3.1.4 (Release Date: September 6, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-4, 3.1.4 changelog>>. [[release-3-1-3]] === TinkerPop 3.1.3 (Release Date: July 18, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-3, 3.1.3 changelog>>. [[release-3-1-2-incubating]] === TinkerPop 3.1.2 (Release Date: April 8, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-2-incubating, 3.1.2 changelog>>. [[release-3-1-1-incubating]] === TinkerPop 3.1.1 (Release Date: February 8, 2016) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-1-incubating, 3.1.1 changelog>>. [[release-3-1-0-incubating]] === TinkerPop 3.1.0 (Release Date: November 16, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.1.x.asciidoc#release-3-1-0-incubating, 3.1.0 changelog>>. == TinkerPop 3.0.0 (A Gremlin Rāga in 7/16 Time) image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-hindu.png[width=225] [[release-3-0-2-incubating]] === TinkerPop 3.0.2 (Release Date: October 19, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-2-incubating, 3.0.2 changelog>>. [[release-3-0-1-incubating]] === TinkerPop 3.0.1 (Release Date: September 2, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-1-incubating, 3.0.1 changelog>>. === TinkerPop 3.0.0 (Release Date: July 9, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0, 3.0.0 changelog>>. === TinkerPop 3.0.0.M9 (Release Date: May 26, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m9, 3.0.0.M9 changelog>>. === TinkerPop 3.0.0.M8 (Release Date: April 6, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m8, 3.0.0.M8 changelog>>. === TinkerPop 3.0.0.M7 (Release Date: January 19, 2015) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m7, 3.0.0.M7 changelog>>. === TinkerPop 3.0.0.M6 (Release Date: December 2, 2014) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m6, 3.0.0.M6 changelog>>. === TinkerPop 3.0.0.M5 (Release Date: November 7, 2014) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m5, 3.0.0.M5 changelog>>. === TinkerPop 3.0.0.M4 (Release Date: October 21, 2014) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m4, 3.0.0.M4 changelog>>. === TinkerPop 3.0.0.M3 (Release Date: October 6, 2014) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m3, 3.0.0.M3 changelog>>. === TinkerPop 3.0.0.M2 (Release Date: September 23, 2014) Please see the archived <<./docs/archive/changelogs/changelog-3.0.x.asciidoc#release-3-0-0-m2, 3.0.0.M2 changelog>>. === TinkerPop 3.0.0.M1 (Release Date: August 12, 2014) * First official release of TinkerPop3 and thus, no changes.