Thomas de Zeeuw
224acd2500
Pin Future to stack in #[tokio::test]
...
Instead of boxing it.
2022-11-29 14:28:13 +00:00
Thomas de Zeeuw
2fcc6c2cb0
Box Futures in #[tokio::test]
...
This reduces the amount of copies of the Runtime::block_on and related
functions the compiler has to generate and LLVM process. We've seen it
reduce the compilation time of our tests (some 1900 of them) from 40s
down to 12s, with no impact on the runtime of tests.
Below is an output of llvm-lines for our tests.
Before:
Lines Copies Function name
----- ------ -------------
8954414 156577 (TOTAL)
984626 (11.0%, 11.0%) 9289 (5.9%, 5.9%) std:🧵 :local::LocalKey<T>::try_with
648093 (7.2%, 18.2%) 1857 (1.2%, 7.1%) tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}
557100 (6.2%, 24.5%) 3714 (2.4%, 9.5%) tokio::park:🧵 :CachedParkThread::block_on
551679 (6.2%, 30.6%) 7430 (4.7%, 14.2%) tokio::coop::with_budget::{{closure}}
514389 (5.7%, 36.4%) 3714 (2.4%, 16.6%) tokio::runtime::scheduler::current_thread::Context::enter
326832 (3.6%, 40.0%) 1857 (1.2%, 17.8%) tokio::runtime::scheduler::current_thread::CurrentThread::block_on
291549 (3.3%, 43.3%) 1857 (1.2%, 19.0%) tokio::runtime::scheduler::current_thread::CoreGuard::enter
261907 (2.9%, 46.2%) 7430 (4.7%, 23.7%) tokio::coop::budget
189468 (2.1%, 48.3%) 7430 (4.7%, 28.5%) tokio::coop::with_budget
137418 (1.5%, 49.8%) 3714 (2.4%, 30.8%) tokio::runtime::enter::Enter::block_on
126276 (1.4%, 51.3%) 1857 (1.2%, 32.0%) tokio::runtime::Runtime::block_on
124419 (1.4%, 52.6%) 1857 (1.2%, 33.2%) tokio::macros::scoped_tls::ScopedKey<T>::set
118897 (1.3%, 54.0%) 3715 (2.4%, 35.6%) core::option::Option<T>::or_else
111420 (1.2%, 55.2%) 1857 (1.2%, 36.8%) tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}
109408 (1.2%, 56.4%) 2105 (1.3%, 38.1%) <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
105893 (1.2%, 57.6%) 9289 (5.9%, 44.0%) std:🧵 :local::LocalKey<T>::with
96564 (1.1%, 58.7%) 1857 (1.2%, 45.2%) tokio::runtime::scheduler::current_thread::Context::run_task
90993 (1.0%, 59.7%) 7428 (4.7%, 50.0%) tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}
90515 (1.0%, 60.7%) 2105 (1.3%, 51.3%) core::pin::Pin<&mut T>::map_unchecked_mut
89136 (1.0%, 61.7%) 1857 (1.2%, 52.5%) tokio::runtime::scheduler::multi_thread::MultiThread::block_on
After:
Lines Copies Function name
----- ------ -------------
3188618 41634 (TOTAL)
109408 (3.4%, 3.4%) 2105 (5.1%, 5.1%) <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
90515 (2.8%, 6.3%) 2105 (5.1%, 10.1%) core::pin::Pin<&mut T>::map_unchecked_mut
56220 (1.8%, 8.0%) 1874 (4.5%, 14.6%) alloc::boxed::Box<T>::pin
48333 (1.5%, 9.5%) 2179 (5.2%, 19.8%) core::ops::function::FnOnce::call_once
28587 (0.9%, 10.4%) 1 (0.0%, 19.8%) XXXXXXXXXXXXXXXXXXX
18730 (0.6%, 11.0%) 1873 (4.5%, 24.3%) alloc::boxed::Box<T,A>::into_pin
16190 (0.5%, 11.5%) 2 (0.0%, 24.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
15870 (0.5%, 12.0%) 2 (0.0%, 24.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
15250 (0.5%, 12.5%) 1 (0.0%, 24.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXX
12801 (0.4%, 12.9%) 2 (0.0%, 24.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
12801 (0.4%, 13.3%) 2 (0.0%, 24.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
12630 (0.4%, 13.7%) 2105 (5.1%, 29.4%) <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll::{{closure}}
12613 (0.4%, 14.1%) 2 (0.0%, 29.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
12613 (0.4%, 14.5%) 2 (0.0%, 29.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
12613 (0.4%, 14.9%) 2 (0.0%, 29.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
12613 (0.4%, 15.3%) 2 (0.0%, 29.4%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
11395 (0.4%, 15.7%) 96 (0.2%, 29.7%) alloc::alloc::box_free
11364 (0.4%, 16.0%) 1891 (4.5%, 34.2%) <T as core::convert::Into<U>>::into
11238 (0.4%, 16.4%) 1873 (4.5%, 38.7%) alloc::boxed::<impl core::convert::From<alloc::boxed::Box<T,A>> for core::pin::Pin<alloc::boxed::Box<T,A>>>::from
10735 (0.3%, 16.7%) 2 (0.0%, 38.7%) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Note that I have replaced our test functions with XXX. As you can
clearly see they're not in the top 20 in the before output, while
they're in the after oput.
Further note that the amount of copies have been reduced from 156577 to
41634.
2022-11-29 14:28:13 +00:00
Lukas Wirth
37d1d09d4a
macros: reduce usage of last statement spans in proc-macros ( #5092 )
...
This excludes the initial let statement of the proc-macro expansion
from receiving the last statement spans to aid completions in rust-analyzer.
The current span confuses rust-analyzer as it will map the tail expression
tokens to the let keyword (as this is the first token it finds with the
same span) which currently breaks completions. This commit should not
degrade the initial intent of the span reusages, as the type mismatch
parts are still spanned appropriately.
2022-10-14 09:50:09 +02:00
George Pyrros
89000ca1da
macros: improve the documentation for #[tokio::test]
( #4761 )
2022-06-13 12:47:42 +00:00
Alice Ryhl
3f8a690c01
chore: prepare tokio-macros 1.8.0 ( #4742 )
2022-06-04 22:04:12 +02:00
Taiki Endo
fa665b91a8
macros: always emit return statement ( #4636 )
...
Fixes #4635
2022-04-28 07:53:40 +09:00
Kezhu Wang
d590a369d5
macros: custom crate name for #[tokio::main] and #[tokio::test] ( #4613 )
...
This also enables `#[crate::test(crate = "crate")]` in unit tests.
See: rust-lang/cargo#5653
Fixes : #2312
2022-04-18 11:24:27 +02:00
Carl Lerche
49fff47111
chore: increase MSRV to 1.49. ( #4457 )
...
Rust 1.49 was released on December 31, 2020, which meets our MSRV policy
of a minimum of 6 months.
2022-01-31 13:26:12 -08:00
Carl Lerche
986b88b3f1
chore: update year in LICENSE files ( #4429 )
2022-01-27 13:36:21 -08:00
Carl Lerche
f64673580d
chore: prepare Tokio v1.15.0 release ( #4320 )
...
Includes `tokio-macros` v1.7.0
2021-12-15 10:36:09 -08:00
Taiki Endo
1a423b3322
chore: remove doc URL from Cargo.toml ( #4251 )
...
https://doc.rust-lang.org/cargo/reference/manifest.html#the-documentation-field
> If no URL is specified in the manifest file, crates.io will
> automatically link your crate to the corresponding docs.rs page.
2021-11-23 11:53:32 +01:00
Taiki Endo
a8b662f643
ci: upgrade to new nightly ( #4268 )
2021-11-23 19:29:57 +09:00
Taiki Endo
cf3206842c
chore: bump MSRV to 1.46 ( #4254 )
2021-11-23 12:09:24 +09:00
Taiki Endo
8943e8aeef
macros: address remainging clippy::semicolon_if_nothing_returned warning ( #4252 )
2021-11-22 18:41:17 +09:00
Alice Ryhl
623c09c52c
chore: prepare tokio-macros 1.6.0 ( #4239 )
2021-11-16 09:54:07 +01:00
Alice Ryhl
94ee305741
macros: fix mut patterns in select!
macro ( #4211 )
2021-11-02 18:05:24 +01:00
Alice Ryhl
e184205421
chore: prepare tokio-macros 1.6.0 ( #4197 )
2021-10-29 18:33:40 +02:00
Taiki Endo
095012b03b
macros: fix type resolution error in #[tokio::main] ( #4176 )
2021-10-19 12:49:57 +09:00
Alice Ryhl
bb6a292d0a
chore: prepare tokio-macros v1.5.0 ( #4167 )
2021-10-13 15:51:09 +02:00
Lukas Wirth
fadd0190da
macros: make tokio-macros attributes more IDE friendly ( #4162 )
2021-10-11 22:04:47 +02:00
Alice Ryhl
d39c9ed9dc
chore: prepare tokio-macros 1.4.1 ( #4142 )
...
This reverts commit 33f0a1fd2e5dd2c9f8bc3066fda38911828d26f5.
2021-09-30 10:38:52 +02:00
Noah Kennedy
44cfe10ee5
chore: prepare tokio-macros 1.4.0 ( #4139 )
2021-09-29 23:30:47 +02:00
Ben Noordhuis
33f0a1fd2e
macros: run runtime inside LocalSet when using macro ( #4027 )
2021-09-15 11:25:02 +02:00
Fedorenko Dmitrij
80bda3bf5f
macros: fix wrong error messages ( #4067 )
2021-08-25 19:59:41 +02:00
Kateřina Churanová
1e95d6994a
chore: explicitly relaxed clippy lint for runtime entry macro ( #4030 )
2021-08-11 18:16:00 +09:00
Alice Ryhl
c505a2f81a
chore: prepare tokio-macros 1.3.0 ( #3931 )
2021-07-07 10:58:02 +02:00
Blas Rodriguez Irizar
4818c2ed05
fs: document performance considerations ( #3920 )
2021-07-06 16:25:13 +02:00
Blas Rodriguez Irizar
80f0801e19
tokio-macros: compat with clippy::unwrap_used ( #3926 )
2021-07-06 15:01:13 +02:00
Alice Ryhl
3a659c47c3
chore: prepare tokio-mcaros v1.2.0 ( #3783 )
2021-05-14 18:20:17 +02:00
Taiki Endo
f9ce18a524
macros: improve diagnostics on type mismatch ( #3766 )
2021-05-09 18:58:05 +09:00
David Pedersen
28d6879897
macros: forward input arguments in #[tokio::test]
( #3691 )
...
Fixes #2388
Previously `#[tokio::test]` would error on functions that took
arguments. That meant other attribute macros couldn't do further
transformations on them. This changes that so arguments are forwarded as
is.
Whatever else might be included on the function is forwarded as well.
For example return type, generics, etc.
Worth noting that this is only for compatibility with other macros.
`#[test]`s that take arguments will still fail to compile.
A bit odd that [trybuild] tests don't fail `#[test]` functions with
arguments which is why the new tests are run with `t.pass(...)`. They do
actually fail if part of a real crate.
[trybuild]: https://crates.io/crates/trybuild
2021-04-11 20:39:05 +02:00
David Pedersen
618d2bfc71
macros: various error message improvements ( #3677 )
...
Improves a few of the error messages for `#[tokio::main]` and `#[tokio::test]`.
Also adds a note to the docs about `start_paused` requiring the `test-util` feature which wasn't mentioned previously.
2021-04-05 22:40:42 +02:00
Nylonicious
8fc49dc522
chore: update years in all licenses ( #3665 )
2021-03-30 21:45:13 +02:00
Taiki Endo
36d7dab504
chore: remove html_root_url ( #3489 )
...
Co-authored-by: Alice Ryhl <alice@ryhl.io>
2021-02-18 14:11:39 -08:00
Alice Ryhl
d41882e2a1
chore: prepare tokio-macros 1.1.0 ( #3505 )
2021-02-05 22:21:29 +01:00
Steven Fackler
fcb6d041b9
time: make test-util paused time fully deterministic ( #3492 )
...
The time driver stores an Instant internally used as a "base" for future
time calculations. Since this is generated as the Runtime is being
constructed, it previously always happened before the user had a chance
to pause time. The fractional-millisecond variations in the timing
around the runtime construction and time pause cause tests running
entirely in paused time to be very slightly deterministic, with the time
driver advancing time by 1 millisecond more or less depending on how the
sub-millisecond components of the `Instant`s involved compared.
To avoid this, there is now a new option on `runtime::Builder` which
will create a `Runtime` with time "instantly" paused. This, along with a
small change to have the time driver use the provided clock as the
source for its start time allow totally deterministic tests with paused
time.
2021-02-05 20:12:25 +01:00
Taiki Endo
40d959263b
macros: fix unused_braces in generated code ( #3404 )
2021-01-11 19:20:40 +09:00
Carl Lerche
a66017f049
chore: prepare Tokio 1.0 release ( #3319 )
2020-12-23 09:26:14 -08:00
Florian Hübsch
e41e6cddbb
docs: tokio::main macro is also supported on rt ( #3243 )
...
Fixes : #3144
Refs: #2225
2020-12-19 19:12:08 +01:00
Carl Lerche
473ddaa277
chore: prepare for Tokio 1.0 work ( #3238 )
2020-12-09 09:42:05 -08:00
Ivan Tham
72d6346c0d
macros: #[tokio::main] can be used on non-main ( #3199 )
2020-11-30 17:34:11 +01:00
Rajiv Chauhan
5e406a7a47
macros: fix outdated documentation ( #3180 )
...
1. Changed 0.2 to 0.3
2. Changed ‘multi’ to ‘single’ to indicate that the behavior is single threaded
2020-11-26 19:46:15 +01:00
Eliza Weisman
f927f01a34
macros: fix rustfmt on 1.48.0 ( #3160 )
...
## Motivation
Looks like the Rust 1.48.0 version of `rustfmt` changed some formatting
rules (fixed some bugs?), and some of the code in `tokio-macros` is no
longer correctly formatted. This is breaking CI.
## Solution
This commit runs rustfmt on Rust 1.48.0. This fixes CI.
Closes #3158
2020-11-20 10:19:26 -08:00
Alice Ryhl
1c28c3b0a8
macros: prepare tokio-macros 0.3.1 ( #3042 )
2020-10-26 10:02:39 +01:00
nickelc
c30ce1f65c
docs: remove max_threads
mentions in tokio-macros ( #3038 )
2020-10-24 22:34:56 +02:00
Carl Lerche
dc9742fbea
chore: post release Cargo.toml fixes ( #2963 )
2020-10-15 11:46:10 -07:00
Carl Lerche
12f1dffa2d
chore: prepare for v0.3.0 release ( #2960 )
2020-10-15 09:22:07 -07:00
Taiki Endo
c90681bd8e
rt: simplify rt-* features ( #2949 )
...
tokio:
merge rt-core and rt-util as rt
rename rt-threaded to rt-multi-thread
tokio-util:
rename rt-core to rt
Closes #2942
2020-10-12 14:13:23 -07:00
Lucio Franco
8880222036
rt: Remove threaded_scheduler()
and basic_scheduler()
( #2876 )
...
Co-authored-by: Alice Ryhl <alice@ryhl.io>
Co-authored-by: Carl Lerche <me@carllerche.com>
2020-10-12 13:44:54 -04:00
Igor Aleksanov
38cab93330
runtime: improve runtime vs #[tokio::main] doc ( #2820 )
2020-09-05 20:22:47 +02:00