diff --git a/docs/docs/hydro/reference/slices-atomicity/slices.mdx b/docs/docs/hydro/reference/slices-atomicity/slices.mdx index a550890284eb..4804cbf420b6 100644 --- a/docs/docs/hydro/reference/slices-atomicity/slices.mdx +++ b/docs/docs/hydro/reference/slices-atomicity/slices.mdx @@ -162,7 +162,7 @@ let payloads_with_leader = sliced! { let all_payloads = unsent_payloads.chain(payload_batch); // If no leader, buffer everything; otherwise clear the buffer - unsent_payloads = all_payloads.clone().filter_if_none(latest_leader.clone()); + unsent_payloads = all_payloads.clone().filter_if(latest_leader.clone().is_none()); all_payloads.cross_singleton(latest_leader) }; ``` @@ -214,6 +214,6 @@ let periodic_output = sliced! { let state = use(current_state, nondet!(/** snapshot timing is non-deterministic */)); // Only emit when there is at least one tick in this batch - state.filter_if_some(tick_batch.first()).into_stream() + state.filter_if(tick_batch.first().is_some()).into_stream() }; ``` diff --git a/hydro_lang/src/live_collections/keyed_stream/mod.rs b/hydro_lang/src/live_collections/keyed_stream/mod.rs index 2e814a32e52f..ba920b4d3962 100644 --- a/hydro_lang/src/live_collections/keyed_stream/mod.rs +++ b/hydro_lang/src/live_collections/keyed_stream/mod.rs @@ -2758,11 +2758,12 @@ mod tests { let tick_triggered_input = node_tick .singleton(q!((3, 103))) .into_stream() - .filter_if_some( + .filter_if( tick_trigger .clone() .batch(&node_tick, nondet!(/** test */)) - .first(), + .first() + .is_some(), ) .all_ticks(); diff --git a/hydro_lang/src/live_collections/optional.rs b/hydro_lang/src/live_collections/optional.rs index a5388977bbfe..95a28d49dfb1 100644 --- a/hydro_lang/src/live_collections/optional.rs +++ b/hydro_lang/src/live_collections/optional.rs @@ -98,7 +98,7 @@ where }, ); - from_previous_tick.or(initial.filter_if_some(location.optional_first_tick(q!(())))) + from_previous_tick.or(initial.filter_if(location.optional_first_tick(q!(())).is_some())) } } @@ -790,6 +790,99 @@ where self.map(q!(|v| Some(v))).unwrap_or(none_singleton) } + /// Returns a [`Singleton`] containing `true` if this optional has a value, `false` otherwise. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let some_first_tick = tick.optional_first_tick(q!(42)); + /// some_first_tick.is_some().all_ticks() + /// # }, |mut stream| async move { + /// // [true /* first tick */, false /* second tick */, ...] + /// # for w in vec![true, false] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + #[expect(clippy::wrong_self_convention, reason = "Stream naming")] + pub fn is_some(self) -> Singleton { + self.map(q!(|_| ())) + .into_singleton() + .map(q!(|o| o.is_some())) + } + + /// Returns a [`Singleton`] containing `true` if this optional is null, `false` otherwise. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let some_first_tick = tick.optional_first_tick(q!(42)); + /// some_first_tick.is_none().all_ticks() + /// # }, |mut stream| async move { + /// // [false /* first tick */, true /* second tick */, ...] + /// # for w in vec![false, true] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + #[expect(clippy::wrong_self_convention, reason = "Stream naming")] + pub fn is_none(self) -> Singleton { + self.map(q!(|_| ())) + .into_singleton() + .map(q!(|o| o.is_none())) + } + + /// Returns a [`Singleton`] containing `true` if both optionals are non-null and their + /// values are equal, `false` otherwise (including when either is null). + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let a = tick.optional_first_tick(q!(5)); // Some(5), None + /// let b = tick.optional_first_tick(q!(5)); // Some(5), None + /// a.is_some_and_equals(b).all_ticks() + /// # }, |mut stream| async move { + /// // [true, false] + /// # for w in vec![true, false] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + #[expect(clippy::wrong_self_convention, reason = "Stream naming")] + pub fn is_some_and_equals(self, other: Optional) -> Singleton + where + T: PartialEq + Clone, + B: IsBounded, + { + self.into_singleton() + .zip(other.into_singleton()) + .map(q!(|(a, b)| a.is_some() && a == b)) + } + /// An operator which allows you to "name" a `HydroNode`. /// This is only used for testing, to correlate certain `HydroNode`s with IDs. pub fn ir_node_named(self, name: &str) -> Optional { @@ -878,6 +971,47 @@ where ) } + /// Filters this optional, passing through the value if the boolean signal is `true`, + /// otherwise the output is null. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let some_first_tick = tick.optional_first_tick(q!(())); + /// let signal = some_first_tick.is_some(); // true on first tick, false on second + /// let batch_first_tick = process + /// .source_iter(q!(vec![456])) + /// .batch(&tick, nondet!(/** test */)); + /// let batch_second_tick = process + /// .source_iter(q!(vec![789])) + /// .batch(&tick, nondet!(/** test */)) + /// .defer_tick(); + /// batch_first_tick.chain(batch_second_tick).first() + /// .filter_if(signal) + /// .unwrap_or(tick.singleton(q!(0))) + /// .all_ticks() + /// # }, |mut stream| async move { + /// // [456, 0] + /// # for w in vec![456, 0] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + pub fn filter_if(self, signal: Singleton) -> Optional + where + B: IsBounded, + { + self.zip(signal.filter(q!(|b| *b))).map(q!(|(d, _)| d)) + } + /// Filters this optional, passing through the optional value if it is non-null **and** the /// argument (a [`Bounded`] [`Optional`]`) is non-null, otherwise the output is null. /// @@ -914,11 +1048,12 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `Optional::is_some()` instead")] pub fn filter_if_some(self, signal: Optional) -> Optional where B: IsBounded, { - self.zip(signal.map(q!(|_u| ()))).map(q!(|(d, _signal)| d)) + self.filter_if(signal.is_some()) } /// Filters this optional, passing through the optional value if it is non-null **and** the @@ -957,16 +1092,12 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `!Optional::is_some()` instead")] pub fn filter_if_none(self, other: Optional) -> Optional where B: IsBounded, { - self.filter_if_some( - other - .map(q!(|_| ())) - .into_singleton() - .filter(q!(|o| o.is_none())), - ) + self.filter_if(other.is_none()) } /// If `self` is null, emits a null optional, but if it non-null, emits `value`. @@ -997,11 +1128,12 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `Optional::is_some()` instead")] pub fn if_some_then(self, value: Singleton) -> Optional where B: IsBounded, { - value.filter_if_some(self) + value.filter_if(self.is_some()) } } @@ -1132,7 +1264,7 @@ where let tick = self.location.tick(); self.snapshot(&tick, nondet) - .filter_if_some(samples.batch(&tick, nondet).first()) + .filter_if(samples.batch(&tick, nondet).first().is_some()) .all_ticks() .weaken_retries() } diff --git a/hydro_lang/src/live_collections/singleton.rs b/hydro_lang/src/live_collections/singleton.rs index 4d1ac3c3fc8c..3aeed997a22b 100644 --- a/hydro_lang/src/live_collections/singleton.rs +++ b/hydro_lang/src/live_collections/singleton.rs @@ -2,7 +2,7 @@ use std::cell::RefCell; use std::marker::PhantomData; -use std::ops::Deref; +use std::ops::{Deref, Not}; use std::rc::Rc; use stageleft::{IntoQuotedMut, QuotedWithContext, q}; @@ -595,6 +595,45 @@ where } } + /// Filters this singleton into an [`Optional`], passing through the singleton value if the + /// boolean signal is `true`, otherwise the output is null. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let signal = tick.optional_first_tick(q!(())).is_some(); // true on tick 1, false on tick 2 + /// let batch_first_tick = process + /// .source_iter(q!(vec![1])) + /// .batch(&tick, nondet!(/** test */)); + /// let batch_second_tick = process + /// .source_iter(q!(vec![1, 2, 3])) + /// .batch(&tick, nondet!(/** test */)) + /// .defer_tick(); + /// batch_first_tick.chain(batch_second_tick).count() + /// .filter_if(signal) + /// .all_ticks() + /// # }, |mut stream| async move { + /// // [1] + /// # for w in vec![1] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + pub fn filter_if(self, signal: Singleton) -> Optional + where + B: IsBounded, + { + self.zip(signal.filter(q!(|b| *b))).map(q!(|(d, _)| d)) + } + /// Filters this singleton into an [`Optional`], passing through the singleton value if the /// argument (a [`Bounded`] [`Optional`]`) is non-null, otherwise the output is null. /// @@ -630,12 +669,12 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `Optional::is_some()` instead")] pub fn filter_if_some(self, signal: Optional) -> Optional where B: IsBounded, { - self.zip::>(signal.map(q!(|_u| ()))) - .map(q!(|(d, _signal)| d)) + self.filter_if(signal.is_some()) } /// Filters this singleton into an [`Optional`], passing through the singleton value if the @@ -673,16 +712,38 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `!Optional::is_some()` instead")] pub fn filter_if_none(self, other: Optional) -> Optional where B: IsBounded, { - self.filter_if_some( - other - .map(q!(|_| ())) - .into_singleton() - .filter(q!(|o| o.is_none())), - ) + self.filter_if(other.is_none()) + } + + /// Returns a [`Singleton`] containing `true` if this singleton's value equals the other's. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// let a = tick.singleton(q!(5)); + /// let b = tick.singleton(q!(5)); + /// a.equals(b).all_ticks() + /// # }, |mut stream| async move { + /// // [true] + /// # assert_eq!(stream.next().await.unwrap(), true); + /// # })); + /// # } + /// ``` + pub fn equals(self, other: Singleton) -> Singleton + where + T: PartialEq, + B: IsBounded, + { + self.zip(other).map(q!(|(a, b)| a == b)) } /// An operator which allows you to "name" a `HydroNode`. @@ -697,6 +758,14 @@ where } } +impl<'a, L: Location<'a>, B: Boundedness> Not for Singleton { + type Output = Singleton; + + fn not(self) -> Self::Output { + self.map(q!(|b| !b)) + } +} + impl<'a, T, L, B: Boundedness> Singleton, L, B> where L: Location<'a>, @@ -728,6 +797,71 @@ where } } +impl<'a, L, B: Boundedness> Singleton +where + L: Location<'a>, +{ + /// Returns a [`Singleton`] containing the logical AND of this and another boolean singleton. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let a = tick.optional_first_tick(q!(())).is_some(); // true, false + /// let b = tick.singleton(q!(true)); // true, true + /// a.and(b).all_ticks() + /// # }, |mut stream| async move { + /// // [true, false] + /// # for w in vec![true, false] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + pub fn and(self, other: Singleton) -> Singleton + where + B: IsBounded, + { + self.zip(other).map(q!(|(a, b)| a && b)) + } + + /// Returns a [`Singleton`] containing the logical OR of this and another boolean singleton. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let a = tick.optional_first_tick(q!(())).is_some(); // true, false + /// let b = tick.singleton(q!(false)); // false, false + /// a.or(b).all_ticks() + /// # }, |mut stream| async move { + /// // [true, false] + /// # for w in vec![true, false] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + pub fn or(self, other: Singleton) -> Singleton + where + B: IsBounded, + { + self.zip(other).map(q!(|(a, b)| a || b)) + } +} + impl<'a, T, L, B: Boundedness> Singleton, B> where L: Location<'a> + NoTick, @@ -859,7 +993,7 @@ where let snapshot = use(self, nondet); let sample_batch = use(samples, nondet); - snapshot.filter_if_some(sample_batch.first()).into_stream() + snapshot.filter_if(sample_batch.first().is_some()).into_stream() } .weaken_retries() } @@ -1166,7 +1300,12 @@ mod tests { .clone() .into_stream() .count() - .filter_if_some(input.batch(&node_tick, nondet!(/** testing */)).first()) + .filter_if( + input + .batch(&node_tick, nondet!(/** testing */)) + .first() + .is_some(), + ) .all_ticks() .send_bincode_external(&external); complete_cycle.complete_next_tick(singleton); diff --git a/hydro_lang/src/live_collections/stream/mod.rs b/hydro_lang/src/live_collections/stream/mod.rs index 7118232d6cb7..b36421020aa0 100644 --- a/hydro_lang/src/live_collections/stream/mod.rs +++ b/hydro_lang/src/live_collections/stream/mod.rs @@ -288,7 +288,7 @@ where }, ); - from_previous_tick.chain(initial.filter_if_some(location.optional_first_tick(q!(())))) + from_previous_tick.chain(initial.filter_if(location.optional_first_tick(q!(())).is_some())) } } @@ -721,6 +721,42 @@ where ) } + /// Passes this stream through if the boolean signal is `true`, otherwise the output is empty. + /// + /// # Example + /// ```rust + /// # #[cfg(feature = "deploy")] { + /// # use hydro_lang::prelude::*; + /// # use futures::StreamExt; + /// # tokio_test::block_on(hydro_lang::test_util::stream_transform_test(|process| { + /// let tick = process.tick(); + /// // ticks are lazy by default, forces the second tick to run + /// tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {})); + /// + /// let signal = tick.optional_first_tick(q!(())).is_some(); // true on tick 1, false on tick 2 + /// let batch_first_tick = process + /// .source_iter(q!(vec![1, 2, 3, 4])) + /// .batch(&tick, nondet!(/** test */)); + /// let batch_second_tick = process + /// .source_iter(q!(vec![5, 6, 7, 8])) + /// .batch(&tick, nondet!(/** test */)) + /// .defer_tick(); + /// batch_first_tick.chain(batch_second_tick) + /// .filter_if(signal) + /// .all_ticks() + /// # }, |mut stream| async move { + /// // [1, 2, 3, 4] + /// # for w in vec![1, 2, 3, 4] { + /// # assert_eq!(stream.next().await.unwrap(), w); + /// # } + /// # })); + /// # } + /// ``` + pub fn filter_if(self, signal: Singleton) -> Stream { + self.cross_singleton(signal.filter(q!(|b| *b))) + .map(q!(|(d, _)| d)) + } + /// Passes this stream through if the argument (a [`Bounded`] [`Optional`]`) is non-null, otherwise the output is empty. /// /// Useful for gating the release of elements based on a condition, such as only processing requests if you are the @@ -755,9 +791,9 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `Optional::is_some()` instead")] pub fn filter_if_some(self, signal: Optional) -> Stream { - self.cross_singleton(signal.map(q!(|_u| ()))) - .map(q!(|(d, _signal)| d)) + self.filter_if(signal.is_some()) } /// Passes this stream through if the argument (a [`Bounded`] [`Optional`]`) is null, otherwise the output is empty. @@ -794,13 +830,9 @@ where /// # })); /// # } /// ``` + #[deprecated(note = "use `filter_if` with `!Optional::is_some()` instead")] pub fn filter_if_none(self, other: Optional) -> Stream { - self.filter_if_some( - other - .map(q!(|_| ())) - .into_singleton() - .filter(q!(|o| o.is_none())), - ) + self.filter_if(other.is_none()) } /// Forms the cross-product (Cartesian product, cross-join) of the items in the 2 input streams, returning all @@ -1416,7 +1448,7 @@ where let tick = self.location.tick(); self.batch(&tick, nondet) - .filter_if_some(samples.batch(&tick, nondet).first()) + .filter_if(samples.batch(&tick, nondet).first().is_some()) .all_ticks() .weaken_retries() } diff --git a/hydro_std/src/bench_client/mod.rs b/hydro_std/src/bench_client/mod.rs index a4f14cc467b8..179db4c47097 100644 --- a/hydro_std/src/bench_client/mod.rs +++ b/hydro_std/src/bench_client/mod.rs @@ -164,12 +164,12 @@ pub fn compute_throughput_latency<'a, Client: 'a>( ); // Output every punctuation - let interval_throughput = throughput.clone().filter_if_some(punctuation_option.clone()); - let interval_latency = latency_histogram.clone().filter_if_some(punctuation_option.clone()); + let interval_throughput = throughput.clone().filter_if(punctuation_option.clone().is_some()); + let interval_latency = latency_histogram.clone().filter_if(punctuation_option.clone().is_some()); let batched_throughput = latencies.count(); // Clear every punctuation - let prev_throughput = throughput.filter_if_none(punctuation_option.clone()); + let prev_throughput = throughput.filter_if(punctuation_option.clone().is_none()); // Merge new values throughput = batched_throughput .clone() @@ -178,7 +178,7 @@ pub fn compute_throughput_latency<'a, Client: 'a>( .unwrap_or(batched_throughput.clone()); // Clear every punctuation - let prev_histogram = latency_histogram.filter_if_none(punctuation_option); + let prev_histogram = latency_histogram.filter_if(punctuation_option.is_none()); // Merge new values latency_histogram = batched_latency_histogram .clone() @@ -239,11 +239,11 @@ pub fn aggregate_bench_results<'a, Client: 'a, Aggregator>( let punctuation_option = punctuation.first(); // Output every punctuation - let interval_throughput = throughput.clone().filter_if_some(punctuation_option.clone()); - let interval_latency = latency_histogram.clone().filter_if_some(punctuation_option.clone()); + let interval_throughput = throughput.clone().filter_if(punctuation_option.clone().is_some()); + let interval_latency = latency_histogram.clone().filter_if(punctuation_option.clone().is_some()); // Clear every punctuation - let prev_throughput = throughput.filter_if_none(punctuation_option.clone()).into_stream(); + let prev_throughput = throughput.filter_if(punctuation_option.clone().is_none()).into_stream(); // Merge new values throughput = a_throughputs .chain(prev_throughput) @@ -264,7 +264,7 @@ pub fn aggregate_bench_results<'a, Client: 'a, Aggregator>( // Clear every punctuation latency_histogram = latency_histogram .zip(merged_new_histograms.into_singleton()) - .zip(punctuation_option.into_singleton()) + .zip(punctuation_option.defer_tick().into_singleton()) .map(q!(|((old, new), reset)| { if reset.is_some() { // Use replace instead of clear, since interval_latency is pointing to the Histogram too diff --git a/hydro_test/src/cluster/compartmentalized_paxos.rs b/hydro_test/src/cluster/compartmentalized_paxos.rs index dbd33a7efe8e..d31f268c949e 100644 --- a/hydro_test/src/cluster/compartmentalized_paxos.rs +++ b/hydro_test/src/cluster/compartmentalized_paxos.rs @@ -161,14 +161,18 @@ pub fn compartmentalized_paxos_core<'a, P: PaxosPayload>( ), ); - let just_became_leader = p_is_leader + let was_not_leader = p_is_leader .clone() - .filter_if_none(p_is_leader.clone().defer_tick()); + .map(q!(|is_leader| is_leader.then_some(()))) + .into_optional() + .defer_tick() + .is_none(); + let just_became_leader = p_is_leader.clone().and(was_not_leader); let c_to_proposers = c_to_proposers( - just_became_leader + p_ballot .clone() - .if_some_then(p_ballot.clone()) + .filter_if(just_became_leader.clone()) .all_ticks(), ); @@ -204,7 +208,7 @@ pub fn compartmentalized_paxos_core<'a, P: PaxosPayload>( ( // Only tell the clients once when leader election concludes - just_became_leader.if_some_then(p_ballot).all_ticks(), + p_ballot.filter_if(just_became_leader).all_ticks(), p_to_replicas, ) } @@ -225,7 +229,7 @@ fn sequence_payload<'a, P: PaxosPayload>( a_checkpoint: Optional, Unbounded>, p_ballot: Singleton>, Bounded>, - p_is_leader: Optional<(), Tick>, Bounded>, + p_is_leader: Singleton>, Bounded>, p_relevant_p1bs: Stream< (Option, HashMap>), @@ -262,7 +266,7 @@ fn sequence_payload<'a, P: PaxosPayload>( nondet_commit_leader_change ), ) - .filter_if_some(p_is_leader.clone()), + .filter_if(p_is_leader.clone()), ); let num_proxy_leaders = config.num_proxy_leaders; diff --git a/hydro_test/src/cluster/paxos.rs b/hydro_test/src/cluster/paxos.rs index 3a98298a590a..22b58efd82bc 100644 --- a/hydro_test/src/cluster/paxos.rs +++ b/hydro_test/src/cluster/paxos.rs @@ -188,14 +188,18 @@ pub fn paxos_core<'a, P: PaxosPayload>( ), ); - let just_became_leader = p_is_leader + let was_not_leader = p_is_leader .clone() - .filter_if_none(p_is_leader.clone().defer_tick()); + .map(q!(|is_leader| is_leader.then_some(()))) + .into_optional() + .defer_tick() + .is_none(); + let just_became_leader = p_is_leader.clone().and(was_not_leader); let c_to_proposers = c_to_proposers( - just_became_leader + p_ballot .clone() - .if_some_then(p_ballot.clone()) + .filter_if(just_became_leader.clone()) .all_ticks(), ); @@ -229,7 +233,7 @@ pub fn paxos_core<'a, P: PaxosPayload>( ( // Only tell the clients once when leader election concludes - just_became_leader.if_some_then(p_ballot).all_ticks(), + p_ballot.filter_if(just_became_leader).all_ticks(), p_to_replicas, ) } @@ -253,7 +257,7 @@ pub fn leader_election<'a, L: Clone + Debug + Serialize + DeserializeOwned>( nondet_acceptor_ballot: NonDet, ) -> ( Singleton>, Bounded>, - Optional<(), Tick>, Bounded>, + Singleton>, Bounded>, Stream<(Option, L), Tick>, Bounded, NoOrder>, Singleton>, Bounded>, ) { @@ -262,7 +266,7 @@ pub fn leader_election<'a, L: Clone + Debug + Serialize + DeserializeOwned>( let (p_to_proposers_i_am_leader_complete_cycle, p_to_proposers_i_am_leader_forward_ref) = proposers.forward_ref::>(); let (p_is_leader_complete_cycle, p_is_leader_forward_ref) = - proposer_tick.forward_ref::>(); + proposer_tick.forward_ref::>(); // a_to_proposers_p2b.clone().for_each(q!(|(_, p2b): (u32, P2b)| println!("Proposer received P2b: {:?}", p2b))); // p_to_proposers_i_am_leader.clone().for_each(q!(|ballot: Ballot| println!("Proposer received I am leader: {:?}", ballot))); // c_to_proposers.clone().for_each(q!(|payload: ClientPayload| println!("Client sent proposer payload: {:?}", payload))); @@ -304,8 +308,9 @@ pub fn leader_election<'a, L: Clone + Debug + Serialize + DeserializeOwned>( p_to_proposers_i_am_leader_complete_cycle.complete(p_to_proposers_i_am_leader); - let p_to_acceptors_p1a = p_trigger_election - .if_some_then(p_ballot.clone()) + let p_to_acceptors_p1a = p_ballot + .clone() + .filter_if(p_trigger_election) .all_ticks() .inspect(q!(|_| println!("Proposer leader expired, sending P1a"))) .broadcast(acceptors, TCP.fail_stop().bincode(), nondet!(/** TODO */)) @@ -346,7 +351,7 @@ fn p_ballot_calc<'a>( p_received_max_ballot: Singleton>, Bounded>, ) -> ( Singleton>, Bounded>, - Optional<(), Tick>, Bounded>, + Singleton>, Bounded>, ) { let (p_ballot, p_has_largest_ballot) = sliced! { let p_received_max_ballot = use::atomic(p_received_max_ballot.latest_atomic(), nondet!(/** up to date with tick input */)); @@ -375,10 +380,9 @@ fn p_ballot_calc<'a>( let p_has_largest_ballot = p_received_max_ballot .zip(p_ballot.clone()) - .filter(q!( - |(received_max_ballot, cur_ballot)| *received_max_ballot <= *cur_ballot - )) - .map(q!(|_| ())); + .map(q!( + |(received_max_ballot, cur_ballot)| received_max_ballot <= cur_ballot + )); (yield_atomic(p_ballot), yield_atomic(p_has_largest_ballot)) }; @@ -394,22 +398,21 @@ fn p_ballot_calc<'a>( fn p_leader_heartbeat<'a>( proposers: &Cluster<'a, Proposer>, proposer_tick: &Tick>, - p_is_leader: Optional<(), Tick>, Bounded>, + p_is_leader: Singleton>, Bounded>, p_ballot: Singleton>, Bounded>, paxos_config: PaxosConfig, nondet_reelection: NonDet, ) -> ( Stream, Unbounded, NoOrder, AtLeastOnce>, - Optional<(), Tick>, Bounded>, + Singleton>, Bounded>, ) { let i_am_leader_send_timeout = paxos_config.i_am_leader_send_timeout; let i_am_leader_check_timeout = paxos_config.i_am_leader_check_timeout; let i_am_leader_check_timeout_delay_multiplier = paxos_config.i_am_leader_check_timeout_delay_multiplier; - let p_to_proposers_i_am_leader = p_is_leader - .clone() - .if_some_then(p_ballot) + let p_to_proposers_i_am_leader = p_ballot + .filter_if(p_is_leader.clone()) .latest() .sample_every( q!(Duration::from_secs(i_am_leader_send_timeout)), @@ -435,10 +438,10 @@ fn p_leader_heartbeat<'a>( ), ) .snapshot(proposer_tick, nondet!(/** absorbed into timeout */)) - .filter_if_none(p_is_leader); + .filter_if(!p_is_leader); // Add random delay depending on node ID so not everyone sends p1a at the same time - let p_trigger_election = p_leader_expired.filter_if_some( + let p_trigger_election = p_leader_expired.is_some().and( proposers .source_interval_delayed( q!(Duration::from_secs( @@ -455,7 +458,8 @@ fn p_leader_heartbeat<'a>( ), ) .batch(proposer_tick, nondet!(/** absorbed into interval */)) - .first(), + .first() + .is_some(), ); (p_to_proposers_i_am_leader, p_trigger_election) } @@ -512,11 +516,11 @@ fn p_p1b<'a, P: Clone + Serialize + DeserializeOwned>( NoOrder, >, p_ballot: Singleton>, Bounded>, - p_has_largest_ballot: Optional<(), Tick>, Bounded>, + p_has_largest_ballot: Singleton>, Bounded>, quorum_size: usize, num_quorum_participants: usize, ) -> ( - Optional<(), Tick>, Bounded>, + Singleton>, Bounded>, Stream<(Option, P), Tick>, Bounded, NoOrder>, Stream, Unbounded, NoOrder>, ) { @@ -559,8 +563,8 @@ fn p_p1b<'a, P: Clone + Serialize + DeserializeOwned>( let p_is_leader = p_received_quorum_of_p1bs .clone() - .map(q!(|_| ())) - .filter_if_some(p_has_largest_ballot.clone()); + .is_some() + .and(p_has_largest_ballot); ( p_is_leader, @@ -663,7 +667,7 @@ fn sequence_payload<'a, P: PaxosPayload>( a_checkpoint: Optional, Unbounded>, p_ballot: Singleton>, Bounded>, - p_is_leader: Optional<(), Tick>, Bounded>, + p_is_leader: Singleton>, Bounded>, p_relevant_p1bs: Stream< (Option, HashMap>), @@ -702,7 +706,7 @@ fn sequence_payload<'a, P: PaxosPayload>( nondet_commit ), ) - .filter_if_some(p_is_leader.clone()), + .filter_if(p_is_leader.clone()), ); let payloads_to_send = indexed_payloads @@ -712,7 +716,7 @@ fn sequence_payload<'a, P: PaxosPayload>( Some(payload) ))) .chain(p_log_to_recommit) - .filter_if_some(p_is_leader) + .filter_if(p_is_leader) .all_ticks_atomic(); let (a_log, a_to_proposers_p2b) = acceptor_p2( diff --git a/hydro_test/src/cluster/paxos_bench.rs b/hydro_test/src/cluster/paxos_bench.rs index 6aa26b9b17ef..72cc73bf5ba4 100644 --- a/hydro_test/src/cluster/paxos_bench.rs +++ b/hydro_test/src/cluster/paxos_bench.rs @@ -87,16 +87,12 @@ pub fn paxos_bench<'a>( let a_checkpoints_quorum_reached = snapshot .clone() .key_count() - .filter_map(q!(move |num_received| if num_received == f + 1 { - Some(true) - } else { - None - })); + .map(q!(move |num_received| num_received == f + 1)); // Find the smallest checkpoint seq that everyone agrees to snapshot .entries() - .filter_if_some(a_checkpoints_quorum_reached) + .filter_if(a_checkpoints_quorum_reached) .map(q!(|(_sender, seq)| seq)) .min() } diff --git a/hydro_test/src/cluster/paxos_with_client.rs b/hydro_test/src/cluster/paxos_with_client.rs index 70622eb392eb..98b7bcfe3bde 100644 --- a/hydro_test/src/cluster/paxos_with_client.rs +++ b/hydro_test/src/cluster/paxos_with_client.rs @@ -84,7 +84,7 @@ pub trait PaxosLike<'a>: Sized { let all_payloads = unsent_payloads.chain(payload_batch); - unsent_payloads = all_payloads.clone().filter_if_none(latest_leader.clone()); + unsent_payloads = all_payloads.clone().filter_if(latest_leader.clone().is_none()); all_payloads.cross_singleton(latest_leader) } .map(q!(move |(payload, leader_id)| (leader_id, payload))) diff --git a/hydro_test/src/cluster/snapshots/compute_pi_ir.snap b/hydro_test/src/cluster/snapshots/compute_pi_ir.snap index 2ab042533e18..99fea1239837 100644 --- a/hydro_test/src/cluster/snapshots/compute_pi_ir.snap +++ b/hydro_test/src/cluster/snapshots/compute_pi_ir.snap @@ -10,7 +10,7 @@ expression: built.ir() inner: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((u64 , u64) , ()) , (u64 , u64) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((u64 , u64) , bool) , (u64 , u64) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d }), input: CrossSingleton { left: Batch { inner: Reduce { @@ -204,40 +204,108 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), - input: Batch { - inner: Source { - source: Stream( - { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; Duration :: from_secs (1) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, - ), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), + input: Batch { + inner: Source { + source: Stream( + { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; Duration :: from_secs (1) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, + ), + metadata: HydroIrMetadata { + location_id: Process(loc2v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Stream { + bound: Bounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Process(loc2v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { - location_id: Process(loc2v1), - collection_kind: Stream { - bound: Unbounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + location_id: Tick(1, Process(loc2v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Process(loc2v1)), - collection_kind: Stream { + collection_kind: Singleton { bound: Bounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Process(loc2v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -245,7 +313,7 @@ expression: built.ir() location_id: Tick(1, Process(loc2v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -253,7 +321,7 @@ expression: built.ir() location_id: Tick(1, Process(loc2v1)), collection_kind: Optional { bound: Bounded, - element_type: ((u64 , u64) , ()), + element_type: ((u64 , u64) , bool), }, }, }, diff --git a/hydro_test/src/cluster/snapshots/compute_pi_ir@surface_graph_loc2v1.snap b/hydro_test/src/cluster/snapshots/compute_pi_ir@surface_graph_loc2v1.snap index 5a89c86a0a79..91db68bf022e 100644 --- a/hydro_test/src/cluster/snapshots/compute_pi_ir@surface_graph_loc2v1.snap +++ b/hydro_test/src/cluster/snapshots/compute_pi_ir@surface_graph_loc2v1.snap @@ -8,25 +8,41 @@ expression: ir.surface_syntax_string() 4v1 = reduce :: < 'static > (stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (u64 , u64) , (u64 , u64) , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; | (inside , total) , (inside_batch , total_batch) | { * inside += inside_batch ; * total += total_batch ; } })); 5v1 = source_stream ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; Duration :: from_secs (1) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }); 6v1 = reduce :: < 'tick > (stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } })); -7v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () })); -8v1 = cross_singleton (); -9v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < ((u64 , u64) , ()) , (u64 , u64) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d })); -10v1 = for_each (stageleft :: runtime_support :: fn1_type_hint :: < (u64 , u64) , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; | (inside , total) | { println ! ("pi: {} ({} trials)" , 4.0 * inside as f64 / total as f64 , total) ; } })); -// 11v1 = ; -// 12v1 = ; -// 13v1 = ; -// 14v1 = ; +7v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () })); +8v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) })); +9v1 = source_iter ([:: std :: option :: Option :: None]); +10v1 = persist :: < 'static > (); +11v1 = chain_first_n (1); +12v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () })); +13v1 = filter (stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b })); +14v1 = cross_singleton (); +15v1 = map (stageleft :: runtime_support :: fn1_type_hint :: < ((u64 , u64) , bool) , (u64 , u64) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d })); +16v1 = for_each (stageleft :: runtime_support :: fn1_type_hint :: < (u64 , u64) , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: compute_pi :: * ; | (inside , total) | { println ! ("pi: {} ({} trials)" , 4.0 * inside as f64 / total as f64 , total) ; } })); +// 17v1 = ; +// 18v1 = ; +// 19v1 = ; +// 20v1 = ; +// 21v1 = ; +// 22v1 = ; 1v1 -> 2v1; 2v1 -> 3v1; -3v1 -> 11v1; -5v1 -> 12v1; -6v1 -> 13v1; -4v1 -> 8v1; -7v1 -> 14v1; -8v1 -> 9v1; +3v1 -> 17v1; +5v1 -> 18v1; +6v1 -> 19v1; +7v1 -> 20v1; 9v1 -> 10v1; -11v1 -> 4v1; -12v1 -> 6v1; -13v1 -> 7v1; -14v1 -> 8v1; +8v1 -> 21v1; +10v1 -> 11v1; +11v1 -> 12v1; +12v1 -> 13v1; +4v1 -> 14v1; +13v1 -> 22v1; +14v1 -> 15v1; +15v1 -> 16v1; +17v1 -> 4v1; +18v1 -> 6v1; +19v1 -> 7v1; +20v1 -> 8v1; +21v1 -> 11v1; +22v1 -> 14v1; diff --git a/hydro_test/src/cluster/snapshots/paxos_ir.snap b/hydro_test/src/cluster/snapshots/paxos_ir.snap index cfd666598ce2..42b5d61adc8b 100644 --- a/hydro_test/src/cluster/snapshots/paxos_ir.snap +++ b/hydro_test/src/cluster/snapshots/paxos_ir.snap @@ -34,7 +34,7 @@ expression: built.ir() }, }, second: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , core :: option :: Option < i32 >) , ()) , (u32 , core :: option :: Option < i32 >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , core :: option :: Option < i32 >) , bool) , (u32 , core :: option :: Option < i32 >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d }), input: CrossSingleton { left: Cast { inner: SingletonSource { @@ -56,16 +56,84 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: SingletonSource { - value: { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; () }, - first_tick_only: true, + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: SingletonSource { + value: { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; () }, + first_tick_only: true, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(0, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -73,7 +141,7 @@ expression: built.ir() location_id: Tick(0, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -81,7 +149,7 @@ expression: built.ir() location_id: Tick(0, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: ((u32 , core :: option :: Option < i32 >) , ()), + element_type: ((u32 , core :: option :: Option < i32 >) , bool), }, }, }, @@ -670,12 +738,12 @@ expression: built.ir() inner: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d }), input: CrossSingleton { left: Batch { inner: YieldConcat { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: : Batch { @@ -733,8 +801,8 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), input: Tee { inner: : CycleSource { cycle_id: CycleId( @@ -742,17 +810,17 @@ expression: built.ir() ), metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -760,7 +828,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -768,7 +836,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool), }, }, }, @@ -796,40 +864,108 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), - input: Batch { - inner: Source { - source: Stream( - { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_send_timeout__free = 5u64 ; Duration :: from_secs (i_am_leader_send_timeout__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, - ), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), + input: Batch { + inner: Source { + source: Stream( + { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_send_timeout__free = 5u64 ; Duration :: from_secs (i_am_leader_send_timeout__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, + ), + metadata: HydroIrMetadata { + location_id: Cluster(loc1v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + location_id: Tick(5, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(5, Cluster(loc1v1)), - collection_kind: Stream { + collection_kind: Singleton { bound: Bounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(5, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -837,7 +973,7 @@ expression: built.ir() location_id: Tick(5, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -845,7 +981,7 @@ expression: built.ir() location_id: Tick(5, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool), }, }, }, @@ -1186,7 +1322,7 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -1198,143 +1334,245 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (() , ()) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), - input: CrossSingleton { - left: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (() , ()) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), - input: CrossSingleton { - left: Batch { - inner: YieldConcat { - inner: FilterMap { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; let duration__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_check_timeout__free = 10u64 ; Duration :: from_secs (i_am_leader_check_timeout__free) } ; move | latest_received | { if let Some (latest_received) = latest_received { if Instant :: now () . duration_since (latest_received) > duration__free { Some (()) } else { None } } else { Some (()) } } }), - input: Batch { - inner: Fold { - init: stageleft :: runtime_support :: fn0_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | | None }), - acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > , hydro_test :: __staged :: cluster :: paxos :: Ballot , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | latest , _ | { * latest = Some (Instant :: now ()) ; } }), - input: ObserveNonDet { - inner: ObserveNonDet { - inner: Tee { - inner: , + f: stageleft :: runtime_support :: fn1_type_hint :: < (bool , bool) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (a , b) | a && b }), + input: Cast { + inner: CrossSingleton { + left: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (() , bool) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d }), + input: CrossSingleton { + left: Batch { + inner: YieldConcat { + inner: FilterMap { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; let duration__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_check_timeout__free = 10u64 ; Duration :: from_secs (i_am_leader_check_timeout__free) } ; move | latest_received | { if let Some (latest_received) = latest_received { if Instant :: now () . duration_since (latest_received) > duration__free { Some (()) } else { None } } else { Some (()) } } }), + input: Batch { + inner: Fold { + init: stageleft :: runtime_support :: fn0_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | | None }), + acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > , hydro_test :: __staged :: cluster :: paxos :: Ballot , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | latest , _ | { * latest = Some (Instant :: now ()) ; } }), + input: ObserveNonDet { + inner: ObserveNonDet { + inner: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Cluster(loc1v1), + collection_kind: Stream { + bound: Unbounded, + order: NoOrder, + retry: AtLeastOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, + trusted: false, + metadata: HydroIrMetadata { + location_id: Cluster(loc1v1), + collection_kind: Stream { + bound: Unbounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, + trusted: false, + metadata: HydroIrMetadata { + location_id: Cluster(loc1v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Cluster(loc1v1), + collection_kind: Singleton { + bound: Unbounded, + element_type: core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, metadata: HydroIrMetadata { location_id: Cluster(loc1v1), - collection_kind: Stream { + collection_kind: Optional { bound: Unbounded, - order: NoOrder, - retry: AtLeastOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + element_type: (), }, }, }, - trusted: false, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | ! b }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: bool, }, }, }, - trusted: false, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (() , bool), }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Singleton { - bound: Unbounded, - element_type: core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant >, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), }, }, }, metadata: HydroIrMetadata { - location_id: Tick(7, Cluster(loc1v1)), + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant >, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { - location_id: Tick(7, Cluster(loc1v1)), + location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), + location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { - bound: Unbounded, - element_type: (), + bound: Bounded, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: core :: option :: Option < () >, }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), - input: Cast { - inner: ChainFirst { - first: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), - input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), - input: Tee { - inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, + }, + }, + }, + right: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), + input: Batch { + inner: Source { + source: Stream( + { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let delay__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let CLUSTER_SELF_ID__free = hydro_lang :: __staged :: location :: MemberId :: < hydro_test :: __staged :: cluster :: paxos :: Proposer > :: from_tagless ((__hydro_lang_cluster_self_id_loc1v1) . clone ()) ; let i_am_leader_check_timeout_delay_multiplier__free = 15usize ; Duration :: from_secs ((CLUSTER_SELF_ID__free . get_raw_id () * i_am_leader_check_timeout_delay_multiplier__free as u32) . into ()) } ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_check_timeout__free = 10u64 ; Duration :: from_secs (i_am_leader_check_timeout__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval_at (tokio :: time :: Instant :: now () + delay__free , interval__free)) }, + ), metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), + location_id: Cluster(loc1v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), - }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: core :: option :: Option < () >, - }, - }, - }, - second: Cast { - inner: SingletonSource { - value: :: std :: option :: Option :: None, - first_tick_only: false, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Singleton { + collection_kind: Stream { bound: Bounded, - element_type: core :: option :: Option < () >, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, }, }, }, @@ -1342,7 +1580,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, }, }, }, @@ -1350,84 +1588,59 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: (), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Singleton { + collection_kind: Optional { bound: Bounded, element_type: core :: option :: Option < () >, }, }, }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: core :: option :: Option < () >, - }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (() , ()), - }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), - }, - }, - }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), - input: Batch { - inner: Source { - source: Stream( - { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let delay__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let CLUSTER_SELF_ID__free = hydro_lang :: __staged :: location :: MemberId :: < hydro_test :: __staged :: cluster :: paxos :: Proposer > :: from_tagless ((__hydro_lang_cluster_self_id_loc1v1) . clone ()) ; let i_am_leader_check_timeout_delay_multiplier__free = 15usize ; Duration :: from_secs ((CLUSTER_SELF_ID__free . get_raw_id () * i_am_leader_check_timeout_delay_multiplier__free as u32) . into ()) } ; let interval__free = { use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let i_am_leader_check_timeout__free = 10u64 ; Duration :: from_secs (i_am_leader_check_timeout__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval_at (tokio :: time :: Instant :: now () + delay__free , interval__free)) }, - ), metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Stream { + collection_kind: Singleton { bound: Bounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -1435,23 +1648,23 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (() , ()), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -1459,7 +1672,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -1467,7 +1680,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool), }, }, }, @@ -2117,164 +2330,224 @@ expression: built.ir() ), input: Tee { inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (() , ()) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), - input: CrossSingleton { - left: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | _ | () }), - input: Tee { - inner: : FilterMap { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; move | ((quorum_ballot , quorum_accepted) , my_ballot) | if quorum_ballot == my_ballot { Some (quorum_accepted) } else { None } }), - input: CrossSingleton { - left: Batch { - inner: Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; move | curr , new | { if new . 0 > curr . 0 { * curr = new ; } } }), - input: ObserveNonDet { - inner: Cast { - inner: Cast { - inner: Cast { - inner: FlatMap { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > , core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | d | d }), - input: Scan { - init: stageleft :: runtime_support :: fn0_type_hint :: < std :: collections :: hash_map :: HashMap < hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: option :: Option < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | | HashMap :: new () }), - acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < std :: collections :: hash_map :: HashMap < hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: option :: Option < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > > , (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)) , core :: option :: Option < core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let f__free = stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: __deps :: hydro_lang :: live_collections :: keyed_stream :: Generate < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let f__free = stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let quorum_size__free = 2usize ; move | logs , log | { logs . push (log) ; logs . len () >= quorum_size__free } }) ; move | key_state , v | { if let Some (key_state_value) = key_state . as_mut () { if f__free (key_state_value , v) { Generate :: Return (key_state . take () . unwrap ()) } else { Generate :: Continue } } else { unreachable ! () } } }) ; let init__free = stageleft :: runtime_support :: fn0_type_hint :: < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let init__free = stageleft :: runtime_support :: fn0_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | | vec ! [] }) ; move | | Some (init__free ()) }) ; move | acc : & mut HashMap < _ , _ > , (k , v) | { let existing_state = acc . entry (Clone :: clone (& k)) . or_insert_with (| | Some (init__free ())) ; if let Some (existing_state_value) = existing_state { match f__free (existing_state_value , v) { Generate :: Yield (out) => Some (Some ((k , out))) , Generate :: Return (out) => { let _ = existing_state . take () ; Some (Some ((k , out))) } Generate :: Break => { let _ = existing_state . take () ; Some (None) } Generate :: Continue => Some (None) , } } else { Some (None) } } }), - input: ObserveNonDet { + f: stageleft :: runtime_support :: fn1_type_hint :: < (bool , bool) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (a , b) | a && b }), + input: Cast { + inner: CrossSingleton { + left: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: : FilterMap { + f: stageleft :: runtime_support :: fn1_type_hint :: < ((hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; move | ((quorum_ballot , quorum_accepted) , my_ballot) | if quorum_ballot == my_ballot { Some (quorum_accepted) } else { None } }), + input: CrossSingleton { + left: Batch { + inner: Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; move | curr , new | { if new . 0 > curr . 0 { * curr = new ; } } }), + input: ObserveNonDet { + inner: Cast { inner: Cast { - inner: YieldConcat { - inner: FilterMap { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >) , core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)) > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | (key , res) | match res { Ok (v) => Some ((key , v)) , Err (_) => None , } }), - input: AntiJoin { - pos: AntiJoin { - pos: Tee { - inner: , - metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), - }, - }, - }, - neg: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; | (k , _) | k }), - input: Cast { - inner: Cast { - inner: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; let f__free = stageleft :: runtime_support :: fn1_borrow_type_hint :: < (usize , usize) , bool > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; let min__free = 2usize ; move | (success , _error) | success < & min__free }) ; { let orig = f__free ; move | t : & (_ , _) | orig (& t . 1) } }), - input: Tee { - inner: , + inner: Cast { + inner: FlatMap { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > , core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | d | d }), + input: Scan { + init: stageleft :: runtime_support :: fn0_type_hint :: < std :: collections :: hash_map :: HashMap < hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: option :: Option < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | | HashMap :: new () }), + acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < std :: collections :: hash_map :: HashMap < hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: option :: Option < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > > , (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)) , core :: option :: Option < core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let f__free = stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: __deps :: hydro_lang :: live_collections :: keyed_stream :: Generate < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let f__free = stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let quorum_size__free = 2usize ; move | logs , log | { logs . push (log) ; logs . len () >= quorum_size__free } }) ; move | key_state , v | { if let Some (key_state_value) = key_state . as_mut () { if f__free (key_state_value , v) { Generate :: Return (key_state . take () . unwrap ()) } else { Generate :: Continue } } else { unreachable ! () } } }) ; let init__free = stageleft :: runtime_support :: fn0_type_hint :: < core :: option :: Option < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let init__free = stageleft :: runtime_support :: fn0_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | | vec ! [] }) ; move | | Some (init__free ()) }) ; move | acc : & mut HashMap < _ , _ > , (k , v) | { let existing_state = acc . entry (Clone :: clone (& k)) . or_insert_with (| | Some (init__free ())) ; if let Some (existing_state_value) = existing_state { match f__free (existing_state_value , v) { Generate :: Yield (out) => Some (Some ((k , out))) , Generate :: Return (out) => { let _ = existing_state . take () ; Some (Some ((k , out))) } Generate :: Break => { let _ = existing_state . take () ; Some (None) } Generate :: Continue => Some (None) , } } else { Some (None) } } }), + input: ObserveNonDet { + inner: Cast { + inner: YieldConcat { + inner: FilterMap { + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >) , core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)) > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | (key , res) | match res { Ok (v) => Some ((key , v)) , Err (_) => None , } }), + input: AntiJoin { + pos: AntiJoin { + pos: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), + }, + }, + }, + neg: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; | (k , _) | k }), + input: Cast { + inner: Cast { + inner: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; let f__free = stageleft :: runtime_support :: fn1_borrow_type_hint :: < (usize , usize) , bool > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; let min__free = 2usize ; move | (success , _error) | success < & min__free }) ; { let orig = f__free ; move | t : & (_ , _) | orig (& t . 1) } }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: KeyedSingleton { + bound: Bounded, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: (usize , usize), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: KeyedSingleton { + bound: Bounded, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: (usize , usize), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: KeyedStream { + bound: Bounded, + value_order: TotalOrder, + value_retry: ExactlyOnce, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: (usize , usize), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(9, Cluster(loc1v1)), - collection_kind: KeyedSingleton { + collection_kind: Stream { bound: Bounded, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: (usize , usize), + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), + }, + }, + }, + neg: DeferTick { + input: CycleSource { + cycle_id: CycleId( + 10, + ), + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(9, Cluster(loc1v1)), + collection_kind: Stream { + bound: Bounded, + order: NoOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, }, }, }, metadata: HydroIrMetadata { location_id: Tick(9, Cluster(loc1v1)), - collection_kind: KeyedSingleton { + collection_kind: Stream { bound: Bounded, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: (usize , usize), + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), }, }, }, metadata: HydroIrMetadata { location_id: Tick(9, Cluster(loc1v1)), - collection_kind: KeyedStream { + collection_kind: Stream { bound: Bounded, - value_order: TotalOrder, - value_retry: ExactlyOnce, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: (usize , usize), + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)), }, }, }, metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), + location_id: Cluster(loc1v1), collection_kind: Stream { - bound: Bounded, + bound: Unbounded, order: NoOrder, retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (usize , usize)), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)), }, }, }, metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), - }, - }, - }, - neg: DeferTick { - input: CycleSource { - cycle_id: CycleId( - 10, - ), - metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + location_id: Cluster(loc1v1), + collection_kind: KeyedStream { + bound: Unbounded, + value_order: NoOrder, + value_retry: ExactlyOnce, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >), }, }, }, + trusted: false, metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + location_id: Cluster(loc1v1), + collection_kind: KeyedStream { + bound: Unbounded, + value_order: TotalOrder, + value_retry: ExactlyOnce, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >), }, }, }, metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), + location_id: Cluster(loc1v1), collection_kind: Stream { - bound: Bounded, - order: NoOrder, + bound: Unbounded, + order: TotalOrder, retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , core :: result :: Result < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , hydro_test :: __staged :: cluster :: paxos :: Ballot >), + element_type: core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) >, }, }, }, metadata: HydroIrMetadata { - location_id: Tick(9, Cluster(loc1v1)), - collection_kind: Stream { - bound: Bounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)), + location_id: Cluster(loc1v1), + collection_kind: KeyedStream { + bound: Unbounded, + value_order: TotalOrder, + value_retry: ExactlyOnce, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, }, }, }, metadata: HydroIrMetadata { location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)), + collection_kind: KeyedSingleton { + bound: BoundedValue, + key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, }, }, }, @@ -2282,92 +2555,98 @@ expression: built.ir() location_id: Cluster(loc1v1), collection_kind: KeyedStream { bound: Unbounded, - value_order: NoOrder, + value_order: TotalOrder, value_retry: ExactlyOnce, key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >), + value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, }, }, }, - trusted: false, metadata: HydroIrMetadata { location_id: Cluster(loc1v1), - collection_kind: KeyedStream { + collection_kind: Stream { bound: Unbounded, - value_order: TotalOrder, - value_retry: ExactlyOnce, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >), + order: NoOrder, + retry: ExactlyOnce, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), }, }, }, + trusted: true, metadata: HydroIrMetadata { location_id: Cluster(loc1v1), collection_kind: Stream { bound: Unbounded, order: TotalOrder, retry: ExactlyOnce, - element_type: core :: option :: Option < (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) >, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), }, }, }, metadata: HydroIrMetadata { location_id: Cluster(loc1v1), - collection_kind: KeyedStream { + collection_kind: Optional { bound: Unbounded, - value_order: TotalOrder, - value_retry: ExactlyOnce, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: KeyedSingleton { - bound: BoundedValue, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), + }, + }, + }, + right: Cast { + inner: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: KeyedStream { - bound: Unbounded, - value_order: TotalOrder, - value_retry: ExactlyOnce, - key_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - value_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: ((hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , hydro_test :: __staged :: cluster :: paxos :: Ballot), }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: NoOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, }, }, }, - trusted: true, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), - collection_kind: Stream { - bound: Unbounded, - order: TotalOrder, - retry: ExactlyOnce, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Optional { + bound: Bounded, + element_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, }, }, }, metadata: HydroIrMetadata { - location_id: Cluster(loc1v1), + location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { - bound: Unbounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), + bound: Bounded, + element_type: (), }, }, }, @@ -2375,18 +2654,19 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >), + element_type: core :: option :: Option < () >, }, }, }, - right: Cast { - inner: Tee { - inner: , + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + element_type: core :: option :: Option < () >, }, }, }, @@ -2394,7 +2674,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, + element_type: core :: option :: Option < () >, }, }, }, @@ -2402,78 +2682,49 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: ((hydro_test :: __staged :: cluster :: paxos :: Ballot , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >) , hydro_test :: __staged :: cluster :: paxos :: Ballot), + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, + element_type: core :: option :: Option < () >, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) >, + element_type: bool, }, }, }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), - }, - }, - }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Tee { - inner: : Batch { - inner: YieldConcat { - inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot) , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | _ | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (received_max_ballot , cur_ballot) | * received_max_ballot <= * cur_ballot }), - input: Cast { - inner: CrossSingleton { - left: Tee { - inner: , - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Singleton { - bound: Bounded, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - }, - }, - }, - right: Tee { - inner: , - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Singleton { - bound: Bounded, - element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, - }, - }, - }, - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot), - }, + right: Batch { + inner: YieldConcat { + inner: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (received_max_ballot , cur_ballot) | received_max_ballot <= cur_ballot }), + input: Cast { + inner: CrossSingleton { + left: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, }, }, + }, + right: Tee { + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Singleton { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot), + element_type: hydro_test :: __staged :: cluster :: paxos :: Ballot, }, }, }, @@ -2487,33 +2738,33 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: cluster :: paxos :: Ballot), }, }, }, metadata: HydroIrMetadata { - location_id: Atomic(Tick(1, Cluster(loc1v1))), - collection_kind: Optional { - bound: Unbounded, - element_type: (), + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, }, }, }, metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), + location_id: Atomic(Tick(1, Cluster(loc1v1))), + collection_kind: Singleton { + bound: Unbounded, + element_type: bool, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -2521,31 +2772,31 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (() , ()), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -2598,10 +2849,10 @@ expression: built.ir() 11, ), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , ()) , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , bool) , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: : Chain { + inner: : Chain { first: DeferTick { input: CycleSource { cycle_id: CycleId( @@ -2633,7 +2884,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (u32 , i32) , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; let CLUSTER_SELF_ID__free = hydro_lang :: __staged :: location :: MemberId :: < hydro_test :: __staged :: cluster :: paxos_bench :: Client > :: from_tagless ((__hydro_lang_cluster_self_id_loc3v1) . clone ()) ; move | (virtual_id , payload) | { (virtual_id , (CLUSTER_SELF_ID__free . clone () , payload)) } }), input: Cast { inner: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (u32 , core :: option :: Option < i32 >) , (u32 , i32) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; let f__free = stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < i32 > , i32 > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; move | payload | { if let Some (counter) = payload { counter + 1 } else { 0 } } }) ; { let orig = f__free ; move | (k , v) | (k , orig (v)) } }), input: Chain { first: YieldConcat { @@ -2803,18 +3054,18 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Proposer > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Proposer > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { - inner: : Batch { + inner: : Batch { inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: cluster :: paxos :: Ballot , hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Proposer > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | ballot | ballot . proposer_id }), input: Reduce { @@ -2964,7 +3215,7 @@ expression: built.ir() inner: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool) , hydro_test :: __staged :: cluster :: paxos :: Ballot > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -2976,26 +3227,25 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), input: Tee { - inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (() , ()) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), - input: CrossSingleton { - left: Tee { - inner: , - metadata: HydroIrMetadata { - location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { - bound: Bounded, - element_type: (), + inner: : Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (bool , bool) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (a , b) | a && b }), + input: Cast { + inner: CrossSingleton { + left: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, + }, }, }, - }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), + right: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { @@ -3003,8 +3253,28 @@ expression: built.ir() input: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: DeferTick { - input: Tee { - inner: , + input: FilterMap { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | v | v }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < bool , core :: option :: Option < () > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | is_leader | is_leader . then_some (()) }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: bool, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(1, Cluster(loc1v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { @@ -3075,9 +3345,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -3085,31 +3355,31 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (() , ()), + element_type: (bool , bool), }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3117,7 +3387,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3125,7 +3395,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , ()), + element_type: (hydro_test :: __staged :: cluster :: paxos :: Ballot , bool), }, }, }, @@ -3347,9 +3617,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(11, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -3357,7 +3627,7 @@ expression: built.ir() location_id: Tick(11, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3367,7 +3637,7 @@ expression: built.ir() bound: Bounded, order: TotalOrder, retry: ExactlyOnce, - element_type: ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , ()), + element_type: ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , bool), }, }, }, @@ -3395,14 +3665,14 @@ expression: built.ir() init: stageleft :: runtime_support :: fn0_type_hint :: < usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | | 0usize }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , (usize , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32))) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | count , _ | * count += 1 }), input: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32))) , usize) , (usize , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32))) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | ((index , payload) , base_slot) | (base_slot + index , payload) }), input: CrossSingleton { left: Enumerate { input: Batch { inner: YieldConcat { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , ()) , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , bool) , (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _) | d }), input: CrossSingleton { left: Batch { inner: ObserveNonDet { @@ -3428,7 +3698,7 @@ expression: built.ir() input: YieldConcat { inner: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(11, Cluster(loc3v1)), collection_kind: Stream { @@ -3440,7 +3710,7 @@ expression: built.ir() }, }, right: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(11, Cluster(loc3v1)), collection_kind: Optional { @@ -3552,15 +3822,15 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _u | () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | b | * b }), input: Tee { inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3568,7 +3838,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3578,7 +3848,7 @@ expression: built.ir() bound: Bounded, order: TotalOrder, retry: ExactlyOnce, - element_type: ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , ()), + element_type: ((u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , bool), }, }, }, @@ -3624,14 +3894,14 @@ expression: built.ir() }, right: Cast { inner: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < usize , usize > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | s | s + 1 }), input: Batch { inner: YieldConcat { inner: Tee { - inner: : Reduce { + inner: : Reduce { f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , usize , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | curr , new | { if new > * curr { * curr = new ; } } }), input: ObserveNonDet { inner: Map { @@ -3639,7 +3909,7 @@ expression: built.ir() input: Cast { inner: Cast { inner: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , (usize , core :: option :: Option < hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >)) , (usize , (usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >)) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; let f__free = stageleft :: runtime_support :: fn1_type_hint :: < (usize , core :: option :: Option < hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , (usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (count , entry) | (count , entry . unwrap ()) }) ; { let orig = f__free ; move | (k , v) | (k , orig (v)) } }), input: FoldKeyed { init: stageleft :: runtime_support :: fn0_type_hint :: < (usize , core :: option :: Option < hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | | (0 , None) }), @@ -3651,7 +3921,7 @@ expression: built.ir() input: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (_checkpoint , log) | log }), input: Tee { - inner: : FlatMap { + inner: : FlatMap { f: stageleft :: runtime_support :: fn1_type_hint :: < std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > , std :: vec :: Vec < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | v }), input: Tee { inner: , @@ -3974,7 +4244,7 @@ expression: built.ir() }, }, right: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Singleton { @@ -4015,7 +4285,7 @@ expression: built.ir() ), input: AntiJoin { pos: Tee { - inner: : Chain { + inner: : Chain { first: DeferTick { input: CycleSource { cycle_id: CycleId( @@ -4043,7 +4313,7 @@ expression: built.ir() }, second: Batch { inner: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Acceptor > , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: result :: Result < () , hydro_test :: __staged :: cluster :: paxos :: Ballot >)) , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: result :: Result < () , hydro_test :: __staged :: cluster :: paxos :: Ballot >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | (_ , v) | v }), input: Cast { inner: Cast { @@ -4065,7 +4335,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: P2a < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , hydro_test :: __staged :: cluster :: paxos :: Proposer > , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Proposer > , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: result :: Result < () , hydro_test :: __staged :: cluster :: paxos :: Ballot >)) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (p2a , max_ballot) | (p2a . sender , ((p2a . slot , p2a . ballot . clone ()) , if p2a . ballot == max_ballot { Ok (()) } else { Err (max_ballot) })) }), input: CrossSingleton { left: Tee { - inner: : Batch { + inner: : Batch { inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos :: Proposer > , hydro_test :: __staged :: cluster :: paxos :: P2a < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , hydro_test :: __staged :: cluster :: paxos :: Proposer >) , hydro_test :: __staged :: cluster :: paxos :: P2a < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , hydro_test :: __staged :: cluster :: paxos :: Proposer > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | (_ , v) | v }), input: Cast { @@ -4209,9 +4479,9 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) , hydro_test :: __staged :: cluster :: paxos :: P2a < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , hydro_test :: __staged :: cluster :: paxos :: Proposer > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; let CLUSTER_SELF_ID__free = hydro_lang :: __staged :: location :: MemberId :: < hydro_test :: __staged :: cluster :: paxos :: Proposer > :: from_tagless ((__hydro_lang_cluster_self_id_loc1v1) . clone ()) ; move | ((slot , ballot) , value) | P2a { sender : CLUSTER_SELF_ID__free . clone () , ballot , slot , value } }), input: EndAtomic { inner: Tee { - inner: : YieldConcat { + inner: : YieldConcat { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) , ()) , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) , bool) , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _) | d }), input: CrossSingleton { left: Chain { first: Map { @@ -4220,7 +4490,7 @@ expression: built.ir() left: Batch { inner: YieldConcat { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Stream { @@ -4298,7 +4568,7 @@ expression: built.ir() left: Cast { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: KeyedSingleton { @@ -4360,7 +4630,7 @@ expression: built.ir() }, right: Cast { inner: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < usize , core :: option :: Option < usize > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), @@ -4370,7 +4640,7 @@ expression: built.ir() inner: FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < (core :: option :: Option < usize > , std :: collections :: hash_map :: HashMap < usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > >) , core :: option :: Option < usize > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (checkpoint , _log) | checkpoint }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Stream { @@ -4498,7 +4768,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , core :: option :: Option < usize >) , std :: ops :: Range < usize > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (max_slot , checkpoint) | { if let Some (checkpoint) = checkpoint { (checkpoint + 1) .. max_slot } else { 0 .. max_slot } } }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { @@ -4509,7 +4779,7 @@ expression: built.ir() }, right: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Singleton { @@ -4549,7 +4819,7 @@ expression: built.ir() input: Cast { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: KeyedSingleton { @@ -4659,15 +4929,15 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _u | () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | b | * b }), input: Tee { inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -4675,7 +4945,7 @@ expression: built.ir() location_id: Tick(1, Cluster(loc1v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -4685,7 +4955,7 @@ expression: built.ir() bound: Bounded, order: NoOrder, retry: ExactlyOnce, - element_type: (((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) , ()), + element_type: (((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) , bool), }, }, }, @@ -4984,20 +5254,20 @@ expression: built.ir() }, }, neg: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (usize , usize)) , (usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; | (k , _) | k }), input: Cast { inner: Cast { inner: Filter { f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (usize , usize)) , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_singleton :: * ; let f__free = stageleft :: runtime_support :: fn1_borrow_type_hint :: < (usize , usize) , bool > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; let max__free = 3usize ; move | (success , error) | (success + error) >= max__free }) ; { let orig = f__free ; move | t : & (_ , _) | orig (& t . 1) } }), input: Tee { - inner: : FoldKeyed { + inner: : FoldKeyed { init: stageleft :: runtime_support :: fn0_type_hint :: < (usize , usize) > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | | (0 , 0) }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (usize , usize) , core :: result :: Result < () , hydro_test :: __staged :: cluster :: paxos :: Ballot > , () > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | accum , value | { if value . is_ok () { accum . 0 += 1 ; } else { accum . 1 += 1 ; } } }), input: ObserveNonDet { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(13, Cluster(loc1v1)), collection_kind: Stream { @@ -5117,12 +5387,12 @@ expression: built.ir() ), input: Difference { pos: Tee { - inner: : FilterMap { + inner: : FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (usize , usize)) , core :: option :: Option < (usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; let min__free = 2usize ; move | (key , (success , _error)) | if success >= min__free { Some (key) } else { None } }), input: Cast { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(13, Cluster(loc1v1)), collection_kind: KeyedSingleton { @@ -5174,7 +5444,7 @@ expression: built.ir() }, }, neg: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(13, Cluster(loc1v1)), collection_kind: Stream { @@ -5203,7 +5473,7 @@ expression: built.ir() ), input: AntiJoin { pos: Tee { - inner: : Chain { + inner: : Chain { first: DeferTick { input: CycleSource { cycle_id: CycleId( @@ -5233,7 +5503,7 @@ expression: built.ir() inner: YieldConcat { inner: Batch { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Atomic(Tick(1, Cluster(loc1v1))), collection_kind: Stream { @@ -5297,13 +5567,13 @@ expression: built.ir() neg: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , ()) , (usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: request_response :: * ; | (key , _) | key }), input: Tee { - inner: : Batch { + inner: : Batch { inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , ()) > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | k | (k , ()) }), input: YieldConcat { inner: Difference { pos: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(13, Cluster(loc1v1)), collection_kind: Stream { @@ -5424,7 +5694,7 @@ expression: built.ir() first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < usize , core :: option :: Option < usize > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Tee { - inner: : Batch { + inner: : Batch { inner: CycleSource { cycle_id: CycleId( 2, @@ -5513,7 +5783,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: paxos :: P2a < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) , hydro_test :: __staged :: cluster :: paxos :: Proposer > , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: option :: Option < (usize , hydro_test :: __staged :: cluster :: paxos :: LogValue < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) >) > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos :: * ; | (p2a , max_ballot) | if p2a . ballot >= max_ballot { Some ((p2a . slot , LogValue { ballot : p2a . ballot , value : p2a . value , })) } else { None } }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(2, Cluster(loc2v1)), collection_kind: Stream { @@ -5597,7 +5867,7 @@ expression: built.ir() }, }, watermark: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(2, Cluster(loc2v1)), collection_kind: Optional { @@ -5707,7 +5977,7 @@ expression: built.ir() input: FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , core :: result :: Result < () , hydro_test :: __staged :: cluster :: paxos :: Ballot >) , core :: option :: Option < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , hydro_test :: __staged :: cluster :: paxos :: Ballot) > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | (key , res) | match res { Ok (_) => None , Err (e) => Some ((key , e)) , } }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Cluster(loc1v1), collection_kind: Stream { @@ -5750,7 +6020,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < (hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: sequence_payloads :: * ; | (sorted_payload , highest_seq) | sorted_payload . seq > * highest_seq }), input: CrossSingleton { left: Tee { - inner: : Sort { + inner: : Sort { input: Chain { first: Batch { inner: Map { @@ -5903,7 +6173,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > , ())) , ((usize , hydro_test :: __staged :: cluster :: paxos :: Ballot) , (core :: option :: Option < (u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32)) > , ())) > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: request_response :: * ; | (key , (meta , resp)) | (key , (meta , resp)) }), input: Join { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Stream { @@ -5915,7 +6185,7 @@ expression: built.ir() }, }, right: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(1, Cluster(loc1v1)), collection_kind: Stream { @@ -6136,12 +6406,12 @@ expression: built.ir() }, right: Cast { inner: Tee { - inner: : Fold { + inner: : Fold { init: stageleft :: runtime_support :: fn0_type_hint :: < usize > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: sequence_payloads :: * ; | | 0 }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , (hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: sequence_payloads :: * ; | new_next_slot , (sorted_payload , next_slot) | { if sorted_payload . seq == std :: cmp :: max (* new_next_slot , next_slot) { * new_next_slot = sorted_payload . seq + 1 ; } } }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Stream { @@ -6291,7 +6561,7 @@ expression: built.ir() 17, ), input: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: collections :: hash_map :: HashMap < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , usize > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: * ; | (_kv_store , next_slot) | next_slot }), input: Batch { inner: Fold { @@ -6299,13 +6569,13 @@ expression: built.ir() acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (std :: collections :: hash_map :: HashMap < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: * ; | (kv_store , next_slot) , payload | { if let Some (kv) = payload . kv { kv_store . insert (kv . key , kv . value) ; } * next_slot = payload . seq + 1 ; } }), input: YieldConcat { inner: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: sequence_payloads :: * ; | (sorted_payload , _) | { sorted_payload } }), input: Filter { f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < (hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , usize) , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: sequence_payloads :: * ; | (sorted_payload , highest_seq) | sorted_payload . seq < * highest_seq }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Stream { @@ -6318,7 +6588,7 @@ expression: built.ir() }, right: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Singleton { @@ -6424,7 +6694,7 @@ expression: built.ir() 18, ), input: Tee { - inner: : FilterMap { + inner: : FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < (core :: option :: Option < usize > , usize) , core :: option :: Option < usize > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: * ; let checkpoint_frequency__free = 1000usize ; move | (max_checkpointed_seq , next_slot) | if max_checkpointed_seq . map (| m | next_slot - m >= checkpoint_frequency__free) . unwrap_or (true) { Some (next_slot) } else { None } }), input: Cast { inner: CrossSingleton { @@ -6543,7 +6813,7 @@ expression: built.ir() first: DeferTick { input: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Singleton { @@ -6649,12 +6919,12 @@ expression: built.ir() inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , usize > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; | (_sender , seq) | seq }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , ()) , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , bool) , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | (d , _) | d }), input: CrossSingleton { left: Cast { inner: Cast { inner: Tee { - inner: : Batch { + inner: : Batch { inner: ReduceKeyed { f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , usize , () > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; | curr_seq , seq | { if seq > * curr_seq { * curr_seq = seq ; } } }), input: Cast { @@ -6796,7 +7066,7 @@ expression: built.ir() inner: YieldConcat { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Optional { @@ -6936,10 +7206,10 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < bool , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _u | () }), - input: FilterMap { - f: stageleft :: runtime_support :: fn1_type_hint :: < usize , core :: option :: Option < bool > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; let f__free = 1usize ; move | num_received | if num_received == f__free + 1 { Some (true) } else { None } }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < usize , bool > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; let f__free = 1usize ; move | num_received | num_received == f__free + 1 }), input: Fold { init: stageleft :: runtime_support :: fn0_type_hint :: < usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | | 0usize }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | count , _ | * count += 1 }), @@ -6947,7 +7217,7 @@ expression: built.ir() inner: Cast { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(17, Cluster(loc2v1)), collection_kind: KeyedSingleton { @@ -6999,7 +7269,7 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(17, Cluster(loc2v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, element_type: bool, }, @@ -7009,7 +7279,7 @@ expression: built.ir() location_id: Tick(17, Cluster(loc2v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -7019,7 +7289,7 @@ expression: built.ir() bound: Bounded, order: NoOrder, retry: ExactlyOnce, - element_type: ((hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , ()), + element_type: ((hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , usize) , bool), }, }, }, @@ -7078,7 +7348,7 @@ expression: built.ir() ), input: AntiJoin { pos: Tee { - inner: : Chain { + inner: : Chain { first: DeferTick { input: CycleSource { cycle_id: CycleId( @@ -7106,7 +7376,7 @@ expression: built.ir() }, second: Batch { inner: Tee { - inner: : Map { + inner: : Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: kv_replica :: Replica > , ((u32 , i32) , core :: result :: Result < () , () >)) , ((u32 , i32) , core :: result :: Result < () , () >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: keyed_stream :: * ; | (_ , v) | v }), input: Cast { inner: Cast { @@ -7129,7 +7399,7 @@ expression: built.ir() inner: FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: cluster :: kv_replica :: SequencedKv < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > , core :: option :: Option < hydro_test :: __staged :: cluster :: kv_replica :: KvPayload < u32 , (hydro_test :: __staged :: __deps :: hydro_lang :: location :: member_id :: MemberId < hydro_test :: __staged :: cluster :: paxos_bench :: Client > , i32) > > > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: kv_replica :: * ; | payload | payload . kv }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(15, Cluster(loc5v1)), collection_kind: Stream { @@ -7263,18 +7533,18 @@ expression: built.ir() }, }, neg: Tee { - inner: : FilterMap { + inner: : FilterMap { f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , i32) , (usize , usize)) , core :: option :: Option < (u32 , i32) > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; let min__free = 2usize ; move | (key , (success , _error)) | if success >= min__free { Some (key) } else { None } }), input: Cast { inner: Cast { inner: Tee { - inner: : FoldKeyed { + inner: : FoldKeyed { init: stageleft :: runtime_support :: fn0_type_hint :: < (usize , usize) > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | | (0 , 0) }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < (usize , usize) , core :: result :: Result < () , () > , () > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: quorum :: * ; move | accum , value | { if value . is_ok () { accum . 0 += 1 ; } else { accum . 1 += 1 ; } } }), input: ObserveNonDet { inner: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(18, Cluster(loc3v1)), collection_kind: Stream { @@ -7415,10 +7685,10 @@ expression: built.ir() 1, ), input: Tee { - inner: : Cast { + inner: : Cast { inner: YieldConcat { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(18, Cluster(loc3v1)), collection_kind: Stream { @@ -7473,12 +7743,12 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > >) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; | (new , old) | { old . borrow_mut () . add (new) . expect ("Error adding value to histogram") ; old } }), input: CrossSingleton { left: Tee { - inner: : Fold { + inner: : Fold { init: stageleft :: runtime_support :: fn0_type_hint :: < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; move | | Histogram :: < u64 > :: new (3) . unwrap () }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > , core :: time :: Duration , () > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; move | latencies , latency | { latencies . record (latency . as_nanos () as u64) . unwrap () ; } }), input: ObserveNonDet { inner: Tee { - inner: : Batch { + inner: : Batch { inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < (u32 , (i32 , core :: time :: Duration)) , core :: time :: Duration > ({ use crate :: __staged :: __deps :: * ; use crate :: __staged :: cluster :: paxos_bench :: * ; | (_virtual_client_id , (_output , latency)) | latency }), input: Cast { @@ -7500,7 +7770,7 @@ expression: built.ir() f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < i32 , i32 , () > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; | curr , new | { * curr = new ; } }), input: ObserveNonDet { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Cluster(loc3v1), collection_kind: KeyedStream { @@ -7590,7 +7860,7 @@ expression: built.ir() input: ObserveNonDet { inner: Batch { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Cluster(loc3v1), collection_kind: KeyedStream { @@ -7804,11 +8074,11 @@ expression: built.ir() }, }, right: Tee { - inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + inner: : Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: DeferTick { input: CycleSource { @@ -7875,18 +8145,18 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { - inner: : Reduce { + inner: : Reduce { f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), input: Batch { inner: Source { @@ -7983,9 +8253,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -7993,7 +8263,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -8001,7 +8271,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, @@ -8041,7 +8311,7 @@ expression: built.ir() inner: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; | histogram | Rc :: new (RefCell :: new (histogram)) }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Singleton { @@ -8094,12 +8364,12 @@ expression: built.ir() f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , usize) , usize > ({ use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; | (new , old) | new + old }), input: CrossSingleton { left: Tee { - inner: : Fold { + inner: : Fold { init: stageleft :: runtime_support :: fn0_type_hint :: < usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | | 0usize }), acc: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < usize , core :: time :: Duration , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | count , _ | * count += 1 }), input: ObserveNonDet { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Stream { @@ -8138,11 +8408,11 @@ expression: built.ir() }, }, right: Tee { - inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + inner: : Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: DeferTick { input: CycleSource { @@ -8209,18 +8479,18 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { @@ -8283,9 +8553,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -8293,7 +8563,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -8301,7 +8571,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -8339,7 +8609,7 @@ expression: built.ir() }, second: Cast { inner: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Singleton { @@ -8385,7 +8655,7 @@ expression: built.ir() left: Cast { inner: CrossSingleton { left: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: DeferTick { input: CycleSource { @@ -8483,10 +8753,10 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Singleton { @@ -8495,15 +8765,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -8511,7 +8849,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -8519,7 +8857,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, @@ -8705,18 +9043,29 @@ expression: built.ir() inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), - input: Tee { - inner: : Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), - input: Batch { - inner: Source { - source: Stream( - { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; let output_interval_millis__free = 1000u64 ; Duration :: from_millis (output_interval_millis__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, - ), + input: DeferTick { + input: Tee { + inner: : Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), + input: Batch { + inner: Source { + source: Stream( + { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; let output_interval_millis__free = 1000u64 ; Duration :: from_millis (output_interval_millis__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, + ), + metadata: HydroIrMetadata { + location_id: Process(loc4v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, metadata: HydroIrMetadata { - location_id: Process(loc4v1), + location_id: Tick(21, Process(loc4v1)), collection_kind: Stream { - bound: Unbounded, + bound: Bounded, order: TotalOrder, retry: ExactlyOnce, element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, @@ -8725,10 +9074,8 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), - collection_kind: Stream { + collection_kind: Optional { bound: Bounded, - order: TotalOrder, - retry: ExactlyOnce, element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, }, }, @@ -8848,10 +9195,10 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), collection_kind: Singleton { @@ -8860,15 +9207,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(20, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(20, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -8876,7 +9291,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -8884,7 +9299,7 @@ expression: built.ir() location_id: Tick(20, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -8969,10 +9384,10 @@ expression: built.ir() }, second: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: : Cast { + inner: : Cast { inner: ChainFirst { first: DeferTick { input: CycleSource { @@ -9039,18 +9454,18 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { @@ -9113,9 +9528,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -9123,7 +9538,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -9131,7 +9546,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -9189,10 +9604,10 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), collection_kind: Singleton { @@ -9201,15 +9616,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -9217,7 +9700,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -9225,7 +9708,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -9266,10 +9749,10 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { - inner: , + inner: , metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), collection_kind: Singleton { @@ -9278,15 +9761,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(21, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(21, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -9294,7 +9845,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -9302,7 +9853,7 @@ expression: built.ir() location_id: Tick(21, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, diff --git a/hydro_test/src/cluster/snapshots/paxos_ir@acceptor_mermaid.snap b/hydro_test/src/cluster/snapshots/paxos_ir@acceptor_mermaid.snap index bf2de823ff5a..555681777b9f 100644 --- a/hydro_test/src/cluster/snapshots/paxos_ir@acceptor_mermaid.snap +++ b/hydro_test/src/cluster/snapshots/paxos_ir@acceptor_mermaid.snap @@ -53,10 +53,10 @@ linkStyle default stroke:#aaa 43v1["
(43v1)

reduce_keyed::<
'static,
>({
|curr_seq, seq| {
if seq > *curr_seq {
*curr_seq = seq;
}
}
})
"]:::otherClass 44v1["
(44v1)

tee()
"]:::otherClass 45v1["
(45v1)

fold::<
'tick,
>(
{
|| 0usize
},
{
|count, _| *count += 1
},
)
"]:::otherClass -46v1["
(46v1)

filter_map({
let f__free = 1usize;
move |num_received| if num_received == f__free + 1 { Some(true) } else { None }
})
"]:::otherClass -47v1["
(47v1)

map({
|_u| ()
})
"]:::otherClass +46v1["
(46v1)

map({
let f__free = 1usize;
move |num_received| num_received == f__free + 1
})
"]:::otherClass +47v1["
(47v1)

filter({
|b| *b
})
"]:::otherClass 48v1["
(48v1)

cross_singleton()
"]:::otherClass -49v1["
(49v1)

map({
|(d, _signal)| d
})
"]:::otherClass +49v1["
(49v1)

map({
|(d, _)| d
})
"]:::otherClass 50v1["
(50v1)

map({
|(_sender, seq)| seq
})
"]:::otherClass 51v1["
(51v1)

reduce::<
'tick,
>({
|curr, new| {
if new < *curr {
*curr = new;
}
}
})
"]:::otherClass 52v1["
(52v1)

identity::<usize>()
"]:::otherClass @@ -130,6 +130,160 @@ subgraph var_cycle_4 ["var cycle_4"] style var_cycle_4 fill:transparent 40v1 end +<<<<<<< HEAD +subgraph var_reduce_keyed_watermark_chain_532 ["var reduce_keyed_watermark_chain_532"] + style var_reduce_keyed_watermark_chain_532 fill:transparent + 33v1 +end +subgraph var_stream_163 ["var stream_163"] + style var_stream_163 fill:transparent + 3v1 + 4v1 +end +subgraph var_stream_166 ["var stream_166"] + style var_stream_166 fill:transparent + 5v1 +end +subgraph var_stream_168 ["var stream_168"] + style var_stream_168 fill:transparent + 6v1 +end +subgraph var_stream_170 ["var stream_170"] + style var_stream_170 fill:transparent + 7v1 +end +subgraph var_stream_173 ["var stream_173"] + style var_stream_173 fill:transparent + 8v1 +end +subgraph var_stream_175 ["var stream_175"] + style var_stream_175 fill:transparent + 9v1 + 10v1 +end +subgraph var_stream_177 ["var stream_177"] + style var_stream_177 fill:transparent + 11v1 +end +subgraph var_stream_179 ["var stream_179"] + style var_stream_179 fill:transparent + 12v1 +end +subgraph var_stream_181 ["var stream_181"] + style var_stream_181 fill:transparent + 13v1 +end +subgraph var_stream_184 ["var stream_184"] + style var_stream_184 fill:transparent + 14v1 +end +subgraph var_stream_185 ["var stream_185"] + style var_stream_185 fill:transparent + 15v1 +end +subgraph var_stream_25 ["var stream_25"] + style var_stream_25 fill:transparent + 1v1 +end +subgraph var_stream_459 ["var stream_459"] + style var_stream_459 fill:transparent + 18v1 + 19v1 +end +subgraph var_stream_462 ["var stream_462"] + style var_stream_462 fill:transparent + 20v1 +end +subgraph var_stream_464 ["var stream_464"] + style var_stream_464 fill:transparent + 21v1 +end +subgraph var_stream_467 ["var stream_467"] + style var_stream_467 fill:transparent + 22v1 +end +subgraph var_stream_468 ["var stream_468"] + style var_stream_468 fill:transparent + 23v1 +end +subgraph var_stream_517 ["var stream_517"] + style var_stream_517 fill:transparent + 26v1 +end +subgraph var_stream_518 ["var stream_518"] + style var_stream_518 fill:transparent + 27v1 +end +subgraph var_stream_519 ["var stream_519"] + style var_stream_519 fill:transparent + 28v1 + 29v1 +end +subgraph var_stream_521 ["var stream_521"] + style var_stream_521 fill:transparent + 30v1 +end +subgraph var_stream_526 ["var stream_526"] + style var_stream_526 fill:transparent + 31v1 +end +subgraph var_stream_527 ["var stream_527"] + style var_stream_527 fill:transparent + 32v1 +end +subgraph var_stream_532 ["var stream_532"] + style var_stream_532 fill:transparent + 36v1 + 37v1 +end +subgraph var_stream_537 ["var stream_537"] + style var_stream_537 fill:transparent + 38v1 +end +subgraph var_stream_538 ["var stream_538"] + style var_stream_538 fill:transparent + 39v1 +end +subgraph var_stream_643 ["var stream_643"] + style var_stream_643 fill:transparent + 41v1 + 42v1 +end +subgraph var_stream_645 ["var stream_645"] + style var_stream_645 fill:transparent + 43v1 +end +subgraph var_stream_647 ["var stream_647"] + style var_stream_647 fill:transparent + 44v1 +end +subgraph var_stream_654 ["var stream_654"] + style var_stream_654 fill:transparent + 45v1 +end +subgraph var_stream_655 ["var stream_655"] + style var_stream_655 fill:transparent + 46v1 +end +subgraph var_stream_656 ["var stream_656"] + style var_stream_656 fill:transparent + 47v1 +end +subgraph var_stream_657 ["var stream_657"] + style var_stream_657 fill:transparent + 48v1 +end +subgraph var_stream_658 ["var stream_658"] + style var_stream_658 fill:transparent + 49v1 +end +subgraph var_stream_659 ["var stream_659"] + style var_stream_659 fill:transparent + 50v1 +end +subgraph var_stream_661 ["var stream_661"] + style var_stream_661 fill:transparent +======= subgraph var_reduce_keyed_watermark_chain_503 ["var reduce_keyed_watermark_chain_503"] style var_reduce_keyed_watermark_chain_503 fill:transparent 33v1 @@ -282,5 +436,6 @@ subgraph var_stream_630 ["var stream_630"] end subgraph var_stream_632 ["var stream_632"] style var_stream_632 fill:transparent +>>>>>>> main 51v1 end diff --git a/hydro_test/src/cluster/snapshots/paxos_ir@proposer_mermaid.snap b/hydro_test/src/cluster/snapshots/paxos_ir@proposer_mermaid.snap index 0eeef21ba2f6..3b11cb4bdf78 100644 --- a/hydro_test/src/cluster/snapshots/paxos_ir@proposer_mermaid.snap +++ b/hydro_test/src/cluster/snapshots/paxos_ir@proposer_mermaid.snap @@ -34,239 +34,255 @@ linkStyle default stroke:#aaa 24v1["
(24v1)

tee()
"]:::otherClass 25v1["
(25v1)

tee()
"]:::otherClass 26v1["
(26v1)

tee()
"]:::otherClass -27v1["
(27v1)

map({
|_u| ()
})
"]:::otherClass +27v1["
(27v1)

filter({
|b| *b
})
"]:::otherClass 28v1["
(28v1)

cross_singleton()
"]:::otherClass -29v1["
(29v1)

map({
|(d, _signal)| d
})
"]:::otherClass +29v1["
(29v1)

map({
|(d, _)| d
})
"]:::otherClass 30v1["
(30v1)

source_stream({
let interval__free = {
let i_am_leader_send_timeout__free = 5u64;
Duration::from_secs(i_am_leader_send_timeout__free)
};
tokio_stream::wrappers::IntervalStream::new(
tokio::time::interval(interval__free),
)
})
"]:::otherClass 31v1["
(31v1)

reduce::<
'tick,
>({
|_, _| {}
})
"]:::otherClass -32v1["
(32v1)

map({
|_u| ()
})
"]:::otherClass -33v1["
(33v1)

cross_singleton()
"]:::otherClass -34v1["
(34v1)

map({
|(d, _signal)| d
})
"]:::otherClass -35v1["
(35v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass -36v1["
(36v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass -37v1["
(37v1)

dest_sink(DUMMY_SINK)
"]:::otherClass -38v1["
(38v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass -39v1["
(39v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
hydro_test::__staged::cluster::paxos::Ballot,
>(&b)
.unwrap(),
)
})
"]:::otherClass -40v1["
(40v1)

map({
|(_, v)| v
})
"]:::otherClass -41v1["
(41v1)

tee()
"]:::otherClass -42v1["
(42v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass -43v1["
(43v1)

defer_tick_lazy()
"]:::otherClass -44v1["
(44v1)

source_stream(DUMMY)
"]:::otherClass -45v1["
(45v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass -46v1["
(46v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass -47v1["
(47v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -48v1["
(48v1)

map({
|(k, _)| k
})
"]:::otherClass -49v1["
(49v1)

fold::<
'static,
>(
{
|| None
},
{
|latest, _| {
*latest = Some(Instant::now());
}
},
)
"]:::otherClass -50v1["
(50v1)

filter_map({
let duration__free = {
let i_am_leader_check_timeout__free = 10u64;
Duration::from_secs(i_am_leader_check_timeout__free)
};
move |latest_received| {
if let Some(latest_received) = latest_received {
if Instant::now().duration_since(latest_received) > duration__free {
Some(())
} else {
None
}
} else {
Some(())
}
}
})
"]:::otherClass -51v1["
(51v1)

map({
|_| ()
})
"]:::otherClass -52v1["
(52v1)

map({
|v| Some(v)
})
"]:::otherClass -53v1["
(53v1)

source_iter([::std::option::Option::None])
"]:::otherClass -54v1["
(54v1)

persist::<'static>()
"]:::otherClass -55v1["
(55v1)

chain_first_n(1)
"]:::otherClass -56v1["
(56v1)

filter({
|o| o.is_none()
})
"]:::otherClass -57v1["
(57v1)

map({
|_u| ()
})
"]:::otherClass -58v1["
(58v1)

cross_singleton()
"]:::otherClass -59v1["
(59v1)

map({
|(d, _signal)| d
})
"]:::otherClass -60v1["
(60v1)

source_stream({
let delay__free = {
let CLUSTER_SELF_ID__free = hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless((__hydro_lang_cluster_self_id_loc1v1).clone());
let i_am_leader_check_timeout_delay_multiplier__free = 15usize;
Duration::from_secs(
(CLUSTER_SELF_ID__free.get_raw_id()
* i_am_leader_check_timeout_delay_multiplier__free as u32)
.into(),
)
};
let interval__free = {
let i_am_leader_check_timeout__free = 10u64;
Duration::from_secs(i_am_leader_check_timeout__free)
};
tokio_stream::wrappers::IntervalStream::new(
tokio::time::interval_at(
tokio::time::Instant::now() + delay__free,
interval__free,
),
)
})
"]:::otherClass -61v1["
(61v1)

reduce::<
'tick,
>({
|_, _| {}
})
"]:::otherClass -62v1["
(62v1)

map({
|_u| ()
})
"]:::otherClass -63v1["
(63v1)

cross_singleton()
"]:::otherClass -64v1["
(64v1)

map({
|(d, _signal)| d
})
"]:::otherClass -65v1["
(65v1)

map({
|_u| ()
})
"]:::otherClass -66v1["
(66v1)

cross_singleton()
"]:::otherClass -67v1["
(67v1)

map({
|(d, _signal)| d
})
"]:::otherClass -68v1["
(68v1)

inspect({
|_| println!("Proposer leader expired, sending P1a")
})
"]:::otherClass -69v1["
(69v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass -70v1["
(70v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass -71v1["
(71v1)

dest_sink(DUMMY_SINK)
"]:::otherClass -72v1["
(72v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass -73v1["
(73v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Acceptor,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
hydro_test::__staged::cluster::paxos::Ballot,
core::result::Result<
(
core::option::Option<usize>,
std::collections::hash_map::HashMap<
usize,
hydro_test::__staged::cluster::paxos::LogValue<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
>,
),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>(&b)
.unwrap(),
)
})
"]:::otherClass -74v1["
(74v1)

map({
|(_, v)| v
})
"]:::otherClass -75v1["
(75v1)

inspect({
|p1b| println!("Proposer received P1b: {:?}", p1b)
})
"]:::otherClass -76v1["
(76v1)

tee()
"]:::otherClass -77v1["
(77v1)

chain()
"]:::otherClass -78v1["
(78v1)

tee()
"]:::otherClass -79v1["
(79v1)

fold_keyed::<
'tick,
>(
{
move || (0, 0)
},
{
move |accum, value| {
if value.is_ok() {
accum.0 += 1;
} else {
accum.1 += 1;
}
}
},
)
"]:::otherClass -80v1["
(80v1)

tee()
"]:::otherClass -81v1["
(81v1)

filter({
let f__free = {
let max__free = 3usize;
move |(success, error)| (success + error) >= max__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -82v1["
(82v1)

map({
|(k, _)| k
})
"]:::otherClass -83v1["
(83v1)

tee()
"]:::otherClass -84v1["
(84v1)

anti_join::<'tick, 'tick>()
"]:::otherClass -85v1["
(85v1)

identity::<
(
hydro_test::__staged::cluster::paxos::Ballot,
core::result::Result<
(
core::option::Option<usize>,
std::collections::hash_map::HashMap<
usize,
hydro_test::__staged::cluster::paxos::LogValue<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
>,
),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>()
"]:::otherClass -86v1["
(86v1)

filter({
let f__free = {
let min__free = 2usize;
move |(success, _error)| success >= &min__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -87v1["
(87v1)

map({
|(k, _)| k
})
"]:::otherClass -88v1["
(88v1)

difference::<'tick, 'tick>()
"]:::otherClass -89v1["
(89v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass -90v1["
(90v1)

filter({
let f__free = {
let min__free = 2usize;
move |(success, _error)| success < &min__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -91v1["
(91v1)

map({
|(k, _)| k
})
"]:::otherClass -92v1["
(92v1)

anti_join::<'tick, 'tick>()
"]:::otherClass -93v1["
(93v1)

defer_tick_lazy()
"]:::otherClass -94v1["
(94v1)

anti_join::<'tick, 'tick>()
"]:::otherClass -95v1["
(95v1)

filter_map({
move |(key, res)| match res {
Ok(v) => Some((key, v)),
Err(_) => None,
}
})
"]:::otherClass -96v1["
(96v1)

scan::<
'static,
>(
{
|| HashMap::new()
},
{
let f__free = {
let f__free = {
let quorum_size__free = 2usize;
move |logs, log| {
logs.push(log);
logs.len() >= quorum_size__free
}
};
move |key_state, v| {
if let Some(key_state_value) = key_state.as_mut() {
if f__free(key_state_value, v) {
Generate::Return(key_state.take().unwrap())
} else {
Generate::Continue
}
} else {
unreachable!()
}
}
};
let init__free = {
let init__free = {
|| vec![]
};
move || Some(init__free())
};
move |acc: &mut HashMap<_, _>, (k, v)| {
let existing_state = acc
.entry(Clone::clone(&k))
.or_insert_with(|| Some(init__free()));
if let Some(existing_state_value) = existing_state {
match f__free(existing_state_value, v) {
Generate::Yield(out) => Some(Some((k, out))),
Generate::Return(out) => {
let _ = existing_state.take();
Some(Some((k, out)))
}
Generate::Break => {
let _ = existing_state.take();
Some(None)
}
Generate::Continue => Some(None),
}
} else {
Some(None)
}
}
},
)
"]:::otherClass -97v1["
(97v1)

flat_map({
|d| d
})
"]:::otherClass -98v1["
(98v1)

reduce::<
'static,
>({
move |curr, new| {
if new.0 > curr.0 {
*curr = new;
}
}
})
"]:::otherClass -99v1["
(99v1)

cross_singleton()
"]:::otherClass -100v1["
(100v1)

filter_map({
move |((quorum_ballot, quorum_accepted), my_ballot)| {
if quorum_ballot == my_ballot { Some(quorum_accepted) } else { None }
}
})
"]:::otherClass -101v1["
(101v1)

tee()
"]:::otherClass -102v1["
(102v1)

map({
|_| ()
})
"]:::otherClass -103v1["
(103v1)

cross_singleton()
"]:::otherClass -104v1["
(104v1)

filter({
|(received_max_ballot, cur_ballot)| *received_max_ballot <= *cur_ballot
})
"]:::otherClass -105v1["
(105v1)

map({
|_| ()
})
"]:::otherClass -107v1["
(107v1)

map({
|_u| ()
})
"]:::otherClass -108v1["
(108v1)

cross_singleton()
"]:::otherClass -109v1["
(109v1)

map({
|(d, _signal)| d
})
"]:::otherClass -110v1["
(110v1)

tee()
"]:::otherClass -111v1["
(111v1)

identity::<()>()
"]:::otherClass -112v1["
(112v1)

filter_map({
move |(key, res)| match res {
Ok(_) => None,
Err(e) => Some((key, e)),
}
})
"]:::otherClass -113v1["
(113v1)

map({
|(_, ballot)| ballot
})
"]:::otherClass -114v1["
(114v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass -115v1["
(115v1)

source_stream(DUMMY)
"]:::otherClass -116v1["
(116v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass -117v1["
(117v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass -118v1["
(118v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -119v1["
(119v1)

map({
|(k, _)| k
})
"]:::otherClass -120v1["
(120v1)

defer_tick_lazy()
"]:::otherClass -121v1["
(121v1)

map({
|_| ()
})
"]:::otherClass -122v1["
(122v1)

map({
|v| Some(v)
})
"]:::otherClass -123v1["
(123v1)

source_iter([::std::option::Option::None])
"]:::otherClass -124v1["
(124v1)

persist::<'static>()
"]:::otherClass -125v1["
(125v1)

chain_first_n(1)
"]:::otherClass -126v1["
(126v1)

filter({
|o| o.is_none()
})
"]:::otherClass -127v1["
(127v1)

map({
|_u| ()
})
"]:::otherClass -128v1["
(128v1)

cross_singleton()
"]:::otherClass -129v1["
(129v1)

map({
|(d, _signal)| d
})
"]:::otherClass -131v1["
(131v1)

map({
|_u| ()
})
"]:::otherClass -132v1["
(132v1)

cross_singleton()
"]:::otherClass -133v1["
(133v1)

map({
|(d, _signal)| d
})
"]:::otherClass -134v1["
(134v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass -135v1["
(135v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass -136v1["
(136v1)

dest_sink(DUMMY_SINK)
"]:::otherClass -137v1["
(137v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass -138v1["
(138v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos_bench::Client,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>(&b)
.unwrap(),
)
})
"]:::otherClass -139v1["
(139v1)

map({
|(_, v)| v
})
"]:::otherClass -140v1["
(140v1)

map({
|_u| ()
})
"]:::otherClass -141v1["
(141v1)

cross_singleton()
"]:::otherClass -142v1["
(142v1)

map({
|(d, _signal)| d
})
"]:::otherClass -143v1["
(143v1)

enumerate::<'tick>()
"]:::otherClass -144v1["
(144v1)

flat_map({
|v| v
})
"]:::otherClass -145v1["
(145v1)

tee()
"]:::otherClass -146v1["
(146v1)

map({
|(_checkpoint, log)| log
})
"]:::otherClass -147v1["
(147v1)

flat_map({
|d| d
})
"]:::otherClass -148v1["
(148v1)

fold_keyed::<
'tick,
>(
{
|| (0, None)
},
{
|curr_entry, new_entry| {
if let Some(curr_entry_payload) = &mut curr_entry.1 {
let same_values = new_entry.value == curr_entry_payload.value;
let higher_ballot = new_entry.ballot > curr_entry_payload.ballot;
if same_values {
curr_entry.0 += 1;
}
if higher_ballot {
curr_entry_payload.ballot = new_entry.ballot;
if !same_values {
curr_entry.0 = 1;
curr_entry_payload.value = new_entry.value;
}
}
} else {
*curr_entry = (1, Some(new_entry));
}
}
},
)
"]:::otherClass -149v1["
(149v1)

map({
let f__free = {
|(count, entry)| (count, entry.unwrap())
};
{
let orig = f__free;
move |(k, v)| (k, orig(v))
}
})
"]:::otherClass -150v1["
(150v1)

tee()
"]:::otherClass -151v1["
(151v1)

map({
|(k, _)| k
})
"]:::otherClass -152v1["
(152v1)

reduce::<
'tick,
>({
|curr, new| {
if new > *curr {
*curr = new;
}
}
})
"]:::otherClass -153v1["
(153v1)

tee()
"]:::otherClass -154v1["
(154v1)

map({
|s| s + 1
})
"]:::otherClass -155v1["
(155v1)

defer_tick_lazy()
"]:::otherClass -156v1["
(156v1)

source_iter([
{
0
},
])
"]:::otherClass -157v1["
(157v1)

persist::<'static>()
"]:::otherClass -158v1["
(158v1)

chain_first_n(1)
"]:::otherClass -159v1["
(159v1)

chain_first_n(1)
"]:::otherClass +32v1["
(32v1)

map({
|_| ()
})
"]:::otherClass +33v1["
(33v1)

map({
|v| Some(v)
})
"]:::otherClass +34v1["
(34v1)

source_iter([::std::option::Option::None])
"]:::otherClass +35v1["
(35v1)

persist::<'static>()
"]:::otherClass +36v1["
(36v1)

chain_first_n(1)
"]:::otherClass +37v1["
(37v1)

map({
|o| o.is_some()
})
"]:::otherClass +38v1["
(38v1)

filter({
|b| *b
})
"]:::otherClass +39v1["
(39v1)

cross_singleton()
"]:::otherClass +40v1["
(40v1)

map({
|(d, _)| d
})
"]:::otherClass +41v1["
(41v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass +42v1["
(42v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass +43v1["
(43v1)

dest_sink(DUMMY_SINK)
"]:::otherClass +44v1["
(44v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass +45v1["
(45v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
hydro_test::__staged::cluster::paxos::Ballot,
>(&b)
.unwrap(),
)
})
"]:::otherClass +46v1["
(46v1)

map({
|(_, v)| v
})
"]:::otherClass +47v1["
(47v1)

tee()
"]:::otherClass +48v1["
(48v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass +49v1["
(49v1)

defer_tick_lazy()
"]:::otherClass +50v1["
(50v1)

source_stream(DUMMY)
"]:::otherClass +51v1["
(51v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass +52v1["
(52v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass +53v1["
(53v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +54v1["
(54v1)

map({
|(k, _)| k
})
"]:::otherClass +55v1["
(55v1)

fold::<
'static,
>(
{
|| None
},
{
|latest, _| {
*latest = Some(Instant::now());
}
},
)
"]:::otherClass +56v1["
(56v1)

filter_map({
let duration__free = {
let i_am_leader_check_timeout__free = 10u64;
Duration::from_secs(i_am_leader_check_timeout__free)
};
move |latest_received| {
if let Some(latest_received) = latest_received {
if Instant::now().duration_since(latest_received) > duration__free {
Some(())
} else {
None
}
} else {
Some(())
}
}
})
"]:::otherClass +57v1["
(57v1)

map({
|b| !b
})
"]:::otherClass +58v1["
(58v1)

filter({
|b| *b
})
"]:::otherClass +59v1["
(59v1)

cross_singleton()
"]:::otherClass +60v1["
(60v1)

map({
|(d, _)| d
})
"]:::otherClass +61v1["
(61v1)

map({
|_| ()
})
"]:::otherClass +62v1["
(62v1)

map({
|v| Some(v)
})
"]:::otherClass +63v1["
(63v1)

source_iter([::std::option::Option::None])
"]:::otherClass +64v1["
(64v1)

persist::<'static>()
"]:::otherClass +65v1["
(65v1)

chain_first_n(1)
"]:::otherClass +66v1["
(66v1)

map({
|o| o.is_some()
})
"]:::otherClass +67v1["
(67v1)

source_stream({
let delay__free = {
let CLUSTER_SELF_ID__free = hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless((__hydro_lang_cluster_self_id_loc1v1).clone());
let i_am_leader_check_timeout_delay_multiplier__free = 15usize;
Duration::from_secs(
(CLUSTER_SELF_ID__free.get_raw_id()
* i_am_leader_check_timeout_delay_multiplier__free as u32)
.into(),
)
};
let interval__free = {
let i_am_leader_check_timeout__free = 10u64;
Duration::from_secs(i_am_leader_check_timeout__free)
};
tokio_stream::wrappers::IntervalStream::new(
tokio::time::interval_at(
tokio::time::Instant::now() + delay__free,
interval__free,
),
)
})
"]:::otherClass +68v1["
(68v1)

reduce::<
'tick,
>({
|_, _| {}
})
"]:::otherClass +69v1["
(69v1)

map({
|_| ()
})
"]:::otherClass +70v1["
(70v1)

map({
|v| Some(v)
})
"]:::otherClass +71v1["
(71v1)

source_iter([::std::option::Option::None])
"]:::otherClass +72v1["
(72v1)

persist::<'static>()
"]:::otherClass +73v1["
(73v1)

chain_first_n(1)
"]:::otherClass +74v1["
(74v1)

map({
|o| o.is_some()
})
"]:::otherClass +75v1["
(75v1)

cross_singleton()
"]:::otherClass +76v1["
(76v1)

map({
|(a, b)| a && b
})
"]:::otherClass +77v1["
(77v1)

filter({
|b| *b
})
"]:::otherClass +78v1["
(78v1)

cross_singleton()
"]:::otherClass +79v1["
(79v1)

map({
|(d, _)| d
})
"]:::otherClass +80v1["
(80v1)

inspect({
|_| println!("Proposer leader expired, sending P1a")
})
"]:::otherClass +81v1["
(81v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass +82v1["
(82v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass +83v1["
(83v1)

dest_sink(DUMMY_SINK)
"]:::otherClass +84v1["
(84v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass +85v1["
(85v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Acceptor,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
hydro_test::__staged::cluster::paxos::Ballot,
core::result::Result<
(
core::option::Option<usize>,
std::collections::hash_map::HashMap<
usize,
hydro_test::__staged::cluster::paxos::LogValue<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
>,
),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>(&b)
.unwrap(),
)
})
"]:::otherClass +86v1["
(86v1)

map({
|(_, v)| v
})
"]:::otherClass +87v1["
(87v1)

inspect({
|p1b| println!("Proposer received P1b: {:?}", p1b)
})
"]:::otherClass +88v1["
(88v1)

tee()
"]:::otherClass +89v1["
(89v1)

chain()
"]:::otherClass +90v1["
(90v1)

tee()
"]:::otherClass +91v1["
(91v1)

fold_keyed::<
'tick,
>(
{
move || (0, 0)
},
{
move |accum, value| {
if value.is_ok() {
accum.0 += 1;
} else {
accum.1 += 1;
}
}
},
)
"]:::otherClass +92v1["
(92v1)

tee()
"]:::otherClass +93v1["
(93v1)

filter({
let f__free = {
let max__free = 3usize;
move |(success, error)| (success + error) >= max__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +94v1["
(94v1)

map({
|(k, _)| k
})
"]:::otherClass +95v1["
(95v1)

tee()
"]:::otherClass +96v1["
(96v1)

anti_join::<'tick, 'tick>()
"]:::otherClass +97v1["
(97v1)

identity::<
(
hydro_test::__staged::cluster::paxos::Ballot,
core::result::Result<
(
core::option::Option<usize>,
std::collections::hash_map::HashMap<
usize,
hydro_test::__staged::cluster::paxos::LogValue<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
>,
),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>()
"]:::otherClass +98v1["
(98v1)

filter({
let f__free = {
let min__free = 2usize;
move |(success, _error)| success >= &min__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +99v1["
(99v1)

map({
|(k, _)| k
})
"]:::otherClass +100v1["
(100v1)

difference::<'tick, 'tick>()
"]:::otherClass +101v1["
(101v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass +102v1["
(102v1)

filter({
let f__free = {
let min__free = 2usize;
move |(success, _error)| success < &min__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +103v1["
(103v1)

map({
|(k, _)| k
})
"]:::otherClass +104v1["
(104v1)

anti_join::<'tick, 'tick>()
"]:::otherClass +105v1["
(105v1)

defer_tick_lazy()
"]:::otherClass +106v1["
(106v1)

anti_join::<'tick, 'tick>()
"]:::otherClass +107v1["
(107v1)

filter_map({
move |(key, res)| match res {
Ok(v) => Some((key, v)),
Err(_) => None,
}
})
"]:::otherClass +108v1["
(108v1)

scan::<
'static,
>(
{
|| HashMap::new()
},
{
let f__free = {
let f__free = {
let quorum_size__free = 2usize;
move |logs, log| {
logs.push(log);
logs.len() >= quorum_size__free
}
};
move |key_state, v| {
if let Some(key_state_value) = key_state.as_mut() {
if f__free(key_state_value, v) {
Generate::Return(key_state.take().unwrap())
} else {
Generate::Continue
}
} else {
unreachable!()
}
}
};
let init__free = {
let init__free = {
|| vec![]
};
move || Some(init__free())
};
move |acc: &mut HashMap<_, _>, (k, v)| {
let existing_state = acc
.entry(Clone::clone(&k))
.or_insert_with(|| Some(init__free()));
if let Some(existing_state_value) = existing_state {
match f__free(existing_state_value, v) {
Generate::Yield(out) => Some(Some((k, out))),
Generate::Return(out) => {
let _ = existing_state.take();
Some(Some((k, out)))
}
Generate::Break => {
let _ = existing_state.take();
Some(None)
}
Generate::Continue => Some(None),
}
} else {
Some(None)
}
}
},
)
"]:::otherClass +109v1["
(109v1)

flat_map({
|d| d
})
"]:::otherClass +110v1["
(110v1)

reduce::<
'static,
>({
move |curr, new| {
if new.0 > curr.0 {
*curr = new;
}
}
})
"]:::otherClass +111v1["
(111v1)

cross_singleton()
"]:::otherClass +112v1["
(112v1)

filter_map({
move |((quorum_ballot, quorum_accepted), my_ballot)| {
if quorum_ballot == my_ballot { Some(quorum_accepted) } else { None }
}
})
"]:::otherClass +113v1["
(113v1)

tee()
"]:::otherClass +114v1["
(114v1)

map({
|_| ()
})
"]:::otherClass +115v1["
(115v1)

map({
|v| Some(v)
})
"]:::otherClass +116v1["
(116v1)

source_iter([::std::option::Option::None])
"]:::otherClass +117v1["
(117v1)

persist::<'static>()
"]:::otherClass +118v1["
(118v1)

chain_first_n(1)
"]:::otherClass +119v1["
(119v1)

map({
|o| o.is_some()
})
"]:::otherClass +120v1["
(120v1)

cross_singleton()
"]:::otherClass +121v1["
(121v1)

map({
|(received_max_ballot, cur_ballot)| received_max_ballot <= cur_ballot
})
"]:::otherClass +122v1["
(122v1)

cross_singleton()
"]:::otherClass +123v1["
(123v1)

map({
|(a, b)| a && b
})
"]:::otherClass +124v1["
(124v1)

tee()
"]:::otherClass +125v1["
(125v1)

identity::<bool>()
"]:::otherClass +126v1["
(126v1)

filter_map({
move |(key, res)| match res {
Ok(_) => None,
Err(e) => Some((key, e)),
}
})
"]:::otherClass +127v1["
(127v1)

map({
|(_, ballot)| ballot
})
"]:::otherClass +128v1["
(128v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass +129v1["
(129v1)

source_stream(DUMMY)
"]:::otherClass +130v1["
(130v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass +131v1["
(131v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass +132v1["
(132v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +133v1["
(133v1)

map({
|(k, _)| k
})
"]:::otherClass +134v1["
(134v1)

map({
|is_leader| is_leader.then_some(())
})
"]:::otherClass +135v1["
(135v1)

filter_map({
|v| v
})
"]:::otherClass +136v1["
(136v1)

defer_tick_lazy()
"]:::otherClass +137v1["
(137v1)

map({
|_| ()
})
"]:::otherClass +138v1["
(138v1)

map({
|v| Some(v)
})
"]:::otherClass +139v1["
(139v1)

source_iter([::std::option::Option::None])
"]:::otherClass +140v1["
(140v1)

persist::<'static>()
"]:::otherClass +141v1["
(141v1)

chain_first_n(1)
"]:::otherClass +142v1["
(142v1)

map({
|o| o.is_none()
})
"]:::otherClass +143v1["
(143v1)

cross_singleton()
"]:::otherClass +144v1["
(144v1)

map({
|(a, b)| a && b
})
"]:::otherClass +146v1["
(146v1)

filter({
|b| *b
})
"]:::otherClass +147v1["
(147v1)

cross_singleton()
"]:::otherClass +148v1["
(148v1)

map({
|(d, _)| d
})
"]:::otherClass +149v1["
(149v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass +150v1["
(150v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass +151v1["
(151v1)

dest_sink(DUMMY_SINK)
"]:::otherClass +152v1["
(152v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass +153v1["
(153v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos_bench::Client,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>(&b)
.unwrap(),
)
})
"]:::otherClass +154v1["
(154v1)

map({
|(_, v)| v
})
"]:::otherClass +155v1["
(155v1)

filter({
|b| *b
})
"]:::otherClass +156v1["
(156v1)

cross_singleton()
"]:::otherClass +157v1["
(157v1)

map({
|(d, _)| d
})
"]:::otherClass +158v1["
(158v1)

enumerate::<'tick>()
"]:::otherClass +159v1["
(159v1)

flat_map({
|v| v
})
"]:::otherClass 160v1["
(160v1)

tee()
"]:::otherClass -161v1["
(161v1)

cross_singleton()
"]:::otherClass -162v1["
(162v1)

map({
|((index, payload), base_slot)| (base_slot + index, payload)
})
"]:::otherClass -163v1["
(163v1)

tee()
"]:::otherClass -164v1["
(164v1)

fold::<
'tick,
>(
{
|| 0usize
},
{
|count, _| *count += 1
},
)
"]:::otherClass -165v1["
(165v1)

cross_singleton()
"]:::otherClass -166v1["
(166v1)

map({
|(num_payloads, base_slot)| base_slot + num_payloads
})
"]:::otherClass -167v1["
(167v1)

identity::<usize>()
"]:::otherClass -168v1["
(168v1)

defer_tick_lazy()
"]:::otherClass -169v1["
(169v1)

source_stream(DUMMY)
"]:::otherClass -170v1["
(170v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass -171v1["
(171v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass -172v1["
(172v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -173v1["
(173v1)

map({
|(k, _)| k
})
"]:::otherClass -174v1["
(174v1)

cross_singleton()
"]:::otherClass -175v1["
(175v1)

map({
|((slot, payload), ballot)| ((slot, ballot), Some(payload))
})
"]:::otherClass +161v1["
(161v1)

map({
|(_checkpoint, log)| log
})
"]:::otherClass +162v1["
(162v1)

flat_map({
|d| d
})
"]:::otherClass +163v1["
(163v1)

fold_keyed::<
'tick,
>(
{
|| (0, None)
},
{
|curr_entry, new_entry| {
if let Some(curr_entry_payload) = &mut curr_entry.1 {
let same_values = new_entry.value == curr_entry_payload.value;
let higher_ballot = new_entry.ballot > curr_entry_payload.ballot;
if same_values {
curr_entry.0 += 1;
}
if higher_ballot {
curr_entry_payload.ballot = new_entry.ballot;
if !same_values {
curr_entry.0 = 1;
curr_entry_payload.value = new_entry.value;
}
}
} else {
*curr_entry = (1, Some(new_entry));
}
}
},
)
"]:::otherClass +164v1["
(164v1)

map({
let f__free = {
|(count, entry)| (count, entry.unwrap())
};
{
let orig = f__free;
move |(k, v)| (k, orig(v))
}
})
"]:::otherClass +165v1["
(165v1)

tee()
"]:::otherClass +166v1["
(166v1)

map({
|(k, _)| k
})
"]:::otherClass +167v1["
(167v1)

reduce::<
'tick,
>({
|curr, new| {
if new > *curr {
*curr = new;
}
}
})
"]:::otherClass +168v1["
(168v1)

tee()
"]:::otherClass +169v1["
(169v1)

map({
|s| s + 1
})
"]:::otherClass +170v1["
(170v1)

defer_tick_lazy()
"]:::otherClass +171v1["
(171v1)

source_iter([
{
0
},
])
"]:::otherClass +172v1["
(172v1)

persist::<'static>()
"]:::otherClass +173v1["
(173v1)

chain_first_n(1)
"]:::otherClass +174v1["
(174v1)

chain_first_n(1)
"]:::otherClass +175v1["
(175v1)

tee()
"]:::otherClass 176v1["
(176v1)

cross_singleton()
"]:::otherClass -177v1["
(177v1)

filter_map({
|(checkpoint, _log)| checkpoint
})
"]:::otherClass -178v1["
(178v1)

reduce::<
'tick,
>({
|curr, new| {
if new > *curr {
*curr = new;
}
}
})
"]:::otherClass -179v1["
(179v1)

map({
|v| Some(v)
})
"]:::otherClass -180v1["
(180v1)

source_iter([::std::option::Option::None])
"]:::otherClass -181v1["
(181v1)

persist::<'static>()
"]:::otherClass -182v1["
(182v1)

chain_first_n(1)
"]:::otherClass -183v1["
(183v1)

tee()
"]:::otherClass -184v1["
(184v1)

cross_singleton()
"]:::otherClass -185v1["
(185v1)

filter_map({
let f__free = 1usize;
move |(((slot, (count, entry)), ballot), checkpoint)| {
if count > f__free {
return None;
} else if let Some(checkpoint) = checkpoint && slot <= checkpoint {
return None;
}
Some(((slot, ballot), entry.value))
}
})
"]:::otherClass -186v1["
(186v1)

cross_singleton()
"]:::otherClass -187v1["
(187v1)

flat_map({
|(max_slot, checkpoint)| {
if let Some(checkpoint) = checkpoint {
(checkpoint + 1)..max_slot
} else {
0..max_slot
}
}
})
"]:::otherClass +177v1["
(177v1)

map({
|((index, payload), base_slot)| (base_slot + index, payload)
})
"]:::otherClass +178v1["
(178v1)

tee()
"]:::otherClass +179v1["
(179v1)

fold::<
'tick,
>(
{
|| 0usize
},
{
|count, _| *count += 1
},
)
"]:::otherClass +180v1["
(180v1)

cross_singleton()
"]:::otherClass +181v1["
(181v1)

map({
|(num_payloads, base_slot)| base_slot + num_payloads
})
"]:::otherClass +182v1["
(182v1)

identity::<usize>()
"]:::otherClass +183v1["
(183v1)

defer_tick_lazy()
"]:::otherClass +184v1["
(184v1)

source_stream(DUMMY)
"]:::otherClass +185v1["
(185v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass +186v1["
(186v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass +187v1["
(187v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass 188v1["
(188v1)

map({
|(k, _)| k
})
"]:::otherClass -189v1["
(189v1)

difference::<'tick, 'tick>()
"]:::otherClass -190v1["
(190v1)

cross_singleton()
"]:::otherClass -191v1["
(191v1)

map({
move |(slot, ballot)| ((slot, ballot), None)
})
"]:::otherClass -192v1["
(192v1)

chain()
"]:::otherClass -193v1["
(193v1)

chain()
"]:::otherClass -194v1["
(194v1)

map({
|_u| ()
})
"]:::otherClass -195v1["
(195v1)

cross_singleton()
"]:::otherClass -196v1["
(196v1)

map({
|(d, _signal)| d
})
"]:::otherClass -197v1["
(197v1)

tee()
"]:::otherClass -198v1["
(198v1)

map({
let CLUSTER_SELF_ID__free = hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless((__hydro_lang_cluster_self_id_loc1v1).clone());
move |((slot, ballot), value)| P2a {
sender: CLUSTER_SELF_ID__free.clone(),
ballot,
slot,
value,
}
})
"]:::otherClass -199v1["
(199v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass -200v1["
(200v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass -201v1["
(201v1)

dest_sink(DUMMY_SINK)
"]:::otherClass -202v1["
(202v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass -203v1["
(203v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Acceptor,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::result::Result<
(),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>(&b)
.unwrap(),
)
})
"]:::otherClass -204v1["
(204v1)

map({
|(_, v)| v
})
"]:::otherClass -205v1["
(205v1)

tee()
"]:::otherClass -206v1["
(206v1)

chain()
"]:::otherClass -207v1["
(207v1)

tee()
"]:::otherClass -208v1["
(208v1)

fold_keyed::<
'tick,
>(
{
move || (0, 0)
},
{
move |accum, value| {
if value.is_ok() {
accum.0 += 1;
} else {
accum.1 += 1;
}
}
},
)
"]:::otherClass -209v1["
(209v1)

tee()
"]:::otherClass -210v1["
(210v1)

filter({
let f__free = {
let max__free = 3usize;
move |(success, error)| (success + error) >= max__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -211v1["
(211v1)

map({
|(k, _)| k
})
"]:::otherClass +189v1["
(189v1)

cross_singleton()
"]:::otherClass +190v1["
(190v1)

map({
|((slot, payload), ballot)| ((slot, ballot), Some(payload))
})
"]:::otherClass +191v1["
(191v1)

cross_singleton()
"]:::otherClass +192v1["
(192v1)

filter_map({
|(checkpoint, _log)| checkpoint
})
"]:::otherClass +193v1["
(193v1)

reduce::<
'tick,
>({
|curr, new| {
if new > *curr {
*curr = new;
}
}
})
"]:::otherClass +194v1["
(194v1)

map({
|v| Some(v)
})
"]:::otherClass +195v1["
(195v1)

source_iter([::std::option::Option::None])
"]:::otherClass +196v1["
(196v1)

persist::<'static>()
"]:::otherClass +197v1["
(197v1)

chain_first_n(1)
"]:::otherClass +198v1["
(198v1)

tee()
"]:::otherClass +199v1["
(199v1)

cross_singleton()
"]:::otherClass +200v1["
(200v1)

filter_map({
let f__free = 1usize;
move |(((slot, (count, entry)), ballot), checkpoint)| {
if count > f__free {
return None;
} else if let Some(checkpoint) = checkpoint && slot <= checkpoint {
return None;
}
Some(((slot, ballot), entry.value))
}
})
"]:::otherClass +201v1["
(201v1)

cross_singleton()
"]:::otherClass +202v1["
(202v1)

flat_map({
|(max_slot, checkpoint)| {
if let Some(checkpoint) = checkpoint {
(checkpoint + 1)..max_slot
} else {
0..max_slot
}
}
})
"]:::otherClass +203v1["
(203v1)

map({
|(k, _)| k
})
"]:::otherClass +204v1["
(204v1)

difference::<'tick, 'tick>()
"]:::otherClass +205v1["
(205v1)

cross_singleton()
"]:::otherClass +206v1["
(206v1)

map({
move |(slot, ballot)| ((slot, ballot), None)
})
"]:::otherClass +207v1["
(207v1)

chain()
"]:::otherClass +208v1["
(208v1)

chain()
"]:::otherClass +209v1["
(209v1)

filter({
|b| *b
})
"]:::otherClass +210v1["
(210v1)

cross_singleton()
"]:::otherClass +211v1["
(211v1)

map({
|(d, _)| d
})
"]:::otherClass 212v1["
(212v1)

tee()
"]:::otherClass -213v1["
(213v1)

anti_join::<'tick, 'tick>()
"]:::otherClass -214v1["
(214v1)

identity::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::result::Result<(), hydro_test::__staged::cluster::paxos::Ballot>,
),
>()
"]:::otherClass -215v1["
(215v1)

filter_map({
let min__free = 2usize;
move |(key, (success, _error))| {
if success >= min__free { Some(key) } else { None }
}
})
"]:::otherClass -216v1["
(216v1)

tee()
"]:::otherClass -217v1["
(217v1)

difference::<'tick, 'tick>()
"]:::otherClass -218v1["
(218v1)

identity::<(usize, hydro_test::__staged::cluster::paxos::Ballot)>()
"]:::otherClass -219v1["
(219v1)

defer_tick_lazy()
"]:::otherClass -220v1["
(220v1)

chain()
"]:::otherClass -221v1["
(221v1)

tee()
"]:::otherClass -222v1["
(222v1)

defer_tick_lazy()
"]:::otherClass -223v1["
(223v1)

difference::<'tick, 'tick>()
"]:::otherClass -224v1["
(224v1)

map({
|k| (k, ())
})
"]:::otherClass -225v1["
(225v1)

tee()
"]:::otherClass -226v1["
(226v1)

map({
|(key, _)| key
})
"]:::otherClass -227v1["
(227v1)

anti_join::<'tick, 'tick>()
"]:::otherClass -228v1["
(228v1)

identity::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::option::Option<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
),
>()
"]:::otherClass -229v1["
(229v1)

filter_map({
move |(key, res)| match res {
Ok(_) => None,
Err(e) => Some((key, e)),
}
})
"]:::otherClass -230v1["
(230v1)

map({
|(_, ballot)| ballot
})
"]:::otherClass -231v1["
(231v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass -232v1["
(232v1)

source_stream(DUMMY)
"]:::otherClass -233v1["
(233v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass -234v1["
(234v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass -235v1["
(235v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass -236v1["
(236v1)

map({
|(k, _)| k
})
"]:::otherClass -237v1["
(237v1)

join_multiset::<'tick, 'tick>()
"]:::otherClass -238v1["
(238v1)

map({
|(key, (meta, resp))| (key, (meta, resp))
})
"]:::otherClass -239v1["
(239v1)

map({
|((slot, _ballot), (value, _))| (slot, value)
})
"]:::otherClass -240v1["
(240v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass -241v1["
(241v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass -242v1["
(242v1)

dest_sink(DUMMY_SINK)
"]:::otherClass -338v1["
(338v1)

identity()
"]:::otherClass -340v1["
(340v1)

identity()
"]:::otherClass -342v1["
(342v1)

identity()
"]:::otherClass -344v1["
(344v1)

identity()
"]:::otherClass -346v1["
(346v1)

identity()
"]:::otherClass -348v1["
(348v1)

identity()
"]:::otherClass -350v1["
(350v1)

identity()
"]:::otherClass -352v1["
(352v1)

identity()
"]:::otherClass +213v1["
(213v1)

map({
let CLUSTER_SELF_ID__free = hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Proposer,
>::from_tagless((__hydro_lang_cluster_self_id_loc1v1).clone());
move |((slot, ballot), value)| P2a {
sender: CLUSTER_SELF_ID__free.clone(),
ballot,
slot,
value,
}
})
"]:::otherClass +214v1["
(214v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass +215v1["
(215v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass +216v1["
(216v1)

dest_sink(DUMMY_SINK)
"]:::otherClass +217v1["
(217v1)

source_stream(DUMMY_SOURCE)
"]:::otherClass +218v1["
(218v1)

map(|res| {
let (id, b) = res.unwrap();
(
hydro_lang::__staged::location::MemberId::<
hydro_test::__staged::cluster::paxos::Acceptor,
>::from_tagless(id as hydro_lang::__staged::location::TaglessMemberId),
hydro_lang::runtime_support::bincode::deserialize::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::result::Result<
(),
hydro_test::__staged::cluster::paxos::Ballot,
>,
),
>(&b)
.unwrap(),
)
})
"]:::otherClass +219v1["
(219v1)

map({
|(_, v)| v
})
"]:::otherClass +220v1["
(220v1)

tee()
"]:::otherClass +221v1["
(221v1)

chain()
"]:::otherClass +222v1["
(222v1)

tee()
"]:::otherClass +223v1["
(223v1)

fold_keyed::<
'tick,
>(
{
move || (0, 0)
},
{
move |accum, value| {
if value.is_ok() {
accum.0 += 1;
} else {
accum.1 += 1;
}
}
},
)
"]:::otherClass +224v1["
(224v1)

tee()
"]:::otherClass +225v1["
(225v1)

filter({
let f__free = {
let max__free = 3usize;
move |(success, error)| (success + error) >= max__free
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +226v1["
(226v1)

map({
|(k, _)| k
})
"]:::otherClass +227v1["
(227v1)

tee()
"]:::otherClass +228v1["
(228v1)

anti_join::<'tick, 'tick>()
"]:::otherClass +229v1["
(229v1)

identity::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::result::Result<(), hydro_test::__staged::cluster::paxos::Ballot>,
),
>()
"]:::otherClass +230v1["
(230v1)

filter_map({
let min__free = 2usize;
move |(key, (success, _error))| {
if success >= min__free { Some(key) } else { None }
}
})
"]:::otherClass +231v1["
(231v1)

tee()
"]:::otherClass +232v1["
(232v1)

difference::<'tick, 'tick>()
"]:::otherClass +233v1["
(233v1)

identity::<(usize, hydro_test::__staged::cluster::paxos::Ballot)>()
"]:::otherClass +234v1["
(234v1)

defer_tick_lazy()
"]:::otherClass +235v1["
(235v1)

chain()
"]:::otherClass +236v1["
(236v1)

tee()
"]:::otherClass +237v1["
(237v1)

defer_tick_lazy()
"]:::otherClass +238v1["
(238v1)

difference::<'tick, 'tick>()
"]:::otherClass +239v1["
(239v1)

map({
|k| (k, ())
})
"]:::otherClass +240v1["
(240v1)

tee()
"]:::otherClass +241v1["
(241v1)

map({
|(key, _)| key
})
"]:::otherClass +242v1["
(242v1)

anti_join::<'tick, 'tick>()
"]:::otherClass +243v1["
(243v1)

identity::<
(
(usize, hydro_test::__staged::cluster::paxos::Ballot),
core::option::Option<
(
u32,
(
hydro_test::__staged::__deps::hydro_lang::location::member_id::MemberId<
hydro_test::__staged::cluster::paxos_bench::Client,
>,
i32,
),
),
>,
),
>()
"]:::otherClass +244v1["
(244v1)

filter_map({
move |(key, res)| match res {
Ok(_) => None,
Err(e) => Some((key, e)),
}
})
"]:::otherClass +245v1["
(245v1)

map({
|(_, ballot)| ballot
})
"]:::otherClass +246v1["
(246v1)

identity::<hydro_test::__staged::cluster::paxos::Ballot>()
"]:::otherClass +247v1["
(247v1)

source_stream(DUMMY)
"]:::otherClass +248v1["
(248v1)

map({
|(k, v)| (MemberId::from_tagless(k), v)
})
"]:::otherClass +249v1["
(249v1)

fold_keyed::<
'static,
>(
{
|| false
},
{
|present, event| {
match event {
MembershipEvent::Joined => *present = true,
MembershipEvent::Left => *present = false,
}
}
},
)
"]:::otherClass +250v1["
(250v1)

filter({
let f__free = {
|b| *b
};
{
let orig = f__free;
move |t: &(_, _)| orig(&t.1)
}
})
"]:::otherClass +251v1["
(251v1)

map({
|(k, _)| k
})
"]:::otherClass +252v1["
(252v1)

join_multiset::<'tick, 'tick>()
"]:::otherClass +253v1["
(253v1)

map({
|(key, (meta, resp))| (key, (meta, resp))
})
"]:::otherClass +254v1["
(254v1)

map({
|((slot, _ballot), (value, _))| (slot, value)
})
"]:::otherClass +255v1["
(255v1)

cross_join_multiset::<'tick, 'tick>()
"]:::otherClass +256v1["
(256v1)

map(|(id, data)| {
(
id.into_tagless(),
hydro_lang::runtime_support::bincode::serialize(&data).unwrap().into(),
)
})
"]:::otherClass +257v1["
(257v1)

dest_sink(DUMMY_SINK)
"]:::otherClass +358v1["
(358v1)

identity()
"]:::otherClass +360v1["
(360v1)

identity()
"]:::otherClass +362v1["
(362v1)

identity()
"]:::otherClass +364v1["
(364v1)

identity()
"]:::otherClass +366v1["
(366v1)

identity()
"]:::otherClass +368v1["
(368v1)

identity()
"]:::otherClass +370v1["
(370v1)

identity()
"]:::otherClass +372v1["
(372v1)

identity()
"]:::otherClass 1v1-->2v1 -114v1--x|0|3v1; linkStyle 1 stroke:red -231v1-->|1|3v1 +128v1--x|0|3v1; linkStyle 1 stroke:red +246v1-->|1|3v1 3v1--x|0|4v1; linkStyle 3 stroke:red -42v1-->|1|4v1 +48v1-->|1|4v1 4v1--x5v1; linkStyle 5 stroke:red 6v1-->7v1 5v1--x|0|8v1; linkStyle 7 stroke:red 7v1-->|1|8v1 8v1-->9v1 -17v1-->338v1 +17v1-->358v1 11v1-->12v1 10v1--x|0|13v1; linkStyle 12 stroke:red 12v1-->|1|13v1 @@ -282,313 +298,329 @@ linkStyle default stroke:#aaa 16v1-->23v1 23v1-->24v1 24v1-->25v1 -111v1-->26v1 +125v1-->26v1 26v1-->27v1 25v1-->|input|28v1 27v1--x|single|28v1; linkStyle 29 stroke:red 28v1-->29v1 30v1--x31v1; linkStyle 31 stroke:red 31v1-->32v1 -29v1-->|input|33v1 -32v1--x|single|33v1; linkStyle 34 stroke:red -33v1-->34v1 -22v1-->|0|35v1 -34v1-->|1|35v1 +32v1-->33v1 +34v1-->35v1 +33v1--x|0|36v1; linkStyle 35 stroke:red +35v1-->|1|36v1 36v1-->37v1 -35v1-->36v1 -38v1-->39v1 +37v1-->38v1 +29v1-->|input|39v1 +38v1--x|single|39v1; linkStyle 40 stroke:red 39v1-->40v1 -40v1-->41v1 +22v1-->|0|41v1 +40v1-->|1|41v1 +42v1-->43v1 41v1-->42v1 -85v1-->340v1 44v1-->45v1 -45v1--x46v1; linkStyle 46 stroke:red +45v1-->46v1 46v1-->47v1 47v1-->48v1 -41v1--x49v1; linkStyle 49 stroke:red -49v1-->50v1 -26v1-->51v1 -51v1-->52v1 +97v1-->360v1 +50v1-->51v1 +51v1--x52v1; linkStyle 52 stroke:red +52v1-->53v1 53v1-->54v1 -52v1--x|0|55v1; linkStyle 54 stroke:red -54v1-->|1|55v1 +47v1--x55v1; linkStyle 55 stroke:red 55v1-->56v1 -56v1-->57v1 -50v1-->|input|58v1 -57v1--x|single|58v1; linkStyle 59 stroke:red -58v1-->59v1 -60v1--x61v1; linkStyle 61 stroke:red +26v1-->57v1 +57v1-->58v1 +56v1-->|input|59v1 +58v1--x|single|59v1; linkStyle 60 stroke:red +59v1-->60v1 +60v1-->61v1 61v1-->62v1 -59v1-->|input|63v1 -62v1--x|single|63v1; linkStyle 64 stroke:red 63v1-->64v1 -64v1-->65v1 -25v1-->|input|66v1 -65v1--x|single|66v1; linkStyle 68 stroke:red -66v1-->67v1 -67v1-->68v1 -48v1-->|0|69v1 -68v1-->|1|69v1 -70v1-->71v1 +62v1--x|0|65v1; linkStyle 65 stroke:red +64v1-->|1|65v1 +65v1-->66v1 +67v1--x68v1; linkStyle 68 stroke:red +68v1-->69v1 69v1-->70v1 -72v1-->73v1 +71v1-->72v1 +70v1--x|0|73v1; linkStyle 72 stroke:red +72v1-->|1|73v1 73v1-->74v1 -74v1-->75v1 +66v1-->|input|75v1 +74v1--x|single|75v1; linkStyle 76 stroke:red 75v1-->76v1 -43v1--x|0|77v1; linkStyle 79 stroke:red -76v1-->|1|77v1 -77v1-->78v1 -78v1--x79v1; linkStyle 82 stroke:red +76v1-->77v1 +25v1-->|input|78v1 +77v1--x|single|78v1; linkStyle 80 stroke:red +78v1-->79v1 79v1-->80v1 -80v1-->81v1 -81v1-->82v1 +54v1-->|0|81v1 +80v1-->|1|81v1 82v1-->83v1 -78v1-->|pos|84v1 -83v1--x|neg|84v1; linkStyle 88 stroke:red +81v1-->82v1 84v1-->85v1 -80v1-->86v1 +85v1-->86v1 86v1-->87v1 -87v1-->|pos|88v1 -83v1--x|neg|88v1; linkStyle 93 stroke:red -88v1-->89v1 -80v1-->90v1 -90v1-->91v1 -78v1-->|pos|92v1 -91v1--x|neg|92v1; linkStyle 98 stroke:red -89v1-->342v1 -92v1-->|pos|94v1 -93v1--x|neg|94v1; linkStyle 101 stroke:red +87v1-->88v1 +49v1--x|0|89v1; linkStyle 91 stroke:red +88v1-->|1|89v1 +89v1-->90v1 +90v1--x91v1; linkStyle 94 stroke:red +91v1-->92v1 +92v1-->93v1 +93v1-->94v1 94v1-->95v1 -95v1-->96v1 +90v1-->|pos|96v1 +95v1--x|neg|96v1; linkStyle 100 stroke:red 96v1-->97v1 -97v1--x98v1; linkStyle 105 stroke:red -98v1-->|input|99v1 -25v1--x|single|99v1; linkStyle 107 stroke:red -99v1-->100v1 +92v1-->98v1 +98v1-->99v1 +99v1-->|pos|100v1 +95v1--x|neg|100v1; linkStyle 105 stroke:red 100v1-->101v1 -101v1-->102v1 -9v1-->|input|103v1 -24v1--x|single|103v1; linkStyle 112 stroke:red -103v1-->104v1 -104v1-->105v1 -105v1-->107v1 -102v1-->|input|108v1 -107v1--x|single|108v1; linkStyle 117 stroke:red +92v1-->102v1 +102v1-->103v1 +90v1-->|pos|104v1 +103v1--x|neg|104v1; linkStyle 110 stroke:red +101v1-->362v1 +104v1-->|pos|106v1 +105v1--x|neg|106v1; linkStyle 113 stroke:red +106v1-->107v1 +107v1-->108v1 108v1-->109v1 -109v1-->110v1 -110v1-->111v1 -76v1-->112v1 +109v1--x110v1; linkStyle 117 stroke:red +110v1-->|input|111v1 +25v1--x|single|111v1; linkStyle 119 stroke:red +111v1-->112v1 112v1-->113v1 113v1-->114v1 -115v1-->116v1 -116v1--x117v1; linkStyle 125 stroke:red -117v1-->118v1 +114v1-->115v1 +116v1-->117v1 +115v1--x|0|118v1; linkStyle 125 stroke:red +117v1-->|1|118v1 118v1-->119v1 -110v1-->344v1 +9v1-->|input|120v1 +24v1--x|single|120v1; linkStyle 129 stroke:red 120v1-->121v1 -121v1-->122v1 +119v1-->|input|122v1 +121v1--x|single|122v1; linkStyle 132 stroke:red +122v1-->123v1 123v1-->124v1 -122v1--x|0|125v1; linkStyle 132 stroke:red -124v1-->|1|125v1 -125v1-->126v1 +124v1-->125v1 +88v1-->126v1 126v1-->127v1 -110v1-->|input|128v1 -127v1--x|single|128v1; linkStyle 137 stroke:red -128v1-->129v1 -129v1-->131v1 -25v1-->|input|132v1 -131v1--x|single|132v1; linkStyle 141 stroke:red +127v1-->128v1 +129v1-->130v1 +130v1--x131v1; linkStyle 140 stroke:red +131v1-->132v1 132v1-->133v1 -119v1-->|0|134v1 -133v1-->|1|134v1 -135v1-->136v1 +124v1-->134v1 134v1-->135v1 +135v1-->364v1 +136v1-->137v1 137v1-->138v1 -138v1-->139v1 -110v1-->140v1 -139v1-->|input|141v1 -140v1--x|single|141v1; linkStyle 151 stroke:red +139v1-->140v1 +138v1--x|0|141v1; linkStyle 149 stroke:red +140v1-->|1|141v1 141v1-->142v1 -142v1-->143v1 -101v1-->144v1 -144v1-->145v1 -145v1-->146v1 -146v1-->147v1 -147v1--x148v1; linkStyle 158 stroke:red -148v1-->149v1 -149v1-->150v1 +124v1-->|input|143v1 +142v1--x|single|143v1; linkStyle 153 stroke:red +143v1-->144v1 +144v1-->146v1 +25v1-->|input|147v1 +146v1--x|single|147v1; linkStyle 157 stroke:red +147v1-->148v1 +133v1-->|0|149v1 +148v1-->|1|149v1 150v1-->151v1 -151v1--x152v1; linkStyle 162 stroke:red +149v1-->150v1 152v1-->153v1 153v1-->154v1 -167v1-->346v1 +124v1-->155v1 +154v1-->|input|156v1 +155v1--x|single|156v1; linkStyle 167 stroke:red 156v1-->157v1 -155v1--x|0|158v1; linkStyle 167 stroke:red -157v1-->|1|158v1 -154v1--x|0|159v1; linkStyle 169 stroke:red -158v1-->|1|159v1 +157v1-->158v1 +113v1-->159v1 159v1-->160v1 -143v1-->|input|161v1 -160v1--x|single|161v1; linkStyle 173 stroke:red +160v1-->161v1 161v1-->162v1 -162v1-->163v1 -163v1--x164v1; linkStyle 176 stroke:red -164v1-->|input|165v1 -160v1--x|single|165v1; linkStyle 178 stroke:red +162v1--x163v1; linkStyle 174 stroke:red +163v1-->164v1 +164v1-->165v1 165v1-->166v1 -166v1-->167v1 -214v1-->348v1 -169v1-->170v1 -170v1--x171v1; linkStyle 183 stroke:red +166v1--x167v1; linkStyle 178 stroke:red +167v1-->168v1 +168v1-->169v1 +182v1-->366v1 171v1-->172v1 -172v1-->173v1 -163v1-->|input|174v1 -25v1--x|single|174v1; linkStyle 187 stroke:red +170v1--x|0|173v1; linkStyle 183 stroke:red +172v1-->|1|173v1 +169v1--x|0|174v1; linkStyle 185 stroke:red +173v1-->|1|174v1 174v1-->175v1 -150v1-->|input|176v1 -25v1--x|single|176v1; linkStyle 190 stroke:red -145v1-->177v1 -177v1--x178v1; linkStyle 192 stroke:red -178v1-->179v1 +158v1-->|input|176v1 +175v1--x|single|176v1; linkStyle 189 stroke:red +176v1-->177v1 +177v1-->178v1 +178v1--x179v1; linkStyle 192 stroke:red +179v1-->|input|180v1 +175v1--x|single|180v1; linkStyle 194 stroke:red 180v1-->181v1 -179v1--x|0|182v1; linkStyle 195 stroke:red -181v1-->|1|182v1 -182v1-->183v1 -176v1-->|input|184v1 -183v1--x|single|184v1; linkStyle 199 stroke:red +181v1-->182v1 +229v1-->368v1 184v1-->185v1 -153v1-->|input|186v1 -183v1--x|single|186v1; linkStyle 202 stroke:red +185v1--x186v1; linkStyle 199 stroke:red 186v1-->187v1 -150v1-->188v1 -187v1-->|pos|189v1 -188v1--x|neg|189v1; linkStyle 206 stroke:red -189v1-->|input|190v1 -25v1--x|single|190v1; linkStyle 208 stroke:red -190v1-->191v1 -185v1--x|0|192v1; linkStyle 210 stroke:red -191v1-->|1|192v1 -175v1--x|0|193v1; linkStyle 212 stroke:red -192v1-->|1|193v1 -110v1-->194v1 -193v1-->|input|195v1 -194v1--x|single|195v1; linkStyle 216 stroke:red +187v1-->188v1 +178v1-->|input|189v1 +25v1--x|single|189v1; linkStyle 203 stroke:red +189v1-->190v1 +165v1-->|input|191v1 +25v1--x|single|191v1; linkStyle 206 stroke:red +160v1-->192v1 +192v1--x193v1; linkStyle 208 stroke:red +193v1-->194v1 195v1-->196v1 -196v1-->197v1 +194v1--x|0|197v1; linkStyle 211 stroke:red +196v1-->|1|197v1 197v1-->198v1 -173v1-->|0|199v1 -198v1-->|1|199v1 -200v1-->201v1 +191v1-->|input|199v1 +198v1--x|single|199v1; linkStyle 215 stroke:red 199v1-->200v1 -202v1-->203v1 -203v1-->204v1 -204v1-->205v1 -168v1--x|0|206v1; linkStyle 227 stroke:red -205v1-->|1|206v1 -206v1-->207v1 -207v1--x208v1; linkStyle 230 stroke:red -208v1-->209v1 -209v1-->210v1 +168v1-->|input|201v1 +198v1--x|single|201v1; linkStyle 218 stroke:red +201v1-->202v1 +165v1-->203v1 +202v1-->|pos|204v1 +203v1--x|neg|204v1; linkStyle 222 stroke:red +204v1-->|input|205v1 +25v1--x|single|205v1; linkStyle 224 stroke:red +205v1-->206v1 +200v1--x|0|207v1; linkStyle 226 stroke:red +206v1-->|1|207v1 +190v1--x|0|208v1; linkStyle 228 stroke:red +207v1-->|1|208v1 +124v1-->209v1 +208v1-->|input|210v1 +209v1--x|single|210v1; linkStyle 232 stroke:red 210v1-->211v1 211v1-->212v1 -207v1-->|pos|213v1 -212v1--x|neg|213v1; linkStyle 236 stroke:red -213v1-->214v1 -209v1-->215v1 +212v1-->213v1 +188v1-->|0|214v1 +213v1-->|1|214v1 215v1-->216v1 -216v1-->|pos|217v1 -212v1--x|neg|217v1; linkStyle 241 stroke:red +214v1-->215v1 217v1-->218v1 -228v1-->350v1 -219v1--x|0|220v1; linkStyle 244 stroke:red -197v1-->|1|220v1 -220v1-->221v1 -218v1-->352v1 -216v1-->|pos|223v1 -222v1--x|neg|223v1; linkStyle 249 stroke:red +218v1-->219v1 +219v1-->220v1 +183v1--x|0|221v1; linkStyle 243 stroke:red +220v1-->|1|221v1 +221v1-->222v1 +222v1--x223v1; linkStyle 246 stroke:red 223v1-->224v1 224v1-->225v1 225v1-->226v1 -221v1-->|pos|227v1 -226v1--x|neg|227v1; linkStyle 254 stroke:red -227v1-->228v1 -205v1-->229v1 -229v1-->230v1 +226v1-->227v1 +222v1-->|pos|228v1 +227v1--x|neg|228v1; linkStyle 252 stroke:red +228v1-->229v1 +224v1-->230v1 230v1-->231v1 +231v1-->|pos|232v1 +227v1--x|neg|232v1; linkStyle 257 stroke:red 232v1-->233v1 -233v1--x234v1; linkStyle 260 stroke:red -234v1-->235v1 +243v1-->370v1 +234v1--x|0|235v1; linkStyle 260 stroke:red +212v1-->|1|235v1 235v1-->236v1 -221v1-->|0|237v1 -225v1-->|1|237v1 -237v1-->238v1 +233v1-->372v1 +231v1-->|pos|238v1 +237v1--x|neg|238v1; linkStyle 265 stroke:red 238v1-->239v1 -236v1-->|0|240v1 -239v1-->|1|240v1 -241v1-->242v1 +239v1-->240v1 240v1-->241v1 -338v1--o10v1; linkStyle 271 stroke:red -340v1--o43v1; linkStyle 272 stroke:red -342v1--o93v1; linkStyle 273 stroke:red -344v1--o120v1; linkStyle 274 stroke:red -346v1--o155v1; linkStyle 275 stroke:red -348v1--o168v1; linkStyle 276 stroke:red -350v1--o219v1; linkStyle 277 stroke:red -352v1--o222v1; linkStyle 278 stroke:red +236v1-->|pos|242v1 +241v1--x|neg|242v1; linkStyle 270 stroke:red +242v1-->243v1 +220v1-->244v1 +244v1-->245v1 +245v1-->246v1 +247v1-->248v1 +248v1--x249v1; linkStyle 276 stroke:red +249v1-->250v1 +250v1-->251v1 +236v1-->|0|252v1 +240v1-->|1|252v1 +252v1-->253v1 +253v1-->254v1 +251v1-->|0|255v1 +254v1-->|1|255v1 +256v1-->257v1 +255v1-->256v1 +358v1--o10v1; linkStyle 287 stroke:red +360v1--o49v1; linkStyle 288 stroke:red +362v1--o105v1; linkStyle 289 stroke:red +364v1--o136v1; linkStyle 290 stroke:red +366v1--o170v1; linkStyle 291 stroke:red +368v1--o183v1; linkStyle 292 stroke:red +370v1--o234v1; linkStyle 293 stroke:red +372v1--o237v1; linkStyle 294 stroke:red 2v1 -36v1 -37v1 -70v1 -71v1 -135v1 -136v1 -200v1 -201v1 -241v1 -242v1 -338v1 -340v1 -342v1 -344v1 -346v1 -348v1 -350v1 -352v1 +42v1 +43v1 +82v1 +83v1 +150v1 +151v1 +215v1 +216v1 +256v1 +257v1 +358v1 +360v1 +362v1 +364v1 +366v1 +368v1 +370v1 +372v1 subgraph var_cycle_10 ["var cycle_10"] style var_cycle_10 fill:transparent - 89v1 + 101v1 end subgraph var_cycle_12 ["var cycle_12"] style var_cycle_12 fill:transparent - 167v1 + 182v1 end subgraph var_cycle_13 ["var cycle_13"] style var_cycle_13 fill:transparent - 214v1 + 229v1 end subgraph var_cycle_14 ["var cycle_14"] style var_cycle_14 fill:transparent - 218v1 + 233v1 end subgraph var_cycle_15 ["var cycle_15"] style var_cycle_15 fill:transparent - 228v1 + 243v1 end subgraph var_cycle_3 ["var cycle_3"] style var_cycle_3 fill:transparent - 231v1 + 246v1 end subgraph var_cycle_5 ["var cycle_5"] style var_cycle_5 fill:transparent - 114v1 + 128v1 end subgraph var_cycle_6 ["var cycle_6"] style var_cycle_6 fill:transparent - 42v1 + 48v1 end subgraph var_cycle_7 ["var cycle_7"] style var_cycle_7 fill:transparent - 111v1 + 125v1 end subgraph var_cycle_8 ["var cycle_8"] style var_cycle_8 fill:transparent @@ -596,850 +628,905 @@ subgraph var_cycle_8 ["var cycle_8"] end subgraph var_cycle_9 ["var cycle_9"] style var_cycle_9 fill:transparent - 85v1 + 97v1 end -subgraph var_stream_102 ["var stream_102"] - style var_stream_102 fill:transparent - 48v1 +subgraph var_stream_101 ["var stream_101"] + style var_stream_101 fill:transparent + 44v1 + 45v1 end -subgraph var_stream_108 ["var stream_108"] - style var_stream_108 fill:transparent +subgraph var_stream_104 ["var stream_104"] + style var_stream_104 fill:transparent + 46v1 +end +subgraph var_stream_105 ["var stream_105"] + style var_stream_105 fill:transparent + 47v1 +end +subgraph var_stream_107 ["var stream_107"] + style var_stream_107 fill:transparent 49v1 end -subgraph var_stream_110 ["var stream_110"] - style var_stream_110 fill:transparent +subgraph var_stream_108 ["var stream_108"] + style var_stream_108 fill:transparent 50v1 end -subgraph var_stream_114 ["var stream_114"] - style var_stream_114 fill:transparent +subgraph var_stream_109 ["var stream_109"] + style var_stream_109 fill:transparent 51v1 end -subgraph var_stream_115 ["var stream_115"] - style var_stream_115 fill:transparent +subgraph var_stream_111 ["var stream_111"] + style var_stream_111 fill:transparent 52v1 end +subgraph var_stream_113 ["var stream_113"] + style var_stream_113 fill:transparent + 53v1 +end subgraph var_stream_116 ["var stream_116"] style var_stream_116 fill:transparent - 53v1 54v1 end -subgraph var_stream_118 ["var stream_118"] - style var_stream_118 fill:transparent +subgraph var_stream_122 ["var stream_122"] + style var_stream_122 fill:transparent 55v1 end -subgraph var_stream_120 ["var stream_120"] - style var_stream_120 fill:transparent +subgraph var_stream_124 ["var stream_124"] + style var_stream_124 fill:transparent 56v1 end -subgraph var_stream_121 ["var stream_121"] - style var_stream_121 fill:transparent +subgraph var_stream_128 ["var stream_128"] + style var_stream_128 fill:transparent 57v1 end -subgraph var_stream_122 ["var stream_122"] - style var_stream_122 fill:transparent +subgraph var_stream_129 ["var stream_129"] + style var_stream_129 fill:transparent 58v1 end -subgraph var_stream_123 ["var stream_123"] - style var_stream_123 fill:transparent +subgraph var_stream_130 ["var stream_130"] + style var_stream_130 fill:transparent 59v1 end -subgraph var_stream_124 ["var stream_124"] - style var_stream_124 fill:transparent +subgraph var_stream_131 ["var stream_131"] + style var_stream_131 fill:transparent 60v1 end -subgraph var_stream_126 ["var stream_126"] - style var_stream_126 fill:transparent +subgraph var_stream_132 ["var stream_132"] + style var_stream_132 fill:transparent 61v1 end -subgraph var_stream_127 ["var stream_127"] - style var_stream_127 fill:transparent +subgraph var_stream_133 ["var stream_133"] + style var_stream_133 fill:transparent 62v1 end -subgraph var_stream_128 ["var stream_128"] - style var_stream_128 fill:transparent +subgraph var_stream_134 ["var stream_134"] + style var_stream_134 fill:transparent 63v1 -end -subgraph var_stream_129 ["var stream_129"] - style var_stream_129 fill:transparent 64v1 end -subgraph var_stream_130 ["var stream_130"] - style var_stream_130 fill:transparent +subgraph var_stream_136 ["var stream_136"] + style var_stream_136 fill:transparent 65v1 end -subgraph var_stream_131 ["var stream_131"] - style var_stream_131 fill:transparent +subgraph var_stream_138 ["var stream_138"] + style var_stream_138 fill:transparent 66v1 end -subgraph var_stream_132 ["var stream_132"] - style var_stream_132 fill:transparent +subgraph var_stream_139 ["var stream_139"] + style var_stream_139 fill:transparent 67v1 end -subgraph var_stream_135 ["var stream_135"] - style var_stream_135 fill:transparent +subgraph var_stream_141 ["var stream_141"] + style var_stream_141 fill:transparent 68v1 end -subgraph var_stream_137 ["var stream_137"] - style var_stream_137 fill:transparent +subgraph var_stream_142 ["var stream_142"] + style var_stream_142 fill:transparent 69v1 end -subgraph var_stream_15 ["var stream_15"] - style var_stream_15 fill:transparent - 1v1 +subgraph var_stream_143 ["var stream_143"] + style var_stream_143 fill:transparent + 70v1 end -subgraph var_stream_165 ["var stream_165"] - style var_stream_165 fill:transparent +subgraph var_stream_144 ["var stream_144"] + style var_stream_144 fill:transparent + 71v1 72v1 +end +subgraph var_stream_146 ["var stream_146"] + style var_stream_146 fill:transparent 73v1 end -subgraph var_stream_168 ["var stream_168"] - style var_stream_168 fill:transparent +subgraph var_stream_148 ["var stream_148"] + style var_stream_148 fill:transparent 74v1 end -subgraph var_stream_169 ["var stream_169"] - style var_stream_169 fill:transparent +subgraph var_stream_149 ["var stream_149"] + style var_stream_149 fill:transparent 75v1 end -subgraph var_stream_170 ["var stream_170"] - style var_stream_170 fill:transparent +subgraph var_stream_151 ["var stream_151"] + style var_stream_151 fill:transparent 76v1 end -subgraph var_stream_172 ["var stream_172"] - style var_stream_172 fill:transparent +subgraph var_stream_152 ["var stream_152"] + style var_stream_152 fill:transparent 77v1 end -subgraph var_stream_173 ["var stream_173"] - style var_stream_173 fill:transparent +subgraph var_stream_153 ["var stream_153"] + style var_stream_153 fill:transparent 78v1 end -subgraph var_stream_177 ["var stream_177"] - style var_stream_177 fill:transparent +subgraph var_stream_154 ["var stream_154"] + style var_stream_154 fill:transparent 79v1 end -subgraph var_stream_178 ["var stream_178"] - style var_stream_178 fill:transparent +subgraph var_stream_157 ["var stream_157"] + style var_stream_157 fill:transparent 80v1 end -subgraph var_stream_179 ["var stream_179"] - style var_stream_179 fill:transparent +subgraph var_stream_159 ["var stream_159"] + style var_stream_159 fill:transparent 81v1 end -subgraph var_stream_182 ["var stream_182"] - style var_stream_182 fill:transparent - 82v1 -end -subgraph var_stream_183 ["var stream_183"] - style var_stream_183 fill:transparent - 83v1 -end -subgraph var_stream_184 ["var stream_184"] - style var_stream_184 fill:transparent +subgraph var_stream_187 ["var stream_187"] + style var_stream_187 fill:transparent 84v1 + 85v1 end -subgraph var_stream_186 ["var stream_186"] - style var_stream_186 fill:transparent +subgraph var_stream_190 ["var stream_190"] + style var_stream_190 fill:transparent 86v1 end -subgraph var_stream_189 ["var stream_189"] - style var_stream_189 fill:transparent - 87v1 -end subgraph var_stream_191 ["var stream_191"] style var_stream_191 fill:transparent + 87v1 +end +subgraph var_stream_192 ["var stream_192"] + style var_stream_192 fill:transparent 88v1 end subgraph var_stream_194 ["var stream_194"] style var_stream_194 fill:transparent + 89v1 +end +subgraph var_stream_195 ["var stream_195"] + style var_stream_195 fill:transparent 90v1 end -subgraph var_stream_197 ["var stream_197"] - style var_stream_197 fill:transparent +subgraph var_stream_199 ["var stream_199"] + style var_stream_199 fill:transparent 91v1 end -subgraph var_stream_198 ["var stream_198"] - style var_stream_198 fill:transparent - 92v1 -end subgraph var_stream_200 ["var stream_200"] style var_stream_200 fill:transparent - 93v1 + 92v1 end subgraph var_stream_201 ["var stream_201"] style var_stream_201 fill:transparent + 93v1 +end +subgraph var_stream_204 ["var stream_204"] + style var_stream_204 fill:transparent 94v1 end -subgraph var_stream_202 ["var stream_202"] - style var_stream_202 fill:transparent +subgraph var_stream_205 ["var stream_205"] + style var_stream_205 fill:transparent 95v1 end subgraph var_stream_206 ["var stream_206"] style var_stream_206 fill:transparent 96v1 end -subgraph var_stream_207 ["var stream_207"] - style var_stream_207 fill:transparent - 97v1 -end -subgraph var_stream_21 ["var stream_21"] - style var_stream_21 fill:transparent - 3v1 -end -subgraph var_stream_212 ["var stream_212"] - style var_stream_212 fill:transparent +subgraph var_stream_208 ["var stream_208"] + style var_stream_208 fill:transparent 98v1 end -subgraph var_stream_216 ["var stream_216"] - style var_stream_216 fill:transparent +subgraph var_stream_211 ["var stream_211"] + style var_stream_211 fill:transparent 99v1 end -subgraph var_stream_217 ["var stream_217"] - style var_stream_217 fill:transparent +subgraph var_stream_213 ["var stream_213"] + style var_stream_213 fill:transparent 100v1 end -subgraph var_stream_218 ["var stream_218"] - style var_stream_218 fill:transparent - 101v1 +subgraph var_stream_216 ["var stream_216"] + style var_stream_216 fill:transparent + 102v1 end subgraph var_stream_219 ["var stream_219"] style var_stream_219 fill:transparent - 102v1 -end -subgraph var_stream_222 ["var stream_222"] - style var_stream_222 fill:transparent 103v1 end -subgraph var_stream_224 ["var stream_224"] - style var_stream_224 fill:transparent +subgraph var_stream_22 ["var stream_22"] + style var_stream_22 fill:transparent + 1v1 +end +subgraph var_stream_220 ["var stream_220"] + style var_stream_220 fill:transparent 104v1 end -subgraph var_stream_225 ["var stream_225"] - style var_stream_225 fill:transparent +subgraph var_stream_222 ["var stream_222"] + style var_stream_222 fill:transparent 105v1 end -subgraph var_stream_229 ["var stream_229"] - style var_stream_229 fill:transparent - 107v1 +subgraph var_stream_223 ["var stream_223"] + style var_stream_223 fill:transparent + 106v1 end -subgraph var_stream_23 ["var stream_23"] - style var_stream_23 fill:transparent - 4v1 +subgraph var_stream_224 ["var stream_224"] + style var_stream_224 fill:transparent + 107v1 end -subgraph var_stream_230 ["var stream_230"] - style var_stream_230 fill:transparent +subgraph var_stream_228 ["var stream_228"] + style var_stream_228 fill:transparent 108v1 end -subgraph var_stream_231 ["var stream_231"] - style var_stream_231 fill:transparent +subgraph var_stream_229 ["var stream_229"] + style var_stream_229 fill:transparent 109v1 end -subgraph var_stream_232 ["var stream_232"] - style var_stream_232 fill:transparent - 110v1 -end subgraph var_stream_234 ["var stream_234"] style var_stream_234 fill:transparent + 110v1 +end +subgraph var_stream_238 ["var stream_238"] + style var_stream_238 fill:transparent + 111v1 +end +subgraph var_stream_239 ["var stream_239"] + style var_stream_239 fill:transparent 112v1 end -subgraph var_stream_235 ["var stream_235"] - style var_stream_235 fill:transparent +subgraph var_stream_240 ["var stream_240"] + style var_stream_240 fill:transparent 113v1 end -subgraph var_stream_253 ["var stream_253"] - style var_stream_253 fill:transparent +subgraph var_stream_241 ["var stream_241"] + style var_stream_241 fill:transparent + 114v1 +end +subgraph var_stream_242 ["var stream_242"] + style var_stream_242 fill:transparent 115v1 end -subgraph var_stream_254 ["var stream_254"] - style var_stream_254 fill:transparent +subgraph var_stream_243 ["var stream_243"] + style var_stream_243 fill:transparent 116v1 -end -subgraph var_stream_256 ["var stream_256"] - style var_stream_256 fill:transparent 117v1 end -subgraph var_stream_258 ["var stream_258"] - style var_stream_258 fill:transparent +subgraph var_stream_245 ["var stream_245"] + style var_stream_245 fill:transparent 118v1 end -subgraph var_stream_26 ["var stream_26"] - style var_stream_26 fill:transparent - 5v1 -end -subgraph var_stream_261 ["var stream_261"] - style var_stream_261 fill:transparent +subgraph var_stream_247 ["var stream_247"] + style var_stream_247 fill:transparent 119v1 end -subgraph var_stream_266 ["var stream_266"] - style var_stream_266 fill:transparent +subgraph var_stream_250 ["var stream_250"] + style var_stream_250 fill:transparent 120v1 end -subgraph var_stream_267 ["var stream_267"] - style var_stream_267 fill:transparent +subgraph var_stream_252 ["var stream_252"] + style var_stream_252 fill:transparent 121v1 end -subgraph var_stream_268 ["var stream_268"] - style var_stream_268 fill:transparent +subgraph var_stream_255 ["var stream_255"] + style var_stream_255 fill:transparent 122v1 end -subgraph var_stream_269 ["var stream_269"] - style var_stream_269 fill:transparent +subgraph var_stream_257 ["var stream_257"] + style var_stream_257 fill:transparent 123v1 - 124v1 end -subgraph var_stream_271 ["var stream_271"] - style var_stream_271 fill:transparent - 125v1 +subgraph var_stream_258 ["var stream_258"] + style var_stream_258 fill:transparent + 124v1 end -subgraph var_stream_273 ["var stream_273"] - style var_stream_273 fill:transparent +subgraph var_stream_260 ["var stream_260"] + style var_stream_260 fill:transparent 126v1 end -subgraph var_stream_274 ["var stream_274"] - style var_stream_274 fill:transparent +subgraph var_stream_261 ["var stream_261"] + style var_stream_261 fill:transparent 127v1 end -subgraph var_stream_275 ["var stream_275"] - style var_stream_275 fill:transparent - 128v1 -end -subgraph var_stream_276 ["var stream_276"] - style var_stream_276 fill:transparent - 129v1 -end -subgraph var_stream_278 ["var stream_278"] - style var_stream_278 fill:transparent - 131v1 -end subgraph var_stream_279 ["var stream_279"] style var_stream_279 fill:transparent - 132v1 + 129v1 end subgraph var_stream_28 ["var stream_28"] style var_stream_28 fill:transparent - 6v1 + 3v1 end subgraph var_stream_280 ["var stream_280"] style var_stream_280 fill:transparent - 133v1 + 130v1 +end +subgraph var_stream_282 ["var stream_282"] + style var_stream_282 fill:transparent + 131v1 end subgraph var_stream_284 ["var stream_284"] style var_stream_284 fill:transparent + 132v1 +end +subgraph var_stream_287 ["var stream_287"] + style var_stream_287 fill:transparent + 133v1 +end +subgraph var_stream_292 ["var stream_292"] + style var_stream_292 fill:transparent 134v1 end -subgraph var_stream_29 ["var stream_29"] - style var_stream_29 fill:transparent - 7v1 +subgraph var_stream_293 ["var stream_293"] + style var_stream_293 fill:transparent + 135v1 end -subgraph var_stream_313 ["var stream_313"] - style var_stream_313 fill:transparent - 138v1 +subgraph var_stream_294 ["var stream_294"] + style var_stream_294 fill:transparent + 136v1 +end +subgraph var_stream_295 ["var stream_295"] + style var_stream_295 fill:transparent 137v1 end -subgraph var_stream_316 ["var stream_316"] - style var_stream_316 fill:transparent - 139v1 +subgraph var_stream_296 ["var stream_296"] + style var_stream_296 fill:transparent + 138v1 end -subgraph var_stream_320 ["var stream_320"] - style var_stream_320 fill:transparent +subgraph var_stream_297 ["var stream_297"] + style var_stream_297 fill:transparent + 139v1 140v1 end -subgraph var_stream_321 ["var stream_321"] - style var_stream_321 fill:transparent +subgraph var_stream_299 ["var stream_299"] + style var_stream_299 fill:transparent 141v1 end -subgraph var_stream_322 ["var stream_322"] - style var_stream_322 fill:transparent +subgraph var_stream_30 ["var stream_30"] + style var_stream_30 fill:transparent + 4v1 +end +subgraph var_stream_301 ["var stream_301"] + style var_stream_301 fill:transparent 142v1 end -subgraph var_stream_325 ["var stream_325"] - style var_stream_325 fill:transparent +subgraph var_stream_302 ["var stream_302"] + style var_stream_302 fill:transparent 143v1 end -subgraph var_stream_327 ["var stream_327"] - style var_stream_327 fill:transparent +subgraph var_stream_304 ["var stream_304"] + style var_stream_304 fill:transparent 144v1 end -subgraph var_stream_328 ["var stream_328"] - style var_stream_328 fill:transparent - 145v1 -end -subgraph var_stream_329 ["var stream_329"] - style var_stream_329 fill:transparent +subgraph var_stream_306 ["var stream_306"] + style var_stream_306 fill:transparent 146v1 end -subgraph var_stream_33 ["var stream_33"] - style var_stream_33 fill:transparent - 8v1 -end -subgraph var_stream_330 ["var stream_330"] - style var_stream_330 fill:transparent +subgraph var_stream_307 ["var stream_307"] + style var_stream_307 fill:transparent 147v1 end -subgraph var_stream_333 ["var stream_333"] - style var_stream_333 fill:transparent +subgraph var_stream_308 ["var stream_308"] + style var_stream_308 fill:transparent 148v1 end -subgraph var_stream_334 ["var stream_334"] - style var_stream_334 fill:transparent +subgraph var_stream_312 ["var stream_312"] + style var_stream_312 fill:transparent 149v1 end -subgraph var_stream_335 ["var stream_335"] - style var_stream_335 fill:transparent - 150v1 -end -subgraph var_stream_338 ["var stream_338"] - style var_stream_338 fill:transparent - 151v1 -end -subgraph var_stream_340 ["var stream_340"] - style var_stream_340 fill:transparent - 152v1 +subgraph var_stream_33 ["var stream_33"] + style var_stream_33 fill:transparent + 5v1 end subgraph var_stream_341 ["var stream_341"] style var_stream_341 fill:transparent 153v1 + 152v1 end subgraph var_stream_344 ["var stream_344"] style var_stream_344 fill:transparent 154v1 end -subgraph var_stream_346 ["var stream_346"] - style var_stream_346 fill:transparent +subgraph var_stream_348 ["var stream_348"] + style var_stream_348 fill:transparent 155v1 end -subgraph var_stream_347 ["var stream_347"] - style var_stream_347 fill:transparent +subgraph var_stream_349 ["var stream_349"] + style var_stream_349 fill:transparent 156v1 +end +subgraph var_stream_35 ["var stream_35"] + style var_stream_35 fill:transparent + 6v1 +end +subgraph var_stream_350 ["var stream_350"] + style var_stream_350 fill:transparent 157v1 end -subgraph var_stream_349 ["var stream_349"] - style var_stream_349 fill:transparent +subgraph var_stream_353 ["var stream_353"] + style var_stream_353 fill:transparent 158v1 end -subgraph var_stream_352 ["var stream_352"] - style var_stream_352 fill:transparent +subgraph var_stream_355 ["var stream_355"] + style var_stream_355 fill:transparent 159v1 end -subgraph var_stream_354 ["var stream_354"] - style var_stream_354 fill:transparent - 160v1 -end subgraph var_stream_356 ["var stream_356"] style var_stream_356 fill:transparent - 161v1 + 160v1 end subgraph var_stream_357 ["var stream_357"] style var_stream_357 fill:transparent - 162v1 + 161v1 end subgraph var_stream_358 ["var stream_358"] style var_stream_358 fill:transparent - 163v1 + 162v1 end -subgraph var_stream_359 ["var stream_359"] - style var_stream_359 fill:transparent - 164v1 +subgraph var_stream_36 ["var stream_36"] + style var_stream_36 fill:transparent + 7v1 end subgraph var_stream_361 ["var stream_361"] style var_stream_361 fill:transparent - 165v1 + 163v1 +end +subgraph var_stream_362 ["var stream_362"] + style var_stream_362 fill:transparent + 164v1 end subgraph var_stream_363 ["var stream_363"] style var_stream_363 fill:transparent - 166v1 -end -subgraph var_stream_365 ["var stream_365"] - style var_stream_365 fill:transparent - 168v1 + 165v1 end subgraph var_stream_366 ["var stream_366"] style var_stream_366 fill:transparent - 169v1 + 166v1 end -subgraph var_stream_367 ["var stream_367"] - style var_stream_367 fill:transparent - 170v1 +subgraph var_stream_368 ["var stream_368"] + style var_stream_368 fill:transparent + 167v1 end subgraph var_stream_369 ["var stream_369"] style var_stream_369 fill:transparent - 171v1 + 168v1 end -subgraph var_stream_371 ["var stream_371"] - style var_stream_371 fill:transparent - 172v1 +subgraph var_stream_372 ["var stream_372"] + style var_stream_372 fill:transparent + 169v1 end subgraph var_stream_374 ["var stream_374"] style var_stream_374 fill:transparent + 170v1 +end +subgraph var_stream_375 ["var stream_375"] + style var_stream_375 fill:transparent + 171v1 + 172v1 +end +subgraph var_stream_377 ["var stream_377"] + style var_stream_377 fill:transparent 173v1 end -subgraph var_stream_381 ["var stream_381"] - style var_stream_381 fill:transparent +subgraph var_stream_380 ["var stream_380"] + style var_stream_380 fill:transparent 174v1 end subgraph var_stream_382 ["var stream_382"] style var_stream_382 fill:transparent 175v1 end -subgraph var_stream_388 ["var stream_388"] - style var_stream_388 fill:transparent +subgraph var_stream_384 ["var stream_384"] + style var_stream_384 fill:transparent 176v1 end -subgraph var_stream_39 ["var stream_39"] - style var_stream_39 fill:transparent - 9v1 -end -subgraph var_stream_390 ["var stream_390"] - style var_stream_390 fill:transparent +subgraph var_stream_385 ["var stream_385"] + style var_stream_385 fill:transparent 177v1 end -subgraph var_stream_392 ["var stream_392"] - style var_stream_392 fill:transparent +subgraph var_stream_386 ["var stream_386"] + style var_stream_386 fill:transparent 178v1 end -subgraph var_stream_393 ["var stream_393"] - style var_stream_393 fill:transparent +subgraph var_stream_387 ["var stream_387"] + style var_stream_387 fill:transparent 179v1 end -subgraph var_stream_394 ["var stream_394"] - style var_stream_394 fill:transparent +subgraph var_stream_389 ["var stream_389"] + style var_stream_389 fill:transparent 180v1 - 181v1 end -subgraph var_stream_396 ["var stream_396"] - style var_stream_396 fill:transparent - 182v1 +subgraph var_stream_391 ["var stream_391"] + style var_stream_391 fill:transparent + 181v1 end -subgraph var_stream_398 ["var stream_398"] - style var_stream_398 fill:transparent +subgraph var_stream_393 ["var stream_393"] + style var_stream_393 fill:transparent 183v1 end -subgraph var_stream_400 ["var stream_400"] - style var_stream_400 fill:transparent +subgraph var_stream_394 ["var stream_394"] + style var_stream_394 fill:transparent 184v1 end -subgraph var_stream_401 ["var stream_401"] - style var_stream_401 fill:transparent +subgraph var_stream_395 ["var stream_395"] + style var_stream_395 fill:transparent 185v1 end -subgraph var_stream_405 ["var stream_405"] - style var_stream_405 fill:transparent +subgraph var_stream_397 ["var stream_397"] + style var_stream_397 fill:transparent 186v1 end -subgraph var_stream_406 ["var stream_406"] - style var_stream_406 fill:transparent +subgraph var_stream_399 ["var stream_399"] + style var_stream_399 fill:transparent 187v1 end -subgraph var_stream_41 ["var stream_41"] - style var_stream_41 fill:transparent - 10v1 +subgraph var_stream_40 ["var stream_40"] + style var_stream_40 fill:transparent + 8v1 end -subgraph var_stream_410 ["var stream_410"] - style var_stream_410 fill:transparent +subgraph var_stream_402 ["var stream_402"] + style var_stream_402 fill:transparent 188v1 end -subgraph var_stream_411 ["var stream_411"] - style var_stream_411 fill:transparent +subgraph var_stream_409 ["var stream_409"] + style var_stream_409 fill:transparent 189v1 end -subgraph var_stream_414 ["var stream_414"] - style var_stream_414 fill:transparent +subgraph var_stream_410 ["var stream_410"] + style var_stream_410 fill:transparent 190v1 end -subgraph var_stream_415 ["var stream_415"] - style var_stream_415 fill:transparent - 191v1 -end subgraph var_stream_416 ["var stream_416"] style var_stream_416 fill:transparent - 192v1 -end -subgraph var_stream_417 ["var stream_417"] - style var_stream_417 fill:transparent - 193v1 -end -subgraph var_stream_419 ["var stream_419"] - style var_stream_419 fill:transparent - 194v1 + 191v1 end -subgraph var_stream_42 ["var stream_42"] - style var_stream_42 fill:transparent - 11v1 - 12v1 +subgraph var_stream_418 ["var stream_418"] + style var_stream_418 fill:transparent + 192v1 end subgraph var_stream_420 ["var stream_420"] style var_stream_420 fill:transparent - 195v1 + 193v1 end subgraph var_stream_421 ["var stream_421"] style var_stream_421 fill:transparent + 194v1 +end +subgraph var_stream_422 ["var stream_422"] + style var_stream_422 fill:transparent + 195v1 196v1 end -subgraph var_stream_423 ["var stream_423"] - style var_stream_423 fill:transparent +subgraph var_stream_424 ["var stream_424"] + style var_stream_424 fill:transparent 197v1 end -subgraph var_stream_425 ["var stream_425"] - style var_stream_425 fill:transparent +subgraph var_stream_426 ["var stream_426"] + style var_stream_426 fill:transparent 198v1 end -subgraph var_stream_427 ["var stream_427"] - style var_stream_427 fill:transparent +subgraph var_stream_428 ["var stream_428"] + style var_stream_428 fill:transparent 199v1 end -subgraph var_stream_44 ["var stream_44"] - style var_stream_44 fill:transparent - 13v1 +subgraph var_stream_429 ["var stream_429"] + style var_stream_429 fill:transparent + 200v1 end -subgraph var_stream_442 ["var stream_442"] - style var_stream_442 fill:transparent +subgraph var_stream_433 ["var stream_433"] + style var_stream_433 fill:transparent + 201v1 +end +subgraph var_stream_434 ["var stream_434"] + style var_stream_434 fill:transparent 202v1 +end +subgraph var_stream_438 ["var stream_438"] + style var_stream_438 fill:transparent 203v1 end -subgraph var_stream_445 ["var stream_445"] - style var_stream_445 fill:transparent +subgraph var_stream_439 ["var stream_439"] + style var_stream_439 fill:transparent 204v1 end -subgraph var_stream_446 ["var stream_446"] - style var_stream_446 fill:transparent +subgraph var_stream_442 ["var stream_442"] + style var_stream_442 fill:transparent 205v1 end -subgraph var_stream_448 ["var stream_448"] - style var_stream_448 fill:transparent +subgraph var_stream_443 ["var stream_443"] + style var_stream_443 fill:transparent 206v1 end -subgraph var_stream_449 ["var stream_449"] - style var_stream_449 fill:transparent +subgraph var_stream_444 ["var stream_444"] + style var_stream_444 fill:transparent 207v1 end -subgraph var_stream_453 ["var stream_453"] - style var_stream_453 fill:transparent +subgraph var_stream_445 ["var stream_445"] + style var_stream_445 fill:transparent 208v1 end -subgraph var_stream_454 ["var stream_454"] - style var_stream_454 fill:transparent +subgraph var_stream_447 ["var stream_447"] + style var_stream_447 fill:transparent 209v1 end -subgraph var_stream_455 ["var stream_455"] - style var_stream_455 fill:transparent +subgraph var_stream_448 ["var stream_448"] + style var_stream_448 fill:transparent 210v1 end -subgraph var_stream_458 ["var stream_458"] - style var_stream_458 fill:transparent +subgraph var_stream_449 ["var stream_449"] + style var_stream_449 fill:transparent 211v1 end -subgraph var_stream_459 ["var stream_459"] - style var_stream_459 fill:transparent +subgraph var_stream_451 ["var stream_451"] + style var_stream_451 fill:transparent 212v1 end -subgraph var_stream_46 ["var stream_46"] - style var_stream_46 fill:transparent - 14v1 -end -subgraph var_stream_460 ["var stream_460"] - style var_stream_460 fill:transparent +subgraph var_stream_453 ["var stream_453"] + style var_stream_453 fill:transparent 213v1 end -subgraph var_stream_464 ["var stream_464"] - style var_stream_464 fill:transparent - 215v1 +subgraph var_stream_455 ["var stream_455"] + style var_stream_455 fill:transparent + 214v1 end -subgraph var_stream_465 ["var stream_465"] - style var_stream_465 fill:transparent - 216v1 +subgraph var_stream_46 ["var stream_46"] + style var_stream_46 fill:transparent + 9v1 end -subgraph var_stream_467 ["var stream_467"] - style var_stream_467 fill:transparent +subgraph var_stream_470 ["var stream_470"] + style var_stream_470 fill:transparent 217v1 + 218v1 end -subgraph var_stream_469 ["var stream_469"] - style var_stream_469 fill:transparent +subgraph var_stream_473 ["var stream_473"] + style var_stream_473 fill:transparent 219v1 end subgraph var_stream_474 ["var stream_474"] style var_stream_474 fill:transparent 220v1 end -subgraph var_stream_475 ["var stream_475"] - style var_stream_475 fill:transparent +subgraph var_stream_476 ["var stream_476"] + style var_stream_476 fill:transparent 221v1 end -subgraph var_stream_478 ["var stream_478"] - style var_stream_478 fill:transparent +subgraph var_stream_477 ["var stream_477"] + style var_stream_477 fill:transparent 222v1 end -subgraph var_stream_479 ["var stream_479"] - style var_stream_479 fill:transparent - 223v1 -end subgraph var_stream_48 ["var stream_48"] style var_stream_48 fill:transparent - 15v1 + 10v1 end subgraph var_stream_481 ["var stream_481"] style var_stream_481 fill:transparent + 223v1 +end +subgraph var_stream_482 ["var stream_482"] + style var_stream_482 fill:transparent 224v1 end subgraph var_stream_483 ["var stream_483"] style var_stream_483 fill:transparent 225v1 end -subgraph var_stream_484 ["var stream_484"] - style var_stream_484 fill:transparent +subgraph var_stream_486 ["var stream_486"] + style var_stream_486 fill:transparent 226v1 end -subgraph var_stream_485 ["var stream_485"] - style var_stream_485 fill:transparent +subgraph var_stream_487 ["var stream_487"] + style var_stream_487 fill:transparent 227v1 end +subgraph var_stream_488 ["var stream_488"] + style var_stream_488 fill:transparent + 228v1 +end subgraph var_stream_49 ["var stream_49"] style var_stream_49 fill:transparent - 16v1 -end -subgraph var_stream_50 ["var stream_50"] - style var_stream_50 fill:transparent - 18v1 -end -subgraph var_stream_51 ["var stream_51"] - style var_stream_51 fill:transparent - 19v1 -end -subgraph var_stream_514 ["var stream_514"] - style var_stream_514 fill:transparent - 229v1 + 11v1 + 12v1 end -subgraph var_stream_515 ["var stream_515"] - style var_stream_515 fill:transparent +subgraph var_stream_492 ["var stream_492"] + style var_stream_492 fill:transparent 230v1 end -subgraph var_stream_516 ["var stream_516"] - style var_stream_516 fill:transparent - 232v1 +subgraph var_stream_493 ["var stream_493"] + style var_stream_493 fill:transparent + 231v1 end -subgraph var_stream_517 ["var stream_517"] - style var_stream_517 fill:transparent - 233v1 +subgraph var_stream_495 ["var stream_495"] + style var_stream_495 fill:transparent + 232v1 end -subgraph var_stream_519 ["var stream_519"] - style var_stream_519 fill:transparent +subgraph var_stream_497 ["var stream_497"] + style var_stream_497 fill:transparent 234v1 end -subgraph var_stream_521 ["var stream_521"] - style var_stream_521 fill:transparent +subgraph var_stream_502 ["var stream_502"] + style var_stream_502 fill:transparent 235v1 end -subgraph var_stream_524 ["var stream_524"] - style var_stream_524 fill:transparent +subgraph var_stream_503 ["var stream_503"] + style var_stream_503 fill:transparent 236v1 end -subgraph var_stream_528 ["var stream_528"] - style var_stream_528 fill:transparent +subgraph var_stream_506 ["var stream_506"] + style var_stream_506 fill:transparent 237v1 end -subgraph var_stream_529 ["var stream_529"] - style var_stream_529 fill:transparent +subgraph var_stream_507 ["var stream_507"] + style var_stream_507 fill:transparent 238v1 end +subgraph var_stream_509 ["var stream_509"] + style var_stream_509 fill:transparent + 239v1 +end +subgraph var_stream_51 ["var stream_51"] + style var_stream_51 fill:transparent + 13v1 +end +subgraph var_stream_511 ["var stream_511"] + style var_stream_511 fill:transparent + 240v1 +end +subgraph var_stream_512 ["var stream_512"] + style var_stream_512 fill:transparent + 241v1 +end +subgraph var_stream_513 ["var stream_513"] + style var_stream_513 fill:transparent + 242v1 +end subgraph var_stream_53 ["var stream_53"] style var_stream_53 fill:transparent - 20v1 + 14v1 end -subgraph var_stream_531 ["var stream_531"] - style var_stream_531 fill:transparent - 239v1 +subgraph var_stream_542 ["var stream_542"] + style var_stream_542 fill:transparent + 244v1 end -subgraph var_stream_533 ["var stream_533"] - style var_stream_533 fill:transparent - 240v1 +subgraph var_stream_543 ["var stream_543"] + style var_stream_543 fill:transparent + 245v1 +end +subgraph var_stream_544 ["var stream_544"] + style var_stream_544 fill:transparent + 247v1 +end +subgraph var_stream_545 ["var stream_545"] + style var_stream_545 fill:transparent + 248v1 +end +subgraph var_stream_547 ["var stream_547"] + style var_stream_547 fill:transparent + 249v1 +end +subgraph var_stream_549 ["var stream_549"] + style var_stream_549 fill:transparent + 250v1 end subgraph var_stream_55 ["var stream_55"] style var_stream_55 fill:transparent - 21v1 + 15v1 +end +subgraph var_stream_552 ["var stream_552"] + style var_stream_552 fill:transparent + 251v1 +end +subgraph var_stream_556 ["var stream_556"] + style var_stream_556 fill:transparent + 252v1 +end +subgraph var_stream_557 ["var stream_557"] + style var_stream_557 fill:transparent + 253v1 +end +subgraph var_stream_559 ["var stream_559"] + style var_stream_559 fill:transparent + 254v1 +end +subgraph var_stream_56 ["var stream_56"] + style var_stream_56 fill:transparent + 16v1 +end +subgraph var_stream_561 ["var stream_561"] + style var_stream_561 fill:transparent + 255v1 +end +subgraph var_stream_57 ["var stream_57"] + style var_stream_57 fill:transparent + 18v1 end subgraph var_stream_58 ["var stream_58"] style var_stream_58 fill:transparent - 22v1 + 19v1 +end +subgraph var_stream_60 ["var stream_60"] + style var_stream_60 fill:transparent + 20v1 end subgraph var_stream_62 ["var stream_62"] style var_stream_62 fill:transparent + 21v1 +end +subgraph var_stream_65 ["var stream_65"] + style var_stream_65 fill:transparent + 22v1 +end +subgraph var_stream_69 ["var stream_69"] + style var_stream_69 fill:transparent 23v1 end -subgraph var_stream_63 ["var stream_63"] - style var_stream_63 fill:transparent +subgraph var_stream_70 ["var stream_70"] + style var_stream_70 fill:transparent 24v1 end -subgraph var_stream_66 ["var stream_66"] - style var_stream_66 fill:transparent +subgraph var_stream_73 ["var stream_73"] + style var_stream_73 fill:transparent 25v1 end -subgraph var_stream_68 ["var stream_68"] - style var_stream_68 fill:transparent +subgraph var_stream_75 ["var stream_75"] + style var_stream_75 fill:transparent 26v1 end -subgraph var_stream_69 ["var stream_69"] - style var_stream_69 fill:transparent +subgraph var_stream_76 ["var stream_76"] + style var_stream_76 fill:transparent 27v1 end -subgraph var_stream_70 ["var stream_70"] - style var_stream_70 fill:transparent +subgraph var_stream_77 ["var stream_77"] + style var_stream_77 fill:transparent 28v1 end -subgraph var_stream_71 ["var stream_71"] - style var_stream_71 fill:transparent +subgraph var_stream_78 ["var stream_78"] + style var_stream_78 fill:transparent 29v1 end -subgraph var_stream_74 ["var stream_74"] - style var_stream_74 fill:transparent +subgraph var_stream_81 ["var stream_81"] + style var_stream_81 fill:transparent 30v1 end -subgraph var_stream_76 ["var stream_76"] - style var_stream_76 fill:transparent +subgraph var_stream_83 ["var stream_83"] + style var_stream_83 fill:transparent 31v1 end -subgraph var_stream_77 ["var stream_77"] - style var_stream_77 fill:transparent +subgraph var_stream_84 ["var stream_84"] + style var_stream_84 fill:transparent 32v1 end -subgraph var_stream_78 ["var stream_78"] - style var_stream_78 fill:transparent +subgraph var_stream_85 ["var stream_85"] + style var_stream_85 fill:transparent 33v1 end -subgraph var_stream_79 ["var stream_79"] - style var_stream_79 fill:transparent +subgraph var_stream_86 ["var stream_86"] + style var_stream_86 fill:transparent 34v1 -end -subgraph var_stream_84 ["var stream_84"] - style var_stream_84 fill:transparent 35v1 end -subgraph var_stream_87 ["var stream_87"] - style var_stream_87 fill:transparent - 38v1 - 39v1 +subgraph var_stream_88 ["var stream_88"] + style var_stream_88 fill:transparent + 36v1 end subgraph var_stream_90 ["var stream_90"] style var_stream_90 fill:transparent - 40v1 + 37v1 end subgraph var_stream_91 ["var stream_91"] style var_stream_91 fill:transparent - 41v1 + 38v1 +end +subgraph var_stream_92 ["var stream_92"] + style var_stream_92 fill:transparent + 39v1 end subgraph var_stream_93 ["var stream_93"] style var_stream_93 fill:transparent - 43v1 -end -subgraph var_stream_94 ["var stream_94"] - style var_stream_94 fill:transparent - 44v1 -end -subgraph var_stream_95 ["var stream_95"] - style var_stream_95 fill:transparent - 45v1 -end -subgraph var_stream_97 ["var stream_97"] - style var_stream_97 fill:transparent - 46v1 + 40v1 end -subgraph var_stream_99 ["var stream_99"] - style var_stream_99 fill:transparent - 47v1 +subgraph var_stream_98 ["var stream_98"] + style var_stream_98 fill:transparent + 41v1 end diff --git a/hydro_test/src/cluster/snapshots/two_pc_ir.snap b/hydro_test/src/cluster/snapshots/two_pc_ir.snap index 7f6ad1450f34..58724091d72b 100644 --- a/hydro_test/src/cluster/snapshots/two_pc_ir.snap +++ b/hydro_test/src/cluster/snapshots/two_pc_ir.snap @@ -34,7 +34,7 @@ expression: built.ir() }, }, second: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , core :: option :: Option < i32 >) , ()) , (u32 , core :: option :: Option < i32 >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < ((u32 , core :: option :: Option < i32 >) , bool) , (u32 , core :: option :: Option < i32 >) > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | (d , _) | d }), input: CrossSingleton { left: Cast { inner: SingletonSource { @@ -56,16 +56,84 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _u | () }), - input: SingletonSource { - value: { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; () }, - first_tick_only: true, + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: SingletonSource { + value: { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; () }, + first_tick_only: true, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(0, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(0, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -73,7 +141,7 @@ expression: built.ir() location_id: Tick(0, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -81,7 +149,7 @@ expression: built.ir() location_id: Tick(0, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: ((u32 , core :: option :: Option < i32 >) , ()), + element_type: ((u32 , core :: option :: Option < i32 >) , bool), }, }, }, @@ -1730,7 +1798,7 @@ expression: built.ir() }, right: Tee { inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: : Cast { @@ -1800,16 +1868,16 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { inner: : Reduce { f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), @@ -1908,9 +1976,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(6, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -1918,7 +1986,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -1926,7 +1994,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, @@ -2064,7 +2132,7 @@ expression: built.ir() }, right: Tee { inner: : Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: : Cast { @@ -2134,16 +2202,16 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { inner: , metadata: HydroIrMetadata { @@ -2208,9 +2276,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(6, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -2218,7 +2286,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -2226,7 +2294,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -2408,7 +2476,7 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -2420,15 +2488,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(6, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -2436,7 +2572,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -2444,7 +2580,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, @@ -2630,18 +2766,29 @@ expression: built.ir() inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , core :: option :: Option < hydro_test :: __staged :: __deps :: tokio :: time :: Instant > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), - input: Tee { - inner: : Reduce { - f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), - input: Batch { - inner: Source { - source: Stream( - { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; let output_interval_millis__free = 1000u64 ; Duration :: from_millis (output_interval_millis__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, - ), + input: DeferTick { + input: Tee { + inner: : Reduce { + f: stageleft :: runtime_support :: fn2_borrow_mut_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: stream :: * ; | _ , _ | { } }), + input: Batch { + inner: Source { + source: Stream( + { use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: location :: * ; let interval__free = { use hydro_std :: __staged :: __deps :: * ; use hydro_std :: __staged :: bench_client :: * ; let output_interval_millis__free = 1000u64 ; Duration :: from_millis (output_interval_millis__free) } ; tokio_stream :: wrappers :: IntervalStream :: new (tokio :: time :: interval (interval__free)) }, + ), + metadata: HydroIrMetadata { + location_id: Process(loc4v1), + collection_kind: Stream { + bound: Unbounded, + order: TotalOrder, + retry: ExactlyOnce, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, metadata: HydroIrMetadata { - location_id: Process(loc4v1), + location_id: Tick(7, Process(loc4v1)), collection_kind: Stream { - bound: Unbounded, + bound: Bounded, order: TotalOrder, retry: ExactlyOnce, element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, @@ -2650,10 +2797,8 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(7, Process(loc4v1)), - collection_kind: Stream { + collection_kind: Optional { bound: Bounded, - order: TotalOrder, - retry: ExactlyOnce, element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, }, }, @@ -2773,7 +2918,7 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -2785,15 +2930,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(6, Cluster(loc3v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(6, Cluster(loc3v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -2801,7 +3014,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -2809,7 +3022,7 @@ expression: built.ir() location_id: Tick(6, Cluster(loc3v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -2894,7 +3107,7 @@ expression: built.ir() }, second: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: : Cast { @@ -2964,16 +3177,16 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Filter { - f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | o | o . is_none () }), + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_none () }), input: Cast { inner: ChainFirst { first: Map { f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), input: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _ | () }), + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), input: Tee { inner: , metadata: HydroIrMetadata { @@ -3038,9 +3251,9 @@ expression: built.ir() }, metadata: HydroIrMetadata { location_id: Tick(7, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: core :: option :: Option < () >, + element_type: bool, }, }, }, @@ -3048,7 +3261,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3056,7 +3269,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -3114,7 +3327,7 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , ()) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (usize , bool) , usize > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -3126,15 +3339,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(7, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -3142,7 +3423,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3150,7 +3431,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (usize , ()), + element_type: (usize , bool), }, }, }, @@ -3191,7 +3472,7 @@ expression: built.ir() input: YieldConcat { inner: Cast { inner: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _signal) | d }), + f: stageleft :: runtime_support :: fn1_type_hint :: < (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool) , std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | (d , _) | d }), input: CrossSingleton { left: Tee { inner: , @@ -3203,15 +3484,83 @@ expression: built.ir() }, }, }, - right: Map { - f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | _u | () }), - input: Tee { - inner: , + right: Filter { + f: stageleft :: runtime_support :: fn1_borrow_type_hint :: < bool , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: singleton :: * ; | b | * b }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < core :: option :: Option < () > , bool > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | o | o . is_some () }), + input: Cast { + inner: ChainFirst { + first: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < () , core :: option :: Option < () > > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | v | Some (v) }), + input: Map { + f: stageleft :: runtime_support :: fn1_type_hint :: < hydro_test :: __staged :: __deps :: tokio :: time :: Instant , () > ({ use hydro_lang :: __staged :: __deps :: * ; use hydro_lang :: __staged :: live_collections :: optional :: * ; | _ | () }), + input: Tee { + inner: , + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: (), + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + second: Cast { + inner: SingletonSource { + value: :: std :: option :: Option :: None, + first_tick_only: false, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Optional { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, + metadata: HydroIrMetadata { + location_id: Tick(7, Process(loc4v1)), + collection_kind: Singleton { + bound: Bounded, + element_type: core :: option :: Option < () >, + }, + }, + }, metadata: HydroIrMetadata { location_id: Tick(7, Process(loc4v1)), - collection_kind: Optional { + collection_kind: Singleton { bound: Bounded, - element_type: hydro_test :: __staged :: __deps :: tokio :: time :: Instant, + element_type: bool, }, }, }, @@ -3219,7 +3568,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (), + element_type: bool, }, }, }, @@ -3227,7 +3576,7 @@ expression: built.ir() location_id: Tick(7, Process(loc4v1)), collection_kind: Optional { bound: Bounded, - element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , ()), + element_type: (std :: rc :: Rc < core :: cell :: RefCell < hydro_test :: __staged :: __deps :: hydro_std :: __staged :: __deps :: hdrhistogram :: Histogram < u64 > > > , bool), }, }, }, diff --git a/hydro_test/src/cluster/snapshots/two_pc_ir@coordinator_mermaid.snap b/hydro_test/src/cluster/snapshots/two_pc_ir@coordinator_mermaid.snap index e9f7fd687449..b549b76d0a5e 100644 --- a/hydro_test/src/cluster/snapshots/two_pc_ir@coordinator_mermaid.snap +++ b/hydro_test/src/cluster/snapshots/two_pc_ir@coordinator_mermaid.snap @@ -139,146 +139,146 @@ subgraph var_cycle_5 ["var cycle_5"] style var_cycle_5 fill:transparent 50v1 end -subgraph var_stream_101 ["var stream_101"] - style var_stream_101 fill:transparent +subgraph var_stream_100 ["var stream_100"] + style var_stream_100 fill:transparent + 42v1 +end +subgraph var_stream_104 ["var stream_104"] + style var_stream_104 fill:transparent + 43v1 +end +subgraph var_stream_108 ["var stream_108"] + style var_stream_108 fill:transparent 45v1 end -subgraph var_stream_102 ["var stream_102"] - style var_stream_102 fill:transparent +subgraph var_stream_109 ["var stream_109"] + style var_stream_109 fill:transparent 46v1 end -subgraph var_stream_103 ["var stream_103"] - style var_stream_103 fill:transparent +subgraph var_stream_110 ["var stream_110"] + style var_stream_110 fill:transparent 47v1 end -subgraph var_stream_105 ["var stream_105"] - style var_stream_105 fill:transparent +subgraph var_stream_112 ["var stream_112"] + style var_stream_112 fill:transparent 49v1 end -subgraph var_stream_16 ["var stream_16"] - style var_stream_16 fill:transparent +subgraph var_stream_23 ["var stream_23"] + style var_stream_23 fill:transparent 1v1 end -subgraph var_stream_17 ["var stream_17"] - style var_stream_17 fill:transparent +subgraph var_stream_24 ["var stream_24"] + style var_stream_24 fill:transparent 2v1 end -subgraph var_stream_18 ["var stream_18"] - style var_stream_18 fill:transparent +subgraph var_stream_25 ["var stream_25"] + style var_stream_25 fill:transparent 3v1 end -subgraph var_stream_20 ["var stream_20"] - style var_stream_20 fill:transparent +subgraph var_stream_27 ["var stream_27"] + style var_stream_27 fill:transparent 4v1 end -subgraph var_stream_22 ["var stream_22"] - style var_stream_22 fill:transparent +subgraph var_stream_29 ["var stream_29"] + style var_stream_29 fill:transparent 5v1 end -subgraph var_stream_25 ["var stream_25"] - style var_stream_25 fill:transparent +subgraph var_stream_32 ["var stream_32"] + style var_stream_32 fill:transparent 6v1 end -subgraph var_stream_37 ["var stream_37"] - style var_stream_37 fill:transparent +subgraph var_stream_44 ["var stream_44"] + style var_stream_44 fill:transparent 8v1 7v1 end -subgraph var_stream_41 ["var stream_41"] - style var_stream_41 fill:transparent +subgraph var_stream_48 ["var stream_48"] + style var_stream_48 fill:transparent 9v1 end -subgraph var_stream_45 ["var stream_45"] - style var_stream_45 fill:transparent +subgraph var_stream_52 ["var stream_52"] + style var_stream_52 fill:transparent 13v1 12v1 end -subgraph var_stream_48 ["var stream_48"] - style var_stream_48 fill:transparent +subgraph var_stream_55 ["var stream_55"] + style var_stream_55 fill:transparent 14v1 end -subgraph var_stream_49 ["var stream_49"] - style var_stream_49 fill:transparent +subgraph var_stream_56 ["var stream_56"] + style var_stream_56 fill:transparent 15v1 end -subgraph var_stream_52 ["var stream_52"] - style var_stream_52 fill:transparent +subgraph var_stream_59 ["var stream_59"] + style var_stream_59 fill:transparent 17v1 end -subgraph var_stream_53 ["var stream_53"] - style var_stream_53 fill:transparent +subgraph var_stream_60 ["var stream_60"] + style var_stream_60 fill:transparent 18v1 end -subgraph var_stream_57 ["var stream_57"] - style var_stream_57 fill:transparent +subgraph var_stream_64 ["var stream_64"] + style var_stream_64 fill:transparent 19v1 end -subgraph var_stream_61 ["var stream_61"] - style var_stream_61 fill:transparent +subgraph var_stream_68 ["var stream_68"] + style var_stream_68 fill:transparent 21v1 end -subgraph var_stream_62 ["var stream_62"] - style var_stream_62 fill:transparent +subgraph var_stream_69 ["var stream_69"] + style var_stream_69 fill:transparent 22v1 end -subgraph var_stream_63 ["var stream_63"] - style var_stream_63 fill:transparent +subgraph var_stream_70 ["var stream_70"] + style var_stream_70 fill:transparent 23v1 end -subgraph var_stream_65 ["var stream_65"] - style var_stream_65 fill:transparent +subgraph var_stream_72 ["var stream_72"] + style var_stream_72 fill:transparent 25v1 end -subgraph var_stream_67 ["var stream_67"] - style var_stream_67 fill:transparent +subgraph var_stream_74 ["var stream_74"] + style var_stream_74 fill:transparent 27v1 end -subgraph var_stream_68 ["var stream_68"] - style var_stream_68 fill:transparent +subgraph var_stream_75 ["var stream_75"] + style var_stream_75 fill:transparent 28v1 end -subgraph var_stream_69 ["var stream_69"] - style var_stream_69 fill:transparent +subgraph var_stream_76 ["var stream_76"] + style var_stream_76 fill:transparent 29v1 end -subgraph var_stream_71 ["var stream_71"] - style var_stream_71 fill:transparent +subgraph var_stream_78 ["var stream_78"] + style var_stream_78 fill:transparent 30v1 end -subgraph var_stream_73 ["var stream_73"] - style var_stream_73 fill:transparent +subgraph var_stream_80 ["var stream_80"] + style var_stream_80 fill:transparent 31v1 end -subgraph var_stream_76 ["var stream_76"] - style var_stream_76 fill:transparent +subgraph var_stream_83 ["var stream_83"] + style var_stream_83 fill:transparent 32v1 end -subgraph var_stream_81 ["var stream_81"] - style var_stream_81 fill:transparent +subgraph var_stream_88 ["var stream_88"] + style var_stream_88 fill:transparent 33v1 end -subgraph var_stream_85 ["var stream_85"] - style var_stream_85 fill:transparent +subgraph var_stream_92 ["var stream_92"] + style var_stream_92 fill:transparent 37v1 36v1 end -subgraph var_stream_88 ["var stream_88"] - style var_stream_88 fill:transparent +subgraph var_stream_95 ["var stream_95"] + style var_stream_95 fill:transparent 38v1 end -subgraph var_stream_89 ["var stream_89"] - style var_stream_89 fill:transparent +subgraph var_stream_96 ["var stream_96"] + style var_stream_96 fill:transparent 39v1 end -subgraph var_stream_92 ["var stream_92"] - style var_stream_92 fill:transparent +subgraph var_stream_99 ["var stream_99"] + style var_stream_99 fill:transparent 41v1 end -subgraph var_stream_93 ["var stream_93"] - style var_stream_93 fill:transparent - 42v1 -end -subgraph var_stream_97 ["var stream_97"] - style var_stream_97 fill:transparent - 43v1 -end diff --git a/hydro_test/src/cluster/snapshots/two_pc_ir@participants_mermaid.snap b/hydro_test/src/cluster/snapshots/two_pc_ir@participants_mermaid.snap index 71b6b3e53ef6..683cd454d2d0 100644 --- a/hydro_test/src/cluster/snapshots/two_pc_ir@participants_mermaid.snap +++ b/hydro_test/src/cluster/snapshots/two_pc_ir@participants_mermaid.snap @@ -26,6 +26,15 @@ linkStyle default stroke:#aaa 4v1 7v1 8v1 +<<<<<<< HEAD +subgraph var_stream_52 ["var stream_52"] + style var_stream_52 fill:transparent + 1v1 + 2v1 +end +subgraph var_stream_92 ["var stream_92"] + style var_stream_92 fill:transparent +======= subgraph var_stream_44 ["var stream_44"] style var_stream_44 fill:transparent 1v1 @@ -33,6 +42,7 @@ subgraph var_stream_44 ["var stream_44"] end subgraph var_stream_84 ["var stream_84"] style var_stream_84 fill:transparent +>>>>>>> main 5v1 6v1 end