Releases: hydro-project/hydro
hydroflow_plus v0.8.0
Reverted
-
"feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183
This reverts commit 997d90a.We have been trying to figure out the semantics a bit, and want to give
it more thought before we commit to maintaining itCan un-revert and adjust the semantics later when we use it
Refactor (BREAKING)
- require lifetime on
perist*()
operators
Commit Statistics
- 2 commits contributed to the release over the course of 20 calendar days.
- 59 days passed between releases.
- 2 commits were understood as conventional.
- 3 unique issues were worked on: #1143, #1216, #1295
Commit Details
hydroflow_macro v0.8.0
Unchanged from previous release.
Chore
- mark
hydroflow_datalog
andhydroflow_macro
as unchanged for 0.8.0 release
Commit Statistics
- 1 commit contributed to the release.
- 59 days passed between releases.
- 1 commit was understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Mark
hydroflow_datalog
andhydroflow_macro
as unchanged for 0.8.0 release (186310f)
- Mark
hydroflow_lang v0.8.0
Documentation
- cleanup for
clippy::doc_lazy_continuation
- test code snipets, generate output for
surface_flows
, fix #814 - fix
dest_sink
tokio links
Bug Fixes
-
allow
ensure_singleton_referencers_succeed_persist
to ignoreidentity
/tee
/union
operators, helps #1290
Adds tests forensure_singleton_referencers_succeed_persist
persist
insertion behaviorFixes some cases of #1290, when just identity operators
(union/tee/identity) are between the singleton referencer and its
preceding flow state.TODO track per-operator instead: #1311
-
improve spanning of singleton substitution code, add compile-fail test, fix #1294
Another small spanning improvement -
add
add_state_tick
to state API, reset at end of each tick, fix #1298
Option 2 of #1298- Main feature in the title is in
src/scheduled/{context,graph}.rs
- Codegen for some stateful operators (those which can be used as singletons, and some others) is changed to use the new API.
- Add a test
test_cartesian_product_tick_state
for #1298 - Rest of the diff is snapshot changes
Other
'tick
state will need to be cleared, but existing implementation does that when the iterator runs, which is good enough. There is only a problem if a singleton can reference the state before the iterator runs, in that case. - Main feature in the title is in
-
allow use of generics in
demux_enum::<...>()
op
ensures turbofish syntax for the match clauses, which is needed when there are generic parameters in the typeadds a test as well
Refactor
- improve diagnostics for missing generic params
Improves diagnostic messages a bit for when no generic params are
supplied but some are expected. Previously this would span to the entire
macro invocation. - improve diagnostics by re-spanning
#root
Inspired by fixing the spans indemux_enum
in #1271- re-span
#root
toop_span
for better diagnostics - use better span
func.inputs
indemux
anddemux_enum
- clippy fixups in
source_json
,source_stdin
- fix #1201 (for the most part)
- re-span
Reverted
-
"feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183
This reverts commit 997d90a.We have been trying to figure out the semantics a bit, and want to give
it more thought before we commit to maintaining itCan un-revert and adjust the semantics later when we use it
Style
- fix unnecessary
&
for clippy
Bug Fixes (BREAKING)
-
remove singleton referencer
persist::<'static>()
insertion
Also enables singletons forpersist()
and ensures that only the
'static
lifetime is usedSingletons are supposed to act like
cross_join()
. I.e. if we have this
code:stream -> filter(|item| ... #y ...) -> ...
It should behave equivalently to
stream -> cj[0]; y -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
This has a very unintuitive replaying behavior, if
y
receives multiple
updates:y
receives an item10
stream
receives an item20
(10, 20)
is emittedy
receives an item11
(11, 20)
is emitted
In this case the item20
gets emitted twice.
To emulate this unintuitive behavior, we currently ensure that a
persist::<'static>()
exists before operator that references the
singleton (filter
, in this case). (Note that this is equivalent to
cross_join::<'static>()
and notcross_join::<'tick>()
)However singletons also have had a different mechanism that affects
this- currently singleton references create a next-stratum constraint,
that ensures a singleton referencer must be in a later stratum than the
singleton it is referencing.Note that this actually prevents the example situation above from
happening-- the updates toy
will be received all at once at the start
of the next stratum.This means that actually, currently singletons are equivalent to
something like:stream -> cj[0]; y -> next_stratum() -> last() -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
last()
is a hypothetical operator that only keeps the most recent item
output byy
.next_stratum() -> last()
is equivalent toreduce(|acc, item| *acc = item)
(since that comes with a stratum barrier). So
technically this is a slightly different behavior than just cross_join,
but it is more intuitive.stream -> cj[0]; y -> reduce(|acc, item| { *acc = item; }) -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
Also fixes #1293
Refactor (BREAKING)
- require lifetime on
perist*()
operators
Commit Statistics
- 13 commits contributed to the release over the course of 48 calendar days.
- 59 days passed between releases.
- 13 commits were understood as conventional.
- 13 unique issues were worked on: #1143, #1216, #1260, #1266, #1271, #1280, #1285, #1295, #1296, #1297, #1300, #1312, #1332
Commit Details
view details
- #1143
- #1216
- #1260
- #1266
- Fix
dest_sink
tokio links (1bc6c61)
- Fix
- #1271
- Allow use of generics in
demux_enum::<...>()
op (b79f1a4)
- Allow use of generics in
- #1280
- Improve diagnostics by re-spanning
#root
(70a3f9e)
- Improve diagnostics by re-spanning
- #1285
- Cleanup for
clippy::doc_lazy_continuation
(14067e9)
- Cleanup for
- #1295
- Require lifetime on
perist*()
operators (67c0e51)
- Require lifetime on
- #1296
- Improve diagnostics for missing generic params (f1442a0)
- #1297
- #1300
- #1312
- #1332
- Remove singleton referencer
persist::<'static>()
insertion (755e8a6)
- Remove singleton referencer
- Uncategorized
- Fix unnecessary
&
for clippy (b7275c2)
- Fix unnecessary
hydroflow_datalog_core v0.8.0
New Features
-
add
#[derive(Lattice)]
derive macros, fix #1247
This adds derive macros to allow user-created macros. Each field must be
a lattice.Example usage:
struct MyLattice<KeySet, Epoch> where KeySet: Collection, Epoch: Ord, { keys: SetUnion<KeySet>, epoch: Max<Epoch>, }
Uses
#[derive(Lattice)]
for thelattices
libraryPair
lattice.
Also contains some cleanup in thelattices
crate.
Bug Fixes
-
add
add_state_tick
to state API, reset at end of each tick, fix #1298
Option 2 of #1298- Main feature in the title is in
src/scheduled/{context,graph}.rs
- Codegen for some stateful operators (those which can be used as singletons, and some others) is changed to use the new API.
- Add a test
test_cartesian_product_tick_state
for #1298 - Rest of the diff is snapshot changes
Other
'tick
state will need to be cleared, but existing implementation does that when the iterator runs, which is good enough. There is only a problem if a singleton can reference the state before the iterator runs, in that case. - Main feature in the title is in
Bug Fixes (BREAKING)
-
remove singleton referencer
persist::<'static>()
insertion
Also enables singletons forpersist()
and ensures that only the
'static
lifetime is usedSingletons are supposed to act like
cross_join()
. I.e. if we have this
code:stream -> filter(|item| ... #y ...) -> ...
It should behave equivalently to
stream -> cj[0]; y -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
This has a very unintuitive replaying behavior, if
y
receives multiple
updates:y
receives an item10
stream
receives an item20
(10, 20)
is emittedy
receives an item11
(11, 20)
is emitted
In this case the item20
gets emitted twice.
To emulate this unintuitive behavior, we currently ensure that a
persist::<'static>()
exists before operator that references the
singleton (filter
, in this case). (Note that this is equivalent to
cross_join::<'static>()
and notcross_join::<'tick>()
)However singletons also have had a different mechanism that affects
this- currently singleton references create a next-stratum constraint,
that ensures a singleton referencer must be in a later stratum than the
singleton it is referencing.Note that this actually prevents the example situation above from
happening-- the updates toy
will be received all at once at the start
of the next stratum.This means that actually, currently singletons are equivalent to
something like:stream -> cj[0]; y -> next_stratum() -> last() -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
last()
is a hypothetical operator that only keeps the most recent item
output byy
.next_stratum() -> last()
is equivalent toreduce(|acc, item| *acc = item)
(since that comes with a stratum barrier). So
technically this is a slightly different behavior than just cross_join,
but it is more intuitive.stream -> cj[0]; y -> reduce(|acc, item| { *acc = item; }) -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
Also fixes #1293
Refactor (BREAKING)
- require lifetime on
perist*()
operators
Commit Statistics
- 4 commits contributed to the release over the course of 49 calendar days.
- 59 days passed between releases.
- 4 commits were understood as conventional.
- 4 unique issues were worked on: #1250, #1295, #1300, #1332
Commit Details
hydroflow_datalog v0.8.0
Unchanged from previous release.
Chore
- mark
hydroflow_datalog
andhydroflow_macro
as unchanged for 0.8.0 release
Commit Statistics
- 1 commit contributed to the release.
- 59 days passed between releases.
- 1 commit was understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Mark
hydroflow_datalog
andhydroflow_macro
as unchanged for 0.8.0 release (186310f)
- Mark
hydroflow v0.8.0
Chore
- update pinned rust version to 2024-06-17
Documentation
- test code snipets, generate output for
surface_flows
, fix #814
Bug Fixes
-
allow
ensure_singleton_referencers_succeed_persist
to ignoreidentity
/tee
/union
operators, helps #1290
Adds tests forensure_singleton_referencers_succeed_persist
persist
insertion behaviorFixes some cases of #1290, when just identity operators
(union/tee/identity) are between the singleton referencer and its
preceding flow state.TODO track per-operator instead: #1311
-
improve spanning of singleton substitution code, add compile-fail test, fix #1294
Another small spanning improvement -
add
add_state_tick
to state API, reset at end of each tick, fix #1298
Option 2 of #1298- Main feature in the title is in
src/scheduled/{context,graph}.rs
- Codegen for some stateful operators (those which can be used as singletons, and some others) is changed to use the new API.
- Add a test
test_cartesian_product_tick_state
for #1298 - Rest of the diff is snapshot changes
Other
'tick
state will need to be cleared, but existing implementation does that when the iterator runs, which is good enough. There is only a problem if a singleton can reference the state before the iterator runs, in that case. - Main feature in the title is in
-
allow use of generics in
demux_enum::<...>()
op
ensures turbofish syntax for the match clauses, which is needed when there are generic parameters in the typeadds a test as well
-
yield before
collect_ready_async
to ensure background async tasks can send to the stream -
make sure tasks are spawned!!!!
fix bug introduced in #978 -
Make inner for
WithTop
&WithBot
private
Option<T>
is not a lattice, so it is unsafe to expose as public.I also updated documentation to lead with intention before
implementation (minor cleanup).
Refactor
- improve diagnostics for missing generic params
Improves diagnostic messages a bit for when no generic params are
supplied but some are expected. Previously this would span to the entire
macro invocation. - improve diagnostics by re-spanning
#root
Inspired by fixing the spans indemux_enum
in #1271- re-span
#root
toop_span
for better diagnostics - use better span
func.inputs
indemux
anddemux_enum
- clippy fixups in
source_json
,source_stdin
- fix #1201 (for the most part)
- re-span
Reverted
-
"feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183
This reverts commit 997d90a.We have been trying to figure out the semantics a bit, and want to give
it more thought before we commit to maintaining itCan un-revert and adjust the semantics later when we use it
Test
- fix
fold_keyed()
and addreduce_keyed()
compile-fail tests, fix #1279
Bug Fixes (BREAKING)
-
remove singleton referencer
persist::<'static>()
insertion
Also enables singletons forpersist()
and ensures that only the
'static
lifetime is usedSingletons are supposed to act like
cross_join()
. I.e. if we have this
code:stream -> filter(|item| ... #y ...) -> ...
It should behave equivalently to
stream -> cj[0]; y -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
This has a very unintuitive replaying behavior, if
y
receives multiple
updates:y
receives an item10
stream
receives an item20
(10, 20)
is emittedy
receives an item11
(11, 20)
is emitted
In this case the item20
gets emitted twice.
To emulate this unintuitive behavior, we currently ensure that a
persist::<'static>()
exists before operator that references the
singleton (filter
, in this case). (Note that this is equivalent to
cross_join::<'static>()
and notcross_join::<'tick>()
)However singletons also have had a different mechanism that affects
this- currently singleton references create a next-stratum constraint,
that ensures a singleton referencer must be in a later stratum than the
singleton it is referencing.Note that this actually prevents the example situation above from
happening-- the updates toy
will be received all at once at the start
of the next stratum.This means that actually, currently singletons are equivalent to
something like:stream -> cj[0]; y -> next_stratum() -> last() -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
last()
is a hypothetical operator that only keeps the most recent item
output byy
.next_stratum() -> last()
is equivalent toreduce(|acc, item| *acc = item)
(since that comes with a stratum barrier). So
technically this is a slightly different behavior than just cross_join,
but it is more intuitive.stream -> cj[0]; y -> reduce(|acc, item| { *acc = item; }) -> cj[1]; cj = cross_join() -> filter(|(item, y)| ...) -> ...
Also fixes #1293
Refactor (BREAKING)
- require lifetime on
perist*()
operators
Style (BREAKING)
- enable clippy
upper-case-acronyms-aggressive
- rename
GCP
->Gcp
,NodeID
->NodeId
- update CI
cargo-generate
template testing to use PR's branch instead
of whatevermain
happens to be
- rename
Commit Statistics
- 16 commits contributed to the release over the course of 54 calendar days.
- 59 days passed between releases.
- 16 commits were understood as conventional.
- 17 unique issues were worked on: #1143, #1216, #1244, #1260, #1271, #1273, #1274, #1280, #1283, #1295, #1296, #1297, #1300, #1309, #1312, #1332, #1345
Commit Details
view details
- #1143
- #1216
- #1244
- Make inner for
WithTop
&WithBot
private (1ad690b)
- Make inner for
- #1260
- #1271
- Allow use of generics in
demux_enum::<...>()
op (b79f1a4)
- Allow use of generics in
- #1273
- Make sure tasks are spawned!!!! (39ad0d6)
- #1274
- Yield before
collect_ready_async
to ensure background async tasks can send to the stream (dfb5ec9)
- Yield before
- #1280
- Improve diagnostics by re-spanning
#root
(70a3f9e)
- Improve diagnostics by re-spanning
- #1283
- #1295
- Require lifetime on
perist*()
operators (67c0e51)
- Require lifetime on
- #1296
- Improve diagnostics for missing generic params (f1442a0)
- #1297
- #1300
- #1309
- Update pinned rust version to 2024-06-17 (3098f77)
- #1312
- #1332
- Remove singleton referencer
persist::<'static>()
insertion (755e8a6)
- Remove singleton referencer
- #1345
- Enable clippy
upper-case-acronyms-aggressive
(12b8ba5)
- Enable clippy
hydro_deploy v0.8.0
Refactor
-
remove unneeded
Arc<RwLock<
wrapping oflaunch_binary
return value (1/3)Curious if there was any intention behind why it was
Arc<RwLock<
?I think before some refactors we took the I/O handles instead of using broadcast channels.
-
build cache cleanup
- Replace mystery tuple with new
struct BuildOutput
- Replace
Mutex
andArc
-infestedHashMap
withmemo-map
crate,
greatly simplifying build cache typing - Remove redundant build caching in
HydroflowCrateService
, expose and
use cache parameters asBuildParams
- Remove
once_cell
andasync-once-cell
dependencies, usestd
's
OnceLock
- Add
Failed to execute command: {}
context toperf
error message - Cleanup some repeated
format!
expressions
- Replace mystery tuple with new
Style
- rename
SSH
->Ssh
Refactor (BREAKING)
-
make
Service::collect_resources
take&self
instead of&mut self
#430 but still hasRwLock
wrappingDepends on #1347
-
make
Host
trait use&self
interior mutability to removeRwLock
wrappings #430
Depends on #1346 -
Make
Host::provision
not async anymore
I noticed that none of the method impls have anyawait
s -
make
HydroflowSource
,HydroflowSink
traits use&self
interior mutability to removeRwLock
wrappings #430
Depends on #1339 -
replace
async-channel
withtokio::sync::mpsc::unbounded_channel
Depends on #1339We could make the publicly facing
stdout
,stderr
APIs returnimpl Stream<Output = String>
in the future, maybe -
replace some uses of
tokio::sync::RwLock
withstd::sync::Mutex
#430 (3/3)
Style (BREAKING)
- enable clippy
upper-case-acronyms-aggressive
- rename
GCP
->Gcp
,NodeID
->NodeId
- update CI
cargo-generate
template testing to use PR's branch instead
of whatevermain
happens to be
- rename
Commit Statistics
- 10 commits contributed to the release over the course of 10 calendar days.
- 59 days passed between releases.
- 10 commits were understood as conventional.
- 10 unique issues were worked on: #1334, #1338, #1339, #1340, #1343, #1345, #1346, #1347, #1348, #1356
Commit Details
view details
- #1334
- Build cache cleanup (0feae74)
- #1338
- Remove unneeded
Arc<RwLock<
wrapping oflaunch_binary
return value (1/3) (e3e6933)
- Remove unneeded
- #1339
- #1340
- Rename
SSH
->Ssh
(947ebc1)
- Rename
- #1343
- Make
Host::provision
not async anymore (f536ecc)
- Make
- #1345
- Enable clippy
upper-case-acronyms-aggressive
(12b8ba5)
- Enable clippy
- #1346
- #1347
- #1348
- Make
Service::collect_resources
take&self
instead of&mut self
(2286558)
- Make
- #1356
- Replace
async-channel
withtokio::sync::mpsc::unbounded_channel
(6039078)
- Replace
hydro_cli v0.8.0
Chore
- update pinned rust version to 2024-06-17
Refactor
- build cache cleanup
- Replace mystery tuple with new
struct BuildOutput
- Replace
Mutex
andArc
-infestedHashMap
withmemo-map
crate,
greatly simplifying build cache typing - Remove redundant build caching in
HydroflowCrateService
, expose and
use cache parameters asBuildParams
- Remove
once_cell
andasync-once-cell
dependencies, usestd
's
OnceLock
- Add
Failed to execute command: {}
context toperf
error message - Cleanup some repeated
format!
expressions
- Replace mystery tuple with new
Style
- rename
SSH
->Ssh
Refactor (BREAKING)
-
make
Host
trait use&self
interior mutability to removeRwLock
wrappings #430
Depends on #1346 -
make
HydroflowSource
,HydroflowSink
traits use&self
interior mutability to removeRwLock
wrappings #430
Depends on #1339 -
replace
async-channel
withtokio::sync::mpsc::unbounded_channel
Depends on #1339We could make the publicly facing
stdout
,stderr
APIs returnimpl Stream<Output = String>
in the future, maybe -
replace some uses of
tokio::sync::RwLock
withstd::sync::Mutex
#430 (3/3)
Style (BREAKING)
- enable clippy
upper-case-acronyms-aggressive
- rename
GCP
->Gcp
,NodeID
->NodeId
- update CI
cargo-generate
template testing to use PR's branch instead
of whatevermain
happens to be
- rename
Commit Statistics
- 8 commits contributed to the release over the course of 34 calendar days.
- 59 days passed between releases.
- 8 commits were understood as conventional.
- 8 unique issues were worked on: #1309, #1334, #1339, #1340, #1345, #1346, #1347, #1356
Commit Details
stageleft_tool v0.2.0
Chore
- expect custom config names to prevent warnings
See
https://doc.rust-lang.org/nightly/cargo/reference/build-scripts.html#rustc-check-cfg
New Features
- re-compile staged sources for the macro at the top level
Commit Statistics
- 2 commits contributed to the release over the course of 43 calendar days.
- 44 days passed between releases.
- 2 commits were understood as conventional.
- 2 unique issues were worked on: #1104, #1192
Commit Details
stageleft_macro v0.2.0
New Features
- re-compile staged sources for the macro at the top level
Bug Fixes
- handle send_bincode with local structs
fix(hydroflow_plus): handle send_bincode with local structs
Commit Statistics
- 2 commits contributed to the release over the course of 43 calendar days.
- 48 days passed between releases.
- 2 commits were understood as conventional.
- 2 unique issues were worked on: #1104, #1151