Commit graph

969 commits

Author SHA1 Message Date
dignifiedquire
f5fa0d7e4e avoid boxing futures 2020-05-02 20:27:50 +02:00
dignifiedquire
b96afc41dc implement task locals 2020-05-02 20:27:50 +02:00
dignifiedquire
75ab7219df bring back random 2020-05-02 20:27:50 +02:00
dignifiedquire
e082634b5e fix spawning 2020-05-02 20:27:50 +02:00
dignifiedquire
fc9ee0dfdd keep std::sync::Arc 2020-05-02 20:27:50 +02:00
dignifiedquire
1308fbdf55 switch to smol instead of an internal runtime 2020-05-02 20:27:50 +02:00
Friedel Ziegelmayer
b446cd0230
Merge pull request #748 from async-rs/fix/scheduler-2
fix(rt): bring back dynamic machines
2020-04-12 15:22:51 +02:00
Thayne McCombs
db438abb8f
Implement async_std::sync::Condvar (#369)
* Implement async_std::sync::Condvar

Part of #217

* More rigourous detection of notification for condvar

* Use state of Waker instead of AtomicUsize to keep track of if task was
notified.

* Add test for notify_all

* Implement wait_timeout_until

And add warnings about spurious wakeups to wait and wait_timeout

* Use WakerSet for Condvar

This should also address concerns about spurious wakeups.

* Add test for wait_timeout with no lock held

* Add comments describing AwaitNotify struct

And remove an unnneded comment in a Debug implementation
2020-04-12 13:35:18 +02:00
dignifiedquire
a4e07e345c fix(rt): bring back dynamic machines
Even if we do not make use of the progress blocking, we do need to make use of the dynamic restarting of machines as far as I understand.

Keeps the perf, while removing the regression from #747
2020-04-10 02:22:03 +02:00
dignifiedquire
0c9a66c1f6 fix scheduler loop
This now matches more closely the logic as implemented in #631, and fixes the performance regression as far as I have observed.

Closes #746
2020-04-09 17:02:27 +02:00
Friedel Ziegelmayer
fc4e472599
Merge pull request #733 from k-nasa/new-scheduler
New scheduler
2020-04-07 22:50:04 +02:00
k-nasa
088aa5662c refactor: Remove wrapping cell 2020-04-03 13:38:07 +09:00
Devashish Dixit
68fa054517 Update futures-timer to 3.0.2 2020-03-30 19:30:00 +08:00
k-nasa
11ee2a8985 fix 2020-03-22 19:25:40 +09:00
k-nasa
322911142c lock processor and remove unsafe Send, Sync 2020-03-22 19:20:01 +09:00
k-nasa
cfaec2aa95 re add spin_lock 2020-03-22 19:19:17 +09:00
k-nasa
6d3ca5a06f remove poll function 2020-03-21 14:19:38 +09:00
k-nasa
f960776846 fix 2020-03-21 13:40:59 +09:00
k-nasa
24c5dbf949 Remove scheduler state 2020-03-20 23:13:20 +09:00
k-nasa
d7ee29a03f fix test code 2020-03-19 19:16:12 +09:00
k-nasa
2b44c1be2e refactor: swap to swap_and_compare 2020-03-19 18:41:00 +09:00
k-nasa
b1ec1ea930 Move Spinlock to sync module 2020-03-19 18:39:01 +09:00
k-nasa
2ab075d027 refactor 2020-03-19 11:50:19 +09:00
k-nasa
c0f18600cf run ignored test 2020-03-18 23:07:07 +09:00
k-nasa
6c8237276b fix doc test 2020-03-18 23:02:59 +09:00
k-nasa
98cbf7f8eb Restore task::spawn_blocking 2020-03-17 20:54:16 +09:00
k-nasa
84e5c5f351 Merge branch 'master' into new-scheduler 2020-03-17 20:38:19 +09:00
Yoshua Wuyts
b7c7efc797 Update try_channel doctests 2020-03-16 00:05:39 +01:00
Yoshua Wuyts
7885c245c5 recverror
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2020-03-15 23:53:03 +01:00
Yoshua Wuyts
7b7b959a6e mark channel errs as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2020-03-15 23:53:03 +01:00
Yoshua Wuyts
32dce319d3 expose try_recv and try_send on channels
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2020-03-15 23:53:03 +01:00
Yoshua Wuyts
49dd02b4de Make the split struct public 2020-03-15 23:51:19 +01:00
Yoshua Wuyts
bb11c676a1 doctests pass 2020-03-15 23:46:36 +01:00
Yoshua Wuyts
e026b7579a
Merge pull request #703 from spacekookie/recv-docs
channel/recv: improving function docs and code example
2020-03-15 14:41:07 +01:00
k-nasa
8931d1464e fix ci 2020-03-14 22:46:22 +09:00
nasa
cc19592f80
Revert "Stabilize most stream method and remove unnecessary macros" 2020-03-12 18:34:09 +09:00
k-nasa
b95bd6c1fe fix: Remove unnecessary io modules 2020-03-05 10:34:41 +09:00
k-nasa
1e18839f1f fix warning 2020-03-04 08:55:37 +09:00
k-nasa
f31878655e fix: Stabilize stream method 2020-03-04 08:30:45 +09:00
k-nasa
9a62df143f add whitespace 2020-03-03 23:14:25 +09:00
k-nasa
75223905bd fix: Stabilize stream most method 2020-03-03 23:12:09 +09:00
k-nasa
be60dd9fe7 fix: Remove unnecessary re-export and macros 2020-03-03 22:50:26 +09:00
k-nasa
23b7c174f3 feat: Stabilize io::Std*Lock 2020-03-03 22:46:18 +09:00
k-nasa
bd60cd9f81 run cargo fmt 2020-02-20 09:03:36 +09:00
Yoshua Wuyts
d87e283215
Update src/lib.rs 2020-02-17 13:38:24 +01:00
Yoshua Wuyts
283a54a155
Update src/lib.rs 2020-02-17 13:36:59 +01:00
Yoshua Wuyts
3719484eba
Update src/lib.rs
Co-Authored-By: nasa <htilcs1115@gmail.com>
2020-02-17 13:36:23 +01:00
Katharina Fey
aae835cc14
channel/recv: improving function docs and code example
At the moment it's not clear when and why recv returns Option<T>,
instead of just T. This changed comment makes it clear that None will
only be returned once no data will ever be sent again (i.e. after all
senders are gone).
2020-02-12 01:38:20 +01:00
Oleg Nosov
d7cab38b67
core => std 2020-02-08 15:49:01 +03:00
Oleg Nosov
32068942a6
Fixed flatten 2020-02-08 15:44:25 +03:00
Oleg Nosov
303ac90b7c
Fixed flat_map 2020-02-07 22:12:42 +03:00
Yoshua Wuyts
d026c44ea3 Document the core feature
Follow-up to https://github.com/async-rs/async-std/pull/680
2020-02-04 11:07:50 +01:00
Yoshua Wuyts
125fa5b0a0
Merge pull request #680 from k-nasa/no_std
Some modules support no_std
2020-02-04 11:02:19 +01:00
k-nasa
0d90cb07b9 fix: Move extern crate alloc to lib.rs 2020-02-01 09:49:54 +09:00
Stjepan Glavina
1d875836a2
Implement Clone for TcpStream (#689)
* Implement Clone for TcpStream

* Update examples

* Remove accidentally added examples
2020-01-28 18:14:16 +01:00
k-nasa
7efe7caf66 fix: Change feature name no-std to alloc 2020-01-28 15:58:46 +09:00
k-nasa
22d929d481 fix import Future 2020-01-28 15:58:46 +09:00
k-nasa
d622ec5d35 feat: Make the stream module no_std 2020-01-28 15:58:46 +09:00
k-nasa
880b7ee987 remove crate::prelude import 2020-01-28 15:58:46 +09:00
k-nasa
1762de285b feat: Make the future module no_std 2020-01-28 15:58:46 +09:00
k-nasa
6aa55fde59 feat: Make the task module no_std 2020-01-28 15:58:46 +09:00
k-nasa
3d32fd81f4 feat: Make the utils module no_std 2020-01-28 15:58:46 +09:00
k-nasa
51b84a7620 feat: Add no_std attribute when not std feature 2020-01-28 15:58:46 +09:00
Toralf Wittner
57974ae0b7 Use non-blocking connect for TcpStream. (#687)
* Use non-blocking connect for TcpStream.

Instead of spawning a background thread which is unaware of any timeouts
but continues to run until the TCP stack decides that the remote is not
reachable we use mio's non-blocking connect.

mio's `TcpStream::connect` returns immediately but the actual connection
is usually just in progress and we have to be sure the socket is
writeable before we can consider the connection as established.

* Add Watcher::{poll_read_ready, poll_write_ready}.

Following a suggestion of @stjepang we offer methods to check for
read/write readiness of a `Watcher` instead of the previous approach to
accept a set of `Waker`s when registering an event source. The changes
relative to master are smaller and both methods look more useful in
other contexts. Also the code is more robust w.r.t. wakeups of the
`Waker` from clones outside the `Reactor`.

I am not sure if we need to add protection mechanisms against spurious
wakeups from mio. Currently we treat the `Poll::Ready(())` of
`Watcher::poll_write_ready` as proof that the non-blocking connect has
finished, but if the event from mio was a spurious one, it might still
be ongoing.
2020-01-27 23:13:13 +01:00
Yoshua Wuyts
57f9fb7e93
Merge pull request #682 from k-nasa/impl_clone_for_dir_entry
Implement Clone trait for DirEntry
2020-01-27 13:10:20 +01:00
Yoshua Wuyts
6c1b5eb3ed
Merge pull request #667 from olegnn/option_take_while
Use `take_while` instead of `scan` in `impl` of `Product`, `Sum` and `FromStream` for `Option` and `Result`
2020-01-27 11:54:20 +01:00
Florian Gilcher
84fe94444b
Merge pull request #675 from k-nasa/add_timeout_example
Add stream::timeout example when timeout error
2020-01-21 16:02:28 +01:00
Katharina Fey
81aa6d152a Changing task::block_on to park after a single poll (#684)
This was previously discussed in #605 and others as a source of high
CPU load when sleeping tasks because of the overhead created by
retrying a future in short succession.
2020-01-20 20:40:01 +01:00
k-nasa
2221441a4c feat: Implement Clone trait for DirEntry 2020-01-18 08:36:54 +09:00
Oleg Nosov
ed7ddacb28
Rewrote Results implementation using take_while and filter_map 2020-01-17 17:19:51 +03:00
Oleg Nosov
ed248017b4
Use internal scan state in Results implementation 2020-01-15 12:06:50 +03:00
Oleg Nosov
38de0bfd22
Use std::convert::identity 2020-01-15 09:43:01 +03:00
Oleg Nosov
134089af2c
Use filter_map(identity) + other fixes 2020-01-15 08:57:43 +03:00
k-nasa
ee102dfc9e docs: Add stream::timeout example when timeout error 2020-01-15 10:41:39 +09:00
nasa
1071e82132
Merge pull request #671 from Noah-Kennedy/udp-socket-send-doc
Fix docs for UdpSocket::send
2020-01-15 10:41:04 +09:00
noah
0a52864764 Revert "Fixes https://github.com/async-rs/async-std/issues/652"
This reverts commit a4f68066
2020-01-14 10:59:17 -06:00
noah
76993dd755 Revert "Fixes https://github.com/async-rs/async-std/issues/652"
This reverts commit a4f68066
2020-01-14 10:55:10 -06:00
k-nasa
f53fcbb706 test,docs: Add stream::pending example code 2020-01-14 10:18:14 +09:00
k-nasa
e9357c0307 style: Run cargo fmt 2020-01-14 09:49:34 +09:00
Qifan Lu
879e14c6ab Remove size_hint from Stream impl 2020-01-14 09:41:43 +09:00
Qifan Lu
f8dd3d9816 Add stream::pending::{pending, Pending} 2020-01-14 09:41:43 +09:00
noah
a4f6806605 Fixes https://github.com/async-rs/async-std/issues/652 2020-01-13 17:47:51 -06:00
Yoshua Wuyts
5d5064b871 add FromStream Result example (#643)
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2020-01-13 21:42:31 +01:00
nasa
0ed0d63094 Remove unnecessary trait bound on FlatMap (#651)
* Remove unnecessary trait bound on FlatMap

* test: upgrade test code
2020-01-13 19:49:52 +01:00
Oleg Nosov
fb567a3a09
Recovered comments 2020-01-12 17:53:16 +03:00
Oleg Nosov
83afbab2ef
Use take_while instead of scan for Option 2020-01-12 17:35:57 +03:00
dignifiedquire
9c6ab5e7c3 fix 2020-01-11 11:57:42 +01:00
dignifiedquire
9c9ab90da3 feature gate random 2020-01-11 11:49:52 +01:00
dignifiedquire
5bf3d95313 feat: do not require default feature for unstable 2020-01-11 11:44:51 +01:00
Yoshua Wuyts
383057b8ea
Merge pull request #659 from alfiedotwtf/master
Tiny grammar fix
2020-01-07 17:09:49 +01:00
Yoshua Wuyts
763862acc7
Merge pull request #661 from async-rs/fix-ci
remove usage of deprecated Error method to fix CI
2020-01-07 17:09:03 +01:00
Yoshua Wuyts
e2bb79c207
Merge pull request #648 from spacekookie/master
Fixing inaccurate function description in udp::recv
2020-01-07 14:23:14 +01:00
Yoshua Wuyts
dfb0c8124c
remove usage of deprecated method
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2020-01-07 14:21:17 +01:00
Alfie John
af2d46d9b9 Tiny grammar fix 2020-01-07 13:29:30 +11:00
Artem Varaksa
65d7950df1
Fix crate documentation typo 2020-01-01 15:36:47 +03:00
Stefano Probst
c3d5dba1b5
Fix typo in stream documentation 2019-12-28 17:27:37 +01:00
Katharina Fey
081166f204
Fixing inaccurate function description in udp::recv 2019-12-27 03:06:41 +01:00
Yoshua Wuyts
b3942ecfa8
remove tokio mention
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-12-24 14:39:55 +01:00
nasa
0d4b4cd260
Merge pull request #600 from miker1423/future-timeout
Adding timeout extension method to Future trait
2019-12-20 14:26:52 +09:00
Miguel Pérez García
ef021dcb2b Changing test condition 2019-12-18 07:18:57 -06:00