rust-libp2p/protocols/mdns/CHANGELOG.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

252 lines
7.3 KiB
Markdown
Raw Normal View History

# 0.43.0 [unreleased]
- Update to `libp2p-core` `v0.39.0`.
- Require the node's local `PeerId` to be passed into the constructor of `libp2p_mdns::Behaviour`. See [PR 3153].
- Update to `libp2p-swarm` `v0.42.0`.
- Don't expire mDNS records when the last connection was closed.
mDNS records will only be expired when the TTL is reached and the DNS record is no longer valid.
See [PR 3367].
[PR 3153]: https://github.com/libp2p/rust-libp2p/pull/3153
[PR 3367]: https://github.com/libp2p/rust-libp2p/pull/3367
# 0.42.0
- Update to `libp2p-core` `v0.38.0`.
- Update to `libp2p-swarm` `v0.41.0`.
2022-11-18 01:12:23 +00:00
- Update to `if-watch` `3.0.0` and both rename `TokioMdns` to `Behaviour` living in `tokio::Behaviour`,
and move and rename `Mdns` to `async_io::Behaviour`. See [PR 3096].
- Remove the remaning `Mdns` prefixes from types as per [discussion 2174].
I.e the `Mdns` prefix has been removed from various types like `MdnsEvent`.
Users should prefer importing the mdns protocol as a module (`use libp2p::mdns;`),
and refer to its types via `mdns::`. For example: `mdns::Behaviour` or `mdns::Event`.
- Replace `GenMdns`'s `NetworkBehaviour` implemention `inject_*` methods with the new `on_*` methods.
See [PR 3011].
- Use `trust-dns-proto` to parse DNS messages. See [PR 3102].
.github/workflows: Refactor CI jobs (#3090) We refactor our continuous integration workflow with the following goals in mind: - Run as few jobs as possible - Have the jobs finish as fast as possible - Have the jobs redo as little work as possible There are only so many jobs that GitHub Actions will run in parallel. Thus, it makes sense to not create massive matrices but instead group things together meaningfully. The new `test` job will: - Run once for each crate - Ensure that the crate compiles on its specified MSRV - Ensure that the tests pass - Ensure that there are no semver violations This is an improvement to before because we are running all of these in parallel which speeds up execution and highlights more errors at once. Previously, tests run later in the pipeline would not get run at all until you make sure the "first" one passes. We also previously did not verify the MSRV of each crate, making the setting in the `Cargo.toml` rather pointless. The new `cross` job supersedes the existing `wasm` job. This is an improvement because we now also compile the crate for windows and MacOS. Something that wasn't checked before. We assume that checking MSRV and the tests under Linux is good enough. Hence, this job only checks for compile-errors. The new `feature_matrix` ensures we compile correctly with certain feature combinations. `libp2p` exposes a fair few feature-flags. Some of the combinations are worth checking independently. For the moment, this concerns only the executor related transports together with the executor flags but this list can easily be extended. The new `clippy` job runs for `stable` and `beta` rust. Clippy gets continuously extended with new lints. Up until now, we would only learn about those as soon as a new version of Rust is released and CI would run the new lints. This leads to unrelated failures in CI. Running clippy on with `beta` Rust gives us a heads-up of 6 weeks before these lints land on stable. Fixes #2951.
2022-11-18 22:04:16 +11:00
- Update `rust-version` to reflect the actual MSRV: 1.62.0. See [PR 3090].
2022-11-18 01:12:23 +00:00
[discussion 2174]: https://github.com/libp2p/rust-libp2p/discussions/2174
[PR 3096]: https://github.com/libp2p/rust-libp2p/pull/3096
[PR 3011]: https://github.com/libp2p/rust-libp2p/pull/3011
[PR 3102]: https://github.com/libp2p/rust-libp2p/pull/3102
.github/workflows: Refactor CI jobs (#3090) We refactor our continuous integration workflow with the following goals in mind: - Run as few jobs as possible - Have the jobs finish as fast as possible - Have the jobs redo as little work as possible There are only so many jobs that GitHub Actions will run in parallel. Thus, it makes sense to not create massive matrices but instead group things together meaningfully. The new `test` job will: - Run once for each crate - Ensure that the crate compiles on its specified MSRV - Ensure that the tests pass - Ensure that there are no semver violations This is an improvement to before because we are running all of these in parallel which speeds up execution and highlights more errors at once. Previously, tests run later in the pipeline would not get run at all until you make sure the "first" one passes. We also previously did not verify the MSRV of each crate, making the setting in the `Cargo.toml` rather pointless. The new `cross` job supersedes the existing `wasm` job. This is an improvement because we now also compile the crate for windows and MacOS. Something that wasn't checked before. We assume that checking MSRV and the tests under Linux is good enough. Hence, this job only checks for compile-errors. The new `feature_matrix` ensures we compile correctly with certain feature combinations. `libp2p` exposes a fair few feature-flags. Some of the combinations are worth checking independently. For the moment, this concerns only the executor related transports together with the executor flags but this list can easily be extended. The new `clippy` job runs for `stable` and `beta` rust. Clippy gets continuously extended with new lints. Up until now, we would only learn about those as soon as a new version of Rust is released and CI would run the new lints. This leads to unrelated failures in CI. Running clippy on with `beta` Rust gives us a heads-up of 6 weeks before these lints land on stable. Fixes #2951.
2022-11-18 22:04:16 +11:00
[PR 3090]: https://github.com/libp2p/rust-libp2p/pull/3090
2022-10-14 15:30:16 +01:00
# 0.41.0
- Remove default features. If you previously depended on `async-io` you need to enable this explicitly now. See [PR 2918].
- Update to `libp2p-core` `v0.37.0`.
- Update to `libp2p-swarm` `v0.40.0`.
- Fix a bug that could cause a delay of ~10s until peers would get discovered when using the tokio runtime. See [PR 2939].
- Removed the `lazy_static` dependency. See [PR 2977].
- Update to `if-watch` `v2.0.0` and thus the `async` method `Mdns::new` and `TokioMdns::new` becomes synchronous. See [PR 2978].
[PR 2918]: https://github.com/libp2p/rust-libp2p/pull/2918
[PR 2939]: https://github.com/libp2p/rust-libp2p/pull/2939
[PR 2977]: https://github.com/libp2p/rust-libp2p/pull/2977
[PR 2978]: https://github.com/libp2p/rust-libp2p/pull/2978
2022-09-07 09:44:51 +02:00
# 0.40.0
- Update to `libp2p-swarm` `v0.39.0`.
- Allow users to choose between async-io and tokio runtime
in the mdns protocol implementation. `async-io` is a default
feature, with an additional `tokio` feature (see [PR 2748])
- Fix high CPU usage with Tokio library (see [PR 2748]).
- Update to `libp2p-core` `v0.36.0`.
[PR 2748]: https://github.com/libp2p/rust-libp2p/pull/2748
2022-08-22 05:14:04 +02:00
# 0.39.0
- Update to `libp2p-swarm` `v0.38.0`.
- Update to `if-watch` `v1.1.1`.
- Update to `libp2p-core` `v0.35.0`.
2022-07-05 13:09:58 +02:00
# 0.38.0
- Update to `libp2p-core` `v0.34.0`.
- Update to `libp2p-swarm` `v0.37.0`.
2022-05-31 13:12:53 +02:00
# 0.37.0
- Update to `libp2p-core` `v0.33.0`.
- Update to `libp2p-swarm` `v0.36.0`.
2022-04-04 18:27:41 +02:00
# 0.36.0
- Update to `libp2p-swarm` `v0.35.0`.
2022-02-22 14:05:19 +01:00
# 0.35.0 [2022-02-22]
- Update to `libp2p-core` `v0.32.0`.
- Update to `libp2p-swarm` `v0.34.0`.
- Merge NetworkBehaviour's inject_\* paired methods (see PR 2445).
[PR 2445]: https://github.com/libp2p/rust-libp2p/pull/2445
2022-01-27 11:29:09 +01:00
# 0.34.0 [2022-01-27]
- Update dependencies.
- Use a random alphanumeric string instead of the local peer ID for mDNS peer
name (see [PR 2311]).
Note that previous versions of `libp2p-mdns` expect the peer name to be a
valid peer ID. Thus they will be unable to discover nodes running this new
version of `libp2p-mdns`.
- Migrate to Rust edition 2021 (see [PR 2339]).
- Fix generation of peer expiration event and listen on specified IP version (see [PR 2359]).
- Support multiple interfaces (see [PR 2383]).
[PR 2339]: https://github.com/libp2p/rust-libp2p/pull/2339
[PR 2311]: https://github.com/libp2p/rust-libp2p/pull/2311/
[PR 2359]: https://github.com/libp2p/rust-libp2p/pull/2359
[PR 2383]: https://github.com/libp2p/rust-libp2p/pull/2383
2021-11-16 16:39:42 +01:00
# 0.33.0 [2021-11-16]
- Update dependencies.
# 0.32.0 [2021-11-01]
- Make default features of `libp2p-core` optional.
[PR 2181](https://github.com/libp2p/rust-libp2p/pull/2181)
- Update dependencies.
- Add support for IPv6. To enable set the multicast address
in `MdnsConfig` to `IPV6_MDNS_MULTICAST_ADDRESS`.
See [PR 2161] for details.
- Prevent timers from firing at the same time. See [PR 2212] for details.
[PR 2161]: https://github.com/libp2p/rust-libp2p/pull/2161/
[PR 2212]: https://github.com/libp2p/rust-libp2p/pull/2212/
2021-07-12 21:24:58 +02:00
# 0.31.0 [2021-07-12]
- Update dependencies.
# 0.30.2 [2021-05-06]
- Fix discovered event emission.
[PR 2065](https://github.com/libp2p/rust-libp2p/pull/2065)
# 0.30.1 [2021-04-21]
- Fix timely discovery of peers after listening on a new address.
[PR 2053](https://github.com/libp2p/rust-libp2p/pull/2053/)
2021-04-13 20:15:15 +02:00
# 0.30.0 [2021-04-13]
2021-03-23 09:54:04 +01:00
- Derive `Debug` and `Clone` for `MdnsConfig`.
- Update `libp2p-swarm`.
2021-03-17 15:28:13 +01:00
# 0.29.0 [2021-03-17]
- Introduce `MdnsConfig` with configurable TTL of discovered peer
records and configurable multicast query interval. The default
query interval is increased from 20 seconds to 5 minutes, to
significantly reduce bandwidth usage. To ensure timely peer
discovery in the majority of cases, a multicast query is
initiated whenever a change on a network interface is detected,
which includes MDNS initialisation at node startup. If necessary
the MDNS query interval can be reduced via the `MdnsConfig`.
The `MdnsService` has been removed from the public API, making
it compulsory that all uses occur through the `Mdns` `NetworkBehaviour`.
An `MdnsConfig` must now be given to `Mdns::new()`.
[PR 1977](https://github.com/libp2p/rust-libp2p/pull/1977).
- Update `libp2p-swarm`.
2021-02-15 20:06:50 +01:00
# 0.28.1 [2021-02-15]
- Update dependencies.
# 0.28.0 [2021-01-12]
- Update dependencies.
# 0.27.0 [2020-12-17]
- Update `libp2p-swarm` and `libp2p-core`.
2020-12-08 12:07:20 +01:00
# 0.26.0 [2020-12-08]
- Create multiple multicast response packets as required to avoid
hitting the limit of 9000 bytes per MDNS packet.
[PR 1877](https://github.com/libp2p/rust-libp2p/pull/1877).
- Detect interface changes and join the MDNS multicast
group on all interfaces as they become available.
[PR 1830](https://github.com/libp2p/rust-libp2p/pull/1830).
- Replace the use of macros for abstracting over `tokio`
and `async-std` with the use of `async-io`. As a result
there may now be an additional reactor thread running
called `async-io` when using `tokio`, with the futures
still being polled by the `tokio` runtime.
[PR 1830](https://github.com/libp2p/rust-libp2p/pull/1830).
# 0.25.0 [2020-11-25]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.24.0 [2020-11-09]
- Update dependencies.
2020-10-16 20:36:47 +02:00
# 0.23.0 [2020-10-16]
- Update `libp2p-swarm` and `libp2p-core`.
2020-10-05 10:11:50 +02:00
- Double receive buffer to 4KiB. [PR 1779](https://github.com/libp2p/rust-libp2p/pull/1779/files).
2020-09-09 12:20:25 +02:00
# 0.22.0 [2020-09-09]
- Update `libp2p-swarm` and `libp2p-core`.
# 0.21.0 [2020-08-18]
[core/swarm] Emit events for active connection close and fix `disconnect()`. (#1619) * Emit events for active connection close and fix `disconnect()`. The `Network` does currently not emit events for actively closed connections, e.g. via `EstablishedConnection::close` or `ConnectedPeer::disconnect()`. As a result, when actively closing connections, there will be `ConnectionEstablished` events emitted without eventually a matching `ConnectionClosed` event. This seems undesirable and has the consequence that the `Swarm::ban_peer_id` feature in `libp2p-swarm` does not result in appropriate calls to `NetworkBehaviour::inject_connection_closed` and `NetworkBehaviour::inject_disconnected`. Furthermore, the `disconnect()` functionality in `libp2p-core` is currently broken as it leaves the `Pool` in an inconsistent state. This commit does the following: 1. When connection background tasks are dropped (i.e. removed from the `Manager`), they always terminate immediately, without attempting an orderly close of the connection. 2. An orderly close is sent to the background task of a connection as a regular command. The background task emits a `Closed` event before terminating. 3. `Pool::disconnect()` removes all connection tasks for the affected peer from the `Manager`, i.e. without an orderly close, thereby also fixing the discovered state inconsistency due to not removing the corresponding entries in the `Pool` itself after removing them from the `Manager`. 4. A new test is added to `libp2p-swarm` that exercises the ban/unban functionality and places assertions on the number and order of calls to the `NetworkBehaviour`. In that context some new testing utilities have been added to `libp2p-swarm`. This addresses https://github.com/libp2p/rust-libp2p/issues/1584. * Update swarm/src/lib.rs Co-authored-by: Toralf Wittner <tw@dtex.org> * Incorporate some review feedback. * Adapt to changes in master. * More verbose panic messages. * Simplify There is no need for a `StartClose` future. * Fix doc links. * Further small cleanup. * Update CHANGELOGs and versions. Co-authored-by: Toralf Wittner <tw@dtex.org>
2020-08-04 11:30:09 +02:00
- Bump `libp2p-core` and `libp2p-swarm` dependencies.
- Allow libp2p-mdns to use either async-std or tokio to drive required UDP
socket ([PR 1699](https://github.com/libp2p/rust-libp2p/pull/1699)).
# 0.20.0 [2020-07-01]
- Updated dependencies.
2020-06-22 11:41:28 +02:00
# 0.19.2 [2020-06-22]
- Updated dependencies.