1
0
mirror of https://github.com/fafhrd91/actix-net synced 2025-08-21 02:15:38 +02:00

Compare commits

...

23 Commits

Author SHA1 Message Date
Rob Ede
61b6e01b02 chore(bytestring): prepare release 1.3.1 2023-10-29 23:17:28 +00:00
Rob Ede
392e591820 chore(local-channel): prepare release 0.1.5 2023-10-29 23:16:53 +00:00
Rob Ede
87440e5734 chore(local-channel): prepare release 0.1.5 2023-10-29 23:15:19 +00:00
Rob Ede
665dec456f chore(local-waker): prepare release 0.1.4 2023-10-29 23:14:14 +00:00
Rob Ede
7d138f0c31 build: fix min version compat (#498) 2023-10-29 21:15:40 +00:00
Rob Ede
3cd5d8b07a doc: complete ServerBuilder::workers docs 2023-10-29 18:47:38 +00:00
Rob Ede
09548c96b0 doc: fix doc references 2023-10-29 18:45:12 +00:00
Rob Ede
17fd135349 docs: improve docs on ServerBuilder::{bind, workers} 2023-10-29 18:37:29 +00:00
dependabot[bot]
b9b628c47b Update criterion requirement from 0.4 to 0.5 (#495)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 05:08:55 +00:00
dependabot[bot]
580af3dec4 Bump actions/checkout from 3 to 4 (#494)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 04:17:06 +00:00
dependabot[bot]
db54639f0f Bump taiki-e/install-action from 2.18.9 to 2.21.2 (#497)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 03:30:20 +00:00
Rob Ede
6d9eb7e162 ci: specify full action versions 2023-10-29 01:55:34 +00:00
Rob Ede
69e50b5e66 add dependabot updater for actions and cargo 2023-10-29 01:35:12 +00:00
Rob Ede
17409cd203 docs: add bytestring readme 2023-09-17 20:33:36 +01:00
Rob Ede
4a7f2c95af chore: remove dates from changelogs 2023-09-17 20:25:58 +01:00
Rob Ede
c69b8e9ade ci: move coverage to own workflow 2023-09-17 20:11:05 +01:00
Rob Ede
9f59093adc chore(local-channel): prepare release 0.1.4 2023-09-17 19:32:01 +01:00
Paolo Barbolini
bfeb4cd9e7 local-channel: drop futures-util by using future::poll_fn from std (#490) 2023-09-17 11:45:55 +00:00
Rob Ede
14272a1762 chore: force secure rustls-webpki 2023-08-29 18:45:11 +01:00
Rob Ede
7e043048a0 chore(actix-tls): prepare release 3.1.1 2023-08-29 18:41:48 +01:00
Rob Ede
45a7dcba90 chore(tls): fix min rustls version 2023-08-29 18:40:55 +01:00
Rob Ede
5029beb866 prepare actix-tls release 3.1.0 2023-08-26 18:05:39 +01:00
Rob Ede
910c181251 prepare actix-server release 2.3.0 2023-08-26 18:04:22 +01:00
34 changed files with 450 additions and 265 deletions

10
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
- package-ecosystem: cargo
directory: /
schedule:
interval: weekly

View File

@@ -36,7 +36,7 @@ jobs:
if: matrix.target.os == 'macos-latest' if: matrix.target.os == 'macos-latest'
run: sudo ifconfig lo0 alias 127.0.0.3 run: sudo ifconfig lo0 alias 127.0.0.3
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Free Disk Space - name: Free Disk Space
if: matrix.target.os == 'ubuntu-latest' if: matrix.target.os == 'ubuntu-latest'
@@ -52,12 +52,13 @@ jobs:
echo 'OPENSSL_DIR=C:\Program Files\OpenSSL' | Out-File -FilePath $env:GITHUB_ENV -Append echo 'OPENSSL_DIR=C:\Program Files\OpenSSL' | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Install Rust (${{ matrix.version }}) - name: Install Rust (${{ matrix.version }})
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: with:
toolchain: ${{ matrix.version }} toolchain: ${{ matrix.version }}
- uses: taiki-e/install-action@v2 - uses: taiki-e/install-action@v2.21.2
with: { tool: cargo-hack } with:
tool: cargo-hack
- name: check lib - name: check lib
if: > if: >
@@ -103,41 +104,21 @@ jobs:
cargo install cargo-cache --version 0.6.2 --no-default-features --features ci-autoclean cargo install cargo-cache --version 0.6.2 --no-default-features --features ci-autoclean
cargo-cache cargo-cache
coverage:
name: coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1
with: { toolchain: nightly }
- name: Install cargo-tarpaulin
uses: taiki-e/install-action@v1
with: { tool: cargo-tarpaulin }
- name: Generate coverage file
if: github.ref == 'refs/heads/master'
run: cargo tarpaulin --out Xml --verbose
- name: Upload to Codecov
if: github.ref == 'refs/heads/master'
uses: codecov/codecov-action@v3
with: { files: cobertura.xml }
minimal-versions: minimal-versions:
name: minimal versions name: minimal versions
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install Rust (nightly) - name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: { toolchain: nightly } with:
toolchain: nightly
- name: Install cargo-hack & cargo-minimal-versions - name: Install cargo-hack & cargo-minimal-versions
uses: taiki-e/install-action@v1 uses: taiki-e/install-action@v2.21.2
with: { tool: 'cargo-hack,cargo-minimal-versions' } with:
tool: cargo-hack,cargo-minimal-versions
- name: Check With Minimal Versions - name: Check With Minimal Versions
run: cargo minimal-versions check run: cargo minimal-versions check
@@ -146,14 +127,15 @@ jobs:
name: nextest name: nextest
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install Rust - name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
- name: Install cargo-nextest - name: Install cargo-nextest
uses: taiki-e/install-action@v1 uses: taiki-e/install-action@v2.21.2
with: { tool: cargo-nextest } with:
tool: cargo-nextest
- name: Test with cargo-nextest - name: Test with cargo-nextest
run: cargo nextest run run: cargo nextest run

View File

@@ -24,10 +24,10 @@ jobs:
- { name: Windows (MinGW), os: windows-latest, triple: x86_64-pc-windows-gnu } - { name: Windows (MinGW), os: windows-latest, triple: x86_64-pc-windows-gnu }
- { name: Windows (32-bit), os: windows-latest, triple: i686-pc-windows-msvc } - { name: Windows (32-bit), os: windows-latest, triple: i686-pc-windows-msvc }
version: version:
- 1.65.0 # MSRV - { name: msrv, version: 1.65.0 }
- stable - { name: stable, version: stable }
name: ${{ matrix.target.name }} / ${{ matrix.version }} name: ${{ matrix.target.name }} / ${{ matrix.version.name }}
runs-on: ${{ matrix.target.os }} runs-on: ${{ matrix.target.os }}
env: {} env: {}
@@ -37,7 +37,7 @@ jobs:
if: matrix.target.os == 'macos-latest' if: matrix.target.os == 'macos-latest'
run: sudo ifconfig lo0 alias 127.0.0.3 run: sudo ifconfig lo0 alias 127.0.0.3
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Free Disk Space - name: Free Disk Space
if: matrix.target.os == 'ubuntu-latest' if: matrix.target.os == 'ubuntu-latest'
@@ -52,21 +52,25 @@ jobs:
echo 'OPENSSL_DIR=C:\Program Files\OpenSSL-Win64' | Out-File -FilePath $env:GITHUB_ENV -Append echo 'OPENSSL_DIR=C:\Program Files\OpenSSL-Win64' | Out-File -FilePath $env:GITHUB_ENV -Append
echo 'OPENSSL_DIR=C:\Program Files\OpenSSL' | Out-File -FilePath $env:GITHUB_ENV -Append echo 'OPENSSL_DIR=C:\Program Files\OpenSSL' | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Install Rust (${{ matrix.version }}) - name: Install Rust (${{ matrix.version.name }})
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: with:
toolchain: ${{ matrix.version }} toolchain: ${{ matrix.version.version }}
- uses: taiki-e/install-action@v1 - uses: taiki-e/install-action@v2.21.2
with: { tool: cargo-hack } with:
tool: cargo-hack
- name: Generate Cargo.lock - name: Generate Cargo.lock
run: cargo generate-lockfile run: cargo generate-lockfile
- name: workaround MSRV issues - name: workaround MSRV issues
if: matrix.version != 'stable' if: matrix.version.name == 'msrv'
run: | run: |
cargo update -p=time --precise=0.3.16 # time is only a dev dep so shouldn't affect msrv cargo update -p=time --precise=0.3.16
cargo update -p=clap --precise=4.3.24
cargo update -p=clap_lex --precise=0.5.0
cargo update -p=anstyle --precise=1.0.2
- name: check lib - name: check lib
if: > if: >
@@ -105,9 +109,9 @@ jobs:
ulimit -Sl 512 ulimit -Sl 512
&& ulimit -Hl 512 && ulimit -Hl 512
&& PATH=$PATH:/usr/share/rust/.cargo/bin && PATH=$PATH:/usr/share/rust/.cargo/bin
&& RUSTUP_TOOLCHAIN=${{ matrix.version }} cargo ci-test-rustls-020 && RUSTUP_TOOLCHAIN=${{ matrix.version.version }} cargo ci-test-rustls-020
&& RUSTUP_TOOLCHAIN=${{ matrix.version }} cargo ci-test-rustls-021 && RUSTUP_TOOLCHAIN=${{ matrix.version.version }} cargo ci-test-rustls-021
&& RUSTUP_TOOLCHAIN=${{ matrix.version }} cargo ci-test-linux && RUSTUP_TOOLCHAIN=${{ matrix.version.version }} cargo ci-test-linux
" "
- name: Clear the cargo caches - name: Clear the cargo caches
@@ -120,11 +124,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install Rust (nightly) - name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: { toolchain: nightly } with:
toolchain: nightly
- name: doc tests io-uring - name: doc tests io-uring
run: | run: |

View File

@@ -14,9 +14,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: with:
toolchain: nightly toolchain: nightly
components: rustfmt components: rustfmt
@@ -31,13 +31,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: { components: clippy } with: { components: clippy }
- uses: giraffate/clippy-action@v1 - uses: giraffate/clippy-action@v1.0.1
with: with:
reporter: 'github-pr-check' reporter: 'github-pr-check'
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
clippy_flags: --workspace --all-features --tests --examples --bins -- -Dclippy::todo clippy_flags: --workspace --all-features --tests --examples --bins -- -Dclippy::todo -Aunknown_lints

37
.github/workflows/coverage.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Coverage
on:
push:
branches: [master]
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with:
components: llvm-tools-preview
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2.21.2
with:
tool: cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --workspace --all-features --codecov --output-path codecov.json
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3.1.4
with:
files: codecov.json
fail_ci_if_error: true

View File

@@ -18,9 +18,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with: { toolchain: nightly } with: { toolchain: nightly }
- name: Build Docs - name: Build Docs
@@ -30,6 +30,7 @@ jobs:
run: echo '<meta http-equiv="refresh" content="0;url=actix_server/index.html">' > target/doc/index.html run: echo '<meta http-equiv="refresh" content="0;url=actix_server/index.html">' > target/doc/index.html
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4 uses: JamesIves/github-pages-deploy-action@v4.4.3
with: with:
folder: target/doc folder: target/doc
single-commit: true

View File

@@ -1,27 +1,27 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 0.5.1 - 2022-03-15 ## 0.5.1
- Logs emitted now use the `tracing` crate with `log` compatibility. [#451] - Logs emitted now use the `tracing` crate with `log` compatibility. [#451]
- Minimum supported Rust version (MSRV) is now 1.49. - Minimum supported Rust version (MSRV) is now 1.49.
[#451]: https://github.com/actix/actix-net/pull/451 [#451]: https://github.com/actix/actix-net/pull/451
## 0.5.0 - 2022-02-15 ## 0.5.0
- Updated `tokio-util` dependency to `0.7.0`. [#446] - Updated `tokio-util` dependency to `0.7.0`. [#446]
[#446]: https://github.com/actix/actix-net/pull/446 [#446]: https://github.com/actix/actix-net/pull/446
## 0.4.2 - 2021-12-31 ## 0.4.2
- No significant changes since `0.4.1`. - No significant changes since `0.4.1`.
## 0.4.1 - 2021-11-05 ## 0.4.1
- Added `LinesCodec.` [#338] - Added `LinesCodec.` [#338]
- `Framed::poll_ready` flushes when the buffer is full. [#409] - `Framed::poll_ready` flushes when the buffer is full. [#409]
@@ -29,11 +29,11 @@
[#338]: https://github.com/actix/actix-net/pull/338 [#338]: https://github.com/actix/actix-net/pull/338
[#409]: https://github.com/actix/actix-net/pull/409 [#409]: https://github.com/actix/actix-net/pull/409
## 0.4.0 - 2021-04-20 ## 0.4.0
- No significant changes since v0.4.0-beta.1. - No significant changes since v0.4.0-beta.1.
## 0.4.0-beta.1 - 2020-12-28 ## 0.4.0-beta.1
- Replace `pin-project` with `pin-project-lite`. [#237] - Replace `pin-project` with `pin-project-lite`. [#237]
- Upgrade `tokio` dependency to `1`. [#237] - Upgrade `tokio` dependency to `1`. [#237]
@@ -42,15 +42,15 @@
[#237]: https://github.com/actix/actix-net/pull/237 [#237]: https://github.com/actix/actix-net/pull/237
## 0.3.0 - 2020-08-23 ## 0.3.0
- No changes from beta 2. - No changes from beta 2.
## 0.3.0-beta.2 - 2020-08-19 ## 0.3.0-beta.2
- Remove unused type parameter from `Framed::replace_codec`. - Remove unused type parameter from `Framed::replace_codec`.
## 0.3.0-beta.1 - 2020-08-19 ## 0.3.0-beta.1
- Use `.advance()` instead of `.split_to()`. - Use `.advance()` instead of `.split_to()`.
- Upgrade `tokio-util` to `0.3`. - Upgrade `tokio-util` to `0.3`.
@@ -60,7 +60,7 @@
- Add method on `Framed` to get a pinned reference to the underlying I/O. - Add method on `Framed` to get a pinned reference to the underlying I/O.
- Add method on `Framed` check emptiness of read buffer. - Add method on `Framed` check emptiness of read buffer.
## 0.2.0 - 2019-12-10 ## 0.2.0
- Use specific futures dependencies. - Use specific futures dependencies.
@@ -77,14 +77,14 @@
- Migrated to `std::future`. - Migrated to `std::future`.
## 0.1.2 - 2019-03-27 ## 0.1.2
- Added `Framed::map_io()` method. - Added `Framed::map_io()` method.
## 0.1.1 - 2019-03-06 ## 0.1.1
- Added `FramedParts::with_read_buffer()` method. - Added `FramedParts::with_read_buffer()` method.
## 0.1.0 - 2018-12-09 ## 0.1.0
- Move codec to separate crate. - Move codec to separate crate.

View File

@@ -25,7 +25,7 @@ tokio-util = { version = "0.7", features = ["codec", "io"] }
tracing = { version = "0.1.30", default-features = false, features = ["log"] } tracing = { version = "0.1.30", default-features = false, features = ["log"] }
[dev-dependencies] [dev-dependencies]
criterion = { version = "0.4", features = ["html_reports"] } criterion = { version = "0.5", features = ["html_reports"] }
tokio-test = "0.4.2" tokio-test = "0.4.2"
[[bench]] [[bench]]

View File

@@ -7,12 +7,17 @@ authors = [
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",
] ]
description = "Macros for Actix system and runtime" description = "Macros for Actix system and runtime"
repository = "https://github.com/actix/actix-net.git" repository = "https://github.com/actix/actix-net"
categories = ["network-programming", "asynchronous"] categories = ["network-programming", "asynchronous"]
license = "MIT OR Apache-2.0" license.workspace = true
edition.workspace = true edition.workspace = true
rust-version.workspace = true rust-version.workspace = true
[package.metadata.cargo-machete]
ignored = [
"proc_macro2", # specified for minimal versions compat
]
[lib] [lib]
proc-macro = true proc-macro = true
@@ -20,6 +25,10 @@ proc-macro = true
quote = "1" quote = "1"
syn = { version = "2", features = ["full"] } syn = { version = "2", features = ["full"] }
# minimal versions compat
[target.'cfg(any())'.dependencies]
proc-macro2 = "1.0.60"
[dev-dependencies] [dev-dependencies]
actix-rt = "2" actix-rt = "2"

View File

@@ -1,6 +1,6 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
## 2.9.0 ## 2.9.0
@@ -8,7 +8,7 @@
- Add `actix_rt::Runtime::tokio_runtime()` method to retrieve the underlying Tokio runtime. - Add `actix_rt::Runtime::tokio_runtime()` method to retrieve the underlying Tokio runtime.
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 2.8.0 - 2022-12-21 ## 2.8.0
- Add `#[track_caller]` attribute to `spawn` functions and methods. [#454] - Add `#[track_caller]` attribute to `spawn` functions and methods. [#454]
- Update `tokio-uring` dependency to `0.4`. [#473] - Update `tokio-uring` dependency to `0.4`. [#473]
@@ -17,32 +17,32 @@
[#454]: https://github.com/actix/actix-net/pull/454 [#454]: https://github.com/actix/actix-net/pull/454
[#473]: https://github.com/actix/actix-net/pull/473 [#473]: https://github.com/actix/actix-net/pull/473
## 2.7.0 - 2022-03-08 ## 2.7.0
- Update `tokio-uring` dependency to `0.3`. [#448] - Update `tokio-uring` dependency to `0.3`. [#448]
- Minimum supported Rust version (MSRV) is now 1.49. - Minimum supported Rust version (MSRV) is now 1.49.
[#448]: https://github.com/actix/actix-net/pull/448 [#448]: https://github.com/actix/actix-net/pull/448
## 2.6.0 - 2022-01-12 ## 2.6.0
- Update `tokio-uring` dependency to `0.2`. [#436] - Update `tokio-uring` dependency to `0.2`. [#436]
[#436]: https://github.com/actix/actix-net/pull/436 [#436]: https://github.com/actix/actix-net/pull/436
## 2.5.1 - 2021-12-31 ## 2.5.1
- Expose `System::with_tokio_rt` and `Arbiter::with_tokio_rt`. [#430] - Expose `System::with_tokio_rt` and `Arbiter::with_tokio_rt`. [#430]
[#430]: https://github.com/actix/actix-net/pull/430 [#430]: https://github.com/actix/actix-net/pull/430
## 2.5.0 - 2021-11-22 ## 2.5.0
- Add `System::run_with_code` to allow retrieving the exit code on stop. [#411] - Add `System::run_with_code` to allow retrieving the exit code on stop. [#411]
[#411]: https://github.com/actix/actix-net/pull/411 [#411]: https://github.com/actix/actix-net/pull/411
## 2.4.0 - 2021-11-05 ## 2.4.0
- Add `Arbiter::try_current` for situations where thread may or may not have Arbiter context. [#408] - Add `Arbiter::try_current` for situations where thread may or may not have Arbiter context. [#408]
- Start io-uring with `System::new` when feature is enabled. [#395] - Start io-uring with `System::new` when feature is enabled. [#395]
@@ -50,7 +50,7 @@
[#395]: https://github.com/actix/actix-net/pull/395 [#395]: https://github.com/actix/actix-net/pull/395
[#408]: https://github.com/actix/actix-net/pull/408 [#408]: https://github.com/actix/actix-net/pull/408
## 2.3.0 - 2021-10-11 ## 2.3.0
- The `spawn` method can now resolve with non-unit outputs. [#369] - The `spawn` method can now resolve with non-unit outputs. [#369]
- Add experimental (semver-exempt) `io-uring` feature for enabling async file I/O on linux. [#374] - Add experimental (semver-exempt) `io-uring` feature for enabling async file I/O on linux. [#374]
@@ -58,14 +58,14 @@
[#369]: https://github.com/actix/actix-net/pull/369 [#369]: https://github.com/actix/actix-net/pull/369
[#374]: https://github.com/actix/actix-net/pull/374 [#374]: https://github.com/actix/actix-net/pull/374
## 2.2.0 - 2021-03-29 ## 2.2.0
- **BREAKING** `ActixStream::{poll_read_ready, poll_write_ready}` methods now return `Ready` object in ok variant. [#293] - **BREAKING** `ActixStream::{poll_read_ready, poll_write_ready}` methods now return `Ready` object in ok variant. [#293]
- Breakage is acceptable since `ActixStream` was not intended to be public. - Breakage is acceptable since `ActixStream` was not intended to be public.
[#293]: https://github.com/actix/actix-net/pull/293 [#293]: https://github.com/actix/actix-net/pull/293
## 2.1.0 - 2021-02-24 ## 2.1.0
- Add `ActixStream` extension trait to include readiness methods. [#276] - Add `ActixStream` extension trait to include readiness methods. [#276]
- Re-export `tokio::net::TcpSocket` in `net` module [#282] - Re-export `tokio::net::TcpSocket` in `net` module [#282]
@@ -73,7 +73,7 @@
[#276]: https://github.com/actix/actix-net/pull/276 [#276]: https://github.com/actix/actix-net/pull/276
[#282]: https://github.com/actix/actix-net/pull/282 [#282]: https://github.com/actix/actix-net/pull/282
## 2.0.2 - 2021-02-06 ## 2.0.2
- Add `Arbiter::handle` to get a handle of an owned Arbiter. [#274] - Add `Arbiter::handle` to get a handle of an owned Arbiter. [#274]
- Add `System::try_current` for situations where actix may or may not be running a System. [#275] - Add `System::try_current` for situations where actix may or may not be running a System. [#275]
@@ -81,20 +81,20 @@
[#274]: https://github.com/actix/actix-net/pull/274 [#274]: https://github.com/actix/actix-net/pull/274
[#275]: https://github.com/actix/actix-net/pull/275 [#275]: https://github.com/actix/actix-net/pull/275
## 2.0.1 - 2021-02-06 ## 2.0.1
- Expose `JoinError` from Tokio. [#271] - Expose `JoinError` from Tokio. [#271]
[#271]: https://github.com/actix/actix-net/pull/271 [#271]: https://github.com/actix/actix-net/pull/271
## 2.0.0 - 2021-02-02 ## 2.0.0
- Remove all Arbiter-local storage methods. [#262] - Remove all Arbiter-local storage methods. [#262]
- Re-export `tokio::pin`. [#262] - Re-export `tokio::pin`. [#262]
[#262]: https://github.com/actix/actix-net/pull/262 [#262]: https://github.com/actix/actix-net/pull/262
## 2.0.0-beta.3 - 2021-01-31 ## 2.0.0-beta.3
- Remove `run_in_tokio`, `attach_to_tokio` and `AsyncSystemRunner`. [#253] - Remove `run_in_tokio`, `attach_to_tokio` and `AsyncSystemRunner`. [#253]
- Return `JoinHandle` from `actix_rt::spawn`. [#253] - Return `JoinHandle` from `actix_rt::spawn`. [#253]
@@ -118,14 +118,14 @@
[#256]: https://github.com/actix/actix-net/pull/256 [#256]: https://github.com/actix/actix-net/pull/256
[#257]: https://github.com/actix/actix-net/pull/257 [#257]: https://github.com/actix/actix-net/pull/257
## 2.0.0-beta.2 - 2021-01-09 ## 2.0.0-beta.2
- Add `task` mod with re-export of `tokio::task::{spawn_blocking, yield_now, JoinHandle}` [#245] - Add `task` mod with re-export of `tokio::task::{spawn_blocking, yield_now, JoinHandle}` [#245]
- Add default "macros" feature to allow faster compile times when using `default-features=false`. - Add default "macros" feature to allow faster compile times when using `default-features=false`.
[#245]: https://github.com/actix/actix-net/pull/245 [#245]: https://github.com/actix/actix-net/pull/245
## 2.0.0-beta.1 - 2020-12-28 ## 2.0.0-beta.1
- Add `System::attach_to_tokio` method. [#173] - Add `System::attach_to_tokio` method. [#173]
- Update `tokio` dependency to `1.0`. [#236] - Update `tokio` dependency to `1.0`. [#236]
@@ -139,13 +139,13 @@
[#207]: https://github.com/actix/actix-net/pull/207 [#207]: https://github.com/actix/actix-net/pull/207
[#236]: https://github.com/actix/actix-net/pull/236 [#236]: https://github.com/actix/actix-net/pull/236
## 1.1.1 - 2020-04-30 ## 1.1.1
- Fix memory leak due to [#94] (see [#129] for more detail) - Fix memory leak due to [#94] (see [#129] for more detail)
[#129]: https://github.com/actix/actix-net/issues/129 [#129]: https://github.com/actix/actix-net/issues/129
## 1.1.0 - 2020-04-08 _(YANKED)_ ## 1.1.0 _(YANKED)_
- Expose `System::is_set` to check if current system has ben started [#99] - Expose `System::is_set` to check if current system has ben started [#99]
- Add `Arbiter::is_running` to check if event loop is running [#124] - Add `Arbiter::is_running` to check if event loop is running [#124]
@@ -155,57 +155,57 @@
[#99]: https://github.com/actix/actix-net/pull/99 [#99]: https://github.com/actix/actix-net/pull/99
[#124]: https://github.com/actix/actix-net/pull/124 [#124]: https://github.com/actix/actix-net/pull/124
## 1.0.0 - 2019-12-11 ## 1.0.0
- Update dependencies - Update dependencies
## 1.0.0-alpha.3 - 2019-12-07 ## 1.0.0-alpha.3
- Migrate to tokio 0.2 - Migrate to tokio 0.2
- Fix compilation on non-unix platforms - Fix compilation on non-unix platforms
## 1.0.0-alpha.2 - 2019-12-02 ## 1.0.0-alpha.2
- Export `main` and `test` attribute macros - Export `main` and `test` attribute macros
- Export `time` module (re-export of tokio-timer) - Export `time` module (re-export of tokio-timer)
- Export `net` module (re-export of tokio-net) - Export `net` module (re-export of tokio-net)
## 1.0.0-alpha.1 - 2019-11-22 ## 1.0.0-alpha.1
- Migrate to std::future and tokio 0.2 - Migrate to std::future and tokio 0.2
## 0.2.6 - 2019-11-14 ## 0.2.6
- Allow to join arbiter's thread. #60 - Allow to join arbiter's thread. #60
- Fix arbiter's thread panic message. - Fix arbiter's thread panic message.
## 0.2.5 - 2019-09-02 ## 0.2.5
- Add arbiter specific storage - Add arbiter specific storage
## 0.2.4 - 2019-07-17 ## 0.2.4
- Avoid a copy of the Future when initializing the Box. #29 - Avoid a copy of the Future when initializing the Box. #29
## 0.2.3 - 2019-06-22 ## 0.2.3
- Allow to start System using existing CurrentThread Handle #22 - Allow to start System using existing CurrentThread Handle #22
## 0.2.2 - 2019-03-28 ## 0.2.2
- Moved `blocking` module to `actix-threadpool` crate - Moved `blocking` module to `actix-threadpool` crate
## 0.2.1 - 2019-03-11 ## 0.2.1
- Added `blocking` module - Added `blocking` module
- Added `Arbiter::exec_fn` - execute fn on the arbiter's thread - Added `Arbiter::exec_fn` - execute fn on the arbiter's thread
- Added `Arbiter::exec` - execute fn on the arbiter's thread and wait result - Added `Arbiter::exec` - execute fn on the arbiter's thread and wait result
## 0.2.0 - 2019-03-06 ## 0.2.0
- `run` method returns `io::Result<()>` - `run` method returns `io::Result<()>`
- Removed `Handle` - Removed `Handle`
## 0.1.0 - 2018-12-09 ## 0.1.0
- Initial release - Initial release

View File

@@ -203,16 +203,20 @@ impl SystemRunner {
.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))
} }
/// Retrieves a reference to the underlying Actix runtime associated with this SystemRunner instance. /// Retrieves a reference to the underlying [Actix runtime](crate::Runtime) associated with this
/// `SystemRunner` instance.
/// ///
/// The Actix runtime is responsible for managing the event loop for an Actix system and executing asynchronous tasks. /// The Actix runtime is responsible for managing the event loop for an Actix system and
/// This method provides access to the runtime, allowing direct interaction with its features. /// executing asynchronous tasks. This method provides access to the runtime, allowing direct
/// interaction with its features.
/// ///
/// In a typical use case, you might need to share the same runtime between different /// In a typical use case, you might need to share the same runtime between different
/// parts of your project. For example, some components might require a [`actix_rt::Runtime`] to spawn tasks on /// parts of your project. For example, some components might require a [`Runtime`] to spawn
/// the same runtime. /// tasks on the same runtime.
/// ///
/// # Example /// Read more in the documentation for [`Runtime`].
///
/// # Examples
/// ///
/// ``` /// ```
/// let system_runner = actix_rt::System::new(); /// let system_runner = actix_rt::System::new();
@@ -221,19 +225,14 @@ impl SystemRunner {
/// // Use the runtime to spawn an async task or perform other operations /// // Use the runtime to spawn an async task or perform other operations
/// ``` /// ```
/// ///
/// Read more in the documentation for [`actix_rt::Runtime`]
///
/// # Returns
///
/// An immutable reference to the [`actix_rt::Runtime`] instance associated with this
/// [`actix_rt::SystemRunner`] instance.
///
/// # Note /// # Note
/// ///
/// While this method provides an immutable reference to the Actix runtime, which is safe to share across threads, /// While this method provides an immutable reference to the Actix runtime, which is safe to
/// be aware that spawning blocking tasks on the Actix runtime could potentially impact system performance. /// share across threads, be aware that spawning blocking tasks on the Actix runtime could
/// This is because the Actix runtime is responsible for driving the system, /// potentially impact system performance. This is because the Actix runtime is responsible for
/// and blocking tasks could delay other tasks in the run loop. /// driving the system, and blocking tasks could delay other tasks in the run loop.
///
/// [`Runtime`]: crate::Runtime
pub fn runtime(&self) -> &crate::runtime::Runtime { pub fn runtime(&self) -> &crate::runtime::Runtime {
&self.rt &self.rt
} }

View File

@@ -2,6 +2,8 @@
## Unreleased ## Unreleased
## 2.3.0
- Add support for MultiPath TCP (MPTCP) with `MpTcp` enum and `ServerBuilder::mptcp()` method. - Add support for MultiPath TCP (MPTCP) with `MpTcp` enum and `ServerBuilder::mptcp()` method.
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "actix-server" name = "actix-server"
version = "2.2.0" version = "2.3.0"
authors = [ authors = [
"Nikolay Kim <fafhrd91@gmail.com>", "Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",

View File

@@ -2,14 +2,20 @@
> General purpose TCP server built for the Actix ecosystem. > General purpose TCP server built for the Actix ecosystem.
<!-- prettier-ignore-start -->
[![crates.io](https://img.shields.io/crates/v/actix-server?label=latest)](https://crates.io/crates/actix-server) [![crates.io](https://img.shields.io/crates/v/actix-server?label=latest)](https://crates.io/crates/actix-server)
[![Documentation](https://docs.rs/actix-server/badge.svg?version=2.2.0)](https://docs.rs/actix-server/2.2.0) [![Documentation](https://docs.rs/actix-server/badge.svg?version=2.3.0)](https://docs.rs/actix-server/2.3.0)
[![Version](https://img.shields.io/badge/rustc-1.52+-ab6000.svg)](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html) [![Version](https://img.shields.io/badge/rustc-1.52+-ab6000.svg)](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
![License](https://img.shields.io/crates/l/actix-server.svg) ![MIT or Apache 2.0 licensed](https://img.shields.io/crates/l/actix-server.svg)
[![Dependency Status](https://deps.rs/crate/actix-server/2.2.0/status.svg)](https://deps.rs/crate/actix-server/2.2.0) <br />
[![Dependency Status](https://deps.rs/crate/actix-server/2.3.0/status.svg)](https://deps.rs/crate/actix-server/2.3.0)
![Download](https://img.shields.io/crates/d/actix-server.svg) ![Download](https://img.shields.io/crates/d/actix-server.svg)
[![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x) [![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x)
<!-- prettier-ignore-end -->
## Resources ## Resources
- [Library Documentation](https://docs.rs/actix-server) - [Library Documentation](https://docs.rs/actix-server)
- [Examples](/actix-server/examples) - [Examples](/actix-server/examples)

View File

@@ -2,7 +2,6 @@ use std::{io, num::NonZeroUsize, time::Duration};
use actix_rt::net::TcpStream; use actix_rt::net::TcpStream;
use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender}; use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender};
use tracing::{info, trace};
use crate::{ use crate::{
server::ServerCommand, server::ServerCommand,
@@ -14,7 +13,9 @@ use crate::{
/// Multipath TCP (MPTCP) preference. /// Multipath TCP (MPTCP) preference.
/// ///
/// Also see [`ServerBuilder::mptcp()`]. /// Currently only useful on Linux.
///
#[cfg_attr(target_os = "linux", doc = "Also see [`ServerBuilder::mptcp()`].")]
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum MpTcp { pub enum MpTcp {
/// MPTCP will not be used when binding sockets. /// MPTCP will not be used when binding sockets.
@@ -69,19 +70,19 @@ impl ServerBuilder {
} }
} }
/// Set number of workers to start. /// Sets number of workers to start.
///
/// See [`bind()`](Self::bind()) for more details on how worker count affects the number of
/// server factory instantiations.
///
/// The default worker count is the determined by [`std::thread::available_parallelism()`]. See
/// its documentation to determine what behavior you should expect when server is run.
/// ///
/// `num` must be greater than 0. /// `num` must be greater than 0.
/// ///
/// The default worker count is the number of physical CPU cores available. If your benchmark
/// testing indicates that simultaneous multi-threading is beneficial to your app, you can use
/// the [`num_cpus`] crate to acquire the _logical_ core count instead.
///
/// # Panics /// # Panics
/// ///
/// Panics if `num` is 0. /// Panics if `num` is 0.
///
/// [`num_cpus`]: https://docs.rs/num_cpus
pub fn workers(mut self, num: usize) -> Self { pub fn workers(mut self, num: usize) -> Self {
assert_ne!(num, 0, "workers must be greater than 0"); assert_ne!(num, 0, "workers must be greater than 0");
self.threads = num; self.threads = num;
@@ -155,13 +156,15 @@ impl ServerBuilder {
self.max_concurrent_connections(num) self.max_concurrent_connections(num)
} }
/// Stop Actix `System` after server shutdown. /// Sets flag to stop Actix `System` after server shutdown.
///
/// This has no effect when server is running in a Tokio-only runtime.
pub fn system_exit(mut self) -> Self { pub fn system_exit(mut self) -> Self {
self.exit = true; self.exit = true;
self self
} }
/// Disable OS signal handling. /// Disables OS signal handling.
pub fn disable_signals(mut self) -> Self { pub fn disable_signals(mut self) -> Self {
self.listen_os_signals = false; self.listen_os_signals = false;
self self
@@ -179,25 +182,49 @@ impl ServerBuilder {
self self
} }
/// Add new service to the server. /// Adds new service to the server.
pub fn bind<F, U, N>(mut self, name: N, addr: U, factory: F) -> io::Result<Self> ///
/// Note that, if a DNS lookup is required, resolving hostnames is a blocking operation.
///
/// # Worker Count
///
/// The `factory` will be instantiated multiple times in most scenarios. The number of
/// instantiations is number of [`workers`](Self::workers()) × number of sockets resolved by
/// `addrs`.
///
/// For example, if you've manually set [`workers`](Self::workers()) to 2, and use `127.0.0.1`
/// as the bind `addrs`, then `factory` will be instantiated twice. However, using `localhost`
/// as the bind `addrs` can often resolve to both `127.0.0.1` (IPv4) _and_ `::1` (IPv6), causing
/// the `factory` to be instantiated 4 times (2 workers × 2 bind addresses).
///
/// Using a bind address of `0.0.0.0`, which signals to use all interfaces, may also multiple
/// the number of instantiations in a similar way.
///
/// # Errors
///
/// Returns an `io::Error` if:
/// - `addrs` cannot be resolved into one or more socket addresses;
/// - all the resolved socket addresses are already bound.
pub fn bind<F, U, N>(mut self, name: N, addrs: U, factory: F) -> io::Result<Self>
where where
F: ServerServiceFactory<TcpStream>, F: ServerServiceFactory<TcpStream>,
U: ToSocketAddrs, U: ToSocketAddrs,
N: AsRef<str>, N: AsRef<str>,
{ {
let sockets = bind_addr(addr, self.backlog, &self.mptcp)?; let sockets = bind_addr(addrs, self.backlog, &self.mptcp)?;
trace!("binding server to: {:?}", &sockets); tracing::trace!("binding server to: {sockets:?}");
for lst in sockets { for lst in sockets {
let token = self.next_token(); let token = self.next_token();
self.factories.push(StreamNewService::create( self.factories.push(StreamNewService::create(
name.as_ref().to_string(), name.as_ref().to_string(),
token, token,
factory.clone(), factory.clone(),
lst.local_addr()?, lst.local_addr()?,
)); ));
self.sockets self.sockets
.push((token, name.as_ref().to_string(), MioListener::Tcp(lst))); .push((token, name.as_ref().to_string(), MioListener::Tcp(lst)));
} }
@@ -205,7 +232,12 @@ impl ServerBuilder {
Ok(self) Ok(self)
} }
/// Add new service to the server. /// Adds service to the server using a socket listener already bound.
///
/// # Worker Count
///
/// The `factory` will be instantiated multiple times in most scenarios. The number of
/// instantiations is: number of [`workers`](Self::workers()).
pub fn listen<F, N: AsRef<str>>( pub fn listen<F, N: AsRef<str>>(
mut self, mut self,
name: N, name: N,
@@ -237,7 +269,7 @@ impl ServerBuilder {
if self.sockets.is_empty() { if self.sockets.is_empty() {
panic!("Server should have at least one bound socket"); panic!("Server should have at least one bound socket");
} else { } else {
info!("starting {} workers", self.threads); tracing::info!("starting {} workers", self.threads);
Server::new(self) Server::new(self)
} }
} }
@@ -251,7 +283,12 @@ impl ServerBuilder {
#[cfg(unix)] #[cfg(unix)]
impl ServerBuilder { impl ServerBuilder {
/// Add new unix domain service to the server. /// Adds new service to the server using a UDS (unix domain socket) address.
///
/// # Worker Count
///
/// The `factory` will be instantiated multiple times in most scenarios. The number of
/// instantiations is: number of [`workers`](Self::workers()).
pub fn bind_uds<F, U, N>(self, name: N, addr: U, factory: F) -> io::Result<Self> pub fn bind_uds<F, U, N>(self, name: N, addr: U, factory: F) -> io::Result<Self>
where where
F: ServerServiceFactory<actix_rt::net::UnixStream>, F: ServerServiceFactory<actix_rt::net::UnixStream>,
@@ -271,9 +308,14 @@ impl ServerBuilder {
self.listen_uds(name, lst, factory) self.listen_uds(name, lst, factory)
} }
/// Add new unix domain service to the server. /// Adds new service to the server using a UDS (unix domain socket) listener already bound.
/// ///
/// Useful when running as a systemd service and a socket FD is acquired externally. /// Useful when running as a systemd service and a socket FD is acquired externally.
///
/// # Worker Count
///
/// The `factory` will be instantiated multiple times in most scenarios. The number of
/// instantiations is: number of [`workers`](Self::workers()).
pub fn listen_uds<F, N: AsRef<str>>( pub fn listen_uds<F, N: AsRef<str>>(
mut self, mut self,
name: N, name: N,
@@ -284,17 +326,22 @@ impl ServerBuilder {
F: ServerServiceFactory<actix_rt::net::UnixStream>, F: ServerServiceFactory<actix_rt::net::UnixStream>,
{ {
use std::net::{IpAddr, Ipv4Addr}; use std::net::{IpAddr, Ipv4Addr};
lst.set_nonblocking(true)?; lst.set_nonblocking(true)?;
let token = self.next_token(); let token = self.next_token();
let addr = crate::socket::StdSocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); let addr = crate::socket::StdSocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
self.factories.push(StreamNewService::create( self.factories.push(StreamNewService::create(
name.as_ref().to_string(), name.as_ref().to_string(),
token, token,
factory, factory,
addr, addr,
)); ));
self.sockets self.sockets
.push((token, name.as_ref().to_string(), MioListener::from(lst))); .push((token, name.as_ref().to_string(), MioListener::from(lst)));
Ok(self) Ok(self)
} }
} }

View File

@@ -1,28 +1,28 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 2.0.2 - 2021-12-18 ## 2.0.2
- Service types can now be `Send` and `'static` regardless of request, response, and config types, etc. [#397] - Service types can now be `Send` and `'static` regardless of request, response, and config types, etc. [#397]
[#397]: https://github.com/actix/actix-net/pull/397 [#397]: https://github.com/actix/actix-net/pull/397
## 2.0.1 - 2021-10-11 ## 2.0.1
- Documentation fix. [#388] - Documentation fix. [#388]
[#388]: https://github.com/actix/actix-net/pull/388 [#388]: https://github.com/actix/actix-net/pull/388
## 2.0.0 - 2021-04-16 ## 2.0.0
- Removed pipeline and related structs/functions. [#335] - Removed pipeline and related structs/functions. [#335]
[#335]: https://github.com/actix/actix-net/pull/335 [#335]: https://github.com/actix/actix-net/pull/335
## 2.0.0-beta.5 - 2021-03-15 ## 2.0.0-beta.5
- Add default `Service` trait impl for `Rc<S: Service>` and `&S: Service`. [#288] - Add default `Service` trait impl for `Rc<S: Service>` and `&S: Service`. [#288]
- Add `boxed::rc_service` function for constructing `boxed::RcService` type [#290] - Add `boxed::rc_service` function for constructing `boxed::RcService` type [#290]
@@ -30,7 +30,7 @@
[#288]: https://github.com/actix/actix-net/pull/288 [#288]: https://github.com/actix/actix-net/pull/288
[#290]: https://github.com/actix/actix-net/pull/290 [#290]: https://github.com/actix/actix-net/pull/290
## 2.0.0-beta.4 - 2021-02-04 ## 2.0.0-beta.4
- `Service::poll_ready` and `Service::call` receive `&self`. [#247] - `Service::poll_ready` and `Service::call` receive `&self`. [#247]
- `apply_fn` and `apply_fn_factory` now receive `Fn(Req, &Service)` function type. [#247] - `apply_fn` and `apply_fn_factory` now receive `Fn(Req, &Service)` function type. [#247]
@@ -39,17 +39,17 @@
[#247]: https://github.com/actix/actix-net/pull/247 [#247]: https://github.com/actix/actix-net/pull/247
## 2.0.0-beta.3 - 2021-01-09 ## 2.0.0-beta.3
- The `forward_ready!` macro converts errors. [#246] - The `forward_ready!` macro converts errors. [#246]
[#246]: https://github.com/actix/actix-net/pull/246 [#246]: https://github.com/actix/actix-net/pull/246
## 2.0.0-beta.2 - 2021-01-03 ## 2.0.0-beta.2
- Remove redundant type parameter from `map_config`. - Remove redundant type parameter from `map_config`.
## 2.0.0-beta.1 - 2020-12-28 ## 2.0.0-beta.1
- `Service`, other traits, and many type signatures now take the the request type as a type parameter instead of an associated type. [#232] - `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] - Add `always_ready!` and `forward_ready!` macros. [#233]
@@ -62,82 +62,82 @@
[#233]: https://github.com/actix/actix-net/pull/233 [#233]: https://github.com/actix/actix-net/pull/233
[#235]: https://github.com/actix/actix-net/pull/235 [#235]: https://github.com/actix/actix-net/pull/235
## 1.0.6 - 2020-08-09 ## 1.0.6
- 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 ## 1.0.5
- Fixed unsoundness in .and_then()/.then() service combinators. - Fixed unsoundness in .and_then()/.then() service combinators.
## 1.0.4 - 2020-01-15 ## 1.0.4
- Revert 1.0.3 change - Revert 1.0.3 change
## 1.0.3 - 2020-01-15 ## 1.0.3
- Fixed unsoundness in `AndThenService` impl. - Fixed unsoundness in `AndThenService` impl.
## 1.0.2 - 2020-01-08 ## 1.0.2
- Add `into_service` helper function. - Add `into_service` helper function.
## 1.0.1 - 2019-12-22 ## 1.0.1
- `map_config()` and `unit_config()` now accept `IntoServiceFactory` type. - `map_config()` and `unit_config()` now accept `IntoServiceFactory` type.
## 1.0.0 - 2019-12-11 ## 1.0.0
- Add Clone impl for Apply service - Add Clone impl for Apply service
## 1.0.0-alpha.4 - 2019-12-08 ## 1.0.0-alpha.4
- Renamed `service_fn` to `fn_service` - Renamed `service_fn` to `fn_service`
- Renamed `factory_fn` to `fn_factory` - Renamed `factory_fn` to `fn_factory`
- Renamed `factory_fn_cfg` to `fn_factory_with_config` - Renamed `factory_fn_cfg` to `fn_factory_with_config`
## 1.0.0-alpha.3 - 2019-12-06 ## 1.0.0-alpha.3
- Add missing Clone impls - Add missing Clone impls
- Restore `Transform::map_init_err()` combinator - Restore `Transform::map_init_err()` combinator
- Restore `Service/Factory::apply_fn()` in form of `Pipeline/Factory::and_then_apply_fn()` - Restore `Service/Factory::apply_fn()` in form of `Pipeline/Factory::and_then_apply_fn()`
- Optimize service combinators and futures memory layout - Optimize service combinators and futures memory layout
## 1.0.0-alpha.2 - 2019-12-02 ## 1.0.0-alpha.2
- Use owned config value for service factory - Use owned config value for service factory
- Renamed BoxedNewService/BoxedService to BoxServiceFactory/BoxService - Renamed BoxedNewService/BoxedService to BoxServiceFactory/BoxService
## 1.0.0-alpha.1 - 2019-11-25 ## 1.0.0-alpha.1
- Migrated to `std::future` - Migrated to `std::future`
- `NewService` renamed to `ServiceFactory` - `NewService` renamed to `ServiceFactory`
- Added `pipeline` and `pipeline_factory` function - Added `pipeline` and `pipeline_factory` function
## 0.4.2 - 2019-08-27 ## 0.4.2
- Check service readiness for `new_apply_cfg` combinator - Check service readiness for `new_apply_cfg` combinator
## 0.4.1 - 2019-06-06 ## 0.4.1
- Add `new_apply_cfg` function - Add `new_apply_cfg` function
## 0.4.0 - 2019-05-12 ## 0.4.0
- Add `NewService::map_config` and `NewService::unit_config` combinators. - Add `NewService::map_config` and `NewService::unit_config` combinators.
- Use associated type for `NewService` config. - Use associated type for `NewService` config.
- Change `apply_cfg` function. - Change `apply_cfg` function.
- Renamed helper functions. - Renamed helper functions.
## 0.3.6 - 2019-04-07 ## 0.3.6
- Poll boxed service call result immediately - Poll boxed service call result immediately
## 0.3.5 - 2019-03-29 ## 0.3.5
- Add `impl<S: Service> Service for Rc<RefCell<S>>`. - Add `impl<S: Service> Service for Rc<RefCell<S>>`.
## 0.3.4 - 2019-03-12 ## 0.3.4
- Add `Transform::from_err()` combinator - Add `Transform::from_err()` combinator
- Add `apply_fn` helper - Add `apply_fn` helper
@@ -145,37 +145,37 @@
- Add `apply_transform` helper - Add `apply_transform` helper
- Add `apply_cfg` helper - Add `apply_cfg` helper
## 0.3.3 - 2019-03-09 ## 0.3.3
- Add `ApplyTransform` new service for transform and new service. - Add `ApplyTransform` new service for transform and new service.
- Add `NewService::apply_cfg()` combinator, allows to use nested `NewService` with different config parameter. - Add `NewService::apply_cfg()` combinator, allows to use nested `NewService` with different config parameter.
- Revert IntoFuture change - Revert IntoFuture change
## 0.3.2 - 2019-03-04 ## 0.3.2
- Change `NewService::Future` and `Transform::Future` to the `IntoFuture` trait. - Change `NewService::Future` and `Transform::Future` to the `IntoFuture` trait.
- Export `AndThenTransform` type - Export `AndThenTransform` type
## 0.3.1 - 2019-03-04 ## 0.3.1
- Simplify Transform trait - Simplify Transform trait
## 0.3.0 - 2019-03-02 ## 0.3.0
- Added boxed NewService and Service. - Added boxed NewService and Service.
- Added `Config` parameter to `NewService` trait. - Added `Config` parameter to `NewService` trait.
- Added `Config` parameter to `NewTransform` trait. - Added `Config` parameter to `NewTransform` trait.
## 0.2.2 - 2019-02-19 ## 0.2.2
- Added `NewService` impl for `Rc<S> where S: NewService` - Added `NewService` impl for `Rc<S> where S: NewService`
- Added `NewService` impl for `Arc<S> where S: NewService` - Added `NewService` impl for `Arc<S> where S: NewService`
## 0.2.1 - 2019-02-03 ## 0.2.1
- Generalize `.apply` combinator with Transform trait - Generalize `.apply` combinator with Transform trait
## 0.2.0 - 2019-02-01 ## 0.2.0
- Use associated type instead of generic for Service definition. - Use associated type instead of generic for Service definition.
- Before: - Before:
@@ -194,31 +194,31 @@
} }
``` ```
## 0.1.6 - 2019-01-24 ## 0.1.6
- Use `FnMut` instead of `Fn` for .apply() and .map() combinators and `FnService` type - Use `FnMut` instead of `Fn` for .apply() and .map() combinators and `FnService` type
- Change `.apply()` error semantic, new service's error is `From<Self::Error>` - Change `.apply()` error semantic, new service's error is `From<Self::Error>`
## 0.1.5 - 2019-01-13 ## 0.1.5
- Make `Out::Error` convertible from `T::Error` for apply combinator - Make `Out::Error` convertible from `T::Error` for apply combinator
## 0.1.4 - 2019-01-11 ## 0.1.4
- Use `FnMut` instead of `Fn` for `FnService` - Use `FnMut` instead of `Fn` for `FnService`
## 0.1.3 - 2018-12-12 ## 0.1.3
- Split service combinators to separate trait - Split service combinators to separate trait
## 0.1.2 - 2018-12-12 ## 0.1.2
- Release future early for `.and_then()` and `.then()` combinators - Release future early for `.and_then()` and `.then()` combinators
## 0.1.1 - 2018-12-09 ## 0.1.1
- Added Service impl for `Box<S: Service>` - Added Service impl for `Box<S: Service>`
## 0.1.0 - 2018-12-09 ## 0.1.0
- Initial import - Initial import

View File

@@ -5,7 +5,7 @@
[![crates.io](https://img.shields.io/crates/v/actix-service?label=latest)](https://crates.io/crates/actix-service) [![crates.io](https://img.shields.io/crates/v/actix-service?label=latest)](https://crates.io/crates/actix-service)
[![Documentation](https://docs.rs/actix-service/badge.svg?version=2.0.2)](https://docs.rs/actix-service/2.0.2) [![Documentation](https://docs.rs/actix-service/badge.svg?version=2.0.2)](https://docs.rs/actix-service/2.0.2)
[![Version](https://img.shields.io/badge/rustc-1.46+-ab6000.svg)](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html) [![Version](https://img.shields.io/badge/rustc-1.46+-ab6000.svg)](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html)
![License](https://img.shields.io/crates/l/actix-service.svg) ![MIT or Apache 2.0 licensed](https://img.shields.io/crates/l/actix-service.svg)
[![Dependency Status](https://deps.rs/crate/actix-service/2.0.2/status.svg)](https://deps.rs/crate/actix-service/2.0.2) [![Dependency Status](https://deps.rs/crate/actix-service/2.0.2/status.svg)](https://deps.rs/crate/actix-service/2.0.2)
![Download](https://img.shields.io/crates/d/actix-service.svg) ![Download](https://img.shields.io/crates/d/actix-service.svg)
[![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x) [![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x)

View File

@@ -2,6 +2,12 @@
## Unreleased ## Unreleased
## 3.1.1
- Fix `rustls` v0.21 version requirement.
## 3.1.0
- Support Rustls v0.21. - Support Rustls v0.21.
- Added `{accept, connect}::rustls_0_21` modules. - Added `{accept, connect}::rustls_0_21` modules.
- Added `{accept, connect}::rustls_0_20` alias for `{accept, connect}::rustls` modules. - Added `{accept, connect}::rustls_0_20` alias for `{accept, connect}::rustls` modules.

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "actix-tls" name = "actix-tls"
version = "3.0.4" version = "3.1.1"
authors = [ authors = [
"Nikolay Kim <fafhrd91@gmail.com>", "Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",
@@ -17,6 +17,12 @@ rust-version.workspace = true
all-features = true all-features = true
rustdoc-args = ["--cfg", "docsrs"] rustdoc-args = ["--cfg", "docsrs"]
[package.metadata.cargo-machete]
ignored = [
"rustls_021", # specified to force version with add_trust_anchors method
"rustls_webpki_0101", # specified to force secure version
]
[features] [features]
default = ["accept", "connect"] default = ["accept", "connect"]
@@ -60,7 +66,7 @@ tracing = { version = "0.1.30", default-features = false, features = ["log"] }
http = { version = "0.2.3", optional = true } http = { version = "0.2.3", optional = true }
# openssl # openssl
tls-openssl = { package = "openssl", version = "0.10.48", optional = true } tls-openssl = { package = "openssl", version = "0.10.55", optional = true }
tokio-openssl = { version = "0.6", optional = true } tokio-openssl = { version = "0.6", optional = true }
# rustls v0.20 # rustls v0.20
@@ -68,6 +74,8 @@ tokio-rustls-023 = { package = "tokio-rustls", version = "0.23", optional = true
webpki-roots-022 = { package = "webpki-roots", version = "0.22", optional = true } webpki-roots-022 = { package = "webpki-roots", version = "0.22", optional = true }
# rustls v0.21 # rustls v0.21
rustls-021 = { package = "rustls", version = "0.21.6" }
rustls-webpki-0101 = { package = "rustls-webpki", version = "0.101.4" }
tokio-rustls-024 = { package = "tokio-rustls", version = "0.24", optional = true } tokio-rustls-024 = { package = "tokio-rustls", version = "0.24", optional = true }
webpki-roots-025 = { package = "webpki-roots", version = "0.25", optional = true } webpki-roots-025 = { package = "webpki-roots", version = "0.25", optional = true }
@@ -81,7 +89,6 @@ actix-server = "2"
bytes = "1" bytes = "1"
env_logger = "0.10" env_logger = "0.10"
futures-util = { version = "0.3.17", default-features = false, features = ["sink"] } futures-util = { version = "0.3.17", default-features = false, features = ["sink"] }
log = "0.4"
rcgen = "0.11" rcgen = "0.11"
rustls-pemfile = "1" rustls-pemfile = "1"
tokio-rustls-024 = { package = "tokio-rustls", version = "0.24", features = ["dangerous_configuration"] } tokio-rustls-024 = { package = "tokio-rustls", version = "0.24", features = ["dangerous_configuration"] }

View File

@@ -1,9 +1,9 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 0.1.0 - 2020-01-15 ## 0.1.0
- Initial release - Initial release

View File

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

View File

@@ -1,25 +1,29 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
## 1.3.0 - 2023-03-03 ## 1.3.1
- No significant changes since `1.3.0`.
## 1.3.0
- Implement `AsRef<ByteString>` for `ByteString`. - Implement `AsRef<ByteString>` for `ByteString`.
## 1.2.1 - 2022-11-12 ## 1.2.1
- Fix `#[no_std]` compatibility. [#471] - Fix `#[no_std]` compatibility. [#471]
[#471]: https://github.com/actix/actix-net/pull/471 [#471]: https://github.com/actix/actix-net/pull/471
## 1.2.0 - 2022-11-07 ## 1.2.0
- Add `ByteString::slice_ref` which can safely slice a `ByteString` into a new one with zero copy. [#470] - Add `ByteString::slice_ref` which can safely slice a `ByteString` into a new one with zero copy. [#470]
- Minimum supported Rust version (MSRV) is now 1.57. - Minimum supported Rust version (MSRV) is now 1.57.
[#470]: https://github.com/actix/actix-net/pull/470 [#470]: https://github.com/actix/actix-net/pull/470
## 1.1.0 - 2022-06-11 ## 1.1.0
- Implement `From<Box<str>>` for `ByteString`. [#458] - Implement `From<Box<str>>` for `ByteString`. [#458]
- Implement `Into<String>` for `ByteString`. [#458] - Implement `Into<String>` for `ByteString`. [#458]
@@ -27,7 +31,7 @@
[#458]: https://github.com/actix/actix-net/pull/458 [#458]: https://github.com/actix/actix-net/pull/458
## 1.0.0 - 2020-12-31 ## 1.0.0
- Update `bytes` dependency to `1`. - Update `bytes` dependency to `1`.
- Add array and slice of `u8` impls of `TryFrom` up to 32 in length. - Add array and slice of `u8` impls of `TryFrom` up to 32 in length.
@@ -35,27 +39,27 @@
- `ByteString::new` is now a `const fn`. - `ByteString::new` is now a `const fn`.
- Crate is now `#[no_std]` compatible. - Crate is now `#[no_std]` compatible.
## 0.1.5 - 2020-03-30 ## 0.1.5
- Serde support - Serde support
## 0.1.4 - 2020-01-14 ## 0.1.4
- Fix `AsRef<str>` impl - Fix `AsRef<str>` impl
## 0.1.3 - 2020-01-13 ## 0.1.3
- Add `PartialEq<T: AsRef<str>>`, `AsRef<[u8]>` impls - Add `PartialEq<T: AsRef<str>>`, `AsRef<[u8]>` impls
## 0.1.2 - 2019-12-22 ## 0.1.2
- Fix `new()` method - Fix `new()` method
- Make `ByteString::from_static()` and `ByteString::from_bytes_unchecked()` methods const. - Make `ByteString::from_static()` and `ByteString::from_bytes_unchecked()` methods const.
## 0.1.1 - 2019-12-07 ## 0.1.1
- Fix hash impl - Fix hash impl
## 0.1.0 - 2019-12-07 ## 0.1.0
- Initial release - Initial release

View File

@@ -1,11 +1,11 @@
[package] [package]
name = "bytestring" name = "bytestring"
version = "1.3.0" version = "1.3.1"
description = "A UTF-8 encoded read-only string using `Bytes` as storage"
authors = [ authors = [
"Nikolay Kim <fafhrd91@gmail.com>", "Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",
] ]
description = "An immutable UTF-8 encoded string using Bytes as storage"
keywords = ["string", "bytes", "utf8", "web", "actix"] keywords = ["string", "bytes", "utf8", "web", "actix"]
categories = ["no-std", "web-programming"] categories = ["no-std", "web-programming"]
homepage = "https://actix.rs" homepage = "https://actix.rs"
@@ -22,4 +22,3 @@ serde = { version = "1.0", optional = true }
ahash = { version = "0.8", default-features = false } ahash = { version = "0.8", default-features = false }
serde_json = "1.0" serde_json = "1.0"
static_assertions = "1.1" static_assertions = "1.1"
rustversion = "1"

16
bytestring/README.md Normal file
View File

@@ -0,0 +1,16 @@
# `bytestring`
> A UTF-8 encoded read-only string using `Bytes` as storage.
<!-- prettier-ignore-start -->
[![crates.io](https://img.shields.io/crates/v/bytestring?label=latest)](https://crates.io/crates/bytestring)
[![Documentation](https://docs.rs/bytestring/badge.svg?version=1.3.1)](https://docs.rs/bytestring/1.3.1)
[![Version](https://img.shields.io/badge/rustc-1.52+-ab6000.svg)](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
![MIT or Apache 2.0 licensed](https://img.shields.io/crates/l/bytestring.svg)
<br />
[![Dependency Status](https://deps.rs/crate/bytestring/1.3.1/status.svg)](https://deps.rs/crate/bytestring/1.3.1)
![Download](https://img.shields.io/crates/d/bytestring.svg)
[![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x)
<!-- prettier-ignore-end -->

View File

@@ -1,4 +1,6 @@
//! A UTF-8 encoded read-only string using Bytes as storage. //! A UTF-8 encoded read-only string using `Bytes` as storage.
//!
//! See docs for [`ByteString`].
#![no_std] #![no_std]
#![deny(rust_2018_idioms, nonstandard_style)] #![deny(rust_2018_idioms, nonstandard_style)]

11
justfile Normal file
View File

@@ -0,0 +1,11 @@
_list:
@just --list
# Document crates in workspace.
doc:
RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl
# Document crates in workspace and watch for changes.
doc-watch:
RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl --open
cargo watch -- RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl

View File

@@ -1,17 +1,23 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
## 0.1.5
- No significant changes since `0.1.4`.
## 0.1.4
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 0.1.3 - 2022-05-03 ## 0.1.3
- Minimum supported Rust version (MSRV) is now 1.49. - Minimum supported Rust version (MSRV) is now 1.49.
## 0.1.2 - 2021-04-01 ## 0.1.2
- No significant changes from `0.1.1`. - No significant changes from `0.1.1`.
## 0.1.1 - 2021-03-29 ## 0.1.1
- Move local mpsc channel to it's own crate. - Move local MPSC channel to it's own crate.

View File

@@ -1,22 +1,22 @@
[package] [package]
name = "local-channel" name = "local-channel"
version = "0.1.3" version = "0.1.5"
description = "A non-threadsafe multi-producer, single-consumer, futures-aware, FIFO queue" description = "A non-threadsafe multi-producer, single-consumer, futures-aware, FIFO queue"
authors = [ authors = [
"Nikolay Kim <fafhrd91@gmail.com>", "Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",
] ]
repository = "https://github.com/actix/actix-net.git" repository = "https://github.com/actix/actix-net"
keywords = ["channel", "local", "futures"] keywords = ["channel", "local", "futures"]
license = "MIT OR Apache-2.0" license.workspace = true
edition.workspace = true edition.workspace = true
rust-version.workspace = true rust-version.workspace = true
[dependencies] [dependencies]
futures-core = "0.3.17" futures-core = "0.3.17"
futures-sink = "0.3.17" futures-sink = "0.3.17"
futures-util = { version = "0.3.17", default-features = false }
local-waker = "0.1" local-waker = "0.1"
[dev-dependencies] [dev-dependencies]
futures-util = { version = "0.3.17", default-features = false }
tokio = { version = "1.23.1", features = ["rt", "macros"] } tokio = { version = "1.23.1", features = ["rt", "macros"] }

16
local-channel/README.md Normal file
View File

@@ -0,0 +1,16 @@
# `local-channel`
> A non-threadsafe multi-producer, single-consumer, futures-aware, FIFO queue.
<!-- prettier-ignore-start -->
[![crates.io](https://img.shields.io/crates/v/local-channel?label=latest)](https://crates.io/crates/local-channel)
[![Documentation](https://docs.rs/local-channel/badge.svg?version=0.1.5)](https://docs.rs/local-channel/0.1.5)
[![Version](https://img.shields.io/badge/rustc-1.52+-ab6000.svg)](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
![MIT or Apache 2.0 licensed](https://img.shields.io/crates/l/local-channel.svg)
<br />
[![Dependency Status](https://deps.rs/crate/local-channel/0.1.5/status.svg)](https://deps.rs/crate/local-channel/0.1.5)
![Download](https://img.shields.io/crates/d/local-channel.svg)
[![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x)
<!-- prettier-ignore-end -->

View File

@@ -1,4 +1,6 @@
//! Non-thread-safe channels. //! Non-thread-safe channels.
//!
//! See docs for [`mpsc::channel()`].
#![deny(rust_2018_idioms, nonstandard_style)] #![deny(rust_2018_idioms, nonstandard_style)]
#![warn(future_incompatible, missing_docs)] #![warn(future_incompatible, missing_docs)]

View File

@@ -4,6 +4,7 @@ use alloc::{collections::VecDeque, rc::Rc};
use core::{ use core::{
cell::RefCell, cell::RefCell,
fmt, fmt,
future::poll_fn,
pin::Pin, pin::Pin,
task::{Context, Poll}, task::{Context, Poll},
}; };
@@ -11,7 +12,6 @@ use std::error::Error;
use futures_core::stream::Stream; use futures_core::stream::Stream;
use futures_sink::Sink; use futures_sink::Sink;
use futures_util::future::poll_fn;
use local_waker::LocalWaker; use local_waker::LocalWaker;
/// Creates a unbounded in-memory channel with buffered storage. /// Creates a unbounded in-memory channel with buffered storage.

View File

@@ -1,17 +1,19 @@
# Changes # Changes
## Unreleased - 2023-xx-xx ## Unreleased
## 0.1.4
- Minimum supported Rust version (MSRV) is now 1.65. - Minimum supported Rust version (MSRV) is now 1.65.
## 0.1.3 - 2022-05-03 ## 0.1.3
- Minimum supported Rust version (MSRV) is now 1.49. - Minimum supported Rust version (MSRV) is now 1.49.
## 0.1.2 - 2021-12-18 ## 0.1.2
- Fix crate metadata. - Fix crate metadata.
## 0.1.1 - 2021-03-29 ## 0.1.1
- Move `LocalWaker` to it's own crate. - Move `LocalWaker` to it's own crate.

View File

@@ -1,15 +1,15 @@
[package] [package]
name = "local-waker" name = "local-waker"
version = "0.1.3" version = "0.1.4"
description = "A synchronization primitive for thread-local task wakeup" description = "A synchronization primitive for thread-local task wakeup"
authors = [ authors = [
"Nikolay Kim <fafhrd91@gmail.com>", "Nikolay Kim <fafhrd91@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",
] ]
repository = "https://github.com/actix/actix-net.git" repository = "https://github.com/actix/actix-net"
keywords = ["waker", "local", "futures", "no-std"] keywords = ["waker", "local", "futures", "no-std"]
categories = ["asynchronous", "no-std"] categories = ["asynchronous", "no-std"]
license = "MIT OR Apache-2.0" license.workspace = true
edition.workspace = true edition.workspace = true
rust-version.workspace = true rust-version.workspace = true

16
local-waker/README.md Normal file
View File

@@ -0,0 +1,16 @@
# `local-waker`
> A synchronization primitive for thread-local task wakeup.
<!-- prettier-ignore-start -->
[![crates.io](https://img.shields.io/crates/v/local-waker?label=latest)](https://crates.io/crates/local-waker)
[![Documentation](https://docs.rs/local-waker/badge.svg?version=0.1.4)](https://docs.rs/local-waker/0.1.4)
[![Version](https://img.shields.io/badge/rustc-1.52+-ab6000.svg)](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
![MIT or Apache 2.0 licensed](https://img.shields.io/crates/l/local-waker.svg)
<br />
[![Dependency Status](https://deps.rs/crate/local-waker/0.1.4/status.svg)](https://deps.rs/crate/local-waker/0.1.4)
![Download](https://img.shields.io/crates/d/local-waker.svg)
[![Chat on Discord](https://img.shields.io/discord/771444961383153695?label=chat&logo=discord)](https://discord.gg/NWpN5mmg3x)
<!-- prettier-ignore-end -->