Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support shared futures on no_std #2868

Merged
merged 5 commits into from
Jan 16, 2025
Merged

Support shared futures on no_std #2868

merged 5 commits into from
Jan 16, 2025

Conversation

adavis628
Copy link
Contributor

Currently, Shared futures are only available when the std feature is enabled because they use std::sync::Mutex internally. This PR changes this so that Shared futures will fall back to using a spinlock when std is not enabled.

Alternatively, Shared could be changed to be generic over a mutex trait (e.g. lock_api::RawMutex, though it isn't implemented for std::sync::Mutex) to allow arbitrary user implementations.

@taiki-e
Copy link
Member

taiki-e commented Oct 2, 2024

Thanks for the PR. I would prefer not to use spinlock by default around operations that would involve allocations even if it is no_std-only.

That said, it might be fine if this is an optional feature and spinlock is used only when std is disabled and the feature is explicitly enabled.

@taiki-e taiki-e added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author A-future Area: futures::future labels Oct 2, 2024
@adavis628
Copy link
Contributor Author

I moved the spinlock behind an optional spin feature that will use a spinlock when std is disabled.

futures-util/Cargo.toml Outdated Show resolved Hide resolved
Copy link
Member

@taiki-e taiki-e left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@taiki-e taiki-e added 0.3-backport: pending The maintainer accepted to backport this to the 0.3 branch, but backport has not been done yet. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author labels Jan 16, 2025
@taiki-e taiki-e merged commit 951d353 into rust-lang:master Jan 16, 2025
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.3-backport: pending The maintainer accepted to backport this to the 0.3 branch, but backport has not been done yet. A-future Area: futures::future
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants