<commit_before>////
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 3.2.0

image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=225]

*Nine Inch Gremlins*

== TinkerPop 3.2.8

*Release Date: NOT OFFICIALLY RELEASED YET*

Please see the link:https://github.com/apache/tinkerpop/blob/3.2.8/CHANGELOG.asciidoc#release-3-2-8[changelog] for a complete list of all the modifications that are part of this release.

=== Upgrading for Users

==== Improved Connection Monitoring

Gremlin Server now has two new settings: `idleConnectionTimeout` and `keepAliveInterval`. The `keepAliveInterval` tells
Gremlin Server how long it should wait between writes to a client before it issues a "ping" to that client to see if
it is still present. The `idleConnectionTimeout` represents how long Gremlin Server should wait between requests from
a client before it closes the connection on the server side. By default, these two configurations are set to zero,
meaning that they are both disabled.

This change should help to alleviate issues where connections are left open on the server longer than they should be
by clients that might mysteriously disappear without properly closing their connections.

See: link:https://issues.apache.org/jira/browse/TINKERPOP-1726[TINKERPOP-1726]

==== Gremlin.Net Tokens Improved

The various Gremlin tokens (e.g. `T`, `Order`, `Operator`, etc.) that were implemented as Enums before in Gremlin.Net
are now implemented as classes. This mainly allows them to implement interfaces which their Java counterparts already
did. `T` for example now implements the new interface `IFunction` which simply mirrors its Java counterpart `Function`.
Steps that expect objects for those interfaces as arguments now explicitly use the interface. Before, they used just
`object` as the type for these arguments which made it hard for users to know what kind of `object` they can use.
However, usage of these tokens themselves shouldn't change at all (e.g. `T.Id` is still `T.Id`).

See: link:https://issues.apache.org/jira/browse/TINKERPOP-1901[TINKERPOP-1901]

=== Upgrading for Providers<commit_msg>TINKERPOP-1919 Add note about merged P classes to upgrade docs<commit_after>////
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 3.2.0

image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=225]

*Nine Inch Gremlins*

== TinkerPop 3.2.8

*Release Date: NOT OFFICIALLY RELEASED YET*

Please see the link:https://github.com/apache/tinkerpop/blob/3.2.8/CHANGELOG.asciidoc#release-3-2-8[changelog] for a complete list of all the modifications that are part of this release.

=== Upgrading for Users

==== Improved Connection Monitoring

Gremlin Server now has two new settings: `idleConnectionTimeout` and `keepAliveInterval`. The `keepAliveInterval` tells
Gremlin Server how long it should wait between writes to a client before it issues a "ping" to that client to see if
it is still present. The `idleConnectionTimeout` represents how long Gremlin Server should wait between requests from
a client before it closes the connection on the server side. By default, these two configurations are set to zero,
meaning that they are both disabled.

This change should help to alleviate issues where connections are left open on the server longer than they should be
by clients that might mysteriously disappear without properly closing their connections.

See: link:https://issues.apache.org/jira/browse/TINKERPOP-1726[TINKERPOP-1726]

==== Gremlin.Net Tokens Improved

The various Gremlin tokens (e.g. `T`, `Order`, `Operator`, etc.) that were implemented as Enums before in Gremlin.Net
are now implemented as classes. This mainly allows them to implement interfaces which their Java counterparts already
did. `T` for example now implements the new interface `IFunction` which simply mirrors its Java counterpart `Function`.
Steps that expect objects for those interfaces as arguments now explicitly use the interface. Before, they used just
`object` as the type for these arguments which made it hard for users to know what kind of `object` they can use.
However, usage of these tokens themselves shouldn't change at all (e.g. `T.Id` is still `T.Id`).

See: link:https://issues.apache.org/jira/browse/TINKERPOP-1901[TINKERPOP-1901]

==== Gremlin.Net: Traversal Predicate Classes Merged

Gremlin.Net used two classes for traversal predicates: `P` and `TraversalPredicate`. Steps that worked with traversal
predicates expected objects of type `TraversalPredicate`, but they were constructed from the `P` class
(e.g. `P.Gt(1)` returned a `TraversalPredicate`). Merging these two classes into the `P` class should avoid unnecessary
confusion. Most users should not notice this change as predicates can still be constructed exactly as before, e.g.,
`P.Gt(1).And(P.Lt(3))` still works without any modifications.
Only users that implemented their own predicates and used `TraversalPredicate` as the base class need to change their
implementation to now use `P` as the new base class.

See: link:https://issues.apache.org/jira/browse/TINKERPOP-1919[TINKERPOP-1919]

=== Upgrading for Providers
{'fraction_non_alphanumeric': 0.06934416365824309, 'fraction_numerical': 0.012785800240673887, 'mean_word_length': 4.858149779735683, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 9, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6433469', 'n_tokens_mistral': 1864, 'n_tokens_neox': 1767, 'n_words': 864}