From 67c0e51fb25ea1a2e3aae197c1984920b46759fa Mon Sep 17 00:00:00 2001 From: Mingwei Samuel Date: Tue, 2 Jul 2024 16:24:17 -0700 Subject: [PATCH] refactor(hydroflow_lang)!: require lifetime on `perist*()` operators (#1295) BREAKING CHANGE: `persist()` is no longer valid, use `persist::<'static>()` instead Future PR will add `persist::<'tick>()` --- benches/benches/micro_ops.rs | 4 +- .../examples/dedalus_2pc_coordinator/main.rs | 14 +++---- .../examples/dedalus_2pc_participant/main.rs | 16 ++++---- .../examples/dedalus_sender/main.rs | 2 +- .../examples/dedalus_vote_leader/main.rs | 6 +-- .../examples/dedalus_vote_participant/main.rs | 6 +-- .../examples/ws_chat_server/main.rs | 22 +++++------ hydroflow/examples/chat/client.rs | 2 +- hydroflow/examples/deadlock_detector/peer.rs | 4 +- hydroflow/examples/kvs_mut/server.rs | 2 +- hydroflow/examples/kvs_replicated/server.rs | 4 +- hydroflow/examples/two_pc/coordinator.rs | 2 +- hydroflow/src/scheduled/graph.rs | 6 ++- .../surface_singleton_badexpr.stderr | 13 ++----- .../compile-fail/surface_singleton_nostate.rs | 2 +- .../surface_singleton_nostate_undefined.rs | 2 +- .../surface_singleton_undefined.rs | 2 +- .../surface_singleton_undefined_nostate.rs | 2 +- ...time_between_ticks_async@graphvis_dot.snap | 2 +- ..._between_ticks_async@graphvis_mermaid.snap | 2 +- ...surface_persist__persist@graphvis_dot.snap | 4 +- ...ace_persist__persist@graphvis_mermaid.snap | 4 +- ...e_persist__persist_basic@graphvis_dot.snap | 4 +- ...rsist__persist_basic@graphvis_mermaid.snap | 4 +- ...ace_persist__persist_mut@graphvis_dot.snap | 4 +- ...persist__persist_mut@graphvis_mermaid.snap | 4 +- ...rsist__persist_mut_keyed@graphvis_dot.snap | 4 +- ...t__persist_mut_keyed@graphvis_mermaid.snap | 4 +- ...ce_persist__persist_pull@graphvis_dot.snap | 4 +- ...ersist__persist_pull@graphvis_mermaid.snap | 4 +- ...ce_persist__persist_push@graphvis_dot.snap | 4 +- ...ersist__persist_push@graphvis_mermaid.snap | 4 +- ...ist__persist_replay_join@graphvis_dot.snap | 2 +- ..._persist_replay_join@graphvis_mermaid.snap | 2 +- ...__issue_800_1050_persist@graphvis_dot.snap | 2 +- ...sue_800_1050_persist@graphvis_mermaid.snap | 2 +- ...duling__nospin_issue_961@graphvis_dot.snap | 2 +- ...ng__nospin_issue_961@graphvis_mermaid.snap | 2 +- ...in_issue_961_complicated@graphvis_dot.snap | 2 +- ...ssue_961_complicated@graphvis_mermaid.snap | 2 +- ...ersist_stratum_run_async@graphvis_dot.snap | 2 +- ...st_stratum_run_async@graphvis_mermaid.snap | 2 +- ...st_stratum_run_available@graphvis_dot.snap | 2 +- ...tratum_run_available@graphvis_mermaid.snap | 2 +- ...ce_singleton__fold_cross@graphvis_dot.snap | 2 +- ...ingleton__fold_cross@graphvis_mermaid.snap | 2 +- ...ingleton__fold_singleton@graphvis_dot.snap | 2 +- ...eton__fold_singleton@graphvis_mermaid.snap | 2 +- ...ton__fold_singleton_push@graphvis_dot.snap | 2 +- ..._fold_singleton_push@graphvis_mermaid.snap | 2 +- ..._persist_insertion_state@graphvis_dot.snap | 4 +- ...sist_insertion_state@graphvis_mermaid.snap | 4 +- ...gleton__reduce_singleton@graphvis_dot.snap | 2 +- ...on__reduce_singleton@graphvis_mermaid.snap | 2 +- ...n__reduce_singleton_push@graphvis_dot.snap | 2 +- ...educe_singleton_push@graphvis_mermaid.snap | 2 +- ...surface_singleton__state@graphvis_dot.snap | 2 +- ...ace_singleton__state@graphvis_mermaid.snap | 2 +- ...ique__unique_static_pull@graphvis_dot.snap | 6 +-- ...__unique_static_pull@graphvis_mermaid.snap | 6 +-- ...ique__unique_static_push@graphvis_dot.snap | 4 +- ...__unique_static_push@graphvis_mermaid.snap | 4 +- ...unique__unique_tick_pull@graphvis_dot.snap | 6 +-- ...ue__unique_tick_pull@graphvis_mermaid.snap | 6 +-- ...unique__unique_tick_push@graphvis_dot.snap | 4 +- ...ue__unique_tick_push@graphvis_mermaid.snap | 4 +- hydroflow/tests/surface_async.rs | 4 +- hydroflow/tests/surface_context.rs | 2 +- hydroflow/tests/surface_multiset_delta.rs | 6 +-- hydroflow/tests/surface_persist.rs | 38 +++++++++---------- hydroflow/tests/surface_scheduling.rs | 10 ++--- hydroflow/tests/surface_singleton.rs | 14 +++---- hydroflow/tests/surface_state_scheduling.rs | 2 +- hydroflow/tests/surface_unique.rs | 20 +++++----- hydroflow_datalog_core/src/join_plan.rs | 4 +- hydroflow_datalog_core/src/lib.rs | 34 ++++++++--------- ...og_core__tests__index@datalog_program.snap | 2 +- ...alog_core__tests__index@surface_graph.snap | 5 ++- ..._core__tests__persist@datalog_program.snap | 2 +- ...og_core__tests__persist@surface_graph.snap | 8 ++-- .../src/graph/flat_graph_builder.rs | 2 +- hydroflow_lang/src/graph/ops/join_fused.rs | 6 +-- hydroflow_lang/src/graph/ops/persist.rs | 10 ++--- hydroflow_lang/src/graph/ops/persist_mut.rs | 4 +- .../src/graph/ops/persist_mut_keyed.rs | 4 +- hydroflow_plus/src/ir.rs | 2 +- ...ist_pullup_behind_tee@surface_graph_0.snap | 3 +- ...st_pullup_through_map@surface_graph_0.snap | 3 +- ..._anti_join_static_static@graphvis_dot.snap | 3 +- ...i_join_static_static@graphvis_mermaid.snap | 3 +- ...s__anti_join_static_tick@graphvis_dot.snap | 3 +- ...nti_join_static_tick@graphvis_mermaid.snap | 3 +- ...difference_static_static@graphvis_dot.snap | 3 +- ...erence_static_static@graphvis_mermaid.snap | 3 +- ...__difference_static_tick@graphvis_dot.snap | 3 +- ...fference_static_tick@graphvis_mermaid.snap | 3 +- topolotree/src/main.rs | 2 +- 97 files changed, 240 insertions(+), 230 deletions(-) diff --git a/benches/benches/micro_ops.rs b/benches/benches/micro_ops.rs index 684eb839011c..ce32f2308e6a 100644 --- a/benches/benches/micro_ops.rs +++ b/benches/benches/micro_ops.rs @@ -273,7 +273,7 @@ fn ops(c: &mut Criterion) { const DATA: [u64; 1024] = [0; 1024]; let mut df = hydroflow_syntax! { - source_iter(black_box(DATA)) -> persist() + source_iter(black_box(DATA)) -> persist::<'static>() -> map(black_box) -> defer_tick() -> map(black_box) @@ -307,7 +307,7 @@ fn ops(c: &mut Criterion) { const DATA: [[u8; 8192]; 1] = [[0; 8192]; 1]; let mut df = hydroflow_syntax! { - source_iter(black_box(DATA)) -> persist() + source_iter(black_box(DATA)) -> persist::<'static>() -> defer_tick() -> map(black_box) -> defer_tick() diff --git a/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_coordinator/main.rs b/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_coordinator/main.rs index 055df4f205af..dabacafa93c3 100644 --- a/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_coordinator/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_coordinator/main.rs @@ -34,16 +34,16 @@ async fn main() { let mut df = datalog!( r#" - .input clientIn `source_iter([("vote".to_string(),),]) -> persist()` + .input clientIn `source_iter([("vote".to_string(),),]) -> persist::<'static>()` .output clientOut `for_each(|(i,msg):(u32,String,)| println!("committed {:?}: {:?}", i, msg))` # EDBs - .input startIndex `source_iter([(1u32,),]) -> persist()` - .input participants `source_iter(peers.clone()) -> map(|p| (p,)) -> persist()` - .input success `source_iter([(true,),]) -> persist()` - .input reject `source_iter([(false,),]) -> persist()` - .input commitInstruct `source_iter([(true,),]) -> persist()` - .input rollbackInstruct `source_iter([(false,),]) -> persist()` + .input startIndex `source_iter([(1u32,),]) -> persist::<'static>()` + .input participants `source_iter(peers.clone()) -> map(|p| (p,)) -> persist::<'static>()` + .input success `source_iter([(true,),]) -> persist::<'static>()` + .input reject `source_iter([(false,),]) -> persist::<'static>()` + .input commitInstruct `source_iter([(true,),]) -> persist::<'static>()` + .input rollbackInstruct `source_iter([(false,),]) -> persist::<'static>()` .async voteToParticipant `map(|(node_id, v):(u32,(u32,String))| (node_id, serialize_to_bytes(v))) -> dest_sink(vote_to_participant_sink)` `null::<(u32,String,)>()` .async voteFromParticipant `null::<(u32,String,bool,u32,)>()` `source_stream(vote_from_participant_source) -> map(|v| deserialize_from_bytes::<(u32,String,bool,u32,)>(v.unwrap()).unwrap())` diff --git a/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_participant/main.rs b/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_participant/main.rs index a96a325262cd..e69226c3fe67 100644 --- a/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_participant/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/dedalus_2pc_participant/main.rs @@ -37,24 +37,24 @@ async fn main() { let mut df = datalog!( r#" - .input myID `source_iter(my_id.clone()) -> persist() -> map(|p| (p,))` - .input coordinator `source_iter(peers.clone()) -> persist() -> map(|p| (p,))` - .input verdict `source_iter([(true,),]) -> persist()` + .input myID `source_iter(my_id.clone()) -> persist::<'static>() -> map(|p| (p,))` + .input coordinator `source_iter(peers.clone()) -> persist::<'static>() -> map(|p| (p,))` + .input verdict `source_iter([(true,),]) -> persist::<'static>()` // .output voteOut `for_each(|(i,myID):(u32,u32,)| println!("participant {:?}: message {:?}", myID, i))` - + .async voteToParticipant `null::<(u32,String,)>()` `source_stream(vote_to_participant_source) -> map(|x| deserialize_from_bytes::<(u32,String,)>(x.unwrap()).unwrap())` .async voteFromParticipant `map(|(node_id, v)| (node_id, serialize_to_bytes(v))) -> dest_sink(vote_from_participant_sink)` `null::<(u32,String,)>()` .async instructToParticipant `null::<(u32,String,bool,)>()` `source_stream(instruct_to_participant_source) -> map(|x| deserialize_from_bytes::<(u32,String,bool,)>(x.unwrap()).unwrap())` .async ackFromParticipant `map(|(node_id, v)| (node_id, serialize_to_bytes(v))) -> dest_sink(ack_from_participant_sink)` `null::<(u32,String,u32,)>()` - - # .output verdictRequest + + # .output verdictRequest # .output log - + # verdictRequest(i, msg) :- voteToParticipant(i, msg) voteFromParticipant@addr(i, msg, res, l_from) :~ voteToParticipant(i, msg), coordinator(addr), myID(l_from), verdict(res) ackFromParticipant@addr(i, msg, l_from) :~ instructToParticipant(i, msg, b), coordinator(addr), myID(l_from) // voteOut(i, l) :- voteToParticipant(i, msg), myID(l) - + # log(i, msg, type) :- instructToParticipant(i, msg, type) # the log channel will sort everything out "# ); diff --git a/hydro_deploy/hydro_cli_examples/examples/dedalus_sender/main.rs b/hydro_deploy/hydro_cli_examples/examples/dedalus_sender/main.rs index 1ba3dad412f6..59b620ef5294 100644 --- a/hydro_deploy/hydro_cli_examples/examples/dedalus_sender/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/dedalus_sender/main.rs @@ -25,7 +25,7 @@ async fn main() { r#" .input repeated `spin() -> flat_map(|_| to_repeat.iter().cloned())` .input periodic `source_stream(periodic) -> map(|_| ())` - .input peers `source_iter(peers.clone()) -> persist() -> map(|p| (p,))` + .input peers `source_iter(peers.clone()) -> persist::<'static>() -> map(|p| (p,))` .async broadcast `map(|(node_id, v)| (node_id, serialize_to_bytes(v))) -> dest_sink(broadcast_sink)` `null::<(String,)>()` broadcast@n(x) :~ repeated(x), periodic(), peers(n) diff --git a/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_leader/main.rs b/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_leader/main.rs index 22ae1b349c31..978fc489487d 100644 --- a/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_leader/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_leader/main.rs @@ -22,13 +22,13 @@ async fn main() { let mut df = datalog!( r#" - .input clientIn `source_iter([("vote".to_string(),),]) -> persist()` + .input clientIn `source_iter([("vote".to_string(),),]) -> persist::<'static>()` .output stdout `for_each(|_:(String,)| println!("voted"))` - .input replicas `source_iter(peers.clone()) -> persist() -> map(|p| (p,))` + .input replicas `source_iter(peers.clone()) -> persist::<'static>() -> map(|p| (p,))` .async voteToReplica `map(|(node_id, v)| (node_id, serialize_to_bytes(v))) -> dest_sink(to_replica_sink)` `null::<(String,)>()` .async voteFromReplica `null::<(u32,String,)>()` `source_stream(from_replica_source) -> map(|v| deserialize_from_bytes::<(u32,String,)>(v.unwrap()).unwrap())` - + voteToReplica@addr(v) :~ clientIn(v), replicas(addr) allVotes(s, v) :- voteFromReplica(s, v) allVotes(s, v) :+ allVotes(s, v) diff --git a/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_participant/main.rs b/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_participant/main.rs index 262be0dfd7ef..9c07df16e9c6 100644 --- a/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_participant/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/dedalus_vote_participant/main.rs @@ -24,11 +24,11 @@ async fn main() { let mut df = datalog!( r#" - .input myID `source_iter(my_id.clone()) -> persist() -> map(|p| (p,))` - .input leader `source_iter(peers.clone()) -> persist() -> map(|p| (p,))` + .input myID `source_iter(my_id.clone()) -> persist::<'static>() -> map(|p| (p,))` + .input leader `source_iter(peers.clone()) -> persist::<'static>() -> map(|p| (p,))` .async voteToReplica `null::<(String,)>()` `source_stream(to_replica_source) -> map(|x| deserialize_from_bytes::<(String,)>(x.unwrap()).unwrap())` .async voteFromReplica `map(|(node_id, v)| (node_id, serialize_to_bytes(v))) -> dest_sink(from_replica_sink)` `null::<(u32,String,)>()` - + voteFromReplica@addr(i, v) :~ voteToReplica(v), leader(addr), myID(i) "# ); diff --git a/hydro_deploy/hydro_cli_examples/examples/ws_chat_server/main.rs b/hydro_deploy/hydro_cli_examples/examples/ws_chat_server/main.rs index fc8ac3b4d787..bf09b95596ae 100644 --- a/hydro_deploy/hydro_cli_examples/examples/ws_chat_server/main.rs +++ b/hydro_deploy/hydro_cli_examples/examples/ws_chat_server/main.rs @@ -54,7 +54,7 @@ async fn main() { util::ws_server(ws_port).await; let df = hydroflow_syntax! { - all_peers = source_iter((0..number_of_nodes).filter(move |&i| i != self_node_id)) -> persist(); + all_peers = source_iter((0..number_of_nodes).filter(move |&i| i != self_node_id)) -> persist::<'static>(); // networking from_peer = source_stream(from_peer) -> map(|b| deserialize_from_bytes::(b.unwrap()).unwrap()); @@ -68,16 +68,16 @@ async fn main() { // helpers peer_broadcast = cross_join::<'tick, 'tick, HalfMultisetJoinState>() -> to_peer; - all_peers -> [0] peer_broadcast; - to_peers = [1] peer_broadcast; + all_peers -> [0]peer_broadcast; + to_peers = [1]peer_broadcast; names = from_client -> filter_map(|(client, msg)| if let FromClient::Name(name) = msg { Some((client, name)) } else { None }); messages = from_client -> filter_map(|(client, msg)| if let FromClient::Message { id, text } = msg { Some((client, (id, text))) } else { None }); - clients_connect -> persist() -> [pos] active_clients; - clients_disconnect -> persist() -> [neg] active_clients; + clients_connect -> persist::<'static>() -> [pos]active_clients; + clients_disconnect -> persist::<'static>() -> [neg]active_clients; active_clients = difference() -> null(); // logic @@ -88,8 +88,8 @@ async fn main() { // })) -> to_client; // replicated chat - messages -> [0] local_messages; - names -> persist() -> [1] local_messages; + messages -> [0]local_messages; + names -> persist::<'static>() -> [1]local_messages; local_messages = join::<'tick, 'tick, HalfMultisetJoinState>() -> tee(); local_messages -> map(|(client_id, ((msg_id, text), name))| (ChatMessage { @@ -108,12 +108,12 @@ async fn main() { from_peer -> map(|p| (p.msg, p.node_id, p.client_id, p.msg_id)) -> all_messages; - all_messages = union() /* -> persist() -> (PATCH 2) */ -> unique::<'tick>() -> map(|t| t.0); + all_messages = union() /* -> persist::<'static>() -> (PATCH 2) */ -> unique::<'tick>() -> map(|t| t.0); broadcast_clients = cross_join::<'static /*'tick (PATCH 1) */, 'static /*'tick, HalfMultisetJoinState (PATCH 2) */>() -> multiset_delta() -> to_client; - // active_clients -> [0] broadcast_clients; (PATCH 1) - clients_connect -> [0] broadcast_clients; - all_messages -> [1] broadcast_clients; + // active_clients -> [0]broadcast_clients; (PATCH 1) + clients_connect -> [0]broadcast_clients; + all_messages -> [1]broadcast_clients; }; hydroflow::util::cli::launch_flow(df).await; diff --git a/hydroflow/examples/chat/client.rs b/hydroflow/examples/chat/client.rs index a098d8a404b7..965ae86e5344 100644 --- a/hydroflow/examples/chat/client.rs +++ b/hydroflow/examples/chat/client.rs @@ -54,7 +54,7 @@ pub(crate) async fn run_client(opts: Opts) { message: l.unwrap(), ts: Utc::now()}) -> [input]msg_send; - inbound_chan[ConnectResponse] -> persist() -> [signal]msg_send; + inbound_chan[ConnectResponse] -> persist::<'static>() -> [signal]msg_send; msg_send = defer_signal() -> map(|msg| (msg, server_addr)) -> [1]outbound_chan; // receive and print messages diff --git a/hydroflow/examples/deadlock_detector/peer.rs b/hydroflow/examples/deadlock_detector/peer.rs index 6de3bbd2fb3e..cb8c80502a75 100644 --- a/hydroflow/examples/deadlock_detector/peer.rs +++ b/hydroflow/examples/deadlock_detector/peer.rs @@ -47,8 +47,8 @@ pub(crate) async fn run_detector(opts: Opts, peer_list: Vec) { // setup gossip channel to all peers. gen_bool chooses True with the odds passed in. gossip_join = cross_join::<'tick>() -> filter(|_| gen_bool(0.8)) -> outbound_chan; - gossip = map(identity) -> persist() -> [0]gossip_join; - peers[1] -> persist() -> [1]gossip_join; + gossip = map(identity) -> persist::<'static>() -> [0]gossip_join; + peers[1] -> persist::<'static>() -> [1]gossip_join; peers[2] -> for_each(|s| println!("Peer: {:?}", s)); // prompt for input diff --git a/hydroflow/examples/kvs_mut/server.rs b/hydroflow/examples/kvs_mut/server.rs index 254315ab2e4a..1bb565fc8c98 100644 --- a/hydroflow/examples/kvs_mut/server.rs +++ b/hydroflow/examples/kvs_mut/server.rs @@ -35,7 +35,7 @@ pub(crate) async fn run_server(outbound: UdpSink, inbound: UdpStream, opts: Opts ], } }) - -> persist_mut_keyed() + -> persist_mut_keyed::<'static>() -> [0]lookup; gets -> [1]lookup; // Join PUTs and GETs by key, persisting the PUTs. diff --git a/hydroflow/examples/kvs_replicated/server.rs b/hydroflow/examples/kvs_replicated/server.rs index 49cb004844d3..177373b95f40 100644 --- a/hydroflow/examples/kvs_replicated/server.rs +++ b/hydroflow/examples/kvs_replicated/server.rs @@ -28,7 +28,7 @@ pub(crate) async fn run_server(outbound: UdpSink, inbound: UdpStream, opts: Opts // Join PUTs and GETs by key writes -> map(|(key, value, _addr)| (key, value)) -> writes_store; - writes_store = persist() -> tee(); + writes_store = persist::<'static>() -> tee(); writes_store -> [0]lookup; gets -> [1]lookup; lookup = join(); @@ -52,7 +52,7 @@ pub(crate) async fn run_server(outbound: UdpSink, inbound: UdpStream, opts: Opts // Outbound gossip. Send updates to peers. peers -> peer_store; source_iter_delta(peer_server) -> peer_store; - peer_store = union() -> persist(); + peer_store = union() -> persist::<'static>(); writes -> [0]outbound_gossip; peer_store -> [1]outbound_gossip; outbound_gossip = cross_join() diff --git a/hydroflow/examples/two_pc/coordinator.rs b/hydroflow/examples/two_pc/coordinator.rs index 72bd6ad9b33e..d6c33d336e3a 100644 --- a/hydroflow/examples/two_pc/coordinator.rs +++ b/hydroflow/examples/two_pc/coordinator.rs @@ -25,7 +25,7 @@ pub(crate) async fn run_coordinator(outbound: UdpSink, inbound: UdpStream, opts: // 2. coordinator send final decision, subordinates ACK // 3. coordinate sends END, subordinates respond with ENDED // After phase 3 we delete the xid from the phase_map - phase_map = union() -> persist_mut_keyed(); + phase_map = union() -> persist_mut_keyed::<'static>(); // set up channels outbound_chan = tee(); diff --git a/hydroflow/src/scheduled/graph.rs b/hydroflow/src/scheduled/graph.rs index 87f5fb7716b2..10ab6a3375a4 100644 --- a/hydroflow/src/scheduled/graph.rs +++ b/hydroflow/src/scheduled/graph.rs @@ -168,7 +168,11 @@ impl<'a> Hydroflow<'a> { let mut op_inst_diagnostics = Vec::new(); meta_graph.insert_node_op_insts_all(&mut op_inst_diagnostics); - assert!(op_inst_diagnostics.is_empty()); + assert!( + op_inst_diagnostics.is_empty(), + "Expected no diagnostics, got: {:#?}", + op_inst_diagnostics + ); assert!(self.meta_graph.replace(meta_graph).is_none()); } diff --git a/hydroflow/tests/compile-fail/surface_singleton_badexpr.stderr b/hydroflow/tests/compile-fail/surface_singleton_badexpr.stderr index 07d11380be92..814393a90bb5 100644 --- a/hydroflow/tests/compile-fail/surface_singleton_badexpr.stderr +++ b/hydroflow/tests/compile-fail/surface_singleton_badexpr.stderr @@ -1,10 +1,5 @@ -error[E0308]: mismatched types - --> tests/compile-fail/surface_singleton_badexpr.rs:7:40 - | -7 | -> filter(|value| value <= #my_ref) - | ^^^^^^^ expected `&u32`, found integer - | -help: consider removing deref here - | -7 | -> filter(|value| value <= #my_ref) +error: `persist` should have exactly 1 persistence lifetime arguments, actually has 0. + --> tests/compile-fail/surface_singleton_badexpr.rs:6:16 | +6 | -> persist() + | ^^^^^^^ diff --git a/hydroflow/tests/compile-fail/surface_singleton_nostate.rs b/hydroflow/tests/compile-fail/surface_singleton_nostate.rs index 97b213f4531c..1f9de7e17dbd 100644 --- a/hydroflow/tests/compile-fail/surface_singleton_nostate.rs +++ b/hydroflow/tests/compile-fail/surface_singleton_nostate.rs @@ -3,7 +3,7 @@ pub fn main() { let mut df = hydroflow::hydroflow_syntax! { my_ref = source_iter(15..=25) -> null(); source_iter(10..=30) - -> persist() + -> persist::<'static>() -> filter(|value| value <= #my_ref.as_reveal_ref()) -> null(); diff --git a/hydroflow/tests/compile-fail/surface_singleton_nostate_undefined.rs b/hydroflow/tests/compile-fail/surface_singleton_nostate_undefined.rs index 27d70dd88a8c..97731ca3a7d4 100644 --- a/hydroflow/tests/compile-fail/surface_singleton_nostate_undefined.rs +++ b/hydroflow/tests/compile-fail/surface_singleton_nostate_undefined.rs @@ -2,7 +2,7 @@ pub fn main() { let mut df = hydroflow::hydroflow_syntax! { my_ref = source_iter(15..=25) -> null(); source_iter(10..=30) - -> persist() + -> persist::<'static>() -> filter(|value| value <= #my_ref.as_reveal_ref() && value <= #unknown.as_reveal_ref()) -> null(); }; diff --git a/hydroflow/tests/compile-fail/surface_singleton_undefined.rs b/hydroflow/tests/compile-fail/surface_singleton_undefined.rs index efc87b067b58..f0eeacd5e7b4 100644 --- a/hydroflow/tests/compile-fail/surface_singleton_undefined.rs +++ b/hydroflow/tests/compile-fail/surface_singleton_undefined.rs @@ -1,7 +1,7 @@ pub fn main() { let mut df = hydroflow::hydroflow_syntax! { source_iter(10..=30) - -> persist() + -> persist::<'static>() -> filter(|value| value <= #unknown.as_reveal_ref()) -> null(); }; diff --git a/hydroflow/tests/compile-fail/surface_singleton_undefined_nostate.rs b/hydroflow/tests/compile-fail/surface_singleton_undefined_nostate.rs index 7e4081ce8583..93dbcdb85581 100644 --- a/hydroflow/tests/compile-fail/surface_singleton_undefined_nostate.rs +++ b/hydroflow/tests/compile-fail/surface_singleton_undefined_nostate.rs @@ -2,7 +2,7 @@ pub fn main() { let mut df = hydroflow::hydroflow_syntax! { my_ref = source_iter(15..=25) -> null(); source_iter(10..=30) - -> persist() + -> persist::<'static>() -> filter(|value| value <= #unknown.as_reveal_ref() && value <= #my_ref.as_reveal_ref()) -> null(); }; diff --git a/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_dot.snap index deaccd96ca41..ee9283fa7b61 100644 --- a/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([()])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) for_each(|_| time.set(Some(context.current_tick_start().elapsed().unwrap())))", shape=house, fillcolor="#ffff88"] n2v1 -> n3v1 n1v1 -> n2v1 diff --git a/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_mermaid.snap index 83678a4705bf..f3a022410193 100644 --- a/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_context__context_current_tick_start_does_not_count_time_between_ticks_async@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([()])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[/"(3v1) for_each(|_| time.set(Some(context.current_tick_start().elapsed().unwrap())))"\]:::pushClass 2v1-->3v1 1v1-->2v1 diff --git a/hydroflow/tests/snapshots/surface_persist__persist@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist@graphvis_dot.snap index f711c3760a54..022df0ac736a 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist@graphvis_dot.snap @@ -6,10 +6,10 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1, 2, 3])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) tee()", shape=house, fillcolor="#ffff88"] n4v1 [label="(n4v1) for_each(|v| pull_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] - n5v1 [label="(n5v1) persist()", shape=house, fillcolor="#ffff88"] + n5v1 [label="(n5v1) persist::<'static>()", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) for_each(|v| push_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n2v1 -> n3v1 n1v1 -> n2v1 diff --git a/hydroflow/tests/snapshots/surface_persist__persist@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist@graphvis_mermaid.snap index f93cc0c8f531..3588c671889c 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist@graphvis_mermaid.snap @@ -9,10 +9,10 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1, 2, 3])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[/"(3v1) tee()"\]:::pushClass 4v1[/"(4v1) for_each(|v| pull_tx.send(v).unwrap())"\]:::pushClass -5v1[/"(5v1) persist()"\]:::pushClass +5v1[/"(5v1) persist::<'static>()"\]:::pushClass 6v1[/"(6v1) for_each(|v| push_tx.send(v).unwrap())"\]:::pushClass 2v1-->3v1 1v1-->2v1 diff --git a/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_dot.snap index 4841ee120f8b..c4af5ac9bbcc 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_dot.snap @@ -6,8 +6,8 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) fold(|| 0, |a: &mut _, b| *a += b)", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) for_each(|x| result_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_mermaid.snap index ab3c6b4962e1..baf6b131693f 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_basic@graphvis_mermaid.snap @@ -9,8 +9,8 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"(4v1) fold(|| 0, |a: &mut _, b| *a += b)"/]:::pullClass 5v1[/"(5v1) for_each(|x| result_send.send(x).unwrap())"\]:::pushClass 6v1["(6v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_dot.snap index e37deafba096..8be883eaad8d 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_dot.snap @@ -6,11 +6,11 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([Persist(1), Persist(2), Persist(3), Persist(4), Delete(2)])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist_mut()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist_mut::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) tee()", shape=house, fillcolor="#ffff88"] n4v1 [label="(n4v1) for_each(|v| pull_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n5v1 [label="(n5v1) flat_map(|x| if x == 3 { vec![Persist(x), Delete(x)] } else { vec![Persist(x)] })", shape=house, fillcolor="#ffff88"] - n6v1 [label="(n6v1) persist_mut()", shape=invhouse, fillcolor="#88aaff"] + n6v1 [label="(n6v1) persist_mut::<'static>()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|v| push_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n8v1 [label="(n8v1) handoff", shape=parallelogram, fillcolor="#ddddff"] n9v1 [label="(n9v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_mermaid.snap index d264e0f890a9..850050cc00c5 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_mut@graphvis_mermaid.snap @@ -9,11 +9,11 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([Persist(1), Persist(2), Persist(3), Persist(4), Delete(2)])"/]:::pullClass -2v1[\"(2v1) persist_mut()"/]:::pullClass +2v1[\"(2v1) persist_mut::<'static>()"/]:::pullClass 3v1[/"(3v1) tee()"\]:::pushClass 4v1[/"(4v1) for_each(|v| pull_tx.send(v).unwrap())"\]:::pushClass 5v1[/"(5v1) flat_map(|x| if x == 3 { vec![Persist(x), Delete(x)] } else { vec![Persist(x)] })"\]:::pushClass -6v1[\"(6v1) persist_mut()"/]:::pullClass +6v1[\"(6v1) persist_mut::<'static>()"/]:::pullClass 7v1[/"(7v1) for_each(|v| push_tx.send(v).unwrap())"\]:::pushClass 8v1["(8v1) handoff"]:::otherClass 9v1["(9v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_dot.snap index 4b19ff89311c..c1e61e9ec370 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_dot.snap @@ -6,11 +6,11 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([Persist(1, 1), Persist(2, 2), Persist(3, 3), Persist(4, 4), Delete(2)])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist_mut_keyed()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist_mut_keyed::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) tee()", shape=house, fillcolor="#ffff88"] n4v1 [label="(n4v1) for_each(|(_k, v)| pull_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n5v1 [label="(n5v1) flat_map(|(k, v)| {\l if v == 3 { vec![Persist(k, v), Delete(k)] } else { vec![Persist(k, v)] }\l})\l", shape=house, fillcolor="#ffff88"] - n6v1 [label="(n6v1) persist_mut_keyed()", shape=invhouse, fillcolor="#88aaff"] + n6v1 [label="(n6v1) persist_mut_keyed::<'static>()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|(_k, v)| push_tx.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n8v1 [label="(n8v1) handoff", shape=parallelogram, fillcolor="#ddddff"] n9v1 [label="(n9v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_mermaid.snap index 1e8605d15fbd..d06101fd8954 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_mut_keyed@graphvis_mermaid.snap @@ -9,11 +9,11 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([Persist(1, 1), Persist(2, 2), Persist(3, 3), Persist(4, 4), Delete(2)])"/]:::pullClass -2v1[\"(2v1) persist_mut_keyed()"/]:::pullClass +2v1[\"(2v1) persist_mut_keyed::<'static>()"/]:::pullClass 3v1[/"(3v1) tee()"\]:::pushClass 4v1[/"(4v1) for_each(|(_k, v)| pull_tx.send(v).unwrap())"\]:::pushClass 5v1[/"
(5v1)
flat_map(|(k, v)| {
if v == 3 { vec![Persist(k, v), Delete(k)] } else { vec![Persist(k, v)] }
})
"\]:::pushClass -6v1[\"(6v1) persist_mut_keyed()"/]:::pullClass +6v1[\"(6v1) persist_mut_keyed::<'static>()"/]:::pullClass 7v1[/"(7v1) for_each(|(_k, v)| push_tx.send(v).unwrap())"\]:::pushClass 8v1["(8v1) handoff"]:::otherClass 9v1["(9v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_dot.snap index 9b2dc651c338..9834556ec043 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_dot.snap @@ -6,10 +6,10 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) null()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) union()", shape=invhouse, fillcolor="#88aaff"] - n5v1 [label="(n5v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n5v1 [label="(n5v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) null()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) union()", shape=invhouse, fillcolor="#88aaff"] n8v1 [label="(n8v1) fold(|| 0, |a: &mut _, b| *a += b)", shape=invhouse, fillcolor="#88aaff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_mermaid.snap index c2df93103682..5b2da7eb3da8 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_pull@graphvis_mermaid.snap @@ -9,10 +9,10 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) null()"/]:::pullClass 4v1[\"(4v1) union()"/]:::pullClass -5v1[\"(5v1) persist()"/]:::pullClass +5v1[\"(5v1) persist::<'static>()"/]:::pullClass 6v1[\"(6v1) null()"/]:::pullClass 7v1[\"(7v1) union()"/]:::pullClass 8v1[\"(8v1) fold(|| 0, |a: &mut _, b| *a += b)"/]:::pullClass diff --git a/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_dot.snap index baa2dc5d1593..f8c0fd045d7b 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_dot.snap @@ -6,10 +6,10 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) tee()", shape=house, fillcolor="#ffff88"] n4v1 [label="(n4v1) null()", shape=house, fillcolor="#ffff88"] - n5v1 [label="(n5v1) persist()", shape=house, fillcolor="#ffff88"] + n5v1 [label="(n5v1) persist::<'static>()", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) tee()", shape=house, fillcolor="#ffff88"] n7v1 [label="(n7v1) null()", shape=house, fillcolor="#ffff88"] n8v1 [label="(n8v1) fold(|| 0, |a: &mut _, b| *a += b)", shape=invhouse, fillcolor="#88aaff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_mermaid.snap index 142d6873d1a6..d542edfcbc33 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_push@graphvis_mermaid.snap @@ -9,10 +9,10 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[/"(3v1) tee()"\]:::pushClass 4v1[/"(4v1) null()"\]:::pushClass -5v1[/"(5v1) persist()"\]:::pushClass +5v1[/"(5v1) persist::<'static>()"\]:::pushClass 6v1[/"(6v1) tee()"\]:::pushClass 7v1[/"(7v1) null()"\]:::pushClass 8v1[\"(8v1) fold(|| 0, |a: &mut _, b| *a += b)"/]:::pullClass diff --git a/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_dot.snap index be25a6daab05..07092b6a6561 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_stream(persist_input)", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) fold::<'tick>(|| 0, |a: &mut _, b| *a += b)", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) next_stratum()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) source_stream(other_input)", shape=invhouse, fillcolor="#88aaff"] diff --git a/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_mermaid.snap index c4246328d3aa..644158b1e508 100644 --- a/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_persist__persist_replay_join@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_stream(persist_input)"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) fold::<'tick>(|| 0, |a: &mut _, b| *a += b)"/]:::pullClass 4v1[\"(4v1) next_stratum()"/]:::pullClass 5v1[\"(5v1) source_stream(other_input)"/]:::pullClass diff --git a/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_dot.snap index a0a2d0c663c4..8bca14967e93 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_dot.snap @@ -7,7 +7,7 @@ digraph { edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter(0..10)", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) map(|i| (i, i))", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) union()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) tee()", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) filter(|_| false)", shape=invhouse, fillcolor="#88aaff"] diff --git a/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_mermaid.snap index db41a1769bb3..cae3d863bdf9 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__issue_800_1050_persist@graphvis_mermaid.snap @@ -10,7 +10,7 @@ classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(0..10)"/]:::pullClass 2v1[\"(2v1) map(|i| (i, i))"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"(4v1) union()"/]:::pullClass 5v1[/"(5v1) tee()"\]:::pushClass 6v1[\"(6v1) filter(|_| false)"/]:::pullClass diff --git a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_dot.snap index ecfbd420afa1..3ea95ef3af1b 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_dot.snap @@ -7,7 +7,7 @@ digraph { edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1])", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) next_stratum()", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) defer_tick_lazy()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) null()", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_mermaid.snap index 7d3779e117e2..8e013783541c 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961@graphvis_mermaid.snap @@ -10,7 +10,7 @@ classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1])"/]:::pullClass 2v1[\"(2v1) next_stratum()"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"(4v1) defer_tick_lazy()"/]:::pullClass 5v1[/"(5v1) null()"\]:::pushClass 6v1["(6v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_dot.snap index eaf1d054c964..1b14c0342b95 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_dot.snap @@ -7,7 +7,7 @@ digraph { edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([1])", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) union()", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) fold(|| 0, |accum, x| *accum += x)", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) defer_tick_lazy()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) filter(|_| false)", shape=invhouse, fillcolor="#88aaff"] diff --git a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_mermaid.snap index 6754b7c2d80d..4dc59de2c175 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__nospin_issue_961_complicated@graphvis_mermaid.snap @@ -10,7 +10,7 @@ classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([1])"/]:::pullClass 2v1[\"(2v1) union()"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"(4v1) fold(|| 0, |accum, x| *accum += x)"/]:::pullClass 5v1[\"(5v1) defer_tick_lazy()"/]:::pullClass 6v1[\"(6v1) filter(|_| false)"/]:::pullClass diff --git a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_dot.snap index d430f5d0ce33..92dd049fed4f 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([0])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) next_stratum()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) for_each(|x| out_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] n5v1 [label="(n5v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_mermaid.snap index 4cefcb0bc715..095cadbbbc04 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_async@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([0])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) next_stratum()"/]:::pullClass 4v1[/"(4v1) for_each(|x| out_send.send(x).unwrap())"\]:::pushClass 5v1["(5v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_dot.snap index de051be55128..e33d6db6e66b 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter([0])", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) next_stratum()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) for_each(|x| out_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] n5v1 [label="(n5v1) handoff", shape=parallelogram, fillcolor="#ddddff"] diff --git a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_mermaid.snap index 86b96ec7925c..00c5bc1eb608 100644 --- a/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_scheduling__persist_stratum_run_available@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter([0])"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) next_stratum()"/]:::pullClass 4v1[/"(4v1) for_each(|x| out_send.send(x).unwrap())"\]:::pushClass 5v1["(5v1) handoff"]:::otherClass diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_dot.snap index 35fc09404a43..cd2030e3f60b 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_dot.snap @@ -12,7 +12,7 @@ digraph { n5v1 [label="(n5v1) tee()", shape=house, fillcolor="#ffff88"] n6v1 [label="(n6v1) identity::>()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) cross_join()", shape=invhouse, fillcolor="#88aaff"] - n8v1 [label="(n8v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n8v1 [label="(n8v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n9v1 [label="(n9v1) filter(|(value, max_of_stream2)| { value <= max_of_stream2.as_reveal_ref() })", shape=invhouse, fillcolor="#88aaff"] n10v1 [label="(n10v1) map(|(x, _max)| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n11v1 [label="(n11v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_mermaid.snap index 995f5bf47187..1f7facabe850 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_cross@graphvis_mermaid.snap @@ -15,7 +15,7 @@ linkStyle default stroke:#aaa 5v1[/"(5v1) tee()"\]:::pushClass 6v1[\"(6v1) identity::<Max<_>>()"/]:::pullClass 7v1[\"(7v1) cross_join()"/]:::pullClass -8v1[\"(8v1) persist()"/]:::pullClass +8v1[\"(8v1) persist::<'static>()"/]:::pullClass 9v1[\"(9v1) filter(|(value, max_of_stream2)| { value <= max_of_stream2.as_reveal_ref() })"/]:::pullClass 10v1[\"(10v1) map(|(x, _max)| (context.current_tick(), x))"/]:::pullClass 11v1[/"(11v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_dot.snap index 415e6dc8d5a3..c248430df7c9 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_dot.snap @@ -8,7 +8,7 @@ digraph { n1v1 [label="(n1v1) source_iter(1..=10)", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) source_iter(3..=5)", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) fold(|| 0, |a, b| *a = std::cmp::max(*a, b))", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) filter(|&value| { value <= max_of_stream2 })", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) map(|x| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_mermaid.snap index b7b9a08eb1bd..829ba0ad2920 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_singleton@graphvis_mermaid.snap @@ -11,7 +11,7 @@ linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(1..=10)"/]:::pullClass 2v1[\"(2v1) source_iter(3..=5)"/]:::pullClass 3v1[\"(3v1) fold(|| 0, |a, b| *a = std::cmp::max(*a, b))"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) filter(|&value| { value <= max_of_stream2 })"/]:::pullClass 6v1[\"(6v1) map(|x| (context.current_tick(), x))"/]:::pullClass 7v1[/"(7v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_dot.snap index 13bf2dee433b..313356b0c3b9 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_dot.snap @@ -8,7 +8,7 @@ digraph { n1v1 [label="(n1v1) source_iter(1..=10)", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) source_iter(3..=5)", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) fold(|| 0, |a, b| *a = std::cmp::max(*a, b))", shape=house, fillcolor="#ffff88"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) filter(|&value| { value <= max_of_stream2 })", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) map(|x| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_mermaid.snap index 1d8c66aed039..44963ff34e03 100644 --- a/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__fold_singleton_push@graphvis_mermaid.snap @@ -11,7 +11,7 @@ linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(1..=10)"/]:::pullClass 2v1[\"(2v1) source_iter(3..=5)"/]:::pullClass 3v1[/"(3v1) fold(|| 0, |a, b| *a = std::cmp::max(*a, b))"\]:::pushClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) filter(|&value| { value <= max_of_stream2 })"/]:::pullClass 6v1[\"(6v1) map(|x| (context.current_tick(), x))"/]:::pullClass 7v1[/"(7v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_dot.snap index 35d4e37a28b8..5112bb612b76 100644 --- a/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_dot.snap @@ -1,6 +1,6 @@ --- source: hydroflow/tests/surface_singleton.rs -expression: "df.meta_graph().unwrap().to_dot(&Default::default())" +expression: "df.meta_graph().unwrap().to_dot(& Default :: default())" --- digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; @@ -14,7 +14,7 @@ digraph { n7v1 [label="(n7v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] n8v1 [label="(n8v1) map(|x| (context.current_tick(), x.into_reveal()))", shape=invhouse, fillcolor="#88aaff"] n9v1 [label="(n9v1) for_each(|x| max_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] - n10v1 [label="(n10v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n10v1 [label="(n10v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n2v1 -> n3v1 [color=darkgreen, style=dashed] n3v1 -> n4v1 [color=darkgreen, style=dashed] n6v1 -> n7v1 diff --git a/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_mermaid.snap index 38d9c67fb2a1..7f922637b5c7 100644 --- a/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__persist_insertion_state@graphvis_mermaid.snap @@ -1,6 +1,6 @@ --- source: hydroflow/tests/surface_singleton.rs -expression: "df.meta_graph().unwrap().to_mermaid(&Default::default())" +expression: "df.meta_graph().unwrap().to_mermaid(& Default :: default())" --- %%{init:{'theme':'base','themeVariables':{'clusterBkg':'#ddd','clusterBorder':'#888'}}}%% flowchart TD @@ -17,7 +17,7 @@ linkStyle default stroke:#aaa 7v1[/"(7v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass 8v1[\"(8v1) map(|x| (context.current_tick(), x.into_reveal()))"/]:::pullClass 9v1[/"(9v1) for_each(|x| max_send.send(x).unwrap())"\]:::pushClass -10v1[\"(10v1) persist()"/]:::pullClass +10v1[\"(10v1) persist::<'static>()"/]:::pullClass 2v1-.->3v1; linkStyle 0 stroke:#060 3v1-.->4v1; linkStyle 1 stroke:#060 6v1-->7v1 diff --git a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_dot.snap index 23a1d4e3ad35..83a545a6d852 100644 --- a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_dot.snap @@ -8,7 +8,7 @@ digraph { n1v1 [label="(n1v1) source_iter(1..=10)", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) source_iter(3..=5)", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) reduce(|a, b| *a = std::cmp::max(*a, b))", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) filter(|&value| { value <= max_of_stream2.unwrap_or(0) })", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) map(|x| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_mermaid.snap index 37ce7097216a..88687b0df810 100644 --- a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton@graphvis_mermaid.snap @@ -11,7 +11,7 @@ linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(1..=10)"/]:::pullClass 2v1[\"(2v1) source_iter(3..=5)"/]:::pullClass 3v1[\"(3v1) reduce(|a, b| *a = std::cmp::max(*a, b))"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) filter(|&value| { value <= max_of_stream2.unwrap_or(0) })"/]:::pullClass 6v1[\"(6v1) map(|x| (context.current_tick(), x))"/]:::pullClass 7v1[/"(7v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_dot.snap index 6ae2459f541b..c85259bdf6d6 100644 --- a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_dot.snap @@ -8,7 +8,7 @@ digraph { n1v1 [label="(n1v1) source_iter(1..=10)", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) source_iter(3..=5)", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) reduce(|a, b| *a = std::cmp::max(*a, b))", shape=house, fillcolor="#ffff88"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) filter(|&value| { value <= max_of_stream2.unwrap_or(0) })", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) map(|x| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_mermaid.snap index 15c709365184..e49d15044872 100644 --- a/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__reduce_singleton_push@graphvis_mermaid.snap @@ -11,7 +11,7 @@ linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(1..=10)"/]:::pullClass 2v1[\"(2v1) source_iter(3..=5)"/]:::pullClass 3v1[/"(3v1) reduce(|a, b| *a = std::cmp::max(*a, b))"\]:::pushClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) filter(|&value| { value <= max_of_stream2.unwrap_or(0) })"/]:::pullClass 6v1[\"(6v1) map(|x| (context.current_tick(), x))"/]:::pullClass 7v1[/"(7v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_singleton__state@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_singleton__state@graphvis_dot.snap index 35f5f69c9906..522705119c49 100644 --- a/hydroflow/tests/snapshots/surface_singleton__state@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_singleton__state@graphvis_dot.snap @@ -9,7 +9,7 @@ digraph { n2v1 [label="(n2v1) source_iter_delta(3..=5)", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) map(Max::new)", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) state::<'static, Max<_>>()", shape=invhouse, fillcolor="#88aaff"] - n5v1 [label="(n5v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n5v1 [label="(n5v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) filter(|value| { value <= max_of_stream2.as_reveal_ref() })", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) map(|x| (context.current_tick(), x))", shape=invhouse, fillcolor="#88aaff"] n8v1 [label="(n8v1) for_each(|x| filter_send.send(x).unwrap())", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_singleton__state@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_singleton__state@graphvis_mermaid.snap index 605b75e2e18e..1b9cc58d82d0 100644 --- a/hydroflow/tests/snapshots/surface_singleton__state@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_singleton__state@graphvis_mermaid.snap @@ -12,7 +12,7 @@ linkStyle default stroke:#aaa 2v1[\"(2v1) source_iter_delta(3..=5)"/]:::pullClass 3v1[\"(3v1) map(Max::new)"/]:::pullClass 4v1[\"(4v1) state::<'static, Max<_>>()"/]:::pullClass -5v1[\"(5v1) persist()"/]:::pullClass +5v1[\"(5v1) persist::<'static>()"/]:::pullClass 6v1[\"(6v1) filter(|value| { value <= max_of_stream2.as_reveal_ref() })"/]:::pullClass 7v1[\"(7v1) map(|x| (context.current_tick(), x))"/]:::pullClass 8v1[/"(8v1) for_each(|x| filter_send.send(x).unwrap())"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_dot.snap index 0d191437fa3f..c3a5db025643 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_dot.snap @@ -6,13 +6,13 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter(0..10)", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter(5..15)", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) union()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) unique::<'static>()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) source_iter(0..0)", shape=invhouse, fillcolor="#88aaff"] - n8v1 [label="(n8v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n8v1 [label="(n8v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n9v1 [label="(n9v1) union()", shape=invhouse, fillcolor="#88aaff"] n10v1 [label="(n10v1) for_each(|v| out_send.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n2v1 -> n5v1 diff --git a/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_mermaid.snap index 1bb474eba381..2c60336ba20a 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_static_pull@graphvis_mermaid.snap @@ -9,13 +9,13 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(0..10)"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) source_iter(5..15)"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) union()"/]:::pullClass 6v1[\"(6v1) unique::<'static>()"/]:::pullClass 7v1[\"(7v1) source_iter(0..0)"/]:::pullClass -8v1[\"(8v1) persist()"/]:::pullClass +8v1[\"(8v1) persist::<'static>()"/]:::pullClass 9v1[\"(9v1) union()"/]:::pullClass 10v1[/"(10v1) for_each(|v| out_send.send(v).unwrap())"\]:::pushClass 2v1-->5v1 diff --git a/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_dot.snap index 57a2df4eb0e6..0a9941d987f5 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_dot.snap @@ -6,9 +6,9 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter(0..10)", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter(5..15)", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) union()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) tee()", shape=house, fillcolor="#ffff88"] n7v1 [label="(n7v1) unique::<'static>()", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_mermaid.snap index d6815662e998..462af4169a0a 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_static_push@graphvis_mermaid.snap @@ -9,9 +9,9 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(0..10)"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) source_iter(5..15)"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) union()"/]:::pullClass 6v1[/"(6v1) tee()"\]:::pushClass 7v1[/"(7v1) unique::<'static>()"\]:::pushClass diff --git a/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_dot.snap index 332d5ab79f4a..ecc7a68fb9f6 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_dot.snap @@ -6,13 +6,13 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter(0..10)", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter(5..15)", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) union()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) unique::<'tick>()", shape=invhouse, fillcolor="#88aaff"] n7v1 [label="(n7v1) source_iter(0..0)", shape=invhouse, fillcolor="#88aaff"] - n8v1 [label="(n8v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n8v1 [label="(n8v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n9v1 [label="(n9v1) union()", shape=invhouse, fillcolor="#88aaff"] n10v1 [label="(n10v1) for_each(|v| out_send.send(v).unwrap())", shape=house, fillcolor="#ffff88"] n2v1 -> n5v1 diff --git a/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_mermaid.snap index 7bd30e348d1f..f74ac96916d7 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_tick_pull@graphvis_mermaid.snap @@ -9,13 +9,13 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(0..10)"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) source_iter(5..15)"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) union()"/]:::pullClass 6v1[\"(6v1) unique::<'tick>()"/]:::pullClass 7v1[\"(7v1) source_iter(0..0)"/]:::pullClass -8v1[\"(8v1) persist()"/]:::pullClass +8v1[\"(8v1) persist::<'static>()"/]:::pullClass 9v1[\"(9v1) union()"/]:::pullClass 10v1[/"(10v1) for_each(|v| out_send.send(v).unwrap())"\]:::pushClass 2v1-->5v1 diff --git a/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_dot.snap b/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_dot.snap index 76d9a5ab8e9f..bd307e83c43d 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_dot.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_dot.snap @@ -6,9 +6,9 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter(0..10)", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter(5..15)", shape=invhouse, fillcolor="#88aaff"] - n4v1 [label="(n4v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n4v1 [label="(n4v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) union()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) tee()", shape=house, fillcolor="#ffff88"] n7v1 [label="(n7v1) unique::<'tick>()", shape=house, fillcolor="#ffff88"] diff --git a/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_mermaid.snap b/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_mermaid.snap index c29e2ede89a3..cede5798d772 100644 --- a/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_mermaid.snap +++ b/hydroflow/tests/snapshots/surface_unique__unique_tick_push@graphvis_mermaid.snap @@ -9,9 +9,9 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"(1v1) source_iter(0..10)"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"(3v1) source_iter(5..15)"/]:::pullClass -4v1[\"(4v1) persist()"/]:::pullClass +4v1[\"(4v1) persist::<'static>()"/]:::pullClass 5v1[\"(5v1) union()"/]:::pullClass 6v1[/"(6v1) tee()"\]:::pushClass 7v1[/"(7v1) unique::<'tick>()"\]:::pushClass diff --git a/hydroflow/tests/surface_async.rs b/hydroflow/tests/surface_async.rs index 815741a90957..ac18db158cb7 100644 --- a/hydroflow/tests/surface_async.rs +++ b/hydroflow/tests/surface_async.rs @@ -428,7 +428,7 @@ async fn asynctest_repeat_iter() { let (b_send, b_recv) = hydroflow::util::unbounded_channel::(); let mut hf = hydroflow_syntax! { - source_iter(0..3) -> persist() + source_iter(0..3) -> persist::<'static>() -> for_each(|x| b_send.send(x).unwrap()); }; hf.run_available_async().await; @@ -443,7 +443,7 @@ async fn asynctest_event_repeat_iter() { let (b_send, b_recv) = hydroflow::util::unbounded_channel::(); let mut hf = hydroflow_syntax! { - source_iter(0..3) -> persist() -> my_union; + source_iter(0..3) -> persist::<'static>() -> my_union; source_stream(a_recv) -> my_union; my_union = union() -> for_each(|x| b_send.send(x).unwrap()); }; diff --git a/hydroflow/tests/surface_context.rs b/hydroflow/tests/surface_context.rs index 3ce7462b713c..77cdbc178610 100644 --- a/hydroflow/tests/surface_context.rs +++ b/hydroflow/tests/surface_context.rs @@ -38,7 +38,7 @@ pub async fn test_context_current_tick_start_does_not_count_time_between_ticks_a let time = time.clone(); hydroflow_syntax! { source_iter([()]) - -> persist() + -> persist::<'static>() -> for_each(|_| time.set(Some(context.current_tick_start().elapsed().unwrap()))); } }; diff --git a/hydroflow/tests/surface_multiset_delta.rs b/hydroflow/tests/surface_multiset_delta.rs index 7a66861393c6..feff9c813996 100644 --- a/hydroflow/tests/surface_multiset_delta.rs +++ b/hydroflow/tests/surface_multiset_delta.rs @@ -35,7 +35,7 @@ pub fn test_persist_multiset_delta() { let (output_send, mut output_recv) = hydroflow::util::unbounded_channel::(); let mut flow = hydroflow::hydroflow_syntax! { source_stream(input_recv) - -> persist() + -> persist::<'static>() -> multiset_delta() -> for_each(|x| output_send.send(x).unwrap()); }; @@ -84,8 +84,8 @@ fn test_chat_app_replay() { let (out, mut out_recv) = hydroflow::util::unbounded_channel::<(u32, String)>(); let mut chat_server = hydroflow_syntax! { - users = source_stream(users) -> persist(); - messages = source_stream(messages) -> persist(); + users = source_stream(users) -> persist::<'static>(); + messages = source_stream(messages) -> persist::<'static>(); users -> [0]crossed; messages -> [1]crossed; crossed = cross_join::<'tick, 'tick>() diff --git a/hydroflow/tests/surface_persist.rs b/hydroflow/tests/surface_persist.rs index 29d07ff88bbc..ca8b2a4eee95 100644 --- a/hydroflow/tests/surface_persist.rs +++ b/hydroflow/tests/surface_persist.rs @@ -12,8 +12,8 @@ pub fn test_persist_basic() { let mut hf = hydroflow_syntax! { source_iter([1]) - -> persist() - -> persist() + -> persist::<'static>() + -> persist::<'static>() -> fold(|| 0, |a: &mut _, b| *a += b) -> for_each(|x| result_send.send(x).unwrap()); }; @@ -34,10 +34,10 @@ pub fn test_persist_pull() { let (result_send, mut result_recv) = hydroflow::util::unbounded_channel::(); let mut hf = hydroflow_syntax! { - // Structured to ensure `persist()` is pull-based. - source_iter([1]) -> persist() -> m0; + // Structured to ensure `persist::<'static>()` is pull-based. + source_iter([1]) -> persist::<'static>() -> m0; null() -> m0; - m0 = union() -> persist() -> m1; + m0 = union() -> persist::<'static>() -> m1; null() -> m1; m1 = union() -> fold(|| 0, |a: &mut _, b| *a += b) @@ -60,9 +60,9 @@ pub fn test_persist_push() { let (result_send, mut result_recv) = hydroflow::util::unbounded_channel::(); let mut hf = hydroflow_syntax! { - t0 = source_iter([1]) -> persist() -> tee(); + t0 = source_iter([1]) -> persist::<'static>() -> tee(); t0 -> null(); - t1 = t0 -> persist() -> tee(); + t1 = t0 -> persist::<'static>() -> tee(); t1 -> null(); t1 -> fold(|| 0, |a: &mut _, b| *a += b) -> for_each(|x| result_send.send(x).unwrap()); }; @@ -82,8 +82,8 @@ pub fn test_persist_push() { pub fn test_persist_join() { let (input_send, input_recv) = hydroflow::util::unbounded_channel::<(&str, &str)>(); let mut flow = hydroflow::hydroflow_syntax! { - source_iter([("hello", "world")]) -> persist() -> [0]my_join; - source_stream(input_recv) -> persist() -> [1]my_join; + source_iter([("hello", "world")]) -> persist::<'static>() -> [0]my_join; + source_stream(input_recv) -> persist::<'static>() -> [1]my_join; my_join = join::<'tick>() -> for_each(|(k, (v1, v2))| println!("({}, ({}, {}))", k, v1, v2)); }; input_send.send(("hello", "oakland")).unwrap(); @@ -100,7 +100,7 @@ pub fn test_persist_replay_join() { let mut hf = hydroflow_syntax! { source_stream(persist_input) - -> persist() + -> persist::<'static>() -> fold::<'tick>(|| 0, |a: &mut _, b| *a += b) -> next_stratum() -> [0]product_node; @@ -136,7 +136,7 @@ pub fn test_persist_double_handoff() { teed_first_sg -> [0] joined_second_sg; teed_first_sg -> [1] joined_second_sg; - source_stream(input_recv) -> persist() + source_stream(input_recv) -> persist::<'static>() -> inspect(|x| println!("LHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [0] cross; joined_second_sg = cross_join::<'tick, 'tick>() -> map(|t| t.0) -> inspect(|x| println!("RHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [1] cross; @@ -166,7 +166,7 @@ pub fn test_persist_single_handoff() { teed_first_sg [1] -> joined_second_sg; null() -> joined_second_sg; - source_stream(input_recv) -> persist() + source_stream(input_recv) -> persist::<'static>() -> inspect(|x| println!("LHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [0] cross; joined_second_sg = union() -> inspect(|x| println!("RHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [1] cross; @@ -193,7 +193,7 @@ pub fn test_persist_single_subgraph() { let mut flow = hydroflow::hydroflow_syntax! { source_stream(input_2_recv) -> joined_second_sg; - source_stream(input_recv) -> persist() + source_stream(input_recv) -> persist::<'static>() -> inspect(|x| println!("LHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [0] cross; joined_second_sg = inspect(|x| println!("RHS {} {}:{}", x, context.current_tick(), context.current_stratum())) -> [1] cross; cross = cross_join::<'tick, 'tick, HalfMultisetJoinState>() -> for_each(|x| output_send.send(x).unwrap()); @@ -219,14 +219,14 @@ pub fn test_persist() { let mut df = hydroflow_syntax! { my_tee = source_iter([1, 2, 3]) - -> persist() // pull + -> persist::<'static>() // pull -> tee(); my_tee -> for_each(|v| pull_tx.send(v).unwrap()); my_tee - -> persist() // push + -> persist::<'static>() // push -> for_each(|v| push_tx.send(v).unwrap()); }; assert_graphvis_snapshots!(df); @@ -246,7 +246,7 @@ pub fn test_persist_mut() { let mut df = hydroflow_syntax! { my_tee = source_iter([Persist(1), Persist(2), Persist(3), Persist(4), Delete(2)]) - -> persist_mut() // pull + -> persist_mut::<'static>() // pull -> tee(); my_tee @@ -254,7 +254,7 @@ pub fn test_persist_mut() { my_tee -> flat_map(|x| if x == 3 {vec![Persist(x), Delete(x)]} else {vec![Persist(x)]}) - -> persist_mut() // push + -> persist_mut::<'static>() // push -> for_each(|v| push_tx.send(v).unwrap()); }; assert_graphvis_snapshots!(df); @@ -274,7 +274,7 @@ pub fn test_persist_mut_keyed() { let mut df = hydroflow_syntax! { my_tee = source_iter([Persist(1, 1), Persist(2, 2), Persist(3, 3), Persist(4, 4), Delete(2)]) - -> persist_mut_keyed() // pull + -> persist_mut_keyed::<'static>() // pull -> tee(); my_tee @@ -282,7 +282,7 @@ pub fn test_persist_mut_keyed() { my_tee -> flat_map(|(k, v)| if v == 3 {vec![Persist(k, v), Delete(k)]} else {vec![Persist(k, v)]}) - -> persist_mut_keyed() // push + -> persist_mut_keyed::<'static>() // push -> for_each(|(_k, v)| push_tx.send(v).unwrap()); }; assert_graphvis_snapshots!(df); diff --git a/hydroflow/tests/surface_scheduling.rs b/hydroflow/tests/surface_scheduling.rs index 7360085dedec..1bff6147ba27 100644 --- a/hydroflow/tests/surface_scheduling.rs +++ b/hydroflow/tests/surface_scheduling.rs @@ -80,7 +80,7 @@ async fn test_persist_stratum_run_available() -> Result<(), Box> { let mut df = hydroflow_syntax! { a = source_iter([0]) - -> persist() + -> persist::<'static>() -> next_stratum() -> for_each(|x| out_send.send(x).unwrap()); }; @@ -104,7 +104,7 @@ async fn test_persist_stratum_run_async() -> Result<(), Box> { let mut df = hydroflow_syntax! { source_iter([0]) - -> persist() + -> persist::<'static>() -> next_stratum() -> for_each(|x| out_send.send(x).unwrap()); }; @@ -129,7 +129,7 @@ async fn test_persist_stratum_run_async() -> Result<(), Box> { pub fn test_issue_800_1050_persist() { let mut df = hydroflow_syntax! { in1 = source_iter(0..10) -> map(|i| (i, i)); - in1 -> persist() -> my_union_tee; + in1 -> persist::<'static>() -> my_union_tee; my_union_tee = union() -> tee(); my_union_tee -> filter(|_| false) -> my_union_tee; @@ -172,7 +172,7 @@ async fn test_nospin_issue_961() { let mut df = hydroflow_syntax! { source_iter([1]) -> next_stratum() - -> persist() + -> persist::<'static>() -> defer_tick_lazy() -> null(); }; @@ -190,7 +190,7 @@ async fn test_nospin_issue_961_complicated() { items = union(); double = items - -> persist() + -> persist::<'static>() -> fold(|| 0, |accum, x| *accum += x) -> defer_tick_lazy() -> filter(|_| false) diff --git a/hydroflow/tests/surface_singleton.rs b/hydroflow/tests/surface_singleton.rs index 480912eec40d..a0e3958801b0 100644 --- a/hydroflow/tests/surface_singleton.rs +++ b/hydroflow/tests/surface_singleton.rs @@ -16,7 +16,7 @@ pub fn test_state() { max_of_stream2 = stream2 -> state::<'static, Max<_>>(); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|value| { // This is not monotonic. value <= #max_of_stream2.as_reveal_ref() @@ -131,7 +131,7 @@ pub fn test_fold_cross() { max_of_stream2 -> identity::>() -> [1]filtered_stream2; filtered_stream2 = cross_join() - -> persist() + -> persist::<'static>() -> filter(|(value, max_of_stream2)| { // This is not monotonic. value <= max_of_stream2.as_reveal_ref() @@ -177,7 +177,7 @@ pub fn test_fold_singleton() { max_of_stream2 = stream2 -> fold(|| 0, |a, b| *a = std::cmp::max(*a, b)); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|&value| { // This is not monotonic. value <= #max_of_stream2 @@ -221,7 +221,7 @@ pub fn test_fold_singleton_push() { max_of_stream2 = stream2 -> fold(|| 0, |a, b| *a = std::cmp::max(*a, b)); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|&value| { // This is not monotonic. value <= #max_of_stream2 @@ -258,7 +258,7 @@ pub fn test_reduce_singleton() { max_of_stream2 = stream2 -> reduce(|a, b| *a = std::cmp::max(*a, b)); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|&value| { // This is not monotonic. value <= #max_of_stream2.unwrap_or(0) @@ -302,7 +302,7 @@ pub fn test_reduce_singleton_push() { max_of_stream2 = stream2 -> reduce(|a, b| *a = std::cmp::max(*a, b)); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|&value| { // This is not monotonic. value <= #max_of_stream2.unwrap_or(0) @@ -338,7 +338,7 @@ pub fn test_scheduling() { max_of_stream2 = stream2 -> fold(|| 0, |a, b| *a = std::cmp::max(*a, b)); filtered_stream1 = stream1 - -> persist() + -> persist::<'static>() -> filter(|&value| { // This is not monotonic. value <= #max_of_stream2 diff --git a/hydroflow/tests/surface_state_scheduling.rs b/hydroflow/tests/surface_state_scheduling.rs index 480ba0ebc73f..7b1eed27e052 100644 --- a/hydroflow/tests/surface_state_scheduling.rs +++ b/hydroflow/tests/surface_state_scheduling.rs @@ -8,7 +8,7 @@ pub fn test_repeat_iter() { let (out_send, mut out_recv) = hydroflow::util::unbounded_channel::(); let mut df = hydroflow_syntax! { - source_iter([1]) -> persist() -> for_each(|v| out_send.send(v).unwrap()); + source_iter([1]) -> persist::<'static>() -> for_each(|v| out_send.send(v).unwrap()); }; assert_eq!( (TickInstant::new(0), 0), diff --git a/hydroflow/tests/surface_unique.rs b/hydroflow/tests/surface_unique.rs index 4594a6974662..5aa32c08590f 100644 --- a/hydroflow/tests/surface_unique.rs +++ b/hydroflow/tests/surface_unique.rs @@ -38,10 +38,10 @@ pub fn test_unique_tick_pull() { let (out_send, mut out_recv) = hydroflow::util::unbounded_channel::(); let mut df = hydroflow_syntax! { - source_iter(0..10) -> persist() -> m1; - source_iter(5..15) -> persist() -> m1; + source_iter(0..10) -> persist::<'static>() -> m1; + source_iter(5..15) -> persist::<'static>() -> m1; m1 = union() -> unique::<'tick>() -> m2; - source_iter(0..0) -> persist() -> m2; // Extra union to force `unique()` to be pull. + source_iter(0..0) -> persist::<'static>() -> m2; // Extra union to force `unique()` to be pull. m2 = union() -> for_each(|v| out_send.send(v).unwrap()); }; assert_graphvis_snapshots!(df); @@ -61,10 +61,10 @@ pub fn test_unique_static_pull() { let (out_send, mut out_recv) = hydroflow::util::unbounded_channel::(); let mut df = hydroflow_syntax! { - source_iter(0..10) -> persist() -> m1; - source_iter(5..15) -> persist() -> m1; + source_iter(0..10) -> persist::<'static>() -> m1; + source_iter(5..15) -> persist::<'static>() -> m1; m1 = union() -> unique::<'static>() -> m2; - source_iter(0..0) -> persist() -> m2; // Extra union to force `unique()` to be pull. + source_iter(0..0) -> persist::<'static>() -> m2; // Extra union to force `unique()` to be pull. m2 = union() -> for_each(|v| out_send.send(v).unwrap()); }; assert_graphvis_snapshots!(df); @@ -84,8 +84,8 @@ pub fn test_unique_tick_push() { let (out_send, mut out_recv) = hydroflow::util::unbounded_channel::(); let mut df = hydroflow_syntax! { - source_iter(0..10) -> persist() -> pivot; - source_iter(5..15) -> persist() -> pivot; + source_iter(0..10) -> persist::<'static>() -> pivot; + source_iter(5..15) -> persist::<'static>() -> pivot; pivot = union() -> tee(); pivot -> unique::<'tick>() -> for_each(|v| out_send.send(v).unwrap()); pivot -> for_each(std::mem::drop); // Force to be push. @@ -107,8 +107,8 @@ pub fn test_unique_static_push() { let (out_send, mut out_recv) = hydroflow::util::unbounded_channel::(); let mut df = hydroflow_syntax! { - source_iter(0..10) -> persist() -> pivot; - source_iter(5..15) -> persist() -> pivot; + source_iter(0..10) -> persist::<'static>() -> pivot; + source_iter(5..15) -> persist::<'static>() -> pivot; pivot = union() -> tee(); pivot -> unique::<'static>() -> for_each(|v| out_send.send(v).unwrap()); pivot -> for_each(std::mem::drop); // Force to be push. diff --git a/hydroflow_datalog_core/src/join_plan.rs b/hydroflow_datalog_core/src/join_plan.rs index ba7b7431dbab..c04eafd21b0a 100644 --- a/hydroflow_datalog_core/src/join_plan.rs +++ b/hydroflow_datalog_core/src/join_plan.rs @@ -29,7 +29,7 @@ pub enum JoinPlan<'a> { pub struct IntermediateJoinNode { /// The name of the Hydroflow node that this join outputs to. pub name: syn::Ident, - /// If true, the correct dataflow for this node ends in a `persist()` operator. + /// If true, the correct dataflow for this node ends in a `persist::<'static>()` operator. pub persisted: bool, /// If this join node outputs data through a `tee()` operator, this is the index to consume the node with. /// (this is only used for cases where we are directly reading a relation) @@ -122,7 +122,7 @@ fn emit_join_input_pipeline( }; let rhs = if anti_join && source_expanded.persisted { - parse_quote_spanned!(source_expanded.span=> persist() -> #rhs) + parse_quote_spanned!(source_expanded.span=> persist::<'static>() -> #rhs) } else { rhs }; diff --git a/hydroflow_datalog_core/src/lib.rs b/hydroflow_datalog_core/src/lib.rs index 4cec6b702452..152a0f127f7a 100644 --- a/hydroflow_datalog_core/src/lib.rs +++ b/hydroflow_datalog_core/src/lib.rs @@ -193,7 +193,7 @@ pub fn gen_hydroflow_graph( let output_pipeline: Pipeline = parse_pipeline(&hf_code.code, &get_span)?; let output_pipeline = if persists.contains(&target.name) { - parse_quote_spanned! {get_span(target.span)=> persist() -> #output_pipeline} + parse_quote_spanned! {get_span(target.span)=> persist::<'static>() -> #output_pipeline} } else { output_pipeline }; @@ -244,7 +244,7 @@ pub fn gen_hydroflow_graph( let static_expression: syn::Expr = parse_static(&hf_code.code, &get_span)?; flat_graph_builder.add_statement(parse_quote_spanned! {get_span(target.span)=> - source_iter(#static_expression) -> persist() -> [#my_union_index_lit] #name; + source_iter(#static_expression) -> persist::<'static>() -> [#my_union_index_lit] #name; }); } @@ -712,7 +712,7 @@ fn apply_aggregations( if agg_exprs.is_empty() { if out_expanded.persisted && !consumer_is_persist { - parse_quote!(#pre_fold_keyed_map -> #after_group_pipeline -> persist()) + parse_quote!(#pre_fold_keyed_map -> #after_group_pipeline -> persist::<'static>()) } else { parse_quote!(#pre_fold_keyed_map -> #after_group_pipeline) } @@ -1123,7 +1123,7 @@ mod tests { .persist ints2 .input ints3 `source_stream(ints3)` - + .output result `for_each(|v| result.send(v).unwrap())` .output result2 `for_each(|v| result2.send(v).unwrap())` .output result3 `for_each(|v| result3.send(v).unwrap())` @@ -1149,9 +1149,9 @@ mod tests { .persist ints1 .input ints2 `source_stream(ints2)` - + ints1(a) :- ints2(a) - + .output result `for_each(|v| result.send(v).unwrap())` result(count(a)) :- ints1(a) @@ -1163,9 +1163,9 @@ mod tests { fn test_wildcard_join_count() { test_snapshots!( r#" - .input ints1 `source_stream(ints1)` + .input ints1 `source_stream(ints1)` .input ints2 `source_stream(ints2)` - + .output result `for_each(|v| result.send(v).unwrap())` .output result2 `for_each(|v| result2.send(v).unwrap())` @@ -1179,8 +1179,8 @@ mod tests { fn test_index() { test_snapshots!( r#" - .input ints `source_stream(ints)` - + .input ints `source_stream(ints)` + .output result `for_each(|v| result.send(v).unwrap())` .output result2 `for_each(|v| result2.send(v).unwrap())` .output result3 `for_each(|v| result3.send(v).unwrap())` @@ -1206,9 +1206,9 @@ mod tests { fn test_collect_vec() { test_snapshots!( r#" - .input ints1 `source_stream(ints1)` + .input ints1 `source_stream(ints1)` .input ints2 `source_stream(ints2)` - + .output result `for_each(|v| result.send(v).unwrap())` result(collect_vec(a, b)) :- ints1(a), ints2(b) @@ -1221,7 +1221,7 @@ mod tests { test_snapshots!( r#" .input ints1 `source_stream(ints1)` - + .output result `for_each(|v| result.send(v).unwrap())` result(a, b) :- ints1(a, *b) @@ -1234,7 +1234,7 @@ mod tests { test_snapshots!( r#" .input ints1 `source_stream(ints1)` - + .output result `for_each(|v| result.send(v).unwrap())` result(a, b) :- ints1((a, b)) @@ -1247,7 +1247,7 @@ mod tests { test_snapshots!( r#" .input ints1 `source_stream(ints1)` - + .output result `for_each(|v| result.send(v).unwrap())` result(a, b, c, d) :- ints1((a, b), (c, d)) @@ -1260,7 +1260,7 @@ mod tests { test_snapshots!( r#" .input ints1 `source_stream(ints1)` - + .output result `for_each(|v| result.send(v).unwrap())` result(a, b) :- ints1(*(a, b)) @@ -1273,7 +1273,7 @@ mod tests { test_snapshots!( r#" .input ints1 `source_stream(ints1)` - + .output result `for_each(|v| result.send(v).unwrap())` result(a, b) :- ints1((*a, *b)) diff --git a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@datalog_program.snap b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@datalog_program.snap index 0bcfb50e161b..944f4d5193f1 100644 --- a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@datalog_program.snap +++ b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@datalog_program.snap @@ -9,7 +9,7 @@ fn main() { use hydroflow::{var_expr, var_args}; let mut df = hydroflow::scheduled::graph::Hydroflow::new(); df.__assign_meta_graph( - "{\"nodes\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints)\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result2 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result3 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result4 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result5 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 ,) , ((row . 1) ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"fold_keyed :: < 'tick , (_ ,) , (Option < _ > ,) > (| | (None ,) , | old : & mut (Option < _ > ,) , val : (_ ,) | { old . 0 = if let Some (prev) = old . 0 . take () { Some ({ let prev : (hydroflow :: rustc_hash :: FxHashSet < _ > , _) = prev ; let mut set : hydroflow :: rustc_hash :: FxHashSet < _ > = prev . 0 ; if set . insert (val . 0) { (set , prev . 1 + 1) } else { (set , prev . 1) } }) } else { Some ({ let mut set = hydroflow :: rustc_hash :: FxHashSet :: < _ > :: default () ; set . insert (val . 0) ; (set , 1) }) } ; })\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ ,) , _)) | (g . 0 , a . 0 . unwrap () . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ , _ ,) , _) | (g . 0 , g . 1 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 ,) , ((row . 1) ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"fold_keyed :: < 'static , (_ ,) , (Option < _ > ,) > (| | (None ,) , | old : & mut (Option < _ > ,) , val : (_ ,) | { old . 0 = if let Some (prev) = old . 0 . take () { Some ({ let prev : (hydroflow :: rustc_hash :: FxHashSet < _ > , _) = prev ; let mut set : hydroflow :: rustc_hash :: FxHashSet < _ > = prev . 0 ; if set . insert (val . 0) { (set , prev . 1 + 1) } else { (set , prev . 1) } }) } else { Some ({ let mut set = hydroflow :: rustc_hash :: FxHashSet :: < _ > :: default () ; set . insert (val . 0) ; (set , 1) }) } ; })\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ ,) , _)) | (g . 0 , a . 0 . unwrap () . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1}],\"graph\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":26,\"version\":1},{\"idx\":2,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":35,\"version\":1},{\"idx\":5,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":6,\"version\":3},{\"idx\":25,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":39,\"version\":1},{\"idx\":8,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":9,\"version\":3},{\"idx\":23,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":45,\"version\":1},{\"idx\":11,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":12,\"version\":3},{\"idx\":20,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":49,\"version\":1},{\"idx\":14,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":15,\"version\":3},{\"idx\":18,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":52,\"version\":1},{\"idx\":17,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":18,\"version\":1},{\"idx\":19,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":17,\"version\":1},{\"idx\":18,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":20,\"version\":1},{\"idx\":15,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":19,\"version\":1},{\"idx\":12,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":22,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":23,\"version\":1},{\"idx\":24,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":22,\"version\":1},{\"idx\":23,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":25,\"version\":1},{\"idx\":9,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":6,\"version\":3}],\"version\":3},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":5,\"version\":1},{\"idx\":27,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":8,\"version\":1},{\"idx\":28,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":11,\"version\":1},{\"idx\":29,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":14,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":19,\"version\":1},{\"idx\":31,\"version\":1}],\"version\":1},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":34,\"version\":1},{\"idx\":35,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1},{\"idx\":34,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":33,\"version\":1}],\"version\":1},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":38,\"version\":1},{\"idx\":39,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":37,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":36,\"version\":1},{\"idx\":21,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":36,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":21,\"version\":3},{\"idx\":37,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":40,\"version\":1},{\"idx\":16,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":3},{\"idx\":51,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":44,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":42,\"version\":1},{\"idx\":43,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":42,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":13,\"version\":3},{\"idx\":47,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":48,\"version\":1},{\"idx\":49,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":46,\"version\":1},{\"idx\":13,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":46,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":16,\"version\":3},{\"idx\":41,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":50,\"version\":1},{\"idx\":10,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1}],\"ports\":[{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1}],\"node_subgraph\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":1,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":2,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1}],\"subgraph_nodes\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":20,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":25,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":26,\"version\":1},{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1},{\"idx\":33,\"version\":1},{\"idx\":34,\"version\":1},{\"idx\":35,\"version\":1},{\"idx\":5,\"version\":1},{\"idx\":27,\"version\":1},{\"idx\":36,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":37,\"version\":1},{\"idx\":38,\"version\":1},{\"idx\":39,\"version\":1},{\"idx\":8,\"version\":1},{\"idx\":28,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":22,\"version\":1},{\"idx\":23,\"version\":1},{\"idx\":24,\"version\":1},{\"idx\":42,\"version\":1},{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1},{\"idx\":45,\"version\":1},{\"idx\":11,\"version\":1},{\"idx\":29,\"version\":1},{\"idx\":46,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1},{\"idx\":49,\"version\":1},{\"idx\":14,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1},{\"idx\":17,\"version\":1},{\"idx\":18,\"version\":1},{\"idx\":19,\"version\":1},{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1}],\"subgraph_stratum\":[{\"value\":null,\"version\":0},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":2,\"version\":1},{\"value\":1,\"version\":1}],\"node_singleton_references\":[{\"value\":null,\"version\":0},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1}],\"node_varnames\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints_insert\",\"version\":1},{\"value\":\"ints\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":\"result_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result2_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result4_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result5_insert\",\"version\":1},{\"value\":\"result5\",\"version\":1},{\"value\":\"result5\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints_persisted_insert\",\"version\":1},{\"value\":\"ints_persisted\",\"version\":1},{\"value\":\"ints_persisted\",\"version\":1}],\"flow_props\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":15,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":1}],\"subgraph_laziness\":[{\"value\":null,\"version\":0}]}", + "{\"nodes\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints)\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result2 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result3 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result4 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result5 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 ,) , ((row . 1) ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"fold_keyed :: < 'tick , (_ ,) , (Option < _ > ,) > (| | (None ,) , | old : & mut (Option < _ > ,) , val : (_ ,) | { old . 0 = if let Some (prev) = old . 0 . take () { Some ({ let prev : (hydroflow :: rustc_hash :: FxHashSet < _ > , _) = prev ; let mut set : hydroflow :: rustc_hash :: FxHashSet < _ > = prev . 0 ; if set . insert (val . 0) { (set , prev . 1 + 1) } else { (set , prev . 1) } }) } else { Some ({ let mut set = hydroflow :: rustc_hash :: FxHashSet :: < _ > :: default () ; set . insert (val . 0) ; (set , 1) }) } ; })\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ ,) , _)) | (g . 0 , a . 0 . unwrap () . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ , _ ,) , _) | (g . 0 , g . 1 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 ,) , ((row . 1) ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"fold_keyed :: < 'static , (_ ,) , (Option < _ > ,) > (| | (None ,) , | old : & mut (Option < _ > ,) , val : (_ ,) | { old . 0 = if let Some (prev) = old . 0 . take () { Some ({ let prev : (hydroflow :: rustc_hash :: FxHashSet < _ > , _) = prev ; let mut set : hydroflow :: rustc_hash :: FxHashSet < _ > = prev . 0 ; if set . insert (val . 0) { (set , prev . 1 + 1) } else { (set , prev . 1) } }) } else { Some ({ let mut set = hydroflow :: rustc_hash :: FxHashSet :: < _ > :: default () ; set . insert (val . 0) ; (set , 1) }) } ; })\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ ,) , _)) | (g . 0 , a . 0 . unwrap () . 1 , __enumerate_index ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"enumerate :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,))\"},\"version\":1}],\"graph\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":26,\"version\":1},{\"idx\":2,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":35,\"version\":1},{\"idx\":5,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":6,\"version\":3},{\"idx\":25,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":39,\"version\":1},{\"idx\":8,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":9,\"version\":3},{\"idx\":23,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":45,\"version\":1},{\"idx\":11,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":12,\"version\":3},{\"idx\":20,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":49,\"version\":1},{\"idx\":14,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":15,\"version\":3},{\"idx\":18,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":52,\"version\":1},{\"idx\":17,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":18,\"version\":1},{\"idx\":19,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":17,\"version\":1},{\"idx\":18,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":20,\"version\":1},{\"idx\":15,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":19,\"version\":1},{\"idx\":12,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":22,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":23,\"version\":1},{\"idx\":24,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":22,\"version\":1},{\"idx\":23,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":25,\"version\":1},{\"idx\":9,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":6,\"version\":3}],\"version\":3},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":5,\"version\":1},{\"idx\":27,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":8,\"version\":1},{\"idx\":28,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":11,\"version\":1},{\"idx\":29,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":14,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":19,\"version\":1},{\"idx\":31,\"version\":1}],\"version\":1},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":34,\"version\":1},{\"idx\":35,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1},{\"idx\":34,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":33,\"version\":1}],\"version\":1},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":38,\"version\":1},{\"idx\":39,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":37,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":36,\"version\":1},{\"idx\":21,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":36,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":21,\"version\":3},{\"idx\":37,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":40,\"version\":1},{\"idx\":16,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":3},{\"idx\":51,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":44,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":42,\"version\":1},{\"idx\":43,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":42,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":13,\"version\":3},{\"idx\":47,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":48,\"version\":1},{\"idx\":49,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":46,\"version\":1},{\"idx\":13,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":46,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":16,\"version\":3},{\"idx\":41,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":50,\"version\":1},{\"idx\":10,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1}],\"ports\":[{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1}],\"node_subgraph\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":1,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":2,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1}],\"subgraph_nodes\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":20,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":25,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":26,\"version\":1},{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1},{\"idx\":33,\"version\":1},{\"idx\":34,\"version\":1},{\"idx\":35,\"version\":1},{\"idx\":5,\"version\":1},{\"idx\":27,\"version\":1},{\"idx\":36,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":37,\"version\":1},{\"idx\":38,\"version\":1},{\"idx\":39,\"version\":1},{\"idx\":8,\"version\":1},{\"idx\":28,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":22,\"version\":1},{\"idx\":23,\"version\":1},{\"idx\":24,\"version\":1},{\"idx\":42,\"version\":1},{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1},{\"idx\":45,\"version\":1},{\"idx\":11,\"version\":1},{\"idx\":29,\"version\":1},{\"idx\":46,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1},{\"idx\":49,\"version\":1},{\"idx\":14,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1},{\"idx\":17,\"version\":1},{\"idx\":18,\"version\":1},{\"idx\":19,\"version\":1},{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1}],\"subgraph_stratum\":[{\"value\":null,\"version\":0},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":2,\"version\":1},{\"value\":1,\"version\":1}],\"node_singleton_references\":[{\"value\":null,\"version\":0},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1}],\"node_varnames\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints_insert\",\"version\":1},{\"value\":\"ints\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":\"result_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result2_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result4_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result5_insert\",\"version\":1},{\"value\":\"result5\",\"version\":1},{\"value\":\"result5\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints_persisted_insert\",\"version\":1},{\"value\":\"ints_persisted\",\"version\":1},{\"value\":\"ints_persisted\",\"version\":1}],\"flow_props\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":15,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":1}],\"subgraph_laziness\":[{\"value\":null,\"version\":0}]}", ); df.__assign_diagnostics("[]"); let (hoff_6v3_send, hoff_6v3_recv) = df diff --git a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@surface_graph.snap b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@surface_graph.snap index 7bdaf9fe3de0..005e4f50f0e7 100644 --- a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@surface_graph.snap +++ b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__index@surface_graph.snap @@ -21,7 +21,7 @@ expression: flat_graph_ref.surface_syntax_string() 28v1 = for_each (| v | result2 . send (v) . unwrap ()); 29v1 = for_each (| v | result3 . send (v) . unwrap ()); 30v1 = for_each (| v | result4 . send (v) . unwrap ()); -31v1 = persist (); +31v1 = persist :: < 'static > (); 32v1 = for_each (| v | result5 . send (v) . unwrap ()); 33v1 = map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ())); 34v1 = enumerate :: < 'tick > (); @@ -35,7 +35,7 @@ expression: flat_graph_ref.surface_syntax_string() 42v1 = map (| row : (_ , _ ,) | ((row . 0 , row . 1 ,) , ())); 43v1 = enumerate :: < 'static > (); 44v1 = map (| (__enumerate_index , (g , a)) : (_ , ((_ , _ ,) , _)) | (g . 0 , g . 1 , __enumerate_index ,)); -45v1 = persist (); +45v1 = persist :: < 'static > (); 46v1 = map (| row : (_ , _ ,) | ((row . 0 ,) , ((row . 1) ,))); 47v1 = fold_keyed :: < 'static , (_ ,) , (Option < _ > ,) > (| | (None ,) , | old : & mut (Option < _ > ,) , val : (_ ,) | { old . 0 = if let Some (prev) = old . 0 . take () { Some ({ let prev : (hydroflow :: rustc_hash :: FxHashSet < _ > , _) = prev ; let mut set : hydroflow :: rustc_hash :: FxHashSet < _ > = prev . 0 ; if set . insert (val . 0) { (set , prev . 1 + 1) } else { (set , prev . 1) } }) } else { Some ({ let mut set = hydroflow :: rustc_hash :: FxHashSet :: < _ > :: default () ; set . insert (val . 0) ; (set , 1) }) } ; }); 48v1 = enumerate :: < 'tick > (); @@ -86,3 +86,4 @@ expression: flat_graph_ref.surface_syntax_string() 51v1 -> 52v1; 50v1 -> 51v1; 24v1 -> 50v1; + diff --git a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@datalog_program.snap b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@datalog_program.snap index 1fe9fe45a2a2..420a089a0f4b 100644 --- a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@datalog_program.snap +++ b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@datalog_program.snap @@ -9,7 +9,7 @@ fn main() { use hydroflow::{var_expr, var_args}; let mut df = hydroflow::scheduled::graph::Hydroflow::new(); df.__assign_meta_graph( - "{\"nodes\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints1)\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints2)\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints3)\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result2 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result3 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result4 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"join :: < 'static , 'static , hydroflow :: compiled :: pull :: HalfMultisetJoinState > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : (() , ((_ ,) , (_ ,))) | (kv . 1 . 0 . 0 , kv . 1 . 1 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"join :: < 'static , 'tick , hydroflow :: compiled :: pull :: HalfMultisetJoinState > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : (() , ((_ , _ ,) , (_ ,))) | (kv . 1 . 0 . 0 , kv . 1 . 0 . 1 , kv . 1 . 1 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ , _ ,) | (() , (_v . 0 , _v . 1 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ , _ ,) | ((row . 0 , row . 1 , row . 2 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ , _ , _ ,) , _) | (g . 0 , g . 1 , g . 2 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"anti_join ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : ((_ ,) , ()) | (kv . 0 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | ((_v . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (_v . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist ()\"},\"version\":1}],\"graph\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":34,\"version\":1},{\"idx\":14,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":4,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":5,\"version\":1},{\"idx\":28,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":25,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":35,\"version\":1},{\"idx\":11,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":8,\"version\":1},{\"idx\":9,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":7,\"version\":1},{\"idx\":8,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":1},{\"idx\":22,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":19,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":36,\"version\":1},{\"idx\":6,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":13,\"version\":3},{\"idx\":33,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":50,\"version\":1},{\"idx\":15,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":16,\"version\":3},{\"idx\":31,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":58,\"version\":1},{\"idx\":18,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":19,\"version\":3},{\"idx\":10,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":63,\"version\":1},{\"idx\":21,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":22,\"version\":3},{\"idx\":8,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":68,\"version\":1},{\"idx\":24,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":25,\"version\":3},{\"idx\":5,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":61,\"version\":1},{\"idx\":27,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":28,\"version\":3},{\"idx\":3,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":65,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":30,\"version\":1},{\"idx\":31,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1},{\"idx\":16,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":32,\"version\":1},{\"idx\":13,\"version\":3}],\"version\":3},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":6,\"version\":3},{\"idx\":12,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":11,\"version\":3},{\"idx\":7,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":15,\"version\":1},{\"idx\":37,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":18,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":21,\"version\":1},{\"idx\":39,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":42,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":43,\"version\":1},{\"idx\":41,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":29,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":44,\"version\":1},{\"idx\":41,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":26,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":45,\"version\":1},{\"idx\":46,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":42,\"version\":1},{\"idx\":47,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":48,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":12,\"version\":1},{\"idx\":48,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":14,\"version\":3},{\"idx\":2,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":49,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":46,\"version\":1},{\"idx\":49,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":54,\"version\":1},{\"idx\":51,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":53,\"version\":1},{\"idx\":54,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":23,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":56,\"version\":1},{\"idx\":20,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":55,\"version\":1},{\"idx\":56,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":55,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":17,\"version\":3},{\"idx\":65,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":57,\"version\":1},{\"idx\":58,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":52,\"version\":1},{\"idx\":57,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":26,\"version\":3},{\"idx\":44,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":60,\"version\":1},{\"idx\":61,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":59,\"version\":1},{\"idx\":60,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":59,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":20,\"version\":3},{\"idx\":51,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":62,\"version\":1},{\"idx\":63,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":27,\"version\":1},{\"idx\":62,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":29,\"version\":3},{\"idx\":43,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":64,\"version\":1},{\"idx\":17,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":64,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":23,\"version\":3},{\"idx\":53,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":67,\"version\":1},{\"idx\":68,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":66,\"version\":1},{\"idx\":67,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":32,\"version\":1},{\"idx\":66,\"version\":1}],\"version\":1}],\"ports\":[{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"0\"}],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Int\":\"1\"}],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"0\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"1\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"3\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1}],\"node_subgraph\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":1,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":2,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":9,\"version\":1},\"version\":1},{\"value\":{\"idx\":10,\"version\":1},\"version\":1},{\"value\":{\"idx\":11,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1}],\"subgraph_nodes\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":5,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":12,\"version\":1},{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1},{\"idx\":41,\"version\":1},{\"idx\":42,\"version\":1},{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1},{\"idx\":45,\"version\":1},{\"idx\":46,\"version\":1},{\"idx\":49,\"version\":1},{\"idx\":50,\"version\":1},{\"idx\":15,\"version\":1},{\"idx\":37,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":53,\"version\":1},{\"idx\":54,\"version\":1},{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1},{\"idx\":57,\"version\":1},{\"idx\":58,\"version\":1},{\"idx\":18,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1},{\"idx\":4,\"version\":1},{\"idx\":59,\"version\":1},{\"idx\":60,\"version\":1},{\"idx\":61,\"version\":1},{\"idx\":27,\"version\":1},{\"idx\":62,\"version\":1},{\"idx\":63,\"version\":1},{\"idx\":21,\"version\":1},{\"idx\":39,\"version\":1},{\"idx\":64,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":65,\"version\":1},{\"idx\":30,\"version\":1},{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1},{\"idx\":66,\"version\":1},{\"idx\":67,\"version\":1},{\"idx\":68,\"version\":1},{\"idx\":24,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":7,\"version\":1},{\"idx\":8,\"version\":1},{\"idx\":9,\"version\":1},{\"idx\":55,\"version\":1},{\"idx\":56,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":34,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":35,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":36,\"version\":1}],\"version\":1}],\"subgraph_stratum\":[{\"value\":null,\"version\":0},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":1,\"version\":1},{\"value\":2,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1}],\"node_singleton_references\":[{\"value\":null,\"version\":0},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1}],\"node_varnames\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints1_insert\",\"version\":1},{\"value\":\"ints1\",\"version\":1},{\"value\":\"ints1\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints2_insert\",\"version\":1},{\"value\":\"ints2\",\"version\":1},{\"value\":\"ints2\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result2_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result4_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"intermediate_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"intermediate_persist_insert\",\"version\":1},{\"value\":\"intermediate_persist\",\"version\":1},{\"value\":\"intermediate_persist\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_2\",\"version\":1},{\"value\":\"join_2\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_4\",\"version\":1},{\"value\":\"join_4\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_7\",\"version\":1},{\"value\":\"join_7\",\"version\":1}],\"flow_props\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":40,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":33,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":22,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":22,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":3},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":3}],\"subgraph_laziness\":[{\"value\":null,\"version\":0}]}", + "{\"nodes\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":2},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Handoff\":{}},\"version\":3},{\"value\":{\"Operator\":\"unique :: < 'tick > ()\"},\"version\":1},{\"value\":{\"Operator\":\"difference :: < 'tick , 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"tee ()\"},\"version\":1},{\"value\":{\"Operator\":\"defer_tick ()\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints1)\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints2)\"},\"version\":1},{\"value\":{\"Operator\":\"source_stream (ints3)\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result2 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result3 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"for_each (| v | result4 . send (v) . unwrap ())\"},\"version\":1},{\"value\":{\"Operator\":\"join :: < 'static , 'static , hydroflow :: compiled :: pull :: HalfMultisetJoinState > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : (() , ((_ ,) , (_ ,))) | (kv . 1 . 0 . 0 , kv . 1 . 1 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"join :: < 'static , 'tick , hydroflow :: compiled :: pull :: HalfMultisetJoinState > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : (() , ((_ , _ ,) , (_ ,))) | (kv . 1 . 0 . 0 , kv . 1 . 0 . 1 , kv . 1 . 1 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ , _ ,) | (() , (_v . 0 , _v . 1 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (() , (_v . 0 ,)))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ , _ , _ ,) | ((row . 0 , row . 1 , row . 2 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ , _ , _ ,) , _) | (g . 0 , g . 1 , g . 2 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"anti_join ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| kv : ((_ ,) , ()) | (kv . 0 . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | ((_v . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| _v : (_ ,) | (_v . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| row : (_ ,) | ((row . 0 ,) , ()))\"},\"version\":1},{\"value\":{\"Operator\":\"map (| (g , a) : ((_ ,) , _) | (g . 0 ,))\"},\"version\":1},{\"value\":{\"Operator\":\"persist :: < 'static > ()\"},\"version\":1}],\"graph\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":34,\"version\":1},{\"idx\":14,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":3,\"version\":1},{\"idx\":4,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":5,\"version\":1},{\"idx\":28,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":25,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":35,\"version\":1},{\"idx\":11,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":8,\"version\":1},{\"idx\":9,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":7,\"version\":1},{\"idx\":8,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":1},{\"idx\":22,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":19,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":36,\"version\":1},{\"idx\":6,\"version\":3}],\"version\":5},{\"value\":[{\"idx\":13,\"version\":3},{\"idx\":33,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":50,\"version\":1},{\"idx\":15,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":16,\"version\":3},{\"idx\":31,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":58,\"version\":1},{\"idx\":18,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":19,\"version\":3},{\"idx\":10,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":63,\"version\":1},{\"idx\":21,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":22,\"version\":3},{\"idx\":8,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":68,\"version\":1},{\"idx\":24,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":25,\"version\":3},{\"idx\":5,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":61,\"version\":1},{\"idx\":27,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":28,\"version\":3},{\"idx\":3,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":65,\"version\":1},{\"idx\":30,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":30,\"version\":1},{\"idx\":31,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1},{\"idx\":16,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":32,\"version\":1},{\"idx\":13,\"version\":3}],\"version\":3},{\"value\":null,\"version\":2},{\"value\":[{\"idx\":6,\"version\":3},{\"idx\":12,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":11,\"version\":3},{\"idx\":7,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":15,\"version\":1},{\"idx\":37,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":18,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":21,\"version\":1},{\"idx\":39,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":24,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":41,\"version\":1},{\"idx\":42,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":43,\"version\":1},{\"idx\":41,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":29,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":44,\"version\":1},{\"idx\":41,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":26,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":45,\"version\":1},{\"idx\":46,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":47,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":42,\"version\":1},{\"idx\":47,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":48,\"version\":1},{\"idx\":45,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":12,\"version\":1},{\"idx\":48,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":14,\"version\":3},{\"idx\":2,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":49,\"version\":1},{\"idx\":50,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":46,\"version\":1},{\"idx\":49,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":54,\"version\":1},{\"idx\":51,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":53,\"version\":1},{\"idx\":54,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":23,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":56,\"version\":1},{\"idx\":20,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":55,\"version\":1},{\"idx\":56,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":9,\"version\":1},{\"idx\":55,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":17,\"version\":3},{\"idx\":65,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":57,\"version\":1},{\"idx\":58,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":52,\"version\":1},{\"idx\":57,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":26,\"version\":3},{\"idx\":44,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":60,\"version\":1},{\"idx\":61,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":59,\"version\":1},{\"idx\":60,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":59,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":20,\"version\":3},{\"idx\":51,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":62,\"version\":1},{\"idx\":63,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":27,\"version\":1},{\"idx\":62,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":29,\"version\":3},{\"idx\":43,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":64,\"version\":1},{\"idx\":17,\"version\":3}],\"version\":3},{\"value\":[{\"idx\":4,\"version\":1},{\"idx\":64,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":23,\"version\":3},{\"idx\":53,\"version\":1}],\"version\":3},{\"value\":[{\"idx\":67,\"version\":1},{\"idx\":68,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":66,\"version\":1},{\"idx\":67,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":32,\"version\":1},{\"idx\":66,\"version\":1}],\"version\":1}],\"ports\":[{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":5},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":null,\"version\":0},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"0\"}],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",{\"Int\":\"1\"}],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"0\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Int\":\"1\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"pos\"}],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"1\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"2\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",{\"Path\":\"neg\"}],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[{\"Int\":\"3\"},\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":3},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[\"Elided\",\"Elided\"],\"version\":1},{\"value\":[{\"Int\":\"0\"},\"Elided\"],\"version\":1}],\"node_subgraph\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":1,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":2,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":3,\"version\":1},\"version\":1},{\"value\":{\"idx\":9,\"version\":1},\"version\":1},{\"value\":{\"idx\":10,\"version\":1},\"version\":1},{\"value\":{\"idx\":11,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":4,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":8,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":5,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":6,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1},{\"value\":{\"idx\":7,\"version\":1},\"version\":1}],\"subgraph_nodes\":[{\"value\":null,\"version\":0},{\"value\":[{\"idx\":5,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":10,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":33,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":12,\"version\":1},{\"idx\":43,\"version\":1},{\"idx\":44,\"version\":1},{\"idx\":41,\"version\":1},{\"idx\":42,\"version\":1},{\"idx\":47,\"version\":1},{\"idx\":48,\"version\":1},{\"idx\":45,\"version\":1},{\"idx\":46,\"version\":1},{\"idx\":49,\"version\":1},{\"idx\":50,\"version\":1},{\"idx\":15,\"version\":1},{\"idx\":37,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":53,\"version\":1},{\"idx\":54,\"version\":1},{\"idx\":51,\"version\":1},{\"idx\":52,\"version\":1},{\"idx\":57,\"version\":1},{\"idx\":58,\"version\":1},{\"idx\":18,\"version\":1},{\"idx\":38,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":2,\"version\":1},{\"idx\":3,\"version\":1},{\"idx\":4,\"version\":1},{\"idx\":59,\"version\":1},{\"idx\":60,\"version\":1},{\"idx\":61,\"version\":1},{\"idx\":27,\"version\":1},{\"idx\":62,\"version\":1},{\"idx\":63,\"version\":1},{\"idx\":21,\"version\":1},{\"idx\":39,\"version\":1},{\"idx\":64,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":65,\"version\":1},{\"idx\":30,\"version\":1},{\"idx\":31,\"version\":1},{\"idx\":32,\"version\":1},{\"idx\":66,\"version\":1},{\"idx\":67,\"version\":1},{\"idx\":68,\"version\":1},{\"idx\":24,\"version\":1},{\"idx\":40,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":7,\"version\":1},{\"idx\":8,\"version\":1},{\"idx\":9,\"version\":1},{\"idx\":55,\"version\":1},{\"idx\":56,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":34,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":35,\"version\":1}],\"version\":1},{\"value\":[{\"idx\":36,\"version\":1}],\"version\":1}],\"subgraph_stratum\":[{\"value\":null,\"version\":0},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":1,\"version\":1},{\"value\":2,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":1,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1},{\"value\":0,\"version\":1}],\"node_singleton_references\":[{\"value\":null,\"version\":0},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1},{\"value\":[],\"version\":1}],\"node_varnames\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints1_insert\",\"version\":1},{\"value\":\"ints1\",\"version\":1},{\"value\":\"ints1\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints2_insert\",\"version\":1},{\"value\":\"ints2\",\"version\":1},{\"value\":\"ints2\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"ints3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result2_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result3_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"result4_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"intermediate_insert\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"intermediate_persist_insert\",\"version\":1},{\"value\":\"intermediate_persist\",\"version\":1},{\"value\":\"intermediate_persist\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_2\",\"version\":1},{\"value\":\"join_2\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_4\",\"version\":1},{\"value\":\"join_4\",\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":\"join_7\",\"version\":1},{\"value\":\"join_7\",\"version\":1}],\"flow_props\":[{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":40,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":33,\"lattice_flow_type\":null},\"version\":3},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":10,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":14,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":22,\"lattice_flow_type\":null},\"version\":1},{\"value\":{\"star_ord\":22,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":3},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":1},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":null,\"version\":0},{\"value\":{\"star_ord\":24,\"lattice_flow_type\":null},\"version\":3}],\"subgraph_laziness\":[{\"value\":null,\"version\":0}]}", ); df.__assign_diagnostics("[]"); let (hoff_6v3_send, hoff_6v3_recv) = df diff --git a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@surface_graph.snap b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@surface_graph.snap index 12778a0a1e21..42f96b8bccd4 100644 --- a/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@surface_graph.snap +++ b/hydroflow_datalog_core/src/snapshots/hydroflow_datalog_core__tests__persist@surface_graph.snap @@ -39,22 +39,22 @@ expression: flat_graph_ref.surface_syntax_string() 50v1 = map (| (g , a) : ((_ , _ , _ ,) , _) | (g . 0 , g . 1 , g . 2 ,)); 51v1 = anti_join (); 52v1 = map (| kv : ((_ ,) , ()) | (kv . 0 . 0 ,)); -53v1 = persist (); +53v1 = persist :: < 'static > (); 54v1 = map (| _v : (_ ,) | ((_v . 0 ,) , ())); -55v1 = persist (); +55v1 = persist :: < 'static > (); 56v1 = map (| _v : (_ ,) | (_v . 0 ,)); 57v1 = map (| row : (_ ,) | ((row . 0 ,) , ())); 58v1 = map (| (g , a) : ((_ ,) , _) | (g . 0 ,)); 59v1 = map (| row : (_ ,) | ((row . 0 ,) , ())); 60v1 = map (| (g , a) : ((_ ,) , _) | (g . 0 ,)); -61v1 = persist (); +61v1 = persist :: < 'static > (); 62v1 = map (| row : (_ ,) | ((row . 0 ,) , ())); 63v1 = map (| (g , a) : ((_ ,) , _) | (g . 0 ,)); 64v1 = map (| row : (_ ,) | ((row . 0 ,) , ())); 65v1 = map (| (g , a) : ((_ ,) , _) | (g . 0 ,)); 66v1 = map (| row : (_ ,) | ((row . 0 ,) , ())); 67v1 = map (| (g , a) : ((_ ,) , _) | (g . 0 ,)); -68v1 = persist (); +68v1 = persist :: < 'static > (); 34v1 -> 2v1; 3v1 -> 4v1; diff --git a/hydroflow_lang/src/graph/flat_graph_builder.rs b/hydroflow_lang/src/graph/flat_graph_builder.rs index 6d92d4488660..0928cef664ad 100644 --- a/hydroflow_lang/src/graph/flat_graph_builder.rs +++ b/hydroflow_lang/src/graph/flat_graph_builder.rs @@ -940,7 +940,7 @@ impl FlatGraphBuilder { self.flat_graph.insert_intermediate_node( pred_edge, - GraphNode::Operator(parse_quote_spanned! {op_span=> persist() }), + GraphNode::Operator(parse_quote_spanned! {op_span=> persist::<'static>() }), // TODO(mingwei): use 'tick when implemented. ); self.diagnostics.push(Diagnostic::spanned( op_span, diff --git a/hydroflow_lang/src/graph/ops/join_fused.rs b/hydroflow_lang/src/graph/ops/join_fused.rs index 8854a3800bef..d508e00c4e9c 100644 --- a/hydroflow_lang/src/graph/ops/join_fused.rs +++ b/hydroflow_lang/src/graph/ops/join_fused.rs @@ -66,14 +66,14 @@ use crate::diagnostic::{Diagnostic, Level}; /// by specifying `'static` in the type arguments of the operator. /// /// for `join_fused::<'static>`, the operator will replay all _keys_ that the join has ever seen each tick, and not only the new matches from that specific tick. -/// This means that it behaves identically to if `persist()` were placed before the inputs and the persistence of +/// This means that it behaves identically to if `persist::<'static>()` were placed before the inputs and the persistence of /// for example, the two following examples have identical behavior: /// /// ```hydroflow -/// source_iter(vec![("key", 0), ("key", 1), ("key", 2)]) -> persist() -> [0]my_join; +/// source_iter(vec![("key", 0), ("key", 1), ("key", 2)]) -> persist::<'static>() -> [0]my_join; /// source_iter(vec![("key", 2)]) -> my_union; /// source_iter(vec![("key", 3)]) -> defer_tick() -> my_union; -/// my_union = union() -> persist() -> [1]my_join; +/// my_union = union() -> persist::<'static>() -> [1]my_join; /// /// my_join = join_fused(Reduce(|x, y| *x += y), Fold(|| 1, |x, y| *x *= y)) /// -> assert_eq([("key", (3, 2)), ("key", (3, 6))]); diff --git a/hydroflow_lang/src/graph/ops/persist.rs b/hydroflow_lang/src/graph/ops/persist.rs index 3f61033bb5ec..68b24d60739b 100644 --- a/hydroflow_lang/src/graph/ops/persist.rs +++ b/hydroflow_lang/src/graph/ops/persist.rs @@ -9,10 +9,10 @@ use crate::diagnostic::{Diagnostic, Level}; /// Stores each item as it passes through, and replays all item every tick. /// /// ```hydroflow -/// // Normally `source_iter(...)` only emits once, but `persist()` will replay the `"hello"` +/// // Normally `source_iter(...)` only emits once, but `persist::<'static>()` will replay the `"hello"` /// // on every tick. /// source_iter(["hello"]) -/// -> persist() +/// -> persist::<'static>() /// -> assert_eq(["hello"]); /// ``` /// @@ -23,8 +23,8 @@ use crate::diagnostic::{Diagnostic, Level}; /// ```rustbook /// let (input_send, input_recv) = hydroflow::util::unbounded_channel::<(&str, &str)>(); /// let mut flow = hydroflow::hydroflow_syntax! { -/// source_iter([("hello", "world")]) -> persist() -> [0]my_join; -/// source_stream(input_recv) -> persist() -> [1]my_join; +/// source_iter([("hello", "world")]) -> persist::<'static>() -> [0]my_join; +/// source_stream(input_recv) -> persist::<'static>() -> [1]my_join; /// my_join = join::<'tick>() -> for_each(|(k, (v1, v2))| println!("({}, ({}, {}))", k, v1, v2)); /// }; /// input_send.send(("hello", "oakland")).unwrap(); @@ -43,7 +43,7 @@ pub const PERSIST: OperatorConstraints = OperatorConstraints { hard_range_out: RANGE_1, soft_range_out: RANGE_1, num_args: 0, - persistence_args: RANGE_0, + persistence_args: RANGE_1, type_args: RANGE_0, is_external_input: false, // If this is set to true, the state will need to be cleared using `#context.set_state_tick_hook` diff --git a/hydroflow_lang/src/graph/ops/persist_mut.rs b/hydroflow_lang/src/graph/ops/persist_mut.rs index f8ac07965deb..28ac130d6a37 100644 --- a/hydroflow_lang/src/graph/ops/persist_mut.rs +++ b/hydroflow_lang/src/graph/ops/persist_mut.rs @@ -19,7 +19,7 @@ use super::{ /// Persistence::Persist(2), /// Persistence::Delete(1), /// ]) -/// -> persist_mut() +/// -> persist_mut::<'static>() /// -> assert_eq([2]); /// ``` pub const PERSIST_MUT: OperatorConstraints = OperatorConstraints { @@ -30,7 +30,7 @@ pub const PERSIST_MUT: OperatorConstraints = OperatorConstraints { hard_range_out: RANGE_1, soft_range_out: RANGE_1, num_args: 0, - persistence_args: RANGE_0, + persistence_args: RANGE_1, type_args: RANGE_0, is_external_input: false, // If this is set to true, the state will need to be cleared using `#context.set_state_tick_hook` diff --git a/hydroflow_lang/src/graph/ops/persist_mut_keyed.rs b/hydroflow_lang/src/graph/ops/persist_mut_keyed.rs index 7ef1a4089eea..786984464471 100644 --- a/hydroflow_lang/src/graph/ops/persist_mut_keyed.rs +++ b/hydroflow_lang/src/graph/ops/persist_mut_keyed.rs @@ -19,7 +19,7 @@ use super::{ /// PersistenceKeyed::Persist(1, 1), /// PersistenceKeyed::Delete(1), /// ]) -/// -> persist_mut_keyed() +/// -> persist_mut_keyed::<'static>() /// -> assert_eq([(0, 1)]); /// ``` pub const PERSIST_MUT_KEYED: OperatorConstraints = OperatorConstraints { @@ -30,7 +30,7 @@ pub const PERSIST_MUT_KEYED: OperatorConstraints = OperatorConstraints { hard_range_out: RANGE_1, soft_range_out: RANGE_1, num_args: 0, - persistence_args: RANGE_0, + persistence_args: RANGE_1, type_args: RANGE_0, is_external_input: false, // If this is set to true, the state will need to be cleared using `#context.set_state_tick_hook` diff --git a/hydroflow_plus/src/ir.rs b/hydroflow_plus/src/ir.rs index 57e901807e65..a9557ebf372d 100644 --- a/hydroflow_plus/src/ir.rs +++ b/hydroflow_plus/src/ir.rs @@ -407,7 +407,7 @@ impl HfPlusNode { let builder = graph_builders.entry(location).or_default(); builder.add_statement(parse_quote! { - #persist_ident = #inner_ident -> persist(); + #persist_ident = #inner_ident -> persist::<'static>(); }); (persist_ident, location) diff --git a/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_behind_tee@surface_graph_0.snap b/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_behind_tee@surface_graph_0.snap index a47e2ac2cc65..753b400ee716 100644 --- a/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_behind_tee@surface_graph_0.snap +++ b/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_behind_tee@surface_graph_0.snap @@ -4,7 +4,7 @@ expression: graph.surface_syntax_string() --- 1v1 = source_iter ({ use crate :: __staged :: persist_pullup :: tests :: * ; 0 .. 10 }); 2v1 = map ({ use crate :: __staged :: persist_pullup :: tests :: * ; | v | v + 1 }); -3v1 = persist (); +3v1 = persist :: < 'static > (); 4v1 = tee (); 5v1 = for_each ({ use crate :: __staged :: persist_pullup :: tests :: * ; | n | println ! ("{}" , n) }); 6v1 = for_each ({ use crate :: __staged :: persist_pullup :: tests :: * ; | n | println ! ("{}" , n) }); @@ -14,3 +14,4 @@ expression: graph.surface_syntax_string() 3v1 -> 4v1; 4v1 -> 5v1; 4v1 -> 6v1; + diff --git a/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_through_map@surface_graph_0.snap b/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_through_map@surface_graph_0.snap index 942cf4ae00f7..0923db298219 100644 --- a/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_through_map@surface_graph_0.snap +++ b/hydroflow_plus/src/snapshots/hydroflow_plus__persist_pullup__tests__persist_pullup_through_map@surface_graph_0.snap @@ -4,9 +4,10 @@ expression: graph.surface_syntax_string() --- 1v1 = source_iter ({ use crate :: __staged :: persist_pullup :: tests :: * ; 0 .. 10 }); 2v1 = map ({ use crate :: __staged :: persist_pullup :: tests :: * ; | v | v + 1 }); -3v1 = persist (); +3v1 = persist :: < 'static > (); 4v1 = for_each ({ use crate :: __staged :: persist_pullup :: tests :: * ; | n | println ! ("{}" , n) }); 1v1 -> 2v1; 2v1 -> 3v1; 3v1 -> 4v1; + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_dot.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_dot.snap index b7fb5800ad4f..4283d8157c09 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_dot.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_dot.snap @@ -7,7 +7,7 @@ digraph { edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter({\l use crate::__staged::negation::*;\l 0..5\l})\l", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) map({\l use crate::__staged::negation::*;\l |v| (v, v)\l})\l", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) source_iter({\l use crate::__staged::negation::*;\l 3..6\l})\l", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) anti_join::<'tick, 'static>()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) for_each({\l use crate::__staged::negation::*;\l let output = output;\l |v: (u32, u32)| {\l output.send(v.0).unwrap();\l }\l})\l", shape=house, fillcolor="#ffff88"] @@ -55,3 +55,4 @@ digraph { } } } + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_mermaid.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_mermaid.snap index be509b9e43b3..78dbdd040fea 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_mermaid.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_static@graphvis_mermaid.snap @@ -10,7 +10,7 @@ classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"
(1v1)
source_iter({
use crate::__staged::negation::*;
0..5
})
"/]:::pullClass 2v1[\"
(2v1)
map({
use crate::__staged::negation::*;
|v| (v, v)
})
"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"
(4v1)
source_iter({
use crate::__staged::negation::*;
3..6
})
"/]:::pullClass 5v1[\"(5v1) anti_join::<'tick, 'static>()"/]:::pullClass 6v1[/"
(6v1)
for_each({
use crate::__staged::negation::*;
let output = output;
|v: (u32, u32)| {
output.send(v.0).unwrap();
}
})
"\]:::pushClass @@ -46,3 +46,4 @@ subgraph sg_2v1 ["sg_2v1 stratum 1"] 5v1 end end + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_dot.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_dot.snap index 872052d4265c..a7dd64836067 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_dot.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_dot.snap @@ -7,7 +7,7 @@ digraph { edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter({\l use crate::__staged::negation::*;\l 0..5\l})\l", shape=invhouse, fillcolor="#88aaff"] n2v1 [label="(n2v1) map({\l use crate::__staged::negation::*;\l |v| (v, v)\l})\l", shape=invhouse, fillcolor="#88aaff"] - n3v1 [label="(n3v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n3v1 [label="(n3v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) source_iter({\l use crate::__staged::negation::*;\l 3..6\l})\l", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) anti_join::<'tick, 'tick>()", shape=invhouse, fillcolor="#88aaff"] n6v1 [label="(n6v1) for_each({\l use crate::__staged::negation::*;\l let output = output;\l |v: (u32, u32)| {\l output.send(v.0).unwrap();\l }\l})\l", shape=house, fillcolor="#ffff88"] @@ -55,3 +55,4 @@ digraph { } } } + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_mermaid.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_mermaid.snap index 7fe66eb0db22..eb93eb41ae38 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_mermaid.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__anti_join_static_tick@graphvis_mermaid.snap @@ -10,7 +10,7 @@ classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"
(1v1)
source_iter({
use crate::__staged::negation::*;
0..5
})
"/]:::pullClass 2v1[\"
(2v1)
map({
use crate::__staged::negation::*;
|v| (v, v)
})
"/]:::pullClass -3v1[\"(3v1) persist()"/]:::pullClass +3v1[\"(3v1) persist::<'static>()"/]:::pullClass 4v1[\"
(4v1)
source_iter({
use crate::__staged::negation::*;
3..6
})
"/]:::pullClass 5v1[\"(5v1) anti_join::<'tick, 'tick>()"/]:::pullClass 6v1[/"
(6v1)
for_each({
use crate::__staged::negation::*;
let output = output;
|v: (u32, u32)| {
output.send(v.0).unwrap();
}
})
"\]:::pushClass @@ -46,3 +46,4 @@ subgraph sg_2v1 ["sg_2v1 stratum 1"] 5v1 end end + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_dot.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_dot.snap index 885ea6a6730b..d4db7f9d2367 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_dot.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter({\l use crate::__staged::negation::*;\l 0..5\l})\l", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter({\l use crate::__staged::negation::*;\l 3..6\l})\l", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) difference::<'tick, 'static>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) for_each({\l use crate::__staged::negation::*;\l let output = output;\l |v| {\l output.send(v).unwrap();\l }\l})\l", shape=house, fillcolor="#ffff88"] @@ -48,3 +48,4 @@ digraph { } } } + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_mermaid.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_mermaid.snap index 73f8654accc7..61c686e2c718 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_mermaid.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_static@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"
(1v1)
source_iter({
use crate::__staged::negation::*;
0..5
})
"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"
(3v1)
source_iter({
use crate::__staged::negation::*;
3..6
})
"/]:::pullClass 4v1[\"(4v1) difference::<'tick, 'static>()"/]:::pullClass 5v1[/"
(5v1)
for_each({
use crate::__staged::negation::*;
let output = output;
|v| {
output.send(v).unwrap();
}
})
"\]:::pushClass @@ -40,3 +40,4 @@ subgraph sg_2v1 ["sg_2v1 stratum 1"] 4v1 end end + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_dot.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_dot.snap index fd55ee5424f0..24e833618630 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_dot.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_dot.snap @@ -6,7 +6,7 @@ digraph { node [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace", style=filled]; edge [fontname="Monaco,Menlo,Consolas,"Droid Sans Mono",Inconsolata,"Courier New",monospace"]; n1v1 [label="(n1v1) source_iter({\l use crate::__staged::negation::*;\l 0..5\l})\l", shape=invhouse, fillcolor="#88aaff"] - n2v1 [label="(n2v1) persist()", shape=invhouse, fillcolor="#88aaff"] + n2v1 [label="(n2v1) persist::<'static>()", shape=invhouse, fillcolor="#88aaff"] n3v1 [label="(n3v1) source_iter({\l use crate::__staged::negation::*;\l 3..6\l})\l", shape=invhouse, fillcolor="#88aaff"] n4v1 [label="(n4v1) difference::<'tick, 'tick>()", shape=invhouse, fillcolor="#88aaff"] n5v1 [label="(n5v1) for_each({\l use crate::__staged::negation::*;\l let output = output;\l |v| {\l output.send(v).unwrap();\l }\l})\l", shape=house, fillcolor="#ffff88"] @@ -48,3 +48,4 @@ digraph { } } } + diff --git a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_mermaid.snap b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_mermaid.snap index 98c589863576..15baa00e609d 100644 --- a/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_mermaid.snap +++ b/hydroflow_plus_test/src/snapshots/hydroflow_plus_test__negation__tests__difference_static_tick@graphvis_mermaid.snap @@ -9,7 +9,7 @@ classDef pushClass fill:#ff8,stroke:#000,text-align:left,white-space:pre classDef otherClass fill:#fdc,stroke:#000,text-align:left,white-space:pre linkStyle default stroke:#aaa 1v1[\"
(1v1)
source_iter({
use crate::__staged::negation::*;
0..5
})
"/]:::pullClass -2v1[\"(2v1) persist()"/]:::pullClass +2v1[\"(2v1) persist::<'static>()"/]:::pullClass 3v1[\"
(3v1)
source_iter({
use crate::__staged::negation::*;
3..6
})
"/]:::pullClass 4v1[\"(4v1) difference::<'tick, 'tick>()"/]:::pullClass 5v1[/"
(5v1)
for_each({
use crate::__staged::negation::*;
let output = output;
|v| {
output.send(v).unwrap();
}
})
"\]:::pushClass @@ -40,3 +40,4 @@ subgraph sg_2v1 ["sg_2v1 stratum 1"] 4v1 end end + diff --git a/topolotree/src/main.rs b/topolotree/src/main.rs index 5bfc2834f418..054099c175ee 100644 --- a/topolotree/src/main.rs +++ b/topolotree/src/main.rs @@ -157,7 +157,7 @@ fn run_topolotree( -> tee(); new_neighbors - -> persist() + -> persist::<'static>() -> [pos]neighbors; dead_neighbors -> [neg]neighbors; neighbors = difference()