Merge branch 'master' into mio-0.7.3

This commit is contained in:
fakeshadow 2020-12-28 13:48:58 +08:00 committed by GitHub
commit 85dd2b8fbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 142 additions and 192 deletions

View File

@ -16,17 +16,17 @@ members = [
]
[patch.crates-io]
actix-codec = { path = "actix-codec" }
actix-codec = { git = "https://github.com/actix/actix-net.git", rev = "ba44ea7d0bafaf5fccb9a34003d503e1910943ee" }
actix-connect = { path = "actix-connect" }
actix-rt = { path = "actix-rt" }
actix-rt = { git = "https://github.com/actix/actix-net.git", rev = "ba44ea7d0bafaf5fccb9a34003d503e1910943ee" }
actix-macros = { path = "actix-macros" }
actix-server = { path = "actix-server" }
actix-service = { path = "actix-service" }
actix-service = { git = "https://github.com/actix/actix-net.git", rev = "ba44ea7d0bafaf5fccb9a34003d503e1910943ee" }
actix-testing = { path = "actix-testing" }
actix-threadpool = { path = "actix-threadpool" }
actix-tls = { path = "actix-tls" }
actix-tracing = { path = "actix-tracing" }
actix-utils = { path = "actix-utils" }
actix-utils = { git = "https://github.com/actix/actix-net.git", rev = "ba44ea7d0bafaf5fccb9a34003d503e1910943ee" }
actix-router = { path = "router" }
bytestring = { path = "string" }

View File

@ -1,17 +1,25 @@
# Changes
## Unreleased - 2020-xx-xx
* Upgrade `pin-project` to `1.0`.
* Upgrade `tokio` dependency to `1`.
* Upgrade `tokio-util` dependency to `0.6`.
* Upgrade `bytes` dependency to `1`.
## 0.4.0-beta.1 - 2020-12-28
* Replace `pin-project` with `pin-project-lite`. [#237]
* Upgrade `tokio` dependency to `1`. [#237]
* Upgrade `tokio-util` dependency to `0.6`. [#237]
* Upgrade `bytes` dependency to `1`. [#237]
[#237]: https://github.com/actix/actix-net/pull/237
## 0.3.0 - 2020-08-23
* No changes from beta 2.
## 0.3.0-beta.2 - 2020-08-19
* Remove unused type parameter from `Framed::replace_codec`.
## 0.3.0-beta.1 - 2020-08-19
* Use `.advance()` instead of `.split_to()`.
* Upgrade `tokio-util` to `0.3`.
@ -21,32 +29,31 @@
* Add method on `Framed` to get a pinned reference to the underlying I/O.
* Add method on `Framed` check emptiness of read buffer.
## [0.2.0] - 2019-12-10
## 0.2.0 - 2019-12-10
* Use specific futures dependencies
## [0.2.0-alpha.4]
## 0.2.0-alpha.4
* Fix buffer remaining capacity calculation
## [0.2.0-alpha.3]
## 0.2.0-alpha.3
* Use tokio 0.2
* Fix low/high watermark for write/read buffers
## [0.2.0-alpha.2]
## 0.2.0-alpha.2
* Migrated to `std::future`
## [0.1.2] - 2019-03-27
## 0.1.2 - 2019-03-27
* Added `Framed::map_io()` method.
## [0.1.1] - 2019-03-06
## 0.1.1 - 2019-03-06
* Added `FramedParts::with_read_buffer()` method.
## [0.1.0] - 2018-12-09
## 0.1.0 - 2018-12-09
* Move codec to separate crate

View File

@ -1,8 +1,8 @@
[package]
name = "actix-codec"
version = "0.3.0"
version = "0.4.0-beta.1"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Codec utilities for working with framed protocols."
description = "Codec utilities for working with framed protocols"
keywords = ["network", "framework", "async", "futures"]
homepage = "https://actix.rs"
repository = "https://github.com/actix/actix-net.git"

View File

@ -1,4 +1,4 @@
//! Utilities for encoding and decoding frames.
//! Codec utilities for working with framed protocols.
//!
//! Contains adapters to go from streams of bytes, [`AsyncRead`] and
//! [`AsyncWrite`], to framed streams implementing [`Sink`] and [`Stream`].

View File

@ -2,23 +2,25 @@
## Unreleased - 2020-xx-xx
### Added
## 2.0.0-beta.1 - 2020-12-28
### Added
* Add `System::attach_to_tokio` method. [#173]
### Changed
* Update `tokio` dependency to `1`
* Rename `time` module `delay_for` to `sleep`, `delay_until` to `sleep_until`, `Delay` to `Sleep` to keep inline with tokio.
* Update `tokio` dependency to `1.0`. [#236]
* Rename `time` module `delay_for` to `sleep`, `delay_until` to `sleep_until`, `Delay` to `Sleep`
to stay aligned with Tokio's naming. [#236]
* Remove `'static` lifetime requirement for `Runtime::block_on` and `SystemRunner::block_on`.
These methods would accept a &Self when calling.
Remove `'static` lifetime requirement for `System::run` and `Builder::run`.
`Arbiter::spawn` would panic when `System` is not in scope. [#207]
* These methods now accept `&self` when calling. [#236]
* Remove `'static` lifetime requirement for `System::run` and `Builder::run`. [#236]
* `Arbiter::spawn` now panics when `System` is not in scope. [#207]
### Fixed
* Fix work load issue by removing `PENDDING` thread local. [#207]
* Fix work load issue by removing `PENDING` thread local. [#207]
[#207]: https://github.com/actix/actix-net/pull/207
[#236]: https://github.com/actix/actix-net/pull/236
## [1.1.1] - 2020-04-30

View File

@ -1,8 +1,8 @@
[package]
name = "actix-rt"
version = "1.1.1"
version = "2.0.0-beta.1"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Actix runtime"
description = "Tokio-based single-thread async runtime for the Actix ecosystem"
keywords = ["network", "framework", "async", "futures"]
homepage = "https://actix.rs"
repository = "https://github.com/actix/actix-net.git"

View File

@ -1,4 +1,5 @@
//! A runtime implementation that runs everything on the current thread.
//! Tokio-based single-thread async runtime for the Actix ecosystem.
#![deny(rust_2018_idioms, nonstandard_style)]
#![allow(clippy::type_complexity)]
#![doc(html_logo_url = "https://actix.rs/img/logo.png")]

View File

@ -1,6 +1,9 @@
# Changes
## Unreleased - 2020-xx-xx
## 2.0.0-beta.1 - 2020-12-28
* `Service`, other traits, and many type signatures now take the the request type as a type
parameter instead of an associated type. [#232]
* Add `always_ready!` and `forward_ready!` macros. [#233]
@ -19,7 +22,10 @@
### Fixed
* Removed unsound custom Cell implementation that allowed obtaining several mutable references to the same data, which is undefined behavior in Rust and could lead to violations of memory safety. External code could obtain several mutable references to the same data through service combinators. Attempts to acquire several mutable references to the same data will instead result in a panic.
* Removed unsound custom Cell implementation that allowed obtaining several mutable references to
the same data, which is undefined behavior in Rust and could lead to violations of memory safety. External code could obtain several mutable references to the same data through
service combinators. Attempts to acquire several mutable references to the same data will instead
result in a panic.
## [1.0.5] - 2020-01-16

View File

@ -1,7 +1,10 @@
[package]
name = "actix-service"
version = "1.0.6"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
version = "2.0.0-beta.1"
authors = [
"Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>",
]
description = "Service trait and combinators for representing asynchronous request/response operations."
keywords = ["network", "framework", "async", "futures", "service"]
homepage = "https://actix.rs"

View File

@ -1,227 +1,156 @@
# Changes
## Unreleased - 2020-xx-xx
* Update `bytes` dependency to `1`.
## 3.0.0-beta.1 - 2020-12-28
* Update `bytes` dependency to `1`. [#237]
* Use `pin-project-lite` to replace `pin-project`. [#229]
* Remove `condition`,`either`,`inflight`,`keepalive`,`oneshot`,`order`,`stream` and `time` mods. [#229]
[#229]: https://github.com/actix/actix-net/pull/229
[#237]: https://github.com/actix/actix-net/pull/237
## 2.0.0 - 2020-08-23
* No changes from beta 1.
## 2.0.0-beta.1 - 2020-08-19
* Upgrade `tokio-util` to `0.3`.
* Remove unsound custom Cell and use `std::cell::RefCell` instead, as well as `actix-service`.
* Rename method to correctly spelled `LocalWaker::is_registered`.
## [1.0.6] - 2020-01-08
* Add `Clone` impl for `condition::Waiter`
## 1.0.6 - 2020-01-08
* Add `Clone` impl for `condition::Waiter`.
## [1.0.5] - 2020-01-08
## 1.0.5 - 2020-01-08
* Add `Condition` type.
* Add `Pool` of one-shot's.
## [1.0.4] - 2019-12-20
## 1.0.4 - 2019-12-20
* Add methods to check `LocalWaker` registration state.
## [1.0.3] - 2019-12-11
## 1.0.3 - 2019-12-11
* Revert InOrder service changes
## [1.0.2] - 2019-12-11
* Allow to create `framed::Dispatcher` with custom `mpsc::Receiver`
## 1.0.2 - 2019-12-11
* Allow to create `framed::Dispatcher` with custom `mpsc::Receiver`.
* Add `oneshot::Sender::is_canceled()` method.
* Add `oneshot::Sender::is_canceled()` method
## [1.0.1] - 2019-12-11
## 1.0.1 - 2019-12-11
* Optimize InOrder service.
* Optimize InOrder service
## [1.0.0] - 2019-12-11
## 1.0.0 - 2019-12-11
* Simplify oneshot and mpsc implementations.
* Simplify oneshot and mpsc implementations
## [1.0.0-alpha.3] - 2019-12-07
## 1.0.0-alpha.3 - 2019-12-07
* Migrate to tokio 0.2.
* Fix oneshot.
* Migrate to tokio 0.2
* Fix oneshot
## 1.0.0-alpha.2 - 2019-12-02
* Migrate to `std::future`.
## [1.0.0-alpha.2] - 2019-12-02
* Migrate to `std::future`
## [0.4.7] - 2019-10-14
## 0.4.7 - 2019-10-14
* Re-register task on every framed transport poll.
## [0.4.6] - 2019-10-08
## 0.4.6 - 2019-10-08
* Refactor `Counter` type. register current task in available method.
## [0.4.5] - 2019-07-19
### Removed
* Deprecated `CloneableService` as it is not safe
## 0.4.5 - 2019-07-19
* Deprecated `CloneableService` as it is not safe.
## [0.4.4] - 2019-07-17
### Changed
* Undeprecate `FramedTransport` as it is actually useful
## 0.4.4 - 2019-07-17
* Undeprecate `FramedTransport` as it is actually useful.
## [0.4.3] - 2019-07-17
### Deprecated
* Deprecate `CloneableService` as it is not safe and in general not very useful
* Deprecate `FramedTransport` in favor of `actix-ioframe`
## 0.4.3 - 2019-07-17
* Deprecate `CloneableService` as it is not safe and in general not very useful.
* Deprecate `FramedTransport` in favor of `actix-ioframe`.
## [0.4.2] - 2019-06-26
### Fixed
* Do not block on sink drop for FramedTransport
## 0.4.2 - 2019-06-26
* Do not block on sink drop for FramedTransport.
## [0.4.1] - 2019-05-15
### Changed
* Change `Either` constructor
## 0.4.1 - 2019-05-15
* Change `Either` constructor.
## [0.4.0] - 2019-05-11
## 0.4.0 - 2019-05-11
* Change `Either` to handle two nexted services.
* Upgrade actix-service 0.4.
* Removed framed related services.
* Removed stream related services.
### Changed
* Change `Either` to handle two nexted services
* Upgrade actix-service 0.4
### Deleted
* Framed related services
* Stream related services
## [0.3.5] - 2019-04-04
### Added
## 0.3.5 - 2019-04-04
* Allow to send messages to `FramedTransport` via mpsc channel.
### Changed
* Remove 'static constraint from Clonable service
* Remove `'static` constraint from Clonable service.
## [0.3.4] - 2019-03-12
### Changed
## 0.3.4 - 2019-03-12
* `TimeoutService`, `InOrderService`, `InFlightService` accepts generic IntoService services.
### Fixed
* Fix `InFlightService::poll_ready()` nested service readiness check
* Fix `InOrderService::poll_ready()` nested service readiness check
* Fix `InFlightService::poll_ready()` nested service readiness check.
* Fix `InOrderService::poll_ready()` nested service readiness check.
## [0.3.3] - 2019-03-09
### Changed
* Revert IntoFuture change
* Add generic config param for IntoFramed and TakeOne new services
## 0.3.3 - 2019-03-09
* Revert IntoFuture change.
* Add generic config param for IntoFramed and TakeOne new services.
## [0.3.2] - 2019-03-04
## 0.3.2 - 2019-03-04
* Use IntoFuture for new services.
### Changed
* Use IntoFuture for new services
## 0.3.1 - 2019-03-04
* Use new type of transform trait.
## [0.3.1] - 2019-03-04
### Changed
* Use new type of transform trait
## [0.3.0] - 2019-03-02
### Changed
## 0.3.0 - 2019-03-02
* Use new `NewService` trait
* BoxedNewService` and `BoxedService` types moved to actix-service crate.
## [0.2.4] - 2019-02-21
### Changed
## 0.2.4 - 2019-02-21
* Custom `BoxedNewService` implementation.
## [0.2.3] - 2019-02-21
### Added
* Add `BoxedNewService` and `BoxedService`
## 0.2.3 - 2019-02-21
* Add `BoxedNewService` and `BoxedService`.
## [0.2.2] - 2019-02-11
### Added
* Add `Display` impl for `TimeoutError`
* Add `Display` impl for `InOrderError`
## 0.2.2 - 2019-02-11
* Add `Display` impl for `TimeoutError`.
* Add `Display` impl for `InOrderError`.
## [0.2.1] - 2019-02-06
### Added
## 0.2.1 - 2019-02-06
* Add `InOrder` service. the service yields responses as they become available,
in the order that their originating requests were submitted to the service.
### Changed
* Convert `Timeout` and `InFlight` services to a transforms
* Convert `Timeout` and `InFlight` services to a transforms.
## [0.2.0] - 2019-02-01
* Fix framed transport error handling
* Added Clone impl for Either service
* Added Clone impl for Timeout service factory
* Added Service and NewService for Stream dispatcher
* Switch to actix-service 0.2
## 0.2.0 - 2019-02-01
* Fix framed transport error handling.
* Added Clone impl for Either service.
* Added Clone impl for Timeout service factory.
* Added Service and NewService for Stream dispatcher.
* Switch to actix-service 0.2.
## [0.1.0] - 2018-12-09
* Move utils services to separate crate
## 0.1.0 - 2018-12-09
* Move utils services to separate crate.

View File

@ -1,8 +1,8 @@
[package]
name = "actix-utils"
version = "2.0.0"
version = "3.0.0-beta.1"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Various network related services and utilities for the Actix ecosystem."
description = "Various network related services and utilities for the Actix ecosystem"
keywords = ["network", "framework", "async", "futures"]
homepage = "https://actix.rs"
repository = "https://github.com/actix/actix-net.git"
@ -16,9 +16,9 @@ name = "actix_utils"
path = "src/lib.rs"
[dependencies]
actix-codec = "0.3.0"
actix-rt = "1.1.1"
actix-service = "1.0.6"
actix-codec = "0.4.0-beta.1"
actix-rt = "2.0.0-beta.1"
actix-service = "2.0.0-beta.1"
futures-core = { version = "0.3.7", default-features = false }
futures-sink = { version = "0.3.7", default-features = false }

View File

@ -1,4 +1,4 @@
//! Actix utils - various helper services
//! Various network related services and utilities for the Actix ecosystem.
#![deny(rust_2018_idioms, nonstandard_style)]
#![allow(clippy::type_complexity)]

View File

@ -1,4 +1,5 @@
//! A multi-producer, single-consumer, futures-aware, FIFO queue.
use core::any::Any;
use core::cell::RefCell;
use core::fmt;

View File

@ -1,7 +1,6 @@
//! Service that applies a timeout to requests.
//!
//! If the response does not complete within the specified timeout, the response
//! will be aborted.
//! If the response does not complete within the specified timeout, the response will be aborted.
use core::future::Future;
use core::marker::PhantomData;
@ -85,8 +84,8 @@ where
{
type Response = S::Response;
type Error = TimeoutError<S::Error>;
type InitError = E;
type Transform = TimeoutService<S, Req>;
type InitError = E;
type Future = TimeoutFuture<Self::Transform, Self::InitError>;
fn new_transform(&self, service: S) -> Self::Future {
@ -200,12 +199,12 @@ where
#[cfg(test)]
mod tests {
use std::task::Poll;
use std::time::Duration;
use core::task::Poll;
use core::time::Duration;
use super::*;
use actix_service::{apply, fn_factory, Service, ServiceFactory};
use futures_util::future::{ok, FutureExt, LocalBoxFuture};
use futures_core::future::LocalBoxFuture;
struct SleepService(Duration);
@ -217,9 +216,11 @@ mod tests {
actix_service::always_ready!();
fn call(&mut self, _: ()) -> Self::Future {
actix_rt::time::sleep(self.0)
.then(|_| ok::<_, ()>(()))
.boxed_local()
let sleep = actix_rt::time::sleep(self.0);
Box::pin(async move {
sleep.await;
Ok(())
})
}
}
@ -248,7 +249,7 @@ mod tests {
let timeout = apply(
Timeout::new(resolution),
fn_factory(|| ok::<_, ()>(SleepService(wait_time))),
fn_factory(|| async { Ok::<_, ()>(SleepService(wait_time)) }),
);
let mut srv = timeout.new_service(&()).await.unwrap();