Skip to content

Conversation

@mschmidt00
Copy link

@mschmidt00 mschmidt00 commented May 2, 2025

This is an updated version of #2898

@codecov-commenter
Copy link

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 78.11%. Comparing base (2d32517) to head (b717634).
Report is 746 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3115      +/-   ##
============================================
+ Coverage     76.16%   78.11%   +1.94%     
- Complexity    13170    13744     +574     
============================================
  Files          1085     1023      -62     
  Lines         65189    59970    -5219     
  Branches       7289     7004     -285     
============================================
- Hits          49651    46845    -2806     
+ Misses        12830    10775    -2055     
+ Partials       2708     2350     -358     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

@Cole-Greer Cole-Greer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @mschmidt00, I completely agree here. The gremlin semantics docs are really intended to clear up any ambiguity as to what is a defined gremlin semantic, and what is an implementation detail. This is remains an incomplete project today. I agree that the lack of guarantees about evaluation order is currently a key missing section in there, and providing users standardized patterns to force specific semantics in any system is a nice addition.

VOTE +1


In this proposal we argue that guarantees for and control over lazy vs. eager evaluation order should be a well-defined aspect of the Gremlin language that has to strike the right balance between (a) imposing a minimal set of constraints by default, as to leave implementers the freedom to apply optimizations for the general cases (and account for the variety of approaches that Gremlin engines implement today) while (b) providing Gremlin users the freedom to specify and constrain flow control whenever they depend on it. With these goals in mind, our proposal is as follows.

===== Proposal 1: By default, the Gremlin semantics shall NOT prescribe lazy vs. eager evaluation order =====
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100% agree. Gremlin tends to be overly prescriptive, and would benefit from explicitly allowing more implementation defined behaviour in certain places. It's even worse in this example as it's currently ambiguous if lazy evaluation order is actually a defined gremlin semantic, or merely an implementation detail of the reference implementation (I believe it's the latter but that needs to be made explicit).

@spmallette
Copy link
Contributor

VOTE +1

1 similar comment
@xiazcy
Copy link
Contributor

xiazcy commented May 9, 2025

VOTE +1

@Cole-Greer
Copy link
Contributor

I have cherry-picked the proposal down to the 3.8-dev branch in commit 25c25c3. Closing this PR.

@Cole-Greer Cole-Greer closed this May 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants