bevy_async_task 0.13.0

Ergonomic abstractions to async programming in Bevy
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

- This release supports **Bevy 0.19**.

## [0.13.0] - 2026-06-24

- This release supports **Bevy 0.19**.

## [0.12.0] - 2026-01-28

- This release supports **Bevy 0.18**.

### Fixed

- `TimeoutError` is now `Clone` and `Copy`

## [0.11.1] - 2025-12-21

- This release supports **Bevy 0.17**.

### Fixed

- Removed the need for tokio channels internally to reduce dependency graph
- Re-applied `async-compat` to native futures due to tokio reactor conflicts on native (particularly with reqwest).

## [0.11.0] - 2025-12-12

- This release supports **Bevy 0.17**.

### Added

- Added `AsyncStream` and `TaskStream`, functional equivalents of `AsyncTask` and `TaskRunner` for streams (aka async iterators). See the streaming example.
- Added `.forget()` to `TaskRunner` and `TimedTaskRunner`.
- Added `.forget_all()` to `TaskPool` and `TimedTaskPool`.

### Removed

- Removed `Deref` from `TaskRunner` and `TimedTaskRunner`.
- Removed `DerefMut` from `TaskRunner` and `TimedTaskRunner`.

### Fixed

- It was possible to use a duration over `i32::MAX` in millis for `AsyncTask::with_duration(&mut self)`.

## [0.10.0] - 2025-11-28

- This release supports **Bevy 0.17**.

### Added

- Added `AsyncStream` and `TaskStream`, functional equivalents of `AsyncTask` and `TaskRunner` for streams (aka async iterators). See the streaming example.
- Added `bevy_async_task::MAX_TIMEOUT`
- Added `bevy_async_task::DEFAULT_TIMEOUT`

### Changed

- Removed `bevy_async_task::Duration`. Use `core::time::Duration` instead.
- The default timeout for timed tasks, was changed from `u16::MAX` millis (~65 seconds) to 60 seconds.
- The maximum timeout allowed is now `i32::MAX`. This is now enforced with a panic.

### Fixed

- A `time not implemented on this platform` panic due to `wasm-bindgen` feature not being included for the `futures-timer` crate. You can remedy this yourself for older versions of `bevy_async_task` by including `futures-timer = { version = "3.0.3", features = ["wasm-bindgen"] }` in your Cargo.toml file.

## [0.9.0] - 2025-10-09

- This release supports **Bevy 0.17**.

### Changed

- Migrated to **Bevy 0.17**.

## [0.8.1] - 2025-07-14

### Fixed

- `bevy_async_task` no longer depends on the entire `bevy` crate — only the relevant subcrates (e.g., `bevy_ecs`).

## [0.8.0] - 2025-06-10

### Added

- Exposed utility functions: `timeout`, `sleep`, and `pending`.
- Added `AsyncTask::sleep`.

## [0.7.0] - 2025-05-03

### Changed

- Replaced the `TaskError` enum with a `TimeoutError` struct.

### Fixed

- Fixed a panic on WebAssembly (WASM) when timeouts exceeded numerical bounds.

## [0.6.0] - 2025-03-17

### Changed

- Updated to **Bevy 0.16**.

## [0.5.0] - 2024-12-22

### Changed

- Updated to **Rust 2024 Edition**.
- Split `AsyncTaskRunner` into `TimedTaskRunner` and `TaskRunner`. The timed variant polls timeouts.
- Split `AsyncTaskPool` into `TimedTaskPool` and `TaskPool`. The timed variant polls timeouts.
- Renamed `AsyncTask::build` to `AsyncTask::split`.

## [0.4.1] - 2024-10-11

### Fixed

- Removed repetitive console warnings about polling tasks.

## [0.4.0] - 2024-09-30

### Added

- Reintroduced `AsyncTask::with_timeout()`.

### Changed

- `poll()` and `iter_poll()` now return `Result<T, TimeoutError>`.
- Replaced `std::time::Duration` with `web_time::Duration`.
- Replaced `into_parts()` with `build()`.

## [0.3.0] - 2024-06-09

### Added

- Implemented `Debug` for many types.

### Changed

- Updated to **Bevy 0.15**.
- Replaced `AsyncTaskStatus` with `std::task::Poll`.
  - To check if a task runner or pool is idle, use `<AsyncTaskRunner>::is_idle()` or `<AsyncTaskPool>::is_idle()`.
- Made `TimeoutError` non-exhaustive for forward compatibility.

### Removed

- Removed `blocking_recv()` functions. Use `bevy::tasks::block_on(fut)` instead.
- Temporarily removed `AsyncTask::with_timeout()` pending rework. Use `AsyncTask::new_with_duration(duration, f)` as an alternative.

### Fixed

- Timeouts now function correctly on `wasm32`.
- `AsyncReceiver` now uses an `AtomicWaker` to ensure the sender isn’t dropped prematurely.

## [0.2.0] - 2024-03-14

### Changed

- Updated to **Bevy 0.14**.

### Fixed

- Fixed blocking example for web targets.

## [0.1.1] - 2024-02-09

### Fixed

- Re-uploaded README to correct [#10]https://github.com/nuzzles/bevy_async_task/issues/10.

## [0.1.0] - 2024-02-01

### Added

- Initial release.
- Crate renamed from `bevy-async-task` to `bevy_async_task` and republished.

---

[unreleased]: https://github.com/nuzzles/bevy_async_task/compare/v0.13.0...HEAD
[0.13.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.11.1...v0.12.0
[0.11.1]: https://github.com/nuzzles/bevy_async_task/compare/v0.11.0...v0.11.1
[0.11.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.8.1...v0.9.0
[0.8.1]: https://github.com/nuzzles/bevy_async_task/compare/v0.8.0...v0.8.1
[0.8.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.4.1...v0.5.0
[0.4.1]: https://github.com/nuzzles/bevy_async_task/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/nuzzles/bevy_async_task/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/nuzzles/bevy_async_task/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/nuzzles/bevy_async_task/releases/tag/v0.1.0