From b4c40f64af7b3df1a9744a110132f064b33b33a9 Mon Sep 17 00:00:00 2001 From: Moritz Hoffmann Date: Thu, 7 Dec 2023 14:59:03 -0500 Subject: [PATCH] Bring differential to Rust 2021 What started as a simple change to visibility .. went sideways. Signed-off-by: Moritz Hoffmann --- Cargo.toml | 26 ++++++-- benches/sort-bench.rs | 4 -- dogsdogsdogs/Cargo.toml | 3 +- dogsdogsdogs/examples/delta_query.rs | 6 -- dogsdogsdogs/examples/delta_query2.rs | 6 -- dogsdogsdogs/examples/delta_query_wcoj.rs | 6 -- dogsdogsdogs/examples/dogsdogsdogs.rs | 6 -- dogsdogsdogs/examples/ngo.rs | 4 -- dogsdogsdogs/src/altneu.rs | 3 +- dogsdogsdogs/src/lib.rs | 9 --- doop/Cargo.toml | 5 +- doop/src/main.rs | 7 +- examples/accumulate.rs | 4 -- examples/arrange.rs | 4 -- examples/bfs.rs | 4 -- examples/capture-test.rs | 7 -- examples/compact.rs | 3 - examples/cursors.rs | 3 - examples/degrees.rs | 4 -- examples/dynamic.rs | 4 -- examples/freeze.rs | 3 - examples/graspan.rs | 4 -- examples/hello.rs | 4 -- examples/interpreted.rs | 4 -- examples/itembased_cf.rs | 4 -- examples/monoid-bfs.rs | 14 +--- examples/multitemporal.rs | 16 ++--- examples/pagerank.rs | 4 -- examples/progress.rs | 3 - examples/projekt.rs | 4 -- examples/spines.rs | 3 - examples/stackoverflow.rs | 3 - experiments/Cargo.toml | 4 +- experiments/src/bin/arrange.rs | 5 -- experiments/src/bin/attend.rs | 5 -- experiments/src/bin/deals-interactive.rs | 7 +- experiments/src/bin/deals.rs | 20 ++---- experiments/src/bin/graphs-interactive-alt.rs | 5 -- .../src/bin/graphs-interactive-neu-zwei.rs | 5 -- experiments/src/bin/graphs-interactive-neu.rs | 5 -- experiments/src/bin/graphs-interactive.rs | 8 +-- experiments/src/bin/graphs-single.rs | 2 - experiments/src/bin/graphs-static.rs | 12 +--- experiments/src/bin/graphs.rs | 14 +--- experiments/src/bin/graspan-interactive.rs | 4 -- experiments/src/bin/graspan1.rs | 11 +--- experiments/src/bin/graspan2.rs | 43 ++++++------ experiments/src/bin/multitemporal.rs | 16 ++--- experiments/src/bin/ysb.rs | 5 -- interactive/Cargo.toml | 4 +- interactive/src/bin/client.rs | 2 - interactive/src/bin/logging.rs | 2 - interactive/src/bin/motifs.rs | 2 - interactive/src/bin/projekt.rs | 2 - interactive/src/bin/server.rs | 6 +- interactive/src/command.rs | 3 +- interactive/src/concrete.rs | 1 + interactive/src/lib.rs | 8 --- interactive/src/plan/filter.rs | 6 +- interactive/src/plan/join.rs | 7 +- interactive/src/plan/map.rs | 5 +- interactive/src/plan/mod.rs | 5 +- interactive/src/plan/sfw.rs | 10 +-- server/Cargo.toml | 1 + server/dataflows/degr_dist/Cargo.toml | 3 +- server/dataflows/degr_dist/src/lib.rs | 4 -- server/dataflows/neighborhood/Cargo.toml | 1 + server/dataflows/neighborhood/src/lib.rs | 4 -- server/dataflows/random_graph/Cargo.toml | 3 +- server/dataflows/random_graph/src/lib.rs | 12 +--- server/dataflows/reachability/Cargo.toml | 1 + server/dataflows/reachability/src/lib.rs | 5 +- server/src/bin/server.rs | 6 +- server/src/lib.rs | 20 ++---- src/algorithms/graphs/bfs.rs | 8 +-- src/algorithms/graphs/bijkstra.rs | 10 +-- src/algorithms/graphs/propagate.rs | 12 ++-- src/algorithms/graphs/scc.rs | 8 +-- src/algorithms/graphs/sequential.rs | 8 +-- src/algorithms/identifiers.rs | 21 +++--- src/algorithms/prefix_sum.rs | 6 +- src/capture.rs | 2 + src/collection.rs | 65 ++----------------- src/difference.rs | 4 +- src/dynamic/mod.rs | 10 +-- src/dynamic/pointstamp.rs | 3 +- src/input.rs | 20 ++---- src/lattice.rs | 16 ----- src/lib.rs | 10 --- src/logging.rs | 2 + src/operators/arrange/agent.rs | 26 +++----- src/operators/arrange/arrangement.rs | 23 +++---- src/operators/arrange/mod.rs | 2 +- src/operators/arrange/upsert.rs | 17 ++--- src/operators/arrange/writer.rs | 9 +-- src/operators/consolidate.rs | 22 +++---- src/operators/count.rs | 19 +++--- src/operators/iterate.rs | 12 +--- src/operators/join.rs | 34 +++------- src/operators/mod.rs | 6 +- src/operators/reduce.rs | 47 +++++--------- src/operators/threshold.rs | 20 ++---- src/trace/description.rs | 1 + .../implementations/huffman_container.rs | 6 +- src/trace/implementations/merge_batcher.rs | 4 +- .../implementations/merge_batcher_col.rs | 4 +- src/trace/implementations/mod.rs | 11 ++-- src/trace/implementations/ord_neu.rs | 34 +++++----- src/trace/implementations/rhh.rs | 29 +++++---- src/trace/implementations/spine_fueled.rs | 32 ++++----- src/trace/mod.rs | 7 +- src/trace/wrappers/enter.rs | 6 +- src/trace/wrappers/enter_at.rs | 6 +- src/trace/wrappers/filter.rs | 4 +- src/trace/wrappers/freeze.rs | 8 +-- src/trace/wrappers/frontier.rs | 4 +- src/trace/wrappers/rc.rs | 4 +- tests/bfs.rs | 4 -- tests/import.rs | 4 -- tests/join.rs | 3 - tests/reduce.rs | 3 - tests/scc.rs | 4 -- tests/trace.rs | 3 - 123 files changed, 348 insertions(+), 753 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 220eacef6..528913e33 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,14 +13,28 @@ repository = "https://github.com/TimelyDataflow/differential-dataflow.git" keywords = ["differential", "dataflow"] license = "MIT" readme = "README.md" +edition="2021" [workspace] -members = [".", "dogsdogsdogs"] +members = [ + ".", + # "advent_of_code_2017", + "dogsdogsdogs", + "experiments", + "interactive", + "server", + "server/dataflows/degr_dist", + "server/dataflows/neighborhood", + "server/dataflows/random_graph", + "server/dataflows/reachability", + #"tpchlike", + "doop" +] [dev-dependencies] bincode = "1.3.1" rdkafka = "0.24" -indexmap = "1.0.1" +indexmap = "2.1" rand="0.4" byteorder="1" itertools="^0.7" @@ -28,14 +42,16 @@ serde_json = "1.0" graph_map = "0.1" [dependencies] -serde = "1.0" -serde_derive = "1.0" +serde = { version = "1.0", features = ["derive"] } abomonation = "0.7" abomonation_derive = "0.5" +fnv="1.0.2" +timely = {workspace = true} + +[workspace.dependencies] #timely = { version = "0.12", default-features = false } timely = { git = "https://github.com/TimelyDataflow/timely-dataflow", default-features = false } #timely = { path = "../timely-dataflow/timely/", default-features = false } -fnv="1.0.2" [features] default = ["timely/getopts"] diff --git a/benches/sort-bench.rs b/benches/sort-bench.rs index 37fd7dab0..b299bfb57 100644 --- a/benches/sort-bench.rs +++ b/benches/sort-bench.rs @@ -2,10 +2,6 @@ // #![feature(test)] // #![feature(collections)] // -// extern crate differential_dataflow; -// extern crate rand; -// extern crate test; -// // use rand::{Rng, SeedableRng, StdRng, Rand}; // use test::Bencher; // diff --git a/dogsdogsdogs/Cargo.toml b/dogsdogsdogs/Cargo.toml index cae04f734..49dc52f52 100644 --- a/dogsdogsdogs/Cargo.toml +++ b/dogsdogsdogs/Cargo.toml @@ -3,11 +3,12 @@ name = "dogsdogsdogs" version = "0.1.0" authors = ["Frank McSherry "] license = "MIT" +edition = "2021" [dependencies] abomonation = "0.7" abomonation_derive = "0.5" -timely = { git = "https://github.com/TimelyDataflow/timely-dataflow", default-features = false } +timely = { workspace = true } differential-dataflow = { path = "../", default-features = false } serde = "1" serde_derive = "1" diff --git a/dogsdogsdogs/examples/delta_query.rs b/dogsdogsdogs/examples/delta_query.rs index 6b221c115..2f2a9ba10 100644 --- a/dogsdogsdogs/examples/delta_query.rs +++ b/dogsdogsdogs/examples/delta_query.rs @@ -1,9 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - -extern crate dogsdogsdogs; - use timely::dataflow::Scope; use timely::dataflow::operators::probe::Handle; use differential_dataflow::input::Input; diff --git a/dogsdogsdogs/examples/delta_query2.rs b/dogsdogsdogs/examples/delta_query2.rs index 7f747122b..112cc6fdd 100644 --- a/dogsdogsdogs/examples/delta_query2.rs +++ b/dogsdogsdogs/examples/delta_query2.rs @@ -1,9 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - -extern crate dogsdogsdogs; - use timely::dataflow::Scope; use timely::order::Product; use timely::dataflow::operators::probe::Handle; diff --git a/dogsdogsdogs/examples/delta_query_wcoj.rs b/dogsdogsdogs/examples/delta_query_wcoj.rs index 487463c4d..3555264f9 100644 --- a/dogsdogsdogs/examples/delta_query_wcoj.rs +++ b/dogsdogsdogs/examples/delta_query_wcoj.rs @@ -1,9 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - -extern crate dogsdogsdogs; - use timely::dataflow::Scope; use timely::dataflow::operators::probe::Handle; use differential_dataflow::input::Input; diff --git a/dogsdogsdogs/examples/dogsdogsdogs.rs b/dogsdogsdogs/examples/dogsdogsdogs.rs index dcfd6021e..defeafd86 100644 --- a/dogsdogsdogs/examples/dogsdogsdogs.rs +++ b/dogsdogsdogs/examples/dogsdogsdogs.rs @@ -1,9 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - -extern crate dogsdogsdogs; - use timely::dataflow::operators::{ToStream, Partition, Accumulate, Inspect, Probe}; use timely::dataflow::operators::probe::Handle; use differential_dataflow::{Collection, AsCollection}; diff --git a/dogsdogsdogs/examples/ngo.rs b/dogsdogsdogs/examples/ngo.rs index 830738533..76d448fed 100644 --- a/dogsdogsdogs/examples/ngo.rs +++ b/dogsdogsdogs/examples/ngo.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::hash::Hash; use timely::dataflow::*; use timely::dataflow::operators::*; diff --git a/dogsdogsdogs/src/altneu.rs b/dogsdogsdogs/src/altneu.rs index c3d2f77da..d1cf8cd05 100644 --- a/dogsdogsdogs/src/altneu.rs +++ b/dogsdogsdogs/src/altneu.rs @@ -11,7 +11,8 @@ //! element of the second lattice, if neither first element equals //! the join. - +use abomonation_derive::Abomonation; +use serde_derive::{Deserialize, Serialize}; /// A pair of timestamps, partially ordered by the product order. #[derive(Debug, Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Serialize, Deserialize)] diff --git a/dogsdogsdogs/src/lib.rs b/dogsdogsdogs/src/lib.rs index f734d4bc9..262e09609 100644 --- a/dogsdogsdogs/src/lib.rs +++ b/dogsdogsdogs/src/lib.rs @@ -1,12 +1,3 @@ -#[macro_use] -extern crate abomonation_derive; -extern crate abomonation; -extern crate timely; -extern crate differential_dataflow; -#[macro_use] -extern crate serde_derive; -extern crate serde; - use std::hash::Hash; use timely::dataflow::Scope; diff --git a/doop/Cargo.toml b/doop/Cargo.toml index 880640f5f..cd1a88be8 100644 --- a/doop/Cargo.toml +++ b/doop/Cargo.toml @@ -2,8 +2,9 @@ name = "doop" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] -indexmap = "1.0.1" -timely = { git = "https://github.com/TimelyDataflow/timely-dataflow" } +indexmap = "2.1" +timely = {workspace = true} differential-dataflow = { path = "../" } \ No newline at end of file diff --git a/doop/src/main.rs b/doop/src/main.rs index 01c92d0ff..6628a7e30 100644 --- a/doop/src/main.rs +++ b/doop/src/main.rs @@ -1,10 +1,5 @@ #![allow(non_snake_case)] -extern crate indexmap; -extern crate timely; -extern crate differential_dataflow; - - use std::collections::HashMap; use std::rc::Rc; use std::cell::RefCell; @@ -17,7 +12,7 @@ use differential_dataflow::ExchangeData as Data; use differential_dataflow::lattice::Lattice; use differential_dataflow::input::Input; use differential_dataflow::operators::iterate::Variable; -use differential_dataflow::operators::{Threshold, Join, JoinCore, Consolidate}; +use differential_dataflow::operators::{Threshold, Join, JoinCore}; use differential_dataflow::operators::arrange::ArrangeByKey; // Type aliases for differential execution. diff --git a/examples/accumulate.rs b/examples/accumulate.rs index efd1dfc8e..4693431e4 100644 --- a/examples/accumulate.rs +++ b/examples/accumulate.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use differential_dataflow::input::Input; diff --git a/examples/arrange.rs b/examples/arrange.rs index f69240944..69e39b739 100644 --- a/examples/arrange.rs +++ b/examples/arrange.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::operators::*; diff --git a/examples/bfs.rs b/examples/bfs.rs index ae6027848..26d58fe24 100644 --- a/examples/bfs.rs +++ b/examples/bfs.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/examples/capture-test.rs b/examples/capture-test.rs index 19b00a354..66fff934a 100644 --- a/examples/capture-test.rs +++ b/examples/capture-test.rs @@ -1,10 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - -extern crate serde; -extern crate rdkafka; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/examples/compact.rs b/examples/compact.rs index dc90d88ae..dd0d33964 100644 --- a/examples/compact.rs +++ b/examples/compact.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use differential_dataflow::input::Input; use differential_dataflow::operators::Threshold; diff --git a/examples/cursors.rs b/examples/cursors.rs index d22e7a726..120c6a55d 100644 --- a/examples/cursors.rs +++ b/examples/cursors.rs @@ -31,9 +31,6 @@ //! Final graph: {(2, 1): 1, (3, 2): 1, (3, 4): 1, (4, 3): 1} //! ``` -extern crate differential_dataflow; -extern crate timely; - use std::fmt::Debug; use std::collections::BTreeMap; diff --git a/examples/degrees.rs b/examples/degrees.rs index be71ded22..75af1e798 100644 --- a/examples/degrees.rs +++ b/examples/degrees.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use differential_dataflow::input::Input; diff --git a/examples/dynamic.rs b/examples/dynamic.rs index 8a9dcdc81..01422ec57 100644 --- a/examples/dynamic.rs +++ b/examples/dynamic.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/examples/freeze.rs b/examples/freeze.rs index 14a99a9e4..0441f9ab5 100644 --- a/examples/freeze.rs +++ b/examples/freeze.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::probe::Handle; use timely::dataflow::operators::Map; diff --git a/examples/graspan.rs b/examples/graspan.rs index c72a8c15a..3d70096d0 100644 --- a/examples/graspan.rs +++ b/examples/graspan.rs @@ -1,7 +1,3 @@ -extern crate indexmap; -extern crate timely; -extern crate differential_dataflow; - use std::io::{BufRead, BufReader}; use std::fs::File; diff --git a/examples/hello.rs b/examples/hello.rs index e2a8f56e0..b02f9c506 100644 --- a/examples/hello.rs +++ b/examples/hello.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use differential_dataflow::input::Input; diff --git a/examples/interpreted.rs b/examples/interpreted.rs index 6678f3c92..3a04edaeb 100644 --- a/examples/interpreted.rs +++ b/examples/interpreted.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::hash::Hash; use timely::dataflow::*; use timely::dataflow::operators::*; diff --git a/examples/itembased_cf.rs b/examples/itembased_cf.rs index 9c925fd33..07e047906 100644 --- a/examples/itembased_cf.rs +++ b/examples/itembased_cf.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; -extern crate rand; - use differential_dataflow::input::InputSession; use differential_dataflow::operators::{Join,CountTotal,Count}; use differential_dataflow::operators::arrange::ArrangeByKey; diff --git a/examples/monoid-bfs.rs b/examples/monoid-bfs.rs index 01183c4c0..f9835cef7 100644 --- a/examples/monoid-bfs.rs +++ b/examples/monoid-bfs.rs @@ -1,16 +1,6 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - -#[macro_use] -extern crate abomonation_derive; -extern crate abomonation; -#[macro_use] -extern crate serde_derive; -extern crate serde; - - +use abomonation_derive::Abomonation; use rand::{Rng, SeedableRng, StdRng}; +use serde::{Deserialize, Serialize}; use timely::dataflow::*; use timely::dataflow::operators::probe::Handle; diff --git a/examples/multitemporal.rs b/examples/multitemporal.rs index 5c3bb5c0e..0a3506a77 100644 --- a/examples/multitemporal.rs +++ b/examples/multitemporal.rs @@ -1,11 +1,3 @@ -#[macro_use] -extern crate abomonation_derive; -extern crate abomonation; - -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use std::io::BufRead; use timely::dataflow::ProbeHandle; @@ -144,7 +136,7 @@ fn main() { mod pair { /// A pair of timestamps, partially ordered by the product order. - #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation)] + #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Serialize, Deserialize)] pub struct Pair { pub first: S, pub second: T, @@ -211,6 +203,8 @@ mod pair { } use std::fmt::{Formatter, Error, Debug}; + use abomonation_derive::Abomonation; + use serde::{Deserialize, Serialize}; /// Debug implementation to avoid seeing fully qualified path names. impl Debug for Pair { @@ -227,9 +221,11 @@ mod pair { /// from the rest of the library other than the traits it needs to implement. With this /// type and its implementations, you can use it as a timestamp type. mod vector { + use abomonation_derive::Abomonation; + use serde::{Deserialize, Serialize}; /// A pair of timestamps, partially ordered by the product order. - #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Debug)] + #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Debug, Serialize, Deserialize)] pub struct Vector { pub vector: Vec, } diff --git a/examples/pagerank.rs b/examples/pagerank.rs index 8a3d7c424..b116f5c51 100644 --- a/examples/pagerank.rs +++ b/examples/pagerank.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use timely::order::Product; use timely::dataflow::{*, operators::Filter}; diff --git a/examples/progress.rs b/examples/progress.rs index 30c11b385..5c6ebbf6b 100644 --- a/examples/progress.rs +++ b/examples/progress.rs @@ -1,8 +1,5 @@ //! A demonstration of timely dataflow progress tracking, using differential dataflow operators. -extern crate timely; -extern crate differential_dataflow; - use timely::PartialOrder; use timely::dataflow::*; use timely::dataflow::operators::probe::Handle; diff --git a/examples/projekt.rs b/examples/projekt.rs index 3295dbb26..3a6303ecc 100644 --- a/examples/projekt.rs +++ b/examples/projekt.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::probe::Handle; use differential_dataflow::input::InputSession; diff --git a/examples/spines.rs b/examples/spines.rs index 57b127c2b..0dba1630f 100644 --- a/examples/spines.rs +++ b/examples/spines.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::probe::Handle; use differential_dataflow::input::Input; diff --git a/examples/stackoverflow.rs b/examples/stackoverflow.rs index 957f0c44e..b2489c0d8 100644 --- a/examples/stackoverflow.rs +++ b/examples/stackoverflow.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use std::io::{BufRead, BufReader}; use std::fs::File; diff --git a/experiments/Cargo.toml b/experiments/Cargo.toml index 1f3b1d592..4905a644a 100644 --- a/experiments/Cargo.toml +++ b/experiments/Cargo.toml @@ -2,6 +2,7 @@ name = "experiments" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] core_affinity = "0.5.9" @@ -9,6 +10,7 @@ rand="0.3.13" abomonation = "0.7" abomonation_derive = "0.5" #timely = "0.7" -timely = { git = "https://github.com/TimelyDataflow/timely-dataflow" } +timely = { workspace = true } differential-dataflow = { path = "../" } graph_map = { git = "https://github.com/frankmcsherry/graph-map" } +serde = { version = "1.0.190", features = ["derive"] } diff --git a/experiments/src/bin/arrange.rs b/experiments/src/bin/arrange.rs index 09acd664c..e864d2854 100644 --- a/experiments/src/bin/arrange.rs +++ b/experiments/src/bin/arrange.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::operators::{Exchange, Probe}; diff --git a/experiments/src/bin/attend.rs b/experiments/src/bin/attend.rs index 18bd15d29..e15c176e8 100644 --- a/experiments/src/bin/attend.rs +++ b/experiments/src/bin/attend.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::time::Instant; use differential_dataflow::input::Input; diff --git a/experiments/src/bin/deals-interactive.rs b/experiments/src/bin/deals-interactive.rs index bcbf81f40..4e7862c93 100644 --- a/experiments/src/bin/deals-interactive.rs +++ b/experiments/src/bin/deals-interactive.rs @@ -1,12 +1,9 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use std::time::Instant; use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; +use timely::WorkerConfig; use differential_dataflow::input::Input; use differential_dataflow::Collection; @@ -33,7 +30,7 @@ fn main() { use timely::communication::allocator::zero_copy::allocator_process::ProcessBuilder; let allocators = ProcessBuilder::new_vector(workers); - timely::execute::execute_from(allocators, Box::new(()), move |worker| { + timely::execute::execute_from(allocators, Box::new(()), WorkerConfig::default(), move |worker| { // timely::execute_from_args(std::env::args().skip(1), move |worker| { diff --git a/experiments/src/bin/deals.rs b/experiments/src/bin/deals.rs index 7f8b2bf2c..d162ca457 100644 --- a/experiments/src/bin/deals.rs +++ b/experiments/src/bin/deals.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use std::time::Instant; use timely::dataflow::*; @@ -18,12 +13,11 @@ use differential_dataflow::operators::arrange::Arrange; use differential_dataflow::operators::iterate::SemigroupVariable; use differential_dataflow::difference::Present; -type EdgeArranged = Arranged::Timestamp, R, Offs>>>; +type EdgeArranged = Arranged::Timestamp, R>>>; type Node = u32; type Edge = (Node, Node); type Iter = u32; -type Offs = u32; fn main() { @@ -47,7 +41,7 @@ fn main() { let (input, graph) = scope.new_collection(); // each edge should exist in both directions. - let graph = graph.arrange::>(); + let graph = graph.arrange::>(); match program.as_str() { "tc" => tc(&graph).filter(move |_| inspect).map(|_| ()).consolidate().inspect(|x| println!("tc count: {:?}", x)).probe(), @@ -100,10 +94,10 @@ fn tc>(edges: &EdgeArranged) -> C let result = inner .map(|(x,y)| (y,x)) - .arrange::>() + .arrange::>() .join_core(&edges, |_y,&x,&z| Some((x, z))) .concat(&edges.as_collection(|&k,&v| (k,v))) - .arrange::>() + .arrange::>() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; @@ -127,12 +121,12 @@ fn sg>(edges: &EdgeArranged) -> C let result = inner - .arrange::>() + .arrange::>() .join_core(&edges, |_,&x,&z| Some((x, z))) - .arrange::>() + .arrange::>() .join_core(&edges, |_,&x,&z| Some((x, z))) .concat(&peers) - .arrange::>() + .arrange::>() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; diff --git a/experiments/src/bin/graphs-interactive-alt.rs b/experiments/src/bin/graphs-interactive-alt.rs index 967bd3247..55c8a8cf6 100644 --- a/experiments/src/bin/graphs-interactive-alt.rs +++ b/experiments/src/bin/graphs-interactive-alt.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/experiments/src/bin/graphs-interactive-neu-zwei.rs b/experiments/src/bin/graphs-interactive-neu-zwei.rs index 30faa6dc4..dc877d27a 100644 --- a/experiments/src/bin/graphs-interactive-neu-zwei.rs +++ b/experiments/src/bin/graphs-interactive-neu-zwei.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/experiments/src/bin/graphs-interactive-neu.rs b/experiments/src/bin/graphs-interactive-neu.rs index a1a720cab..a01f23d97 100644 --- a/experiments/src/bin/graphs-interactive-neu.rs +++ b/experiments/src/bin/graphs-interactive-neu.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; diff --git a/experiments/src/bin/graphs-interactive.rs b/experiments/src/bin/graphs-interactive.rs index 942565b15..ba96779ac 100644 --- a/experiments/src/bin/graphs-interactive.rs +++ b/experiments/src/bin/graphs-interactive.rs @@ -1,8 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; -extern crate core_affinity; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; @@ -18,7 +13,6 @@ use differential_dataflow::operators::arrange::ArrangeByKey; use differential_dataflow::operators::arrange::ArrangeBySelf; type Node = usize; -type Iter = usize; fn main() { @@ -240,7 +234,7 @@ fn _bidijkstra( goals: &Collection) -> Collection where G::Timestamp: Lattice+Ord { - goals.scope().iterative::(|inner| { + goals.scope().iterative::(|inner| { // Our plan is to start evolving distances from both sources and destinations. // The evolution from a source or destination should continue as long as there diff --git a/experiments/src/bin/graphs-single.rs b/experiments/src/bin/graphs-single.rs index 76d8a1ae6..6f34a0117 100644 --- a/experiments/src/bin/graphs-single.rs +++ b/experiments/src/bin/graphs-single.rs @@ -1,5 +1,3 @@ -extern crate graph_map; - use graph_map::GraphMMap; fn main() { diff --git a/experiments/src/bin/graphs-static.rs b/experiments/src/bin/graphs-static.rs index 381ebafd8..e57136acc 100644 --- a/experiments/src/bin/graphs-static.rs +++ b/experiments/src/bin/graphs-static.rs @@ -1,10 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; -extern crate graph_map; -extern crate core_affinity; - -use std::rc::Rc; - use timely::dataflow::*; use timely::order::Product; @@ -16,7 +9,6 @@ use differential_dataflow::operators::*; use differential_dataflow::operators::arrange::ArrangeByKey; use differential_dataflow::operators::arrange::ArrangeBySelf; use differential_dataflow::operators::iterate::SemigroupVariable; -use differential_dataflow::trace::implementations::spine_fueled::Spine; use differential_dataflow::AsCollection; use graph_map::GraphMMap; @@ -28,8 +20,8 @@ type Diff = i32; // use differential_dataflow::trace::implementations::graph::GraphBatch; // type GraphTrace = Spine>>; -use differential_dataflow::trace::implementations::ord::OrdValBatch; -type GraphTrace = Spine>>; +use differential_dataflow::trace::implementations::ValSpine; +type GraphTrace = ValSpine; fn main() { diff --git a/experiments/src/bin/graphs.rs b/experiments/src/bin/graphs.rs index 7f12a8fe5..e1b11404a 100644 --- a/experiments/src/bin/graphs.rs +++ b/experiments/src/bin/graphs.rs @@ -1,9 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - -use std::rc::Rc; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::*; @@ -11,19 +5,15 @@ use timely::dataflow::*; use differential_dataflow::input::Input; use differential_dataflow::Collection; use differential_dataflow::operators::*; -use differential_dataflow::trace::Trace; use differential_dataflow::operators::arrange::ArrangeByKey; use differential_dataflow::operators::arrange::ArrangeBySelf; -use differential_dataflow::trace::implementations::spine_fueled::Spine; - type Node = usize; -use differential_dataflow::trace::implementations::ord::OrdValBatch; -// use differential_dataflow::trace::implementations::ord::OrdValSpine; +use differential_dataflow::trace::implementations::ValSpine; // type GraphTrace = Spine>>; -type GraphTrace = Spine>>; +type GraphTrace = ValSpine; fn main() { diff --git a/experiments/src/bin/graspan-interactive.rs b/experiments/src/bin/graspan-interactive.rs index 4c04e45b2..92d5d04d5 100644 --- a/experiments/src/bin/graspan-interactive.rs +++ b/experiments/src/bin/graspan-interactive.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::io::{BufRead, BufReader}; use std::fs::File; diff --git a/experiments/src/bin/graspan1.rs b/experiments/src/bin/graspan1.rs index ac39e238e..baa50bd00 100644 --- a/experiments/src/bin/graspan1.rs +++ b/experiments/src/bin/graspan1.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::io::{BufRead, BufReader}; use std::fs::File; @@ -10,7 +6,7 @@ use timely::order::Product; use differential_dataflow::difference::Present; use differential_dataflow::input::Input; -use differential_dataflow::trace::implementations::ord::OrdValSpine; +use differential_dataflow::trace::implementations::ValSpine; use differential_dataflow::operators::*; use differential_dataflow::operators::arrange::Arrange; use differential_dataflow::operators::iterate::SemigroupVariable; @@ -18,7 +14,6 @@ use differential_dataflow::operators::iterate::SemigroupVariable; type Node = u32; type Time = (); type Iter = u32; -type Offs = u32; fn main() { @@ -36,7 +31,7 @@ fn main() { let (n_handle, nodes) = scope.new_collection(); let (e_handle, edges) = scope.new_collection(); - let edges = edges.arrange::>(); + let edges = edges.arrange::>(); // a N c <- a N b && b E c // N(a,c) <- N(a,b), E(b, c) @@ -51,7 +46,7 @@ fn main() { let next = labels.join_core(&edges, |_b, a, c| Some((*c, *a))) .concat(&nodes) - .arrange::>() + .arrange::>() // .distinct_total_core::(); .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }); diff --git a/experiments/src/bin/graspan2.rs b/experiments/src/bin/graspan2.rs index 3f3b70837..637936aa4 100644 --- a/experiments/src/bin/graspan2.rs +++ b/experiments/src/bin/graspan2.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate graph_map; -extern crate differential_dataflow; - use std::io::{BufRead, BufReader}; use std::fs::File; @@ -20,7 +16,6 @@ use differential_dataflow::difference::Present; type Node = u32; type Time = (); type Iter = u32; -type Offs = u32; fn main() { if std::env::args().any(|x| x == "optimized") { @@ -52,7 +47,7 @@ fn unoptimized() { .flat_map(|(a,b)| vec![a,b]) .concat(&dereference.flat_map(|(a,b)| vec![a,b])); - let dereference = dereference.arrange::>(); + let dereference = dereference.arrange::>(); let (value_flow, memory_alias, value_alias) = scope @@ -65,14 +60,14 @@ fn unoptimized() { let value_flow = SemigroupVariable::new(scope, Product::new(Default::default(), 1)); let memory_alias = SemigroupVariable::new(scope, Product::new(Default::default(), 1)); - let value_flow_arranged = value_flow.arrange::>(); - let memory_alias_arranged = memory_alias.arrange::>(); + let value_flow_arranged = value_flow.arrange::>(); + let memory_alias_arranged = memory_alias.arrange::>(); // VA(a,b) <- VF(x,a),VF(x,b) // VA(a,b) <- VF(x,a),MA(x,y),VF(y,b) let value_alias_next = value_flow_arranged.join_core(&value_flow_arranged, |_,&a,&b| Some((a,b))); let value_alias_next = value_flow_arranged.join_core(&memory_alias_arranged, |_,&a,&b| Some((b,a))) - .arrange::>() + .arrange::>() .join_core(&value_flow_arranged, |_,&a,&b| Some((a,b))) .concat(&value_alias_next); @@ -82,16 +77,16 @@ fn unoptimized() { let value_flow_next = assignment .map(|(a,b)| (b,a)) - .arrange::>() + .arrange::>() .join_core(&memory_alias_arranged, |_,&a,&b| Some((b,a))) .concat(&assignment.map(|(a,b)| (b,a))) - .arrange::>() + .arrange::>() .join_core(&value_flow_arranged, |_,&a,&b| Some((a,b))) .concat(&nodes.map(|n| (n,n))); let value_flow_next = value_flow_next - .arrange::>() + .arrange::>() // .distinct_total_core::() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; @@ -100,12 +95,12 @@ fn unoptimized() { let memory_alias_next: Collection<_,_,Present> = value_alias_next .join_core(&dereference, |_x,&y,&a| Some((y,a))) - .arrange::>() + .arrange::>() .join_core(&dereference, |_y,&a,&b| Some((a,b))); let memory_alias_next: Collection<_,_,Present> = memory_alias_next - .arrange::>() + .arrange::>() // .distinct_total_core::() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; @@ -177,7 +172,7 @@ fn optimized() { .flat_map(|(a,b)| vec![a,b]) .concat(&dereference.flat_map(|(a,b)| vec![a,b])); - let dereference = dereference.arrange::>(); + let dereference = dereference.arrange::>(); let (value_flow, memory_alias) = scope @@ -190,8 +185,8 @@ fn optimized() { let value_flow = SemigroupVariable::new(scope, Product::new(Default::default(), 1)); let memory_alias = SemigroupVariable::new(scope, Product::new(Default::default(), 1)); - let value_flow_arranged = value_flow.arrange::>(); - let memory_alias_arranged = memory_alias.arrange::>(); + let value_flow_arranged = value_flow.arrange::>(); + let memory_alias_arranged = memory_alias.arrange::>(); // VF(a,a) <- // VF(a,b) <- A(a,x),VF(x,b) @@ -199,13 +194,13 @@ fn optimized() { let value_flow_next = assignment .map(|(a,b)| (b,a)) - .arrange::>() + .arrange::>() .join_core(&memory_alias_arranged, |_,&a,&b| Some((b,a))) .concat(&assignment.map(|(a,b)| (b,a))) - .arrange::>() + .arrange::>() .join_core(&value_flow_arranged, |_,&a,&b| Some((a,b))) .concat(&nodes.map(|n| (n,n))) - .arrange::>() + .arrange::>() // .distinct_total_core::() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; @@ -214,9 +209,9 @@ fn optimized() { let value_flow_deref = value_flow .map(|(a,b)| (b,a)) - .arrange::>() + .arrange::>() .join_core(&dereference, |_x,&a,&b| Some((a,b))) - .arrange::>(); + .arrange::>(); // MA(a,b) <- VFD(x,a),VFD(y,b) // MA(a,b) <- VFD(x,a),MA(x,y),VFD(y,b) @@ -227,10 +222,10 @@ fn optimized() { let memory_alias_next = memory_alias_arranged .join_core(&value_flow_deref, |_x,&y,&a| Some((y,a))) - .arrange::>() + .arrange::>() .join_core(&value_flow_deref, |_y,&a,&b| Some((a,b))) .concat(&memory_alias_next) - .arrange::>() + .arrange::>() // .distinct_total_core::() .threshold_semigroup(|_,_,x| if x.is_none() { Some(Present) } else { None }) ; diff --git a/experiments/src/bin/multitemporal.rs b/experiments/src/bin/multitemporal.rs index 7bcdf11b2..9d64e87c0 100644 --- a/experiments/src/bin/multitemporal.rs +++ b/experiments/src/bin/multitemporal.rs @@ -1,11 +1,3 @@ -#[macro_use] -extern crate abomonation_derive; -extern crate abomonation; - -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use timely::dataflow::ProbeHandle; @@ -172,7 +164,7 @@ fn main() { mod pair { /// A pair of timestamps, partially ordered by the product order. - #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation)] + #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Serialize, Deserialize)] pub struct Pair { pub first: S, pub second: T, @@ -239,6 +231,8 @@ mod pair { } use std::fmt::{Formatter, Error, Debug}; + use abomonation_derive::Abomonation; + use serde::{Deserialize, Serialize}; /// Debug implementation to avoid seeing fully qualified path names. impl Debug for Pair { @@ -255,9 +249,11 @@ mod pair { /// from the rest of the library other than the traits it needs to implement. With this /// type and its implementations, you can use it as a timestamp type. mod vector { + use abomonation_derive::Abomonation; + use serde::{Deserialize, Serialize}; /// A pair of timestamps, partially ordered by the product order. - #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Debug)] + #[derive(Hash, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Abomonation, Debug, Serialize, Deserialize)] pub struct Vector { pub vector: Vec, } diff --git a/experiments/src/bin/ysb.rs b/experiments/src/bin/ysb.rs index 2c318c6c7..9fa14063b 100644 --- a/experiments/src/bin/ysb.rs +++ b/experiments/src/bin/ysb.rs @@ -1,12 +1,7 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use differential_dataflow::input::Input; use differential_dataflow::operators::Join; -use differential_dataflow::operators::Consolidate; #[derive(Clone)] pub enum AdType { diff --git a/interactive/Cargo.toml b/interactive/Cargo.toml index 197ce239c..a7967c443 100644 --- a/interactive/Cargo.toml +++ b/interactive/Cargo.toml @@ -2,11 +2,11 @@ name = "interactive" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] bincode = "1" -serde = "1" -serde_derive = "1" +serde = { version = "1", features = ["derive"]} differential-dataflow = { path = "../" } dogsdogsdogs = { path = "../dogsdogsdogs" } timely = { git = "https://github.com/TimelyDataflow/timely-dataflow", features = ["bincode"] } diff --git a/interactive/src/bin/client.rs b/interactive/src/bin/client.rs index e1fb00bd0..38faafbdf 100644 --- a/interactive/src/bin/client.rs +++ b/interactive/src/bin/client.rs @@ -1,5 +1,3 @@ -extern crate interactive; - use std::time::Duration; use interactive::{Command, Plan}; use interactive::concrete::{Session, Value}; diff --git a/interactive/src/bin/logging.rs b/interactive/src/bin/logging.rs index 9712ec060..2a45fe6e9 100644 --- a/interactive/src/bin/logging.rs +++ b/interactive/src/bin/logging.rs @@ -1,5 +1,3 @@ -extern crate interactive; - use interactive::{Command, Plan}; use interactive::concrete::Session; diff --git a/interactive/src/bin/motifs.rs b/interactive/src/bin/motifs.rs index 202a9eb85..1de164da0 100644 --- a/interactive/src/bin/motifs.rs +++ b/interactive/src/bin/motifs.rs @@ -1,5 +1,3 @@ -extern crate interactive; - use std::time::Duration; use interactive::{Command, Plan}; use interactive::concrete::{Session, Value}; diff --git a/interactive/src/bin/projekt.rs b/interactive/src/bin/projekt.rs index e146ba939..f6eb671bd 100644 --- a/interactive/src/bin/projekt.rs +++ b/interactive/src/bin/projekt.rs @@ -1,5 +1,3 @@ -extern crate interactive; - use std::time::Duration; use interactive::{Command, Plan}; use interactive::concrete::{Session, Value}; diff --git a/interactive/src/bin/server.rs b/interactive/src/bin/server.rs index c01074f47..e97ed2db6 100644 --- a/interactive/src/bin/server.rs +++ b/interactive/src/bin/server.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; -extern crate interactive; - use std::sync::{Arc, Mutex}; use std::sync::mpsc::Sender; use std::thread::Thread; @@ -26,7 +22,7 @@ fn main() { use std::net::TcpListener; let listener = TcpListener::bind("127.0.0.1:8000".to_string()).expect("failed to bind listener"); - for mut stream in listener.incoming() { + for stream in listener.incoming() { let mut stream = stream.expect("listener error"); let send = send.clone(); let thread = thread.clone(); diff --git a/interactive/src/command.rs b/interactive/src/command.rs index 7e1621832..c31963afe 100644 --- a/interactive/src/command.rs +++ b/interactive/src/command.rs @@ -2,6 +2,7 @@ use std::hash::Hash; use std::io::Write; +use serde::{Deserialize, Serialize}; use timely::communication::Allocate; use timely::worker::Worker; @@ -70,7 +71,7 @@ where use timely::dataflow::operators::Probe; use differential_dataflow::operators::arrange::ArrangeBySelf; - use plan::Render; + use crate::plan::Render; let mut collections = std::collections::HashMap::new(); // let mut arrangements = std::collections::HashMap::new(); diff --git a/interactive/src/concrete.rs b/interactive/src/concrete.rs index 584f5d27f..e2ceb6478 100644 --- a/interactive/src/concrete.rs +++ b/interactive/src/concrete.rs @@ -1,6 +1,7 @@ //! An example value type. use std::time::Duration; +use serde::{Deserialize, Serialize}; use super::{Datum, VectorFrom, Command}; /// A session. diff --git a/interactive/src/lib.rs b/interactive/src/lib.rs index 7dc221510..4d3e7f52f 100644 --- a/interactive/src/lib.rs +++ b/interactive/src/lib.rs @@ -6,14 +6,6 @@ #![forbid(missing_docs)] -extern crate bincode; -extern crate timely; -extern crate differential_dataflow; -extern crate dogsdogsdogs; -extern crate serde; -#[macro_use] -extern crate serde_derive; - pub mod plan; pub use plan::Plan; diff --git a/interactive/src/plan/filter.rs b/interactive/src/plan/filter.rs index f9f0d1e1f..f942e7af9 100644 --- a/interactive/src/plan/filter.rs +++ b/interactive/src/plan/filter.rs @@ -1,12 +1,12 @@ //! Predicate expression plan. use std::hash::Hash; - +use serde::{Deserialize, Serialize}; use timely::dataflow::Scope; use differential_dataflow::{Collection, ExchangeData}; -use plan::{Plan, Render}; -use {TraceManager, Time, Diff, Datum}; +use crate::plan::{Plan, Render}; +use crate::{TraceManager, Time, Diff, Datum}; /// What to compare against. /// diff --git a/interactive/src/plan/join.rs b/interactive/src/plan/join.rs index 3234f6445..4fecefa52 100644 --- a/interactive/src/plan/join.rs +++ b/interactive/src/plan/join.rs @@ -1,14 +1,13 @@ //! Equijoin expression plan. use std::hash::Hash; +use serde::{Deserialize, Serialize}; use timely::dataflow::Scope; -use differential_dataflow::operators::JoinCore; - use differential_dataflow::{Collection, ExchangeData}; -use plan::{Plan, Render}; -use {TraceManager, Time, Diff, Datum}; +use crate::plan::{Plan, Render}; +use crate::{TraceManager, Time, Diff, Datum}; /// A plan stage joining two source relations on the specified /// symbols. Throws if any of the join symbols isn't bound by both diff --git a/interactive/src/plan/map.rs b/interactive/src/plan/map.rs index d97882b9a..876d97435 100644 --- a/interactive/src/plan/map.rs +++ b/interactive/src/plan/map.rs @@ -1,12 +1,13 @@ //! Projection expression plan. use std::hash::Hash; +use serde::{Deserialize, Serialize}; use timely::dataflow::Scope; use differential_dataflow::{Collection, ExchangeData}; -use plan::{Plan, Render}; -use {TraceManager, Time, Diff, Datum}; +use crate::plan::{Plan, Render}; +use crate::{TraceManager, Time, Diff, Datum}; /// A plan which retains values at specified locations. /// diff --git a/interactive/src/plan/mod.rs b/interactive/src/plan/mod.rs index 1d6b6a992..ce76cbaa1 100644 --- a/interactive/src/plan/mod.rs +++ b/interactive/src/plan/mod.rs @@ -1,11 +1,12 @@ //! Types and traits for implementing query plans. use std::hash::Hash; +use serde::{Deserialize, Serialize}; use timely::dataflow::Scope; use differential_dataflow::{Collection, ExchangeData}; -use {TraceManager, Time, Diff}; +use crate::{TraceManager, Time, Diff}; // pub mod count; pub mod filter; @@ -156,7 +157,6 @@ impl Render for Plan { Plan::Map(expressions) => expressions.render(scope, collections, arrangements), Plan::Distinct(distinct) => { - use differential_dataflow::operators::reduce::ReduceCore; use differential_dataflow::operators::arrange::ArrangeBySelf; use differential_dataflow::trace::implementations::KeySpine; @@ -196,7 +196,6 @@ impl Render for Plan { trace.import(scope).as_collection(|k,&()| k.clone()) } else { - use differential_dataflow::operators::Consolidate; consolidate.render(scope, collections, arrangements).consolidate() } }, diff --git a/interactive/src/plan/sfw.rs b/interactive/src/plan/sfw.rs index e78e04941..0965227ec 100644 --- a/interactive/src/plan/sfw.rs +++ b/interactive/src/plan/sfw.rs @@ -25,15 +25,15 @@ //! indices rather than whole-collection indices. use std::hash::Hash; +use serde::{Deserialize, Serialize}; use timely::dataflow::Scope; -use differential_dataflow::operators::Consolidate; use differential_dataflow::operators::arrange::{ArrangeBySelf, ArrangeByKey}; use differential_dataflow::{Collection, ExchangeData}; -use plan::{Plan, Render}; -use {TraceManager, Time, Diff, Datum}; +use crate::plan::{Plan, Render}; +use crate::{TraceManager, Time, Diff, Datum}; /// A multiway join of muliple relations. /// @@ -249,11 +249,11 @@ impl Render for MultiwayJoin { // tuple in the cursor. changes = if join_idx < index { - let arrangement = trace.import(scope).enter_at(inner, |_,_,t| AltNeu::alt(t.clone()), unimplemented!()); + let arrangement = trace.import(scope).enter_at(inner, |_,_,t| AltNeu::alt(t.clone()), |_| unimplemented!()); dogsdogsdogs::operators::propose(&changes, arrangement, key_selector) } else { - let arrangement = trace.import(scope).enter_at(inner, |_,_,t| AltNeu::neu(t.clone()), unimplemented!()); + let arrangement = trace.import(scope).enter_at(inner, |_,_,t| AltNeu::neu(t.clone()), |_| unimplemented!()); dogsdogsdogs::operators::propose(&changes, arrangement, key_selector) } .map(|(mut prefix, extensions)| { prefix.extend(extensions.into_iter()); prefix }) diff --git a/server/Cargo.toml b/server/Cargo.toml index 38cf3f195..364b2ae51 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -2,6 +2,7 @@ name = "dd_server" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies.differential-dataflow] path="../" diff --git a/server/dataflows/degr_dist/Cargo.toml b/server/dataflows/degr_dist/Cargo.toml index 9850acdc5..417c2d55c 100644 --- a/server/dataflows/degr_dist/Cargo.toml +++ b/server/dataflows/degr_dist/Cargo.toml @@ -2,9 +2,10 @@ name = "degr_dist" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] -timely = { git = "https://github.com/TimelyDataflow/timely-dataflow" } +timely = { workspace = true } differential-dataflow = { path = "../../../" } dd_server = { path = "../../" } diff --git a/server/dataflows/degr_dist/src/lib.rs b/server/dataflows/degr_dist/src/lib.rs index fbfa24c59..95d10bee1 100644 --- a/server/dataflows/degr_dist/src/lib.rs +++ b/server/dataflows/degr_dist/src/lib.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; -extern crate dd_server; - use std::rc::Rc; use std::cell::RefCell; diff --git a/server/dataflows/neighborhood/Cargo.toml b/server/dataflows/neighborhood/Cargo.toml index 032b8564e..eabe1d2bf 100644 --- a/server/dataflows/neighborhood/Cargo.toml +++ b/server/dataflows/neighborhood/Cargo.toml @@ -2,6 +2,7 @@ name = "neighborhood" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] differential-dataflow = { path = "../../../" } diff --git a/server/dataflows/neighborhood/src/lib.rs b/server/dataflows/neighborhood/src/lib.rs index 062c0a9e8..01d3b7f88 100644 --- a/server/dataflows/neighborhood/src/lib.rs +++ b/server/dataflows/neighborhood/src/lib.rs @@ -1,12 +1,8 @@ -extern crate differential_dataflow; -extern crate dd_server; - use std::rc::Rc; use std::cell::RefCell; use differential_dataflow::input::Input; use differential_dataflow::operators::JoinCore; -use differential_dataflow::operators::Consolidate; use dd_server::{Environment, TraceHandle}; diff --git a/server/dataflows/random_graph/Cargo.toml b/server/dataflows/random_graph/Cargo.toml index 8b6e3880f..2b7bb9f4b 100644 --- a/server/dataflows/random_graph/Cargo.toml +++ b/server/dataflows/random_graph/Cargo.toml @@ -2,9 +2,10 @@ name = "random_graph" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] -timely = { git = "https://github.com/TimelyDataflow/timely-dataflow" } +timely = {workspace = true} differential-dataflow = { path = "../../../" } dd_server = { path = "../../" } rand="0.3.13" diff --git a/server/dataflows/random_graph/src/lib.rs b/server/dataflows/random_graph/src/lib.rs index 880a4a404..60261a1dc 100644 --- a/server/dataflows/random_graph/src/lib.rs +++ b/server/dataflows/random_graph/src/lib.rs @@ -1,10 +1,3 @@ -extern crate rand; - -extern crate timely; -extern crate differential_dataflow; -extern crate dd_server; -extern crate hdrhist; - use std::rc::Rc; use std::cell::RefCell; @@ -13,6 +6,7 @@ use rand::{Rng, SeedableRng, StdRng}; use timely::scheduling::Scheduler; use timely::dataflow::operators::Probe; use timely::dataflow::operators::generic::operator::source; +use timely::progress::Antichain; use differential_dataflow::AsCollection; use differential_dataflow::operators::arrange::ArrangeByKey; @@ -134,7 +128,7 @@ pub fn build((dataflow, handles, probe, timer, args): Environment) -> Result<(), if let Some(trace_handle) = trace_handle_weak.upgrade() { let mut borrow = trace_handle.borrow_mut(); if let Some(ref mut trace_handle) = borrow.as_mut() { - trace_handle.set_logical_compaction(&[elapsed_ns]); + trace_handle.set_logical_compaction(Antichain::from_elem(elapsed_ns).borrow()); } } @@ -191,7 +185,7 @@ pub fn build((dataflow, handles, probe, timer, args): Environment) -> Result<(), .trace; // release all blocks on merging. - trace.set_physical_compaction(&[]); + trace.set_physical_compaction(Antichain::new().borrow()); *trace_handle.borrow_mut() = Some(trace); handles.set::>>>(name.to_owned(), trace_handle); diff --git a/server/dataflows/reachability/Cargo.toml b/server/dataflows/reachability/Cargo.toml index 6266c2a0c..29ca8d254 100644 --- a/server/dataflows/reachability/Cargo.toml +++ b/server/dataflows/reachability/Cargo.toml @@ -2,6 +2,7 @@ name = "reachability" version = "0.1.0" authors = ["Frank McSherry "] +edition = "2021" [dependencies] differential-dataflow = { path = "../../../" } diff --git a/server/dataflows/reachability/src/lib.rs b/server/dataflows/reachability/src/lib.rs index 613604923..30427eb54 100644 --- a/server/dataflows/reachability/src/lib.rs +++ b/server/dataflows/reachability/src/lib.rs @@ -1,11 +1,8 @@ -extern crate differential_dataflow; -extern crate dd_server; - use std::rc::Rc; use std::cell::RefCell; use differential_dataflow::input::Input; -use differential_dataflow::operators::{Iterate, JoinCore, Threshold}; +use differential_dataflow::operators::{Iterate, Threshold}; use differential_dataflow::operators::arrange::ArrangeBySelf; use dd_server::{Environment, TraceHandle}; diff --git a/server/src/bin/server.rs b/server/src/bin/server.rs index 2ca0c3271..8fa7bd269 100644 --- a/server/src/bin/server.rs +++ b/server/src/bin/server.rs @@ -1,7 +1,3 @@ -extern crate libloading; -extern crate timely; -extern crate dd_server; - use std::io::BufRead; use std::io::Write; @@ -68,7 +64,7 @@ fn main() { let library_path = &command[0]; let symbol_name = &command[1]; - if let Ok(lib) = Library::new(library_path) { + if let Ok(lib) = unsafe { Library::new(library_path) } { worker.dataflow_core("dataflow", None, lib, |lib, child| { let result = unsafe { lib.get::Result<(),String>>>(symbol_name.as_bytes()) diff --git a/server/src/lib.rs b/server/src/lib.rs index d0bf22975..d90568714 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1,7 +1,3 @@ -extern crate libloading; -extern crate timely; -extern crate differential_dataflow; - use std::any::Any; use std::rc::Rc; use std::collections::HashMap; @@ -16,14 +12,12 @@ use timely::dataflow::operators::probe::Handle as ProbeHandle; // stuff for talking about shared trace types ... use differential_dataflow::operators::arrange::TraceAgent; -use differential_dataflow::trace::implementations::spine_fueled::Spine; -use differential_dataflow::trace::implementations::ord::OrdValBatch; +use differential_dataflow::trace::implementations::ValSpine; // These are all defined here so that users can be assured a common layout. pub type RootTime = usize; -type TraceBatch = OrdValBatch; -type TraceSpine = Spine>; -pub type TraceHandle = TraceAgent; +type TraceSpine = ValSpine; +pub type TraceHandle = TraceAgent; /// Arguments provided to each shared library to help build their dataflows and register their results. pub type Environment<'a, 'b> = ( @@ -74,7 +68,7 @@ impl ::std::ops::DerefMut for LibraryWrapper { /// A wrapper around a `HashMap>` that handles downcasting. pub struct TraceHandler { - handles: HashMap>, + handles: HashMap>, } impl TraceHandler { @@ -86,17 +80,17 @@ impl TraceHandler { boxed.downcast_mut::().ok_or(format!("failed to downcast: {}", name)) } /// Enumerates the keys maintained in storage (for the `list` operation). - pub fn keys(&self) -> ::std::collections::hash_map::Keys> { + pub fn keys(&self) -> ::std::collections::hash_map::Keys> { self.handles.keys() } /// Assign a thing to key `name`, boxed as `Box`. pub fn set(&mut self, name: String, thing: T) { - let boxed: Box = Box::new(thing); + let boxed: Box = Box::new(thing); assert!(boxed.downcast_ref::().is_some()); self.handles.insert(name, boxed); } /// Removes the resource associated with `name`. - pub fn remove(&mut self, name: &str) -> Option> { + pub fn remove(&mut self, name: &str) -> Option> { self.handles.remove(name) } } \ No newline at end of file diff --git a/src/algorithms/graphs/bfs.rs b/src/algorithms/graphs/bfs.rs index 756b1e631..eea6c8828 100644 --- a/src/algorithms/graphs/bfs.rs +++ b/src/algorithms/graphs/bfs.rs @@ -4,9 +4,9 @@ use std::hash::Hash; use timely::dataflow::*; -use ::{Collection, ExchangeData}; -use ::operators::*; -use ::lattice::Lattice; +use crate::{Collection, ExchangeData}; +use crate::operators::*; +use crate::lattice::Lattice; /// Returns pairs (node, dist) indicating distance of each node from a root. pub fn bfs(edges: &Collection, roots: &Collection) -> Collection @@ -15,7 +15,7 @@ where G::Timestamp: Lattice+Ord, N: ExchangeData+Hash, { - use operators::arrange::arrangement::ArrangeByKey; + use crate::operators::arrange::arrangement::ArrangeByKey; let edges = edges.arrange_by_key(); bfs_arranged(&edges, roots) } diff --git a/src/algorithms/graphs/bijkstra.rs b/src/algorithms/graphs/bijkstra.rs index 8a416318d..4cf961592 100644 --- a/src/algorithms/graphs/bijkstra.rs +++ b/src/algorithms/graphs/bijkstra.rs @@ -5,10 +5,10 @@ use std::hash::Hash; use timely::order::Product; use timely::dataflow::*; -use ::{Collection, ExchangeData}; -use ::operators::*; -use ::lattice::Lattice; -use ::operators::iterate::Variable; +use crate::{Collection, ExchangeData}; +use crate::operators::*; +use crate::lattice::Lattice; +use crate::operators::iterate::Variable; /// Returns the subset of `goals` that can reach each other in `edges`, with distance. /// @@ -26,7 +26,7 @@ where G::Timestamp: Lattice+Ord, N: ExchangeData+Hash, { - use operators::arrange::arrangement::ArrangeByKey; + use crate::operators::arrange::arrangement::ArrangeByKey; let forward = edges.arrange_by_key(); let reverse = edges.map(|(x,y)| (y,x)).arrange_by_key(); bidijkstra_arranged(&forward, &reverse, goals) diff --git a/src/algorithms/graphs/propagate.rs b/src/algorithms/graphs/propagate.rs index a4087e062..81c7478ad 100644 --- a/src/algorithms/graphs/propagate.rs +++ b/src/algorithms/graphs/propagate.rs @@ -4,10 +4,10 @@ use std::hash::Hash; use timely::dataflow::*; -use ::{Collection, ExchangeData}; -use ::lattice::Lattice; -use ::difference::{Abelian, Multiply}; -use ::operators::arrange::arrangement::ArrangeByKey; +use crate::{Collection, ExchangeData}; +use crate::lattice::Lattice; +use crate::difference::{Abelian, Multiply}; +use crate::operators::arrange::arrangement::ArrangeByKey; /// Propagates labels forward, retaining the minimum label. /// @@ -46,8 +46,8 @@ where propagate_core(&edges.arrange_by_key(), nodes, logic) } -use trace::TraceReader; -use operators::arrange::arrangement::Arranged; +use crate::trace::TraceReader; +use crate::operators::arrange::arrangement::Arranged; /// Propagates labels forward, retaining the minimum label. /// diff --git a/src/algorithms/graphs/scc.rs b/src/algorithms/graphs/scc.rs index 065a211a3..943aa0983 100644 --- a/src/algorithms/graphs/scc.rs +++ b/src/algorithms/graphs/scc.rs @@ -5,10 +5,10 @@ use std::hash::Hash; use timely::dataflow::*; -use ::{Collection, ExchangeData}; -use ::operators::*; -use ::lattice::Lattice; -use ::difference::{Abelian, Multiply}; +use crate::{Collection, ExchangeData}; +use crate::operators::*; +use crate::lattice::Lattice; +use crate::difference::{Abelian, Multiply}; use super::propagate::propagate; diff --git a/src/algorithms/graphs/sequential.rs b/src/algorithms/graphs/sequential.rs index 49a8a7c18..0a46e8804 100644 --- a/src/algorithms/graphs/sequential.rs +++ b/src/algorithms/graphs/sequential.rs @@ -4,10 +4,10 @@ use std::hash::Hash; use timely::dataflow::*; -use ::{Collection, ExchangeData}; -use ::lattice::Lattice; -use ::operators::*; -use hashable::Hashable; +use crate::{Collection, ExchangeData}; +use crate::lattice::Lattice; +use crate::operators::*; +use crate::hashable::Hashable; fn _color(edges: &Collection) -> Collection)> where diff --git a/src/algorithms/identifiers.rs b/src/algorithms/identifiers.rs index 622e1b611..65788290d 100644 --- a/src/algorithms/identifiers.rs +++ b/src/algorithms/identifiers.rs @@ -2,10 +2,10 @@ use timely::dataflow::Scope; -use ::{Collection, ExchangeData, Hashable}; -use ::lattice::Lattice; -use ::operators::*; -use ::difference::Abelian; +use crate::{Collection, ExchangeData, Hashable}; +use crate::lattice::Lattice; +use crate::operators::*; +use crate::difference::Abelian; /// Assign unique identifiers to elements of a collection. pub trait Identifiers { @@ -13,9 +13,6 @@ pub trait Identifiers { /// /// # Example /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::algorithms::identifiers::Identifiers; /// use differential_dataflow::operators::Threshold; @@ -59,7 +56,7 @@ where // very rare, and maintaining winners in both the input and output // of `reduce` is an unneccesary duplication. - use collection::AsCollection; + use crate::collection::AsCollection; let init = self.map(|record| (0, record)); timely::dataflow::operators::generic::operator::empty(&init.scope()) @@ -99,15 +96,15 @@ mod tests { // a version with a crippled hash function to see that even if // there are collisions, everyone gets a unique identifier. - use ::input::Input; - use ::operators::{Threshold, Reduce}; - use ::operators::iterate::Iterate; + use crate::input::Input; + use crate::operators::{Threshold, Reduce}; + use crate::operators::iterate::Iterate; ::timely::example(|scope| { let input = scope.new_collection_from(1 .. 4).1; - use collection::AsCollection; + use crate::collection::AsCollection; let init = input.map(|record| (0, record)); timely::dataflow::operators::generic::operator::empty(&init.scope()) diff --git a/src/algorithms/prefix_sum.rs b/src/algorithms/prefix_sum.rs index 1b8b00c83..28222278f 100644 --- a/src/algorithms/prefix_sum.rs +++ b/src/algorithms/prefix_sum.rs @@ -2,9 +2,9 @@ use timely::dataflow::Scope; -use ::{Collection, ExchangeData}; -use ::lattice::Lattice; -use ::operators::*; +use crate::{Collection, ExchangeData}; +use crate::lattice::Lattice; +use crate::operators::*; /// Extension trait for the prefix_sum method. pub trait PrefixSum { diff --git a/src/capture.rs b/src/capture.rs index 9ad7725ca..e68f37ab6 100644 --- a/src/capture.rs +++ b/src/capture.rs @@ -10,6 +10,8 @@ //! this file. use std::time::Duration; +use abomonation_derive::Abomonation; +use serde::{Deserialize, Serialize}; /// A message in the CDC V2 protocol. #[derive(Ord, PartialOrd, Eq, PartialEq, Debug, Clone, Serialize, Deserialize, Abomonation)] diff --git a/src/collection.rs b/src/collection.rs index eb82c5d0d..d77e1cbeb 100644 --- a/src/collection.rs +++ b/src/collection.rs @@ -17,9 +17,9 @@ use timely::dataflow::scopes::{Child, child::Iterative}; use timely::dataflow::{Scope, Stream}; use timely::dataflow::operators::*; -use ::difference::{Semigroup, Abelian, Multiply}; -use lattice::Lattice; -use hashable::Hashable; +use crate::difference::{Semigroup, Abelian, Multiply}; +use crate::lattice::Lattice; +use crate::hashable::Hashable; /// A mutable collection of values of type `D` /// @@ -60,9 +60,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -91,9 +88,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -120,9 +114,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -146,9 +137,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -175,9 +163,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -207,9 +192,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -241,9 +223,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -279,9 +258,6 @@ impl Collection where G::Timestamp: Da /// #Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -315,9 +291,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::dataflow::Scope; /// use differential_dataflow::input::Input; /// @@ -352,9 +325,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::dataflow::Scope; /// use differential_dataflow::input::Input; /// @@ -433,9 +403,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -462,9 +429,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -512,9 +476,6 @@ impl Collection where G::Timestamp: Da /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -527,8 +488,8 @@ impl Collection where G::Timestamp: Da /// } /// ``` pub fn assert_empty(&self) - where D: ::ExchangeData+Hashable, - R: ::ExchangeData+Hashable, + where D: crate::ExchangeData+Hashable, + R: crate::ExchangeData+Hashable, G::Timestamp: Lattice+Ord, { self.consolidate() @@ -554,9 +515,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::dataflow::Scope; /// use differential_dataflow::input::Input; /// @@ -607,9 +565,6 @@ impl Collection where G::Timestamp: Data /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -643,9 +598,6 @@ impl Collection where G::Timestamp: Data /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -662,8 +614,8 @@ impl Collection where G::Timestamp: Data /// } /// ``` pub fn assert_eq(&self, other: &Self) - where D: ::ExchangeData+Hashable, - R: ::ExchangeData+Hashable, + where D: crate::ExchangeData+Hashable, + R: crate::ExchangeData+Hashable, G::Timestamp: Lattice+Ord { self.negate() @@ -692,9 +644,6 @@ impl AsCollection for Stream); pub use self::present::Present; mod present { + use abomonation_derive::Abomonation; + use serde::{Deserialize, Serialize}; /// A zero-sized difference that indicates the presence of a record. /// diff --git a/src/dynamic/mod.rs b/src/dynamic/mod.rs index b637666cf..a1c116405 100644 --- a/src/dynamic/mod.rs +++ b/src/dynamic/mod.rs @@ -20,11 +20,11 @@ use timely::dataflow::operators::generic::builder_rc::OperatorBuilder; use timely::dataflow::channels::pact::Pipeline; use timely::progress::Antichain; -use difference::Semigroup; -use {Collection, Data}; -use collection::AsCollection; -use dynamic::pointstamp::PointStamp; -use dynamic::pointstamp::PointStampSummary; +use crate::difference::Semigroup; +use crate::{Collection, Data}; +use crate::collection::AsCollection; +use crate::dynamic::pointstamp::PointStamp; +use crate::dynamic::pointstamp::PointStampSummary; impl Collection where diff --git a/src/dynamic/pointstamp.rs b/src/dynamic/pointstamp.rs index f88377807..199e7e479 100644 --- a/src/dynamic/pointstamp.rs +++ b/src/dynamic/pointstamp.rs @@ -11,6 +11,7 @@ //! (as iteration within a scope requires leaving contained scopes), and then to any number of appended //! default coordinates (which is effectively just *setting* the coordinate). +use abomonation_derive::Abomonation; use serde::{Deserialize, Serialize}; /// A sequence of timestamps, partially ordered by the product order. @@ -172,7 +173,7 @@ impl Timestamp for PointStamp { // Implement differential dataflow's `Lattice` trait. // This extends the `PartialOrder` implementation with additional structure. -use lattice::Lattice; +use crate::lattice::Lattice; impl Lattice for PointStamp { fn join(&self, other: &Self) -> Self { let min_len = ::std::cmp::min(self.vector.len(), other.vector.len()); diff --git a/src/input.rs b/src/input.rs index d3cdff34f..fd5827090 100644 --- a/src/input.rs +++ b/src/input.rs @@ -11,9 +11,9 @@ use timely::dataflow::operators::Input as TimelyInput; use timely::dataflow::operators::input::Handle; use timely::dataflow::scopes::ScopeParent; -use ::Data; -use ::difference::Semigroup; -use collection::{Collection, AsCollection}; +use crate::Data; +use crate::difference::Semigroup; +use crate::collection::{Collection, AsCollection}; /// Create a new collection and input handle to control the collection. pub trait Input : TimelyInput { @@ -22,9 +22,6 @@ pub trait Input : TimelyInput { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use differential_dataflow::input::Input; /// @@ -53,9 +50,6 @@ pub trait Input : TimelyInput { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use differential_dataflow::input::Input; /// @@ -84,9 +78,6 @@ pub trait Input : TimelyInput { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use differential_dataflow::input::Input; /// @@ -112,7 +103,7 @@ pub trait Input : TimelyInput { where I: IntoIterator::Timestamp,R)>+'static, D: Data, R: Semigroup+Data; } -use lattice::Lattice; +use crate::lattice::Lattice; impl Input for G where ::Timestamp: Lattice { fn new_collection(&mut self) -> (InputSession<::Timestamp, D, R>, Collection) where D: Data, R: Semigroup{ @@ -147,9 +138,6 @@ impl Input for G where ::Timestamp: Lattice { /// # Examples /// /// ``` -/// extern crate timely; -/// extern crate differential_dataflow; -/// /// use timely::Config; /// use differential_dataflow::input::Input; /// diff --git a/src/lattice.rs b/src/lattice.rs index 64fceffc9..980798764 100644 --- a/src/lattice.rs +++ b/src/lattice.rs @@ -15,8 +15,6 @@ pub trait Lattice : PartialOrder { /// # Examples /// /// ``` - /// # extern crate timely; - /// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -36,8 +34,6 @@ pub trait Lattice : PartialOrder { /// # Examples /// /// ``` - /// # extern crate timely; - /// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -59,8 +55,6 @@ pub trait Lattice : PartialOrder { /// # Examples /// /// ``` - /// # extern crate timely; - /// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -80,8 +74,6 @@ pub trait Lattice : PartialOrder { /// # Examples /// /// ``` - /// # extern crate timely; - /// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -111,8 +103,6 @@ pub trait Lattice : PartialOrder { /// # Examples /// /// ``` - /// # extern crate timely; - /// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -257,8 +247,6 @@ implement_lattice!((), ()); /// # Examples /// /// ``` -/// # extern crate timely; -/// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; @@ -289,8 +277,6 @@ pub fn antichain_join(one: &[T], other: &[T]) -> Antichain { /// # Examples /// /// ``` -/// # extern crate timely; -/// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use timely::progress::Antichain; @@ -323,8 +309,6 @@ pub fn antichain_join_into(one: &[T], other: &[T], upper: &mut Antic /// # Examples /// /// ``` -/// # extern crate timely; -/// # extern crate differential_dataflow; /// # use timely::PartialOrder; /// # use timely::order::Product; /// # use differential_dataflow::lattice::Lattice; diff --git a/src/lib.rs b/src/lib.rs index 2b18bd796..7d91f2c28 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -92,16 +92,6 @@ impl Data for T { } pub trait ExchangeData : timely::ExchangeData + Ord + Debug { } impl ExchangeData for T { } -extern crate fnv; -extern crate timely; - -#[macro_use] -extern crate abomonation_derive; -extern crate abomonation; -#[macro_use] -extern crate serde_derive; -extern crate serde; - pub mod hashable; pub mod operators; pub mod algorithms; diff --git a/src/logging.rs b/src/logging.rs index 154e47970..c53919448 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -1,5 +1,7 @@ //! Loggers and logging events for differential dataflow. +use abomonation_derive::Abomonation; + /// Logger for differential dataflow events. pub type Logger = ::timely::logging::Logger; diff --git a/src/operators/arrange/agent.rs b/src/operators/arrange/agent.rs index 088693c87..2f6d55e9e 100644 --- a/src/operators/arrange/agent.rs +++ b/src/operators/arrange/agent.rs @@ -10,10 +10,9 @@ use timely::progress::Timestamp; use timely::progress::{Antichain, frontier::AntichainRef}; use timely::dataflow::operators::CapabilitySet; -use lattice::Lattice; -use trace::{Trace, TraceReader, Batch, BatchReader}; - -use trace::wrappers::rc::TraceBox; +use crate::lattice::Lattice; +use crate::trace::{Trace, TraceReader, Batch, BatchReader}; +use crate::trace::wrappers::rc::TraceBox; use timely::scheduling::Activator; @@ -39,7 +38,7 @@ where temp_antichain: Antichain, operator: OperatorInfo, - logging: Option<::logging::Logger>, + logging: Option, } impl TraceReader for TraceAgent @@ -92,7 +91,7 @@ where Tr::Time: Timestamp+Lattice, { /// Creates a new agent from a trace reader. - pub fn new(trace: Tr, operator: OperatorInfo, logging: Option<::logging::Logger>) -> (Self, TraceWriter) + pub fn new(trace: Tr, operator: OperatorInfo, logging: Option) -> (Self, TraceWriter) where Tr: Trace, Tr::Batch: Batch, @@ -102,7 +101,7 @@ where if let Some(logging) = &logging { logging.log( - ::logging::TraceShare { operator: operator.global_id, diff: 1 } + crate::logging::TraceShare { operator: operator.global_id, diff: 1 } ); } @@ -203,9 +202,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::arrange::ArrangeBySelf; @@ -259,9 +255,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use timely::dataflow::ProbeHandle; /// use timely::dataflow::operators::Probe; @@ -368,9 +361,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use timely::Config; /// use timely::progress::frontier::AntichainRef; /// use timely::dataflow::ProbeHandle; @@ -563,7 +553,7 @@ where if let Some(logging) = &self.logging { logging.log( - ::logging::TraceShare { operator: self.operator.global_id, diff: 1 } + crate::logging::TraceShare { operator: self.operator.global_id, diff: 1 } ); } @@ -593,7 +583,7 @@ where if let Some(logging) = &self.logging { logging.log( - ::logging::TraceShare { operator: self.operator.global_id, diff: -1 } + crate::logging::TraceShare { operator: self.operator.global_id, diff: -1 } ); } diff --git a/src/operators/arrange/arrangement.rs b/src/operators/arrange/arrangement.rs index d152f7088..ab3645dc3 100644 --- a/src/operators/arrange/arrangement.rs +++ b/src/operators/arrange/arrangement.rs @@ -26,11 +26,11 @@ use timely::progress::Timestamp; use timely::progress::{Antichain, frontier::AntichainRef}; use timely::dataflow::operators::Capability; -use ::{Data, ExchangeData, Collection, AsCollection, Hashable}; -use ::difference::Semigroup; -use lattice::Lattice; -use trace::{self, Trace, TraceReader, Batch, BatchReader, Batcher, Builder, Cursor}; -use trace::implementations::{KeySpine, ValSpine}; +use crate::{Data, ExchangeData, Collection, AsCollection, Hashable}; +use crate::difference::Semigroup; +use crate::lattice::Lattice; +use crate::trace::{self, Trace, TraceReader, Batch, BatchReader, Batcher, Builder, Cursor}; +use crate::trace::implementations::{KeySpine, ValSpine}; use trace::wrappers::enter::{TraceEnter, BatchEnter,}; use trace::wrappers::enter_at::TraceEnter as TraceEnterAt; @@ -149,9 +149,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::arrange::ArrangeByKey; /// @@ -411,7 +408,7 @@ where } -use difference::Multiply; +use crate::difference::Multiply; // Direct join implementations. impl Arranged where @@ -447,13 +444,13 @@ where I: IntoIterator, L: FnMut(Tr::Key<'_>, Tr::Val<'_>,Tr2::Val<'_>,&G::Timestamp,&Tr::Diff,&Tr2::Diff)->I+'static, { - use operators::join::join_traces; + use crate::operators::join::join_traces; join_traces(self, other, result) } } // Direct reduce implementations. -use difference::Abelian; +use crate::difference::Abelian; impl Arranged where G::Timestamp: Lattice+Ord, @@ -489,7 +486,7 @@ where T2::Builder: Builder, L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(::ValOwned,T2::Diff)>, &mut Vec<(::ValOwned, T2::Diff)>)+'static, { - use operators::reduce::reduce_trace; + use crate::operators::reduce::reduce_trace; reduce_trace(self, name, logic) } } @@ -620,7 +617,7 @@ where let logger = { let scope = self.scope(); let register = scope.log_register(); - register.get::<::logging::DifferentialEvent>("differential/arrange") + register.get::("differential/arrange") }; // Where we will deposit received updates, and from which we extract batches. diff --git a/src/operators/arrange/mod.rs b/src/operators/arrange/mod.rs index 316deca4c..591822797 100644 --- a/src/operators/arrange/mod.rs +++ b/src/operators/arrange/mod.rs @@ -45,7 +45,7 @@ use std::collections::VecDeque; use timely::scheduling::Activator; use timely::progress::Antichain; -use trace::TraceReader; +use crate::trace::TraceReader; /// Operating instructions on how to replay a trace. pub enum TraceReplayInstruction diff --git a/src/operators/arrange/upsert.rs b/src/operators/arrange/upsert.rs index d5a5cbcb0..4bd4ac893 100644 --- a/src/operators/arrange/upsert.rs +++ b/src/operators/arrange/upsert.rs @@ -34,9 +34,6 @@ //! # Example //! //! ```rust -//! extern crate timely; -//! extern crate differential_dataflow; -//! //! fn main() { //! //! // define a new timely dataflow computation. @@ -115,13 +112,11 @@ use timely::progress::Timestamp; use timely::progress::Antichain; use timely::dataflow::operators::Capability; -use ::{ExchangeData, Hashable}; -use lattice::Lattice; -use trace::{self, Trace, TraceReader, Batch, Cursor}; - -use trace::Builder; - -use operators::arrange::arrangement::Arranged; +use crate::lattice::Lattice; +use crate::operators::arrange::arrangement::Arranged; +use crate::trace::Builder; +use crate::trace::{self, Trace, TraceReader, Batch, Cursor}; +use crate::{ExchangeData, Hashable}; use super::TraceAgent; @@ -163,7 +158,7 @@ where let logger = { let scope = stream.scope(); let register = scope.log_register(); - register.get::<::logging::DifferentialEvent>("differential/arrange") + register.get::("differential/arrange") }; // Tracks the lower envelope of times in `priority_queue`. diff --git a/src/operators/arrange/writer.rs b/src/operators/arrange/writer.rs index adbff3ea7..b63059adb 100644 --- a/src/operators/arrange/writer.rs +++ b/src/operators/arrange/writer.rs @@ -6,11 +6,12 @@ use std::rc::{Rc, Weak}; use std::cell::RefCell; -use lattice::Lattice; -use trace::{Trace, Batch, BatchReader}; use timely::progress::{Antichain, Timestamp}; -use trace::wrappers::rc::TraceBox; +use crate::lattice::Lattice; +use crate::trace::{Trace, Batch, BatchReader}; +use crate::trace::wrappers::rc::TraceBox; + use super::TraceAgentQueueWriter; use super::TraceReplayInstruction; @@ -95,7 +96,7 @@ where /// Inserts an empty batch up to `upper`. pub fn seal(&mut self, upper: Antichain) { if self.upper != upper { - use trace::Builder; + use crate::trace::Builder; let builder = Tr::Builder::new(); let batch = builder.done(self.upper.clone(), upper, Antichain::from_elem(Tr::Time::minimum())); self.insert(batch, None); diff --git a/src/operators/consolidate.rs b/src/operators/consolidate.rs index 6240b4b0c..b88cc0862 100644 --- a/src/operators/consolidate.rs +++ b/src/operators/consolidate.rs @@ -8,12 +8,12 @@ use timely::dataflow::Scope; -use ::{Collection, ExchangeData, Hashable}; -use ::difference::Semigroup; +use crate::{Collection, ExchangeData, Hashable}; +use crate::difference::Semigroup; -use Data; -use lattice::Lattice; -use trace::{Batcher, Builder}; +use crate::Data; +use crate::lattice::Lattice; +use crate::trace::{Batcher, Builder}; /// Methods which require data be arrangeable. impl Collection @@ -31,9 +31,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -49,7 +46,7 @@ where /// } /// ``` pub fn consolidate(&self) -> Self { - use trace::implementations::KeySpine; + use crate::trace::implementations::KeySpine; self.consolidate_named::>("Consolidate") } @@ -61,7 +58,7 @@ where Tr::Batcher: Batcher, Tr::Builder: Builder, { - use operators::arrange::arrangement::Arrange; + use crate::operators::arrange::arrangement::Arrange; self.map(|k| (k, ())) .arrange_named::(name) .as_collection(|d: &D, _| d.clone()) @@ -78,9 +75,6 @@ where /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// /// fn main() { @@ -99,7 +93,7 @@ where use timely::dataflow::channels::pact::Pipeline; use timely::dataflow::operators::Operator; - use collection::AsCollection; + use crate::collection::AsCollection; self.inner .unary(Pipeline, "ConsolidateStream", |_cap, _info| { diff --git a/src/operators/count.rs b/src/operators/count.rs index f91e26811..7e5dd1c55 100644 --- a/src/operators/count.rs +++ b/src/operators/count.rs @@ -5,13 +5,13 @@ use timely::dataflow::*; use timely::dataflow::operators::Operator; use timely::dataflow::channels::pact::Pipeline; -use lattice::Lattice; -use ::{ExchangeData, Collection}; -use ::difference::Semigroup; -use hashable::Hashable; -use collection::AsCollection; -use operators::arrange::{Arranged, ArrangeBySelf}; -use trace::{BatchReader, Cursor, TraceReader}; +use crate::lattice::Lattice; +use crate::{ExchangeData, Collection}; +use crate::difference::Semigroup; +use crate::hashable::Hashable; +use crate::collection::AsCollection; +use crate::operators::arrange::{Arranged, ArrangeBySelf}; +use crate::trace::{BatchReader, Cursor, TraceReader}; /// Extension trait for the `count` differential dataflow method. pub trait CountTotal where G::Timestamp: TotalOrder+Lattice+Ord { @@ -20,9 +20,6 @@ pub trait CountTotal where G::Timestamp /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::CountTotal; /// @@ -74,7 +71,7 @@ where move |input, output| { - use trace::cursor::MyTrait; + use crate::trace::cursor::MyTrait; input.for_each(|capability, batches| { batches.swap(&mut buffer); let mut session = output.session(&capability); diff --git a/src/operators/iterate.rs b/src/operators/iterate.rs index a61efcfcf..485504a10 100644 --- a/src/operators/iterate.rs +++ b/src/operators/iterate.rs @@ -41,9 +41,9 @@ use timely::dataflow::scopes::child::Iterative; use timely::dataflow::operators::{Feedback, ConnectLoop, Map}; use timely::dataflow::operators::feedback::Handle; -use ::{Data, Collection}; -use ::difference::{Semigroup, Abelian}; -use lattice::Lattice; +use crate::{Data, Collection}; +use crate::difference::{Semigroup, Abelian}; +use crate::lattice::Lattice; /// An extension trait for the `iterate` method. pub trait Iterate { @@ -58,9 +58,6 @@ pub trait Iterate { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Iterate; /// @@ -136,9 +133,6 @@ impl Iterate for G { /// The following example is equivalent to the example for the `Iterate` trait. /// /// ``` -/// extern crate timely; -/// extern crate differential_dataflow; -/// /// use timely::order::Product; /// use timely::dataflow::Scope; /// diff --git a/src/operators/join.rs b/src/operators/join.rs index 073a49f57..33ec27f23 100644 --- a/src/operators/join.rs +++ b/src/operators/join.rs @@ -13,15 +13,15 @@ use timely::dataflow::channels::pact::Pipeline; use timely::dataflow::operators::Capability; use timely::dataflow::channels::pushers::tee::Tee; -use hashable::Hashable; -use ::{Data, ExchangeData, Collection, AsCollection}; -use ::difference::{Semigroup, Abelian, Multiply}; -use lattice::Lattice; -use operators::arrange::{Arranged, ArrangeByKey, ArrangeBySelf}; -use trace::{BatchReader, Cursor}; -use operators::ValueHistory; +use crate::hashable::Hashable; +use crate::{Data, ExchangeData, Collection, AsCollection}; +use crate::difference::{Semigroup, Abelian, Multiply}; +use crate::lattice::Lattice; +use crate::operators::arrange::{Arranged, ArrangeByKey, ArrangeBySelf}; +use crate::trace::{BatchReader, Cursor}; +use crate::operators::ValueHistory; -use trace::TraceReader; +use crate::trace::TraceReader; /// Join implementations for `(key,val)` data. pub trait Join { @@ -33,9 +33,6 @@ pub trait Join { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Join; /// @@ -67,9 +64,6 @@ pub trait Join { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Join; /// @@ -97,9 +91,6 @@ pub trait Join { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Join; /// @@ -131,9 +122,6 @@ pub trait Join { /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Join; /// @@ -232,9 +220,6 @@ pub trait JoinCore where C::Time: Sized, C::Diff: Sized { diff --git a/src/operators/reduce.rs b/src/operators/reduce.rs index b408357b2..b31b02f47 100644 --- a/src/operators/reduce.rs +++ b/src/operators/reduce.rs @@ -5,9 +5,9 @@ //! to the key and the list of values. //! The function is expected to populate a list of output values. -use hashable::Hashable; -use ::{Data, ExchangeData, Collection}; -use ::difference::{Semigroup, Abelian}; +use crate::hashable::Hashable; +use crate::{Data, ExchangeData, Collection}; +use crate::difference::{Semigroup, Abelian}; use timely::order::PartialOrder; use timely::progress::frontier::Antichain; @@ -17,13 +17,13 @@ use timely::dataflow::operators::Operator; use timely::dataflow::channels::pact::Pipeline; use timely::dataflow::operators::Capability; -use operators::arrange::{Arranged, ArrangeByKey, ArrangeBySelf, TraceAgent}; -use lattice::Lattice; -use trace::{Batch, BatchReader, Cursor, Trace, Builder, ExertionLogic}; -use trace::cursor::CursorList; -use trace::implementations::{KeySpine, ValSpine}; +use crate::operators::arrange::{Arranged, ArrangeByKey, ArrangeBySelf, TraceAgent}; +use crate::lattice::Lattice; +use crate::trace::{Batch, BatchReader, Cursor, Trace, Builder, ExertionLogic}; +use crate::trace::cursor::CursorList; +use crate::trace::implementations::{KeySpine, ValSpine}; -use trace::TraceReader; +use crate::trace::TraceReader; /// Extension trait for the `reduce` differential dataflow method. pub trait Reduce where G::Timestamp: Lattice+Ord { @@ -43,9 +43,6 @@ pub trait Reduce where G::Timestamp: L /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Reduce; /// @@ -108,9 +105,6 @@ pub trait Threshold where G::Timestamp: Lattic /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Threshold; /// @@ -135,9 +129,6 @@ pub trait Threshold where G::Timestamp: Lattic /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Threshold; /// @@ -190,9 +181,6 @@ pub trait Count where G::Timestamp: Lattice+Ord /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::Count; /// @@ -248,9 +236,6 @@ pub trait ReduceCore("differential/arrange") + register.get::("differential/arrange") }; let activator = Some(trace.stream.scope().activator_for(&operator_info.address[..])); @@ -501,7 +486,7 @@ where while batch_cursor.key_valid(batch_storage) || exposed_position < exposed.len() { use std::borrow::Borrow; - use trace::cursor::MyTrait; + use crate::trace::cursor::MyTrait; // Determine the next key we will work on; could be synthetic, could be from a batch. let key1 = exposed.get(exposed_position).map(|x| <_ as MyTrait>::borrow_as(&x.0)); @@ -687,10 +672,10 @@ where /// Implementation based on replaying historical and new updates together. mod history_replay { - use ::difference::Semigroup; - use lattice::Lattice; - use trace::Cursor; - use operators::ValueHistory; + use crate::difference::Semigroup; + use crate::lattice::Lattice; + use crate::trace::Cursor; + use crate::operators::ValueHistory; use timely::progress::Antichain; use timely::PartialOrder; @@ -927,7 +912,7 @@ mod history_replay { meet.as_ref().map(|meet| output_replay.advance_buffer_by(&meet)); for &((value, ref time), ref diff) in output_replay.buffer().iter() { if time.less_equal(&next_time) { - use trace::cursor::MyTrait; + use crate::trace::cursor::MyTrait; self.output_buffer.push((<_ as MyTrait>::into_owned(value), diff.clone())); } else { diff --git a/src/operators/threshold.rs b/src/operators/threshold.rs index 9feb2386f..010570b38 100644 --- a/src/operators/threshold.rs +++ b/src/operators/threshold.rs @@ -8,13 +8,13 @@ use timely::dataflow::*; use timely::dataflow::operators::Operator; use timely::dataflow::channels::pact::Pipeline; -use lattice::Lattice; -use ::{ExchangeData, Collection}; -use ::difference::{Semigroup, Abelian}; -use hashable::Hashable; -use collection::AsCollection; -use operators::arrange::{Arranged, ArrangeBySelf}; -use trace::{BatchReader, Cursor, TraceReader}; +use crate::lattice::Lattice; +use crate::{ExchangeData, Collection}; +use crate::difference::{Semigroup, Abelian}; +use crate::hashable::Hashable; +use crate::collection::AsCollection; +use crate::operators::arrange::{Arranged, ArrangeBySelf}; +use crate::trace::{BatchReader, Cursor, TraceReader}; /// Extension trait for the `distinct` differential dataflow method. pub trait ThresholdTotal where G::Timestamp: TotalOrder+Lattice+Ord { @@ -29,9 +29,6 @@ pub trait ThresholdTotal w /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::ThresholdTotal; /// @@ -60,9 +57,6 @@ pub trait ThresholdTotal w /// # Examples /// /// ``` - /// extern crate timely; - /// extern crate differential_dataflow; - /// /// use differential_dataflow::input::Input; /// use differential_dataflow::operators::ThresholdTotal; /// diff --git a/src/trace/description.rs b/src/trace/description.rs index 2604cc522..6b28bf1e9 100644 --- a/src/trace/description.rs +++ b/src/trace/description.rs @@ -55,6 +55,7 @@ //! will often be a logic bug, as `since` does not advance without a corresponding advance in //! times at which data may possibly be sent. +use abomonation_derive::Abomonation; use timely::{PartialOrder, progress::Antichain}; use serde::{Serialize, Deserialize}; diff --git a/src/trace/implementations/huffman_container.rs b/src/trace/implementations/huffman_container.rs index bcfbd0dfd..4097e0b5e 100644 --- a/src/trace/implementations/huffman_container.rs +++ b/src/trace/implementations/huffman_container.rs @@ -2,7 +2,7 @@ use std::collections::BTreeMap; -use trace::implementations::{BatchContainer, OffsetList}; +use crate::trace::implementations::{BatchContainer, OffsetList}; use self::wrapper::Wrapped; use self::encoded::Encoded; @@ -52,7 +52,7 @@ where } } fn copy_push(&mut self, item: &Vec) { - use trace::MyTrait; + use crate::trace::MyTrait; self.copy(<_ as MyTrait>::borrow_as(item)); } fn copy<'a>(&mut self, item: Self::ReadItem<'a>) { @@ -159,7 +159,7 @@ impl Default for HuffmanContainer { mod wrapper { - use trace::MyTrait; + use crate::trace::MyTrait; use super::Encoded; pub struct Wrapped<'a, B: Ord> { diff --git a/src/trace/implementations/merge_batcher.rs b/src/trace/implementations/merge_batcher.rs index 0f4319189..72cf2451a 100644 --- a/src/trace/implementations/merge_batcher.rs +++ b/src/trace/implementations/merge_batcher.rs @@ -5,9 +5,9 @@ use std::collections::VecDeque; use timely::communication::message::RefOrMut; use timely::progress::{frontier::Antichain, Timestamp}; -use ::difference::Semigroup; +use crate::difference::Semigroup; -use trace::{Batcher, Builder}; +use crate::trace::{Batcher, Builder}; /// Creates batches from unordered tuples. pub struct MergeBatcher { diff --git a/src/trace/implementations/merge_batcher_col.rs b/src/trace/implementations/merge_batcher_col.rs index 18a6f0d9a..5e25140f3 100644 --- a/src/trace/implementations/merge_batcher_col.rs +++ b/src/trace/implementations/merge_batcher_col.rs @@ -5,9 +5,9 @@ use timely::communication::message::RefOrMut; use timely::container::columnation::{Columnation, TimelyStack}; use timely::progress::{frontier::Antichain, Timestamp}; -use ::difference::Semigroup; +use crate::difference::Semigroup; -use trace::{Batcher, Builder}; +use crate::trace::{Batcher, Builder}; /// Creates batches from unordered tuples. pub struct ColumnatedMergeBatcher diff --git a/src/trace/implementations/mod.rs b/src/trace/implementations/mod.rs index 5b49e4ea4..38abb760d 100644 --- a/src/trace/implementations/mod.rs +++ b/src/trace/implementations/mod.rs @@ -40,8 +40,8 @@ pub mod spine_fueled; -mod merge_batcher; -pub(crate) mod merge_batcher_col; +pub mod merge_batcher; +pub mod merge_batcher_col; pub use self::merge_batcher::MergeBatcher as Batcher; @@ -56,8 +56,8 @@ pub use self::ord_neu::OrdKeySpine as KeySpine; use std::borrow::{ToOwned}; use timely::container::columnation::{Columnation, TimelyStack}; -use lattice::Lattice; -use difference::Semigroup; +use crate::lattice::Lattice; +use crate::difference::Semigroup; /// A type that names constituent update types. pub trait Update { @@ -220,6 +220,7 @@ where // } use std::convert::TryInto; +use abomonation_derive::Abomonation; /// A list of unsigned integers that uses `u32` elements as long as they are small enough, and switches to `u64` once they are not. #[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Abomonation)] @@ -312,7 +313,7 @@ pub mod containers { use timely::container::columnation::{Columnation, TimelyStack}; use std::borrow::{Borrow, ToOwned}; - use trace::MyTrait; + use crate::trace::MyTrait; /// A general-purpose container resembling `Vec`. pub trait BatchContainer: Default + 'static { diff --git a/src/trace/implementations/ord_neu.rs b/src/trace/implementations/ord_neu.rs index 23d826624..94edbba29 100644 --- a/src/trace/implementations/ord_neu.rs +++ b/src/trace/implementations/ord_neu.rs @@ -10,10 +10,10 @@ use std::rc::Rc; -use trace::implementations::spine_fueled::Spine; -use trace::implementations::merge_batcher::MergeBatcher; -use trace::implementations::merge_batcher_col::ColumnatedMergeBatcher; -use trace::rc_blanket_impls::RcBuilder; +use crate::trace::implementations::spine_fueled::Spine; +use crate::trace::implementations::merge_batcher::MergeBatcher; +use crate::trace::implementations::merge_batcher_col::ColumnatedMergeBatcher; +use crate::trace::rc_blanket_impls::RcBuilder; use super::{Update, Layout, Vector, TStack, Preferred}; @@ -67,11 +67,12 @@ mod val_batch { use std::convert::TryInto; use std::marker::PhantomData; + use abomonation_derive::Abomonation; use timely::progress::{Antichain, frontier::AntichainRef}; - use trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; - use trace::implementations::{BatchContainer, OffsetList}; - use trace::cursor::MyTrait; + use crate::trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; + use crate::trace::implementations::{BatchContainer, OffsetList}; + use crate::trace::cursor::MyTrait; use super::{Layout, Update}; @@ -195,7 +196,7 @@ mod val_batch { fn new(batch1: &OrdValBatch, batch2: &OrdValBatch, compaction_frontier: AntichainRef<::Time>) -> Self { assert!(batch1.upper() == batch2.lower()); - use lattice::Lattice; + use crate::lattice::Lattice; let mut since = batch1.description().since().join(batch2.description().since()); since = since.join(&compaction_frontier.to_owned()); @@ -397,7 +398,7 @@ mod val_batch { for i in lower .. upper { // NB: Here is where we would need to look back if `lower == upper`. let (time, diff) = &source.updates.index(i).into_owned(); - use lattice::Lattice; + use crate::lattice::Lattice; let mut new_time = time.clone(); new_time.advance_by(self.description.since().borrow()); self.update_stash.push((new_time, diff.clone())); @@ -406,7 +407,7 @@ mod val_batch { /// Consolidates `self.updates_stash` and produces the offset to record, if any. fn consolidate_updates(&mut self) -> Option { - use consolidation; + use crate::consolidation; consolidation::consolidate(&mut self.update_stash); if !self.update_stash.is_empty() { // If there is a single element, equal to a just-prior recorded update, @@ -633,11 +634,12 @@ mod key_batch { use std::convert::TryInto; use std::marker::PhantomData; + use abomonation_derive::Abomonation; use timely::progress::{Antichain, frontier::AntichainRef}; - use trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; - use trace::implementations::{BatchContainer, OffsetList}; - use trace::cursor::MyTrait; + use crate::trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; + use crate::trace::implementations::{BatchContainer, OffsetList}; + use crate::trace::cursor::MyTrait; use super::{Layout, Update}; @@ -752,7 +754,7 @@ mod key_batch { fn new(batch1: &OrdKeyBatch, batch2: &OrdKeyBatch, compaction_frontier: AntichainRef<::Time>) -> Self { assert!(batch1.upper() == batch2.lower()); - use lattice::Lattice; + use crate::lattice::Lattice; let mut since = batch1.description().since().join(batch2.description().since()); since = since.join(&compaction_frontier.to_owned()); @@ -867,7 +869,7 @@ mod key_batch { for i in lower .. upper { // NB: Here is where we would need to look back if `lower == upper`. let (time, diff) = &source.updates.index(i); - use lattice::Lattice; + use crate::lattice::Lattice; let mut new_time = time.clone(); new_time.advance_by(self.description.since().borrow()); self.update_stash.push((new_time, diff.clone())); @@ -876,7 +878,7 @@ mod key_batch { /// Consolidates `self.updates_stash` and produces the offset to record, if any. fn consolidate_updates(&mut self) -> Option { - use consolidation; + use crate::consolidation; consolidation::consolidate(&mut self.update_stash); if !self.update_stash.is_empty() { // If there is a single element, equal to a just-prior recorded update, diff --git a/src/trace/implementations/rhh.rs b/src/trace/implementations/rhh.rs index c4c868bd7..38090cdfb 100644 --- a/src/trace/implementations/rhh.rs +++ b/src/trace/implementations/rhh.rs @@ -7,11 +7,11 @@ use std::rc::Rc; -use Hashable; -use trace::implementations::spine_fueled::Spine; -use trace::implementations::merge_batcher::MergeBatcher; -use trace::implementations::merge_batcher_col::ColumnatedMergeBatcher; -use trace::rc_blanket_impls::RcBuilder; +use crate::Hashable; +use crate::trace::implementations::spine_fueled::Spine; +use crate::trace::implementations::merge_batcher::MergeBatcher; +use crate::trace::implementations::merge_batcher_col::ColumnatedMergeBatcher; +use crate::trace::rc_blanket_impls::RcBuilder; use super::{Update, Layout, Vector, TStack}; @@ -48,7 +48,9 @@ pub struct HashWrapper { } use std::cmp::Ordering; -impl PartialOrd for HashWrapper +use abomonation_derive::Abomonation; + +impl PartialOrd for HashWrapper where ::Output: PartialOrd { fn partial_cmp(&self, other: &Self) -> Option { let this_hash = self.inner.hashed(); @@ -76,13 +78,14 @@ mod val_batch { use std::borrow::Borrow; use std::convert::TryInto; use std::marker::PhantomData; + use abomonation_derive::Abomonation; use timely::progress::{Antichain, frontier::AntichainRef}; - use hashable::Hashable; + use crate::hashable::Hashable; - use trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; - use trace::implementations::{BatchContainer, OffsetList}; - use trace::cursor::MyTrait; + use crate::trace::{Batch, BatchReader, Builder, Cursor, Description, Merger}; + use crate::trace::implementations::{BatchContainer, OffsetList}; + use crate::trace::cursor::MyTrait; use super::{Layout, Update, HashOrdered}; @@ -320,7 +323,7 @@ mod val_batch { fn new(batch1: &RhhValBatch, batch2: &RhhValBatch, compaction_frontier: AntichainRef<::Time>) -> Self { assert!(batch1.upper() == batch2.lower()); - use lattice::Lattice; + use crate::lattice::Lattice; let mut since = batch1.description().since().join(batch2.description().since()); since = since.join(&compaction_frontier.to_owned()); @@ -543,7 +546,7 @@ mod val_batch { // NB: Here is where we would need to look back if `lower == upper`. let (time, diff) = &source.updates.index(i); let mut new_time = time.clone(); - use lattice::Lattice; + use crate::lattice::Lattice; new_time.advance_by(self.description.since().borrow()); self.update_stash.push((new_time, diff.clone())); } @@ -551,7 +554,7 @@ mod val_batch { /// Consolidates `self.updates_stash` and produces the offset to record, if any. fn consolidate_updates(&mut self) -> Option { - use consolidation; + use crate::consolidation; consolidation::consolidate(&mut self.update_stash); if !self.update_stash.is_empty() { // If there is a single element, equal to a just-prior recorded update, diff --git a/src/trace/implementations/spine_fueled.rs b/src/trace/implementations/spine_fueled.rs index 9988f9ada..3e8e0dfc9 100644 --- a/src/trace/implementations/spine_fueled.rs +++ b/src/trace/implementations/spine_fueled.rs @@ -71,12 +71,12 @@ use std::fmt::Debug; -use ::logging::Logger; -use ::difference::Semigroup; -use lattice::Lattice; -use trace::{Batch, Batcher, Builder, BatchReader, Trace, TraceReader, ExertionLogic}; -use trace::cursor::CursorList; -use trace::Merger; +use crate::logging::Logger; +use crate::difference::Semigroup; +use crate::lattice::Lattice; +use crate::trace::{Batch, Batcher, Builder, BatchReader, Trace, TraceReader, ExertionLogic}; +use crate::trace::cursor::CursorList; +use crate::trace::Merger; use ::timely::dataflow::operators::generic::OperatorInfo; use ::timely::progress::{Antichain, frontier::AntichainRef}; @@ -272,7 +272,7 @@ where fn new( info: ::timely::dataflow::operators::generic::OperatorInfo, - logging: Option<::logging::Logger>, + logging: Option, activator: Option, ) -> Self { Self::with_effort(1, info, logging, activator) @@ -314,7 +314,7 @@ where fn insert(&mut self, batch: Self::Batch) { // Log the introduction of a batch. - self.logger.as_ref().map(|l| l.log(::logging::BatchEvent { + self.logger.as_ref().map(|l| l.log(crate::logging::BatchEvent { operator: self.operator.global_id, length: batch.len() })); @@ -364,23 +364,23 @@ where for batch in self.merging.drain(..) { match batch { MergeState::Single(Some(batch)) => { - logger.log(::logging::DropEvent { + logger.log(crate::logging::DropEvent { operator: self.operator.global_id, length: batch.len(), }); }, MergeState::Double(MergeVariant::InProgress(batch1, batch2, _)) => { - logger.log(::logging::DropEvent { + logger.log(crate::logging::DropEvent { operator: self.operator.global_id, length: batch1.len(), }); - logger.log(::logging::DropEvent { + logger.log(crate::logging::DropEvent { operator: self.operator.global_id, length: batch2.len(), }); }, MergeState::Double(MergeVariant::Complete(Some((batch, _)))) => { - logger.log(::logging::DropEvent { + logger.log(crate::logging::DropEvent { operator: self.operator.global_id, length: batch.len(), }); @@ -389,7 +389,7 @@ where } } for batch in self.pending.drain(..) { - logger.log(::logging::DropEvent { + logger.log(crate::logging::DropEvent { operator: self.operator.global_id, length: batch.len(), }); @@ -443,7 +443,7 @@ where pub fn with_effort( mut effort: usize, operator: OperatorInfo, - logger: Option<::logging::Logger>, + logger: Option, activator: Option, ) -> Self { @@ -679,7 +679,7 @@ where MergeState::Single(old) => { // Log the initiation of a merge. self.logger.as_ref().map(|l| l.log( - ::logging::MergeEvent { + crate::logging::MergeEvent { operator: self.operator.global_id, scale: index, length1: old.as_ref().map(|b| b.len()).unwrap_or(0), @@ -702,7 +702,7 @@ where if let Some((input1, input2)) = inputs { // Log the completion of a merge from existing parts. self.logger.as_ref().map(|l| l.log( - ::logging::MergeEvent { + crate::logging::MergeEvent { operator: self.operator.global_id, scale: index, length1: input1.len(), diff --git a/src/trace/mod.rs b/src/trace/mod.rs index f31aa3803..53c9c0fb8 100644 --- a/src/trace/mod.rs +++ b/src/trace/mod.rs @@ -16,7 +16,7 @@ use timely::communication::message::RefOrMut; use timely::progress::{Antichain, frontier::AntichainRef}; use timely::progress::Timestamp; -use trace::cursor::MyTrait; +use crate::trace::cursor::MyTrait; // use ::difference::Semigroup; pub use self::cursor::Cursor; @@ -220,7 +220,7 @@ where ::Batch: Batch { /// Allocates a new empty trace. fn new( info: ::timely::dataflow::operators::generic::OperatorInfo, - logging: Option<::logging::Logger>, + logging: Option, activator: Option, ) -> Self; @@ -483,9 +483,6 @@ pub mod rc_blanket_impls { /// Blanket implementations for reference counted batches. pub mod abomonated_blanket_impls { - - extern crate abomonation; - use abomonation::{Abomonation, measure}; use abomonation::abomonated::Abomonated; use timely::progress::{Antichain, frontier::AntichainRef}; diff --git a/src/trace/wrappers/enter.rs b/src/trace/wrappers/enter.rs index cd9c17b29..063d1abf2 100644 --- a/src/trace/wrappers/enter.rs +++ b/src/trace/wrappers/enter.rs @@ -5,9 +5,9 @@ use timely::progress::timestamp::Refines; use timely::progress::Timestamp; use timely::progress::{Antichain, frontier::AntichainRef}; -use lattice::Lattice; -use trace::{TraceReader, BatchReader, Description}; -use trace::cursor::Cursor; +use crate::lattice::Lattice; +use crate::trace::{TraceReader, BatchReader, Description}; +use crate::trace::cursor::Cursor; /// Wrapper to provide trace to nested scope. pub struct TraceEnter diff --git a/src/trace/wrappers/enter_at.rs b/src/trace/wrappers/enter_at.rs index 985577342..75b398343 100644 --- a/src/trace/wrappers/enter_at.rs +++ b/src/trace/wrappers/enter_at.rs @@ -4,9 +4,9 @@ use timely::progress::timestamp::Refines; use timely::progress::Timestamp; use timely::progress::{Antichain, frontier::AntichainRef}; -use lattice::Lattice; -use trace::{TraceReader, BatchReader, Description}; -use trace::cursor::Cursor; +use crate::lattice::Lattice; +use crate::trace::{TraceReader, BatchReader, Description}; +use crate::trace::cursor::Cursor; /// Wrapper to provide trace to nested scope. /// diff --git a/src/trace/wrappers/filter.rs b/src/trace/wrappers/filter.rs index d58fc6e71..5a4ebe160 100644 --- a/src/trace/wrappers/filter.rs +++ b/src/trace/wrappers/filter.rs @@ -3,8 +3,8 @@ use timely::progress::Timestamp; use timely::progress::frontier::AntichainRef; -use trace::{TraceReader, BatchReader, Description}; -use trace::cursor::Cursor; +use crate::trace::{TraceReader, BatchReader, Description}; +use crate::trace::cursor::Cursor; /// Wrapper to provide trace to nested scope. pub struct TraceFilter { diff --git a/src/trace/wrappers/freeze.rs b/src/trace/wrappers/freeze.rs index d7c6838ab..0b95ed049 100644 --- a/src/trace/wrappers/freeze.rs +++ b/src/trace/wrappers/freeze.rs @@ -23,10 +23,10 @@ use timely::dataflow::Scope; use timely::dataflow::operators::Map; use timely::progress::frontier::AntichainRef; -use operators::arrange::Arranged; -use lattice::Lattice; -use trace::{TraceReader, BatchReader, Description}; -use trace::cursor::Cursor; +use crate::operators::arrange::Arranged; +use crate::lattice::Lattice; +use crate::trace::{TraceReader, BatchReader, Description}; +use crate::trace::cursor::Cursor; /// Freezes updates to an arrangement using a supplied function. /// diff --git a/src/trace/wrappers/frontier.rs b/src/trace/wrappers/frontier.rs index c7788c0b6..aa64c601b 100644 --- a/src/trace/wrappers/frontier.rs +++ b/src/trace/wrappers/frontier.rs @@ -9,8 +9,8 @@ use timely::progress::Timestamp; use timely::progress::{Antichain, frontier::AntichainRef}; -use trace::{TraceReader, BatchReader, Description}; -use trace::cursor::Cursor; +use crate::trace::{TraceReader, BatchReader, Description}; +use crate::trace::cursor::Cursor; use crate::lattice::Lattice; /// Wrapper to provide trace to nested scope. diff --git a/src/trace/wrappers/rc.rs b/src/trace/wrappers/rc.rs index 9c7b7af4c..e7cc221b6 100644 --- a/src/trace/wrappers/rc.rs +++ b/src/trace/wrappers/rc.rs @@ -16,8 +16,8 @@ use std::cell::RefCell; use timely::progress::{Antichain, frontier::{AntichainRef, MutableAntichain}}; -use lattice::Lattice; -use trace::TraceReader; +use crate::lattice::Lattice; +use crate::trace::TraceReader; /// A wrapper around a trace which tracks the frontiers of all referees. /// diff --git a/tests/bfs.rs b/tests/bfs.rs index a8d0f61e4..8de5c8274 100644 --- a/tests/bfs.rs +++ b/tests/bfs.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use std::sync::{Arc, Mutex}; diff --git a/tests/import.rs b/tests/import.rs index fb2fd6136..8176f14af 100644 --- a/tests/import.rs +++ b/tests/import.rs @@ -1,7 +1,3 @@ -extern crate timely; -extern crate itertools; -extern crate differential_dataflow; - use timely::dataflow::operators::*; use timely::dataflow::operators::capture::Extract; use timely::progress::frontier::AntichainRef; diff --git a/tests/join.rs b/tests/join.rs index 2c956a4b1..94893b730 100644 --- a/tests/join.rs +++ b/tests/join.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::{ToStream, Capture, Map}; use timely::dataflow::operators::capture::Extract; use differential_dataflow::AsCollection; diff --git a/tests/reduce.rs b/tests/reduce.rs index 17f395c85..88ac5477a 100644 --- a/tests/reduce.rs +++ b/tests/reduce.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::{ToStream, Capture, Map}; use timely::dataflow::operators::capture::Extract; use differential_dataflow::AsCollection; diff --git a/tests/scc.rs b/tests/scc.rs index 76670d392..de5002026 100644 --- a/tests/scc.rs +++ b/tests/scc.rs @@ -1,7 +1,3 @@ -extern crate rand; -extern crate timely; -extern crate differential_dataflow; - use rand::{Rng, SeedableRng, StdRng}; use std::sync::{Arc, Mutex}; diff --git a/tests/trace.rs b/tests/trace.rs index 581cbcd93..abf8b539f 100644 --- a/tests/trace.rs +++ b/tests/trace.rs @@ -1,6 +1,3 @@ -extern crate timely; -extern crate differential_dataflow; - use timely::dataflow::operators::generic::OperatorInfo; use timely::progress::{Antichain, frontier::AntichainRef};