This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 2eda64164268d18cf80b243956e0e1a4642f15f4 Merge: 19b5eee b252aba Author: Stephen Mallette <[email protected]> AuthorDate: Thu Nov 15 15:58:33 2018 -0500 Merge branch 'TINKERPOP-2038' into tp33 Conflicts: docs/src/upgrade/release-3.3.x.asciidoc CHANGELOG.asciidoc | 1 + docs/src/reference/gremlin-applications.asciidoc | 21 +++++++ docs/src/upgrade/release-3.3.x.asciidoc | 8 +++ .../jsr223/CompilationOptionsCustomizer.java | 33 ++++++++++- .../groovy/jsr223/GremlinGroovyScriptEngine.java | 68 ++++++++++++---------- .../groovy/jsr223/GroovyCompilerGremlinPlugin.java | 39 +++++++++++-- ...inGroovyScriptEngineCompilationOptionsTest.java | 3 +- .../jsr223/GroovyCompilerGremlinPluginTest.java | 33 ++++------- 8 files changed, 143 insertions(+), 63 deletions(-) diff --cc CHANGELOG.asciidoc index 5422dc3,15fe14e..99313e0 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@@ -25,14 -25,12 +25,15 @@@ image::https://raw.githubusercontent.co This release also includes changes from <<release-3-2-11, 3.2.11>>. +* Added `:bytecode` command to help developers debugging `Bytecode`-based traversals. * Fixed `PersistedOutputRDD` to eager persist RDD by adding `count()` action calls. -* gremlin-python: the graphson deserializer for g:Set should return a python set +* Deserialized `g:Set` to a Python `Set` in GraphSON in `gremlin-python`. +* Changed Java driver to expect a generic `RemoteTraverser` object rather than the specific `DefaultRemoteTraverser`. * Display the remote stack trace in the Gremlin Console when scripts sent to the server fail. +* Added `AnonymousTraversalSource` which provides a more unified means of constructing a `TraversalSource`. * Changed behavior of GraphSON deserializer in gremlin-python such that `g:Set` returns a Python `Set`. * Changed behavior of `iterate()` in Python, Javascript and .NET to send `none()` thus avoiding unnecessary results being returned. + * Provided for a configurable class map cache in the `GremlinGroovyScriptEngine` and exposed that in Gremlin Server. [[release-3-3-4]] === TinkerPop 3.3.4 (Release Date: October 15, 2018) diff --cc docs/src/upgrade/release-3.3.x.asciidoc index 3dd91fd,8523d2a..07bbb82 --- a/docs/src/upgrade/release-3.3.x.asciidoc +++ b/docs/src/upgrade/release-3.3.x.asciidoc @@@ -29,54 -29,14 +29,62 @@@ Please see the link:https://github.com/ === Upgrading for Users +==== AnonymousTraversalSource + +The `AnonymousTraversalSource` provides for a more unified syntax for `TraversalSource` construction by placing greater +user emphasis on the creation of the source rather than the `Graph` it is connected to. It has a number of different +static `traversal()` methods available and when imported as: + +[source,java] +import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; + +allows `TraversalSource` construction syntax such as: + +[source,text] +---- +gremlin> g = traversal().withGraph(TinkerFactory.createModern()) +==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] +gremlin> g = traversal().withRemote('conf/remote-graph.properties') +==>graphtraversalsource[emptygraph[empty], standard] +gremlin> g = traversal().withRemote(DriverRemoteConnection.using('localhost',8182)) +==>graphtraversalsource[emptygraph[empty], standard] +---- + +Typically, this syntax is used for "remote" traversal construction for bytecode based requests, but has the option to +bind a local `Graph` instance to it as well. It doesn't save much typing to do so obviously, so it may not be best +used in that situation. Python, Javascript and .NET have similar syntax. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-2078[TINKERPOP-2078] + +==== Bytecode Command + +The Gremlin Console now has a new `:bytecode` command to help users work more directly with Gremlin bytecode. The +command is more of a debugging tool than something that would be used for every day purposes. It is sometimes helpful +to look at Gremlin bytecode directly and the process for viewing it in human readable format is not a single step +process. It is also not immediately clear how to convert bytecode to a Gremlin string. The `:bytecode` command aims to +help with both of these issues: + +[source,text] +---- +gremlin> g = TinkerFactory.createModern().traversal() +==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] +gremlin> :bytecode from g.V().out('knows') <1> +==>{"@type":"g:Bytecode","@value":{"step":[["V"],["out","knows"]]}} +gremlin> :bytecode translate g {"@type":"g:Bytecode","@value":{"step":[["V"],["out","knows"]]}} <2> +==>g.V().out("knows") +---- + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-2050[TINKERPOP-2050], +link:http://tinkerpop.apache.org/docs/3.3.5/reference/#_console_commands[Reference Documentation - Console Commands] + + ==== Configurable Class Map Cache + + The "class map" cache in Gremlin Server (specifically the `GremlinGroovyScriptEngine`) that holds compiled scripts is + now fully configurable via the `GroovyCompilerGremlinPlugin.classMapCacheSpecification`. + + See: link:https://issues.apache.org/jira/browse/TINKERPOP-2038[TINKERPOP-2038], + link:http://tinkerpop.apache.org/docs/3.3.2/reference/#gremlin-server-cache[Reference Documentation - Cache Management] + == TinkerPop 3.3.4 *Release Date: October 15, 2018*
