Hi all, I'm working on moving forward with bytecode removal that was mentioned previously in this thread. When traversals create their Gremlin string representations, I think it would be best if, all Strings, numerics, nulls, other primitive types, all enums (like cardinality, column, direction etc), datetime, uuid, graph elements (Vertex, Edge, Properties) will be part of string representation of traversal and if all collections (array/list, map, set), complex types and some graph specific objects (path, graph, tree) will be send as query parameters. This will keep the request understandable when you need to transfer a large amount of data.
I'm still trying to think through custom types and how those will work because the custom serializer mechanism is a bit burdensome, but for now it will stay as it is. Perhaps, some some syntax could be added to allow for custom(String typeName, String value) in the grammar. Or, we could perhaps just recommend `call` step. One issue I'm noticing in doing this work is that there are some compatibility issues between gremlin-groovy and gremlin-language where the string I'm generating is only compatible with the latter for certain cases. For example, the suffix for BigDecimal is not same, 'g' for groovy and 'm' for gremlin-language. I'm thinking we could pass the generated gremlin-language string through the new translators that are built on the grammar and use them to produce appropriate groovy. Regards, Valentyn