You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+35-1Lines changed: 35 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,46 @@ the format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
4
4
5
5
## unreleased
6
6
7
+
### changed
8
+
9
+
- signal graph processed in deterministic topological order instead of the previous nondeterministic depth first order
10
+
-`SignalBuilder::*` methods moved to free functions in the `signal` module (e.g. `SignalBuilder::always` -> `signal::always`)
11
+
-`JonmoBuilder` renamed to `jonmo::Builder`
12
+
-`jonmo::Builder` is now lock-free
13
+
-`jonmo::Builder::hold_signals` renamed to `jonmo::Builder::hold_tasks` and takes `Box<dyn SignalTask>`s instead of `SignalHandles`
14
+
- renamed `SignalExt::combine` to `SignalExt::zip`
15
+
-`MutableVecBuilder`/`MutableBTreeMapBuilder` changed to `MutableVec::builder()`/`MutableBTreeMap::builder()` with simple chainable `.values` and `.with_values` methods
16
+
- removed self item `Clone` bound from `SignalVecExt::map_signal` and `SignalVecExt::filter_map`
17
+
-`.get_mut`s unwrapped and `.get_entity_mut`s changed to `.entity_mut` in cases where they were silently ignoring invariant violations
18
+
19
+
### added
20
+
-`SignalExt/SignalVecExt/SignalMapExt::schedule`, enabling granular control of which schedule each node in the signal graph runs during
21
+
-`SignalExt::take`
22
+
-`SignalExt::skip`
23
+
-`signal::once`
24
+
-`signal::from_component_changed`
25
+
-`signal::from_resource_changed`
26
+
-`signal::zip!`, a variadic flattened version of `SignalExt::zip`
27
+
-`track_caller` derive for panicking `LazyEntity` methods
28
+
- panic (debug only) or error log that cloning `jonmo::Builder`s at runtime is a bug
29
+
30
+
### fixed
31
+
32
+
- deadlock when despawning `MutableVec/BTreeMap`s during another `MutableVec/BTreeMap` despawn
33
+
- initially empty `MutableVec/BTreeMap`s work as expected when output to `.switch_signal_vec/map`
34
+
-`SignalVecExt::debug` and `SignalMapExt::debug` now log correct code location
35
+
36
+
### removed
37
+
-`*_lazy` signal builder functions, the non-`lazy` versions now take both `Entity` and `LazyEntity`
38
+
-`jonmo::Builder::signal_from_*` methods, use corresponding `signal` building functions with `.task()` and `jonmo::Builder::hold_tasks` instead
39
+
-`jonmo::Builder::component_signal_from_*` methods, use corresponding `signal` building functions with `jonmo::Builder::component_signal` instead
40
+
7
41
# 0.5.0 (2025-12-19)
8
42
9
43
### changed
10
44
11
45
-`.entity_sync` renamed to `.lazy_entity`
12
-
-`SignalExt::combine`always `.clone`s its latest upstream outputs instead of `.take`-ing them
46
+
-`SignalExt::combine`emits its latest upstream outputs every frame, unlike previously, when it only emitted on frames where the latest output pair was yet to be emitted
Copy file name to clipboardExpand all lines: README.md
+11-14Lines changed: 11 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
in bengali, jonmo means "birth"
9
9
```
10
10
11
-
[jonmo](https://github.com/databasedav/jonmo) provides an ergonomic, functional, and declarative API for specifying Bevy [system](https://docs.rs/bevy/latest/bevy/ecs/system/index.html) dependency graphs, where "output" handles to nodes of the graph are canonically referred to as "signals". Building upon these signals, jonmo offers a high level [entity builder](https://docs.rs/jonmo/latest/jonmo/builder/struct.JonmoBuilder.html) which enables one to declare reactive entities, components, and children using a familiar fluent syntax with semantics and API ported from the incredible [FRP](https://en.wikipedia.org/wiki/Functional_reactive_programming) signals of [futures-signals](https://github.com/Pauan/rust-signals) and its web UI dependents [MoonZoon](https://github.com/MoonZoon/MoonZoon) and [Dominator](https://github.com/Pauan/rust-dominator).
11
+
[jonmo](https://github.com/databasedav/jonmo) provides an ergonomic, functional, and declarative API for specifying Bevy [system](https://docs.rs/bevy/latest/bevy/ecs/system/index.html) dependency graphs, where "output" handles to nodes of the graph are canonically referred to as "signals". Building upon these signals, jonmo offers a high level [entity builder](https://docs.rs/jonmo/latest/jonmo/builder/struct.Builder.html) which enables one to declare reactive entities, components, and children using a familiar fluent syntax with semantics and API ported from the incredible [FRP](https://en.wikipedia.org/wiki/Functional_reactive_programming) signals of [futures-signals](https://github.com/Pauan/rust-signals) and its web UI dependents [MoonZoon](https://github.com/MoonZoon/MoonZoon) and [Dominator](https://github.com/Pauan/rust-dominator).
12
12
13
13
The runtime of jonmo is quite simple; every frame, the outputs of systems are forwarded to their dependants, recursively. The complexity and power of jonmo really emerges from its monadic signal combinators, defined within the [`SignalExt`](https://docs.rs/jonmo/latest/jonmo/signal/trait.SignalExt.html), [`SignalVecExt`](https://docs.rs/jonmo/latest/jonmo/signal_vec/trait.SignalVecExt.html), and [`SignalMapExt`](https://docs.rs/jonmo/latest/jonmo/signal_map/trait.SignalMapExt.html) traits (ported from futures-signals' traits of the same name), which internally manage special Bevy systems that allow for the declarative composition of complex data flows with minimalistic, high-level, signals-oriented methods.
0 commit comments