# 0.18.2

- Implement missing protocols. See [PR 110].
  [PR 110]: https://github.com/multiformats/rust-multiaddr/pull/110.

- Re-export `libp2p_identity::PeerId`. See [PR 108].
  [PR 108]: https://github.com/multiformats/rust-multiaddr/pull/108.

- Avoid allocations in Display and Debug of Multiaddr. See [PR 106].
  [PR 106]: https://github.com/multiformats/rust-multiaddr/pull/106

# 0.18.1

- Add `with_p2p` on `Multiaddr`. See [PR 102].

[PR 102]: https://github.com/multiformats/rust-multiaddr/pull/102

# 0.18.0

- Add `WebTransport` instance for `Multiaddr`. See [PR 70].

- Disable all features of `multihash`. See [PR 77].

- Mark `Protocol` as `#[non_exhaustive]`. See [PR 82].

- Rename `Protocol::WebRTC` to `Protocol::WebRTCDirect`.
  See [multiformats/multiaddr discussion] for context.
  Remove deprecated support for `/webrtc` in favor of the existing `/webrtc-direct` string representation.
  **Note that this is a breaking change.**

- Make `/p2p` typesafe, i.e. have `Protocol::P2p` contain a `PeerId` instead of a `Multihash`.
  See [PR 83].

[multiformats/multiaddr discussion]: https://github.com/multiformats/multiaddr/pull/150#issuecomment-1468791586
[PR 70]: https://github.com/multiformats/rust-multiaddr/pull/70
[PR 77]: https://github.com/multiformats/rust-multiaddr/pull/77
[PR 82]: https://github.com/multiformats/rust-multiaddr/pull/82
[PR 83]: https://github.com/multiformats/rust-multiaddr/pull/83

# 0.17.1

- Rename string representation of `WebRTC` protocol from `/webrtc` to `/webrt-direct`.
  For backwards compatibility `/webrtc` will still be decoded to `Protocol::WebRTC`, but `Protocol::WebRTC` will from now on always be encoded as `/webrtc-direct`.
  See [multiformats/multiaddr discussion] and [PR 84] for context.
  ``` rust
  assert_eq!(
      Multiaddr::empty().with(Protocol::WebRTC),
      "/webrtc".parse().unwrap(),
  );
  assert_eq!(
      Multiaddr::empty().with(Protocol::WebRTC),
      "/webrtc-direct".parse().unwrap(),
  );
  assert_eq!(
      "/webrtc-direct",
      Multiaddr::empty().with(Protocol::WebRTC).to_string(),
  );
  assert_ne!(
      "/webrtc",
      Multiaddr::empty().with(Protocol::WebRTC).to_string(),
  );
  ```

[PR 84]: https://github.com/multiformats/rust-multiaddr/pull/84

# 0.17.0

- Update to multihash `v0.17`. See [PR 63].

[PR 63]: https://github.com/multiformats/rust-multiaddr/pull/63

# 0.16.0 [2022-11-04]

- Create `protocol_stack` for Multiaddr. See [PR 60].

- Add `QuicV1` instance for `Multiaddr`. See [PR 64].

[PR 60]: https://github.com/multiformats/rust-multiaddr/pull/60
[PR 64]: https://github.com/multiformats/rust-multiaddr/pull/64

# 0.15.0 [2022-10-20]

- Add `WebRTC` instance for `Multiaddr`. See [PR 59].
- Add `Certhash` instance for `Multiaddr`. See [PR 59].

- Add support for Noise protocol. See [PR 53].

- Use `multibase` instead of `bs58` for base58 encoding. See [PR 56].

[PR 53]: https://github.com/multiformats/rust-multiaddr/pull/53
[PR 56]: https://github.com/multiformats/rust-multiaddr/pull/56
[PR 59]: https://github.com/multiformats/rust-multiaddr/pull/59

# 0.14.0 [2022-02-02]

- Add support for TLS protocol (see [PR 48]).

- Update to `multihash` `v0.15` (see [PR 50]).

- Update to `multihash` `v0.16` (see [PR 51]).

[PR 48]: https://github.com/multiformats/rust-multiaddr/pull/48
[PR 50]: https://github.com/multiformats/rust-multiaddr/pull/50
[PR 50]: https://github.com/multiformats/rust-multiaddr/pull/51

# 0.13.0 [2021-07-08]

- Update to multihash v0.14.0 (see [PR 44]).

- Update to rand v0.8.4 (see [PR 45]).

[PR 44]: https://github.com/multiformats/rust-multiaddr/pull/44
[PR 45]: https://github.com/multiformats/rust-multiaddr/pull/45

# 0.12.0 [2021-05-26]

- Merge  [multiaddr] and [parity-multiaddr] (see [PR 40]).

    - Functionality to go from a `u64` to a `multiadddr::Protocol` and back is
      removed. Please open an issue on [multiaddr] in case this is still needed.

    - Given that `multiaddr::Protocol` now represents both the protocol
      identifier as well as the protocol data (e.g. protocol identifier `55`
      (`dns6`) and protocol data `some-domain.example`) `multiaddr::Protocol` is
      no longer `Copy`.

[multiaddr]: https://github.com/multiformats/rust-multiaddr
[parity-multiaddr]: https://github.com/libp2p/rust-libp2p/blob/master/misc/multiaddr/
[PR 40]: https://github.com/multiformats/rust-multiaddr/pull/40

# 0.11.2 [2021-03-17]

- Add `Multiaddr::ends_with()`.

# 0.11.1 [2021-02-15]

- Update dependencies

# 0.11.0 [2021-01-12]

- Update dependencies

# 0.10.1 [2021-01-12]

- Fix compilation with serde-1.0.119.
  [PR 1912](https://github.com/libp2p/rust-libp2p/pull/1912)

# 0.10.0 [2020-11-25]

- Upgrade multihash to `0.13`.

# 0.9.6 [2020-11-17]

- Move the `from_url` module and functionality behind the `url` feature,
  enabled by default.
  [PR 1843](https://github.com/libp2p/rust-libp2p/pull/1843).

# 0.9.5 [2020-11-14]

- Limit initial memory allocation in `visit_seq`.
  [PR 1833](https://github.com/libp2p/rust-libp2p/pull/1833).

# 0.9.4 [2020-11-09]

- Update dependencies.

# 0.9.3 [2020-10-16]

- Update dependencies.

# 0.9.2 [2020-08-31]

- Add `Ord` instance for `Multiaddr`.

# 0.9.1 [2020-06-22]

- Updated dependencies.
