Ruben De Smet
b1ec460b9a
Implement Channel::poll_receive(..) -> Poll<T>
2023-08-11 13:22:56 +02:00
Ruben De Smet
f9d251cd5c
Channel poll methods return Poll instead of bool
2023-08-11 12:13:46 +02:00
Ruben De Smet
b658f10db9
Expose poll_ready_to_{send,receive} in Sender/Receiver
2023-08-11 12:13:42 +02:00
Sam Lakerveld
2ab9a07b64
embassy-sync: manual Copy impls for channel and pipe
2023-08-08 11:22:01 +02:00
Dario Nieuwenhuis
5d5cd23715
Update to embedded-io 0.5 ( #1752 )
2023-08-07 13:43:09 +02:00
xoviat
890d113b85
wpan: fully implement initial draft concept
2023-07-18 18:28:12 -05:00
Dario Nieuwenhuis
f5ca687e9b
sync/pipe: fix doc typos.
2023-06-27 23:49:12 +02:00
Dario Nieuwenhuis
3465452a93
fmt: remove unused defmt::timestamp!
2023-06-09 03:33:39 +02:00
ZhangYong
24c4ea71b1
sync/pipe: write all user data to pipe
...
sync/pipe: add write_all function
2023-06-04 22:29:59 +08:00
Dario Nieuwenhuis
1d8321b821
Use make_static! from static-cell v1.1
2023-06-01 01:42:34 +02:00
Dario Nieuwenhuis
3081ecf301
sync: do will_wake check in MultiWakerRegistration.
2023-05-26 13:17:39 +02:00
Dario Nieuwenhuis
9f7392474b
Update Rust nightly.
2023-05-19 17:12:39 +02:00
Dario Nieuwenhuis
577f060d24
Release embassy-sync v0.2.0
2023-04-13 23:40:49 +02:00
Dario Nieuwenhuis
80972f1e0e
executor,sync: add support for turbo-wakers.
...
This is a `core` patch to make wakers 1 word (the task pointer) instead of 2 (task pointer + vtable). It allows having the "waker optimization" we had a while back on `WakerRegistration/AtomicWaker`, but EVERYWHERE, without patching all crates.
Advantages:
- Less memory usage.
- Faster.
- `AtomicWaker` can actually use atomics to load/store the waker, No critical section needed.
- No `dyn` call, which means `cargo-call-stack` can now see through wakes.
Disadvantages:
- You have to patch `core`...
- Breaks all executors and other things that create wakers, unless they opt in to using the new `from_ptr` API.
How to use:
- Run this shell script to patch `core`. https://gist.github.com/Dirbaio/c67da7cf318515181539122c9d32b395
- Enable `build-std`
- Enable `build-std-features = core/turbowakers`
- Enable feature `turbowakers` in `embassy-executor`, `embassy-sync`.
- Make sure you have no other crate creating wakers other than `embassy-executor`. These will panic at runtime.
Note that the patched `core` is equivalent to the unpached one when the `turbowakers` feature is not enabled, so it should be fine to leave it there.
2023-03-30 17:55:55 +02:00
Dario Nieuwenhuis
2c45b5c519
sync/pipe: update to clarify docs that it is byte-oriented.
...
There was some language copypasted from Channel talking about "messages"
or "values", that is not really accurate with Pipe.
2023-03-26 23:32:12 +02:00
Rasmus Melchior Jacobsen
ce7bd6955f
perf(pubsub): Skip clone on last message
2023-03-21 13:25:49 +01:00
Rasmus Melchior Jacobsen
472df3fad6
fix(pubsub): Pop messages which count is 0 after unsubscribe
2023-03-15 16:45:18 +01:00
Grant Miller
7be4337de9
Add #[must_use]
to all futures
2023-02-24 13:01:41 -06:00
Dario Nieuwenhuis
10c9cc31b1
Remove unnecessary use of atomic-polyfill.
...
Only use it when CAS is actually needed.
2022-12-23 20:46:49 +01:00
Gabriel Smith
d438d1b685
sync: Fix nightly feature compilation after upgrade to embedded-io 0.4.0
2022-11-27 16:24:20 -05:00
Dario Nieuwenhuis
1e2fb0459d
Switch to async-fn-in-trait
2022-11-25 21:02:06 +01:00
Matt Johnston
536b6a2de5
sync/signal: Implement Default for Signal
2022-11-22 21:55:42 +08:00
Matt Johnston
14a2d15240
Derive Default for WakerRegistration
...
This simplifies creating arrays of WakerRegistrations
2022-11-06 11:33:38 +08:00
Dario Nieuwenhuis
d2246ae693
Release embassy-sync, embassy-time v0.1.0
2022-10-26 22:13:27 +02:00
Dario Nieuwenhuis
eeb072d9cb
Update Rust nightly.
2022-10-26 16:47:29 +02:00
Dion Dokter
530182d668
Forgot to add space function to immediate publisher
2022-10-05 15:15:03 +02:00
Ulf Lilleengen
59765590e0
Add required info to embassy-sync package
...
Updates the README.md based on embassy-futures structure.
2022-10-04 16:38:11 +02:00
Dion Dokter
874384826d
Went back to named futures but now with must_use
2022-09-29 15:15:10 +02:00
Dion Dokter
f4ebc36b63
Futures in pub & sub are now awaited instead of returned for better user compiler diagnostics.
...
Added functions for reading how many messages are available
2022-09-29 14:24:42 +02:00
ivmarkov
c5ce02b30e
Remove default, reorder generic params
2022-09-25 09:40:36 +03:00
ivmarkov
8536666148
Remove default, reorder generic params
2022-09-24 20:27:27 +03:00
ivmarkov
ca92302d03
Parameterize Signal with RawMutex
2022-09-24 20:26:51 +03:00
Dario Nieuwenhuis
a0487380da
Replace futures::future::poll_fn -> core::future::poll_fn.
2022-09-22 16:42:49 +02:00
Dario Nieuwenhuis
897b72c872
Update Rust nightly.
...
Removes feature(generic_associated_types)
2022-09-22 16:38:14 +02:00
Joakim Hulthe
79654510b7
Make rustfmt happy
2022-09-16 10:45:01 +02:00
Joakim Hulthe
70a3b85acc
Add .into_inner() and .get_mut() to Mutex
2022-09-16 10:32:43 +02:00
Dario Nieuwenhuis
ea5f2c71e0
sync/signal: wake old waker on overflow instead of panicking.
...
This makes behavior consistent with `WakerRegistration`. It allows canceling `wait`
in one task and then calling `wait` in another. If two tasks are `wait`ing
concurrently the signal will be received by only one of them, randomly.
2022-09-12 12:05:58 +02:00
Ulf Lilleengen
782751dfb9
Add missing std feature for embassy-sync
...
Fixes #930
2022-08-29 10:28:01 +02:00
Ulf Lilleengen
06011f67b2
Add README for embassy-sync
2022-08-23 13:54:40 +02:00
Ulf Lilleengen
0bb64c2f53
Fix warnings after crate split
2022-08-23 08:37:38 +02:00
Dario Nieuwenhuis
5677b13a86
sync: flatten module structure.
2022-08-22 22:18:13 +02:00
Dario Nieuwenhuis
21072bee48
split embassy-util
into embassy-futures
, embassy-sync
.
2022-08-22 22:18:13 +02:00