Skip to content

Latest commit

 

History

History
546 lines (366 loc) · 20.6 KB

CHANGELOG.md

File metadata and controls

546 lines (366 loc) · 20.6 KB

0.42.0

  • Update Transport::dial function signature with a DialOpts param and remove Transport::dial_as_listener:
    • DialOpts struct contains PortUse and Endpoint,
    • PortUse allows controling port allocation of new connections (defaults to PortUse::Reuse) -
    • Add port_use field to ConnectedPoint
    • Set endpoint field in DialOpts to Endpoint::Listener to dial as a listener
  • Remove Transport::address_translation and relocate functionality to libp2p_swarm

See [PR 4568].

0.41.3

  • Use web-time instead of instant. See PR 5347.

0.41.2

  • Implement std::fmt::Display on ListenerId. See PR 4936.

0.41.1

  • Implement {In,Out}boundConnectionUpgrade for SelectUpgrade. See PR 4812.

0.41.0

  • Remove blanket-impl of {In,Out}boundUpgrade for {In,Out}boundConnectionUpgrade. See PR 4695.
  • Remove deprecated functions from ListenerId. See PR 4736.
  • Remove upgrade::transfer module. See issue 4011 for details. See PR 4788.

0.40.1

  • Implement Debug for StreamMuxerEvent. See PR 4426.

0.40.0

  • Allow ListenerId to be user-controlled, i.e. to be provided on Transport::listen_on. See PR 3567.

  • Raise MSRV to 1.65. See PR 3715.

  • Remove deprecated symbols related to upgrades. See PR 3867.

  • Enforce protocol names to be valid UTF8 strings as required by the spec. We delete the ProtocolName trait and replace it with a requirement for AsRef<str>. See PR 3746

  • Remove SingletonMuxer. See PR 3883.

  • Add global_only::Transport that refuses to dial IP addresses from private ranges. See PR 3814.

  • Remove upgrade::{apply, apply_inbound, apply_outbound, InboundUpgradeApply, OutboundUpgradeApply} from public API. These are implementation details that should not be depended on. See PR 3915.

  • Remove deprecated identity module. Depend on libp2p-identity directly instead or import it via the libp2p::identity re-export. See PR 4040.

0.39.2

  • Deprecate upgrade::from_fn without replacement as it is not used within rust-libp2p. If you depend on it, we suggest you vendor it. See PR 3747.

  • Deprecate {In,Out}boundUpgradeExt, as they are not used in rust-libp2p. See PR 3807.

  • Deprecate OptionalUpgrade without replacement. See PR 3806.

0.39.1

  • Migrate from prost to quick-protobuf. This removes protoc dependency. See PR 3312.

0.39.0

  • Move ConnectionId to libp2p-swarm. See PR 3221.
  • Move PendingPoint to libp2p-swarm and make it crate-private. See PR 3221.

0.38.0

  • Remove deprecated functions StreamMuxerExt::next_{inbound,outbound}. See PR 3031.

  • Hide prost::Error from public API in FromEnvelopeError::InvalidPeerRecord and signed_envelope::DecodingError. See PR 3058.

  • Move Executor to libp2p-swarm. See PR 3097.

  • Update rust-version to reflect the actual MSRV: 1.60.0. See PR 3090.

  • Update multistream-select to v0.12.1. See PR 3090.

  • Improve error messages in case keys cannot be decoded because of missing feature flags. See PR 2972.

  • Remove EitherError in favor of either::Either. See PR 3337.

  • Remove EitherTransport in favor of implementing Transport on either::Either. See PR 3338.

  • Remove EitherUpgrade in favor of implementing UpgradeInfo, InboundUpgrade and OutboundUpgrade on either::Either. See PR 3339.

  • Remove EitherFuture2 in favor of EitherFuture. See PR 3340.

  • Remove EitherOutput in favor of future::Either. See PR 3341.

0.37.0

  • Implement Hash and Ord for PublicKey. See PR 2915.

  • Remove default features. If you previously depended on secp256k1 or ecdsa you need to enable these explicitly now. See PR 2918.

  • Deprecate StreamMuxerExt::next_{inbound,outbound}. See PR 3002.

0.36.0

  • Make RSA keypair support optional. To enable RSA support, rsa feature should be enabled. See PR 2860.

  • Add ReadyUpgrade. See PR 2855.

0.35.1

  • Update to p256 v0.11.0. See PR 2636.

0.35.0

  • Update prost requirement from 0.10 to 0.11 which no longer installs the protoc Protobuf compiler. Thus you will need protoc installed locally. See PR 2788.
  • Drop Unpin requirement from SubstreamBox. See PR 2762 and PR 2776.
  • Drop Sync requirement on StreamMuxer for constructing StreamMuxerBox. See PR 2775.
  • Use Pin<&mut Self> as the receiver type for all StreamMuxer poll functions. See PR 2765.
  • Change StreamMuxer interface to be entirely poll-based. All functions on StreamMuxer now require a Context and return Poll. This gives callers fine-grained control over what they would like to make progress on. See PR 2724 and PR 2797.

0.34.0

  • Remove {read,write,flush,shutdown,destroy}_substream functions from StreamMuxer trait in favor of forcing StreamMuxer::Substream to implement AsyncRead + AsyncWrite. See PR 2707.

  • Replace Into<std::io::Error> bound on StreamMuxer::Error with std::error::Error. See PR 2710.

  • Remove the concept of individual Transport::Listener streams from Transport. Instead the Transport is polled directly via Transport::poll. The Transport is now responsible for driving its listeners. See PR 2652.

0.33.0

  • Have methods on Transport take &mut self instead of self. See PR 2529.
  • Remove StreamMuxer::flush_all. See PR 2669.
  • Rename StreamMuxer::close to StreamMuxer::poll_close. See PR 2666.
  • Remove deprecated function StreamMuxer::is_remote_acknowledged. See PR 2665.

0.32.1

  • Add PeerId::try_from_multiaddr to extract a PeerId from a Multiaddr that ends in /p2p/<peer-id>.

0.32.0 [2022-02-22]

  • Remove Network. libp2p-core is from now on an auxiliary crate only. Users that have previously used Network only, will need to use Swarm instead. See PR 2492.

  • Update to multiaddr v0.14.0.

  • Update to multihash v0.16.0.

  • Implement Display on DialError. See PR 2456.

  • Update to parking_lot v0.12.0. See PR 2463.

  • Validate PeerRecord signature matching peer ID. See RUSTSEC-2022-0009.

  • Don't take ownership of key in PeerRecord::new and SignedEnvelope::new. See PR 2516.

  • Remove SignedEnvelope::payload in favor of SignedEnvelope::payload_and_signing_key. The caller is expected to check that the returned signing key makes sense in the payload's context. See PR 2522.

0.31.0 [2022-01-27]

  • Update dependencies.

  • Report concrete connection IDs in NetworkEvent::ConnectionEstablished and NetworkEvent::ConnectionClosed (see PR 2350).

  • Migrate to Rust edition 2021 (see PR 2339).

  • Add support for ECDSA identities (see PR 2352).

  • Add ConnectedPoint::is_relayed (see PR 2392).

  • Enable overriding dial concurrency factor per dial via DialOpts::override_dial_concurrency_factor.

    • Introduces libp2p_core::DialOpts mirroring libp2p_swarm::DialOpts. Passed as an argument to Network::dial.
    • Removes Peer::dial in favor of Network::dial.

    See PR 2404.

  • Implement Serialize and Deserialize for PeerId (see PR 2408)

  • Report negotiated and expected PeerId as well as remote address in DialError::WrongPeerId (see PR 2428).

  • Allow overriding role when dialing. This option is needed for NAT and firewall hole punching.

    • Add Transport::dial_as_listener. As Transport::dial but overrides the role of the local node on the connection . I.e. has the local node act as a listener on the outgoing connection.

    • Add override_role option to DialOpts.

    See PR 2363.

0.30.1 [2021-11-16]

  • Use instant instead of wasm-timer (see PR 2245).

0.30.0 [2021-11-01]

  • Add ConnectionLimit::with_max_established (see PR 2137).

  • Add Keypair::to_protobuf_encoding (see PR 2142).

  • Change PublicKey::into_protobuf_encoding to PublicKey::to_protobuf_encoding (see PR 2145).

  • Change PublicKey::into_peer_id to PublicKey::to_peer_id (see PR 2145).

  • Change PeerId::from_public_key(PublicKey) to PeerId::from_public_key(&PublicKey) (see PR 2145).

  • Add From<&PublicKey> for PeerId (see PR 2145).

  • Remove TInEvent and TOutEvent trait parameters on most public types. TInEvent and TOutEvent are implied through THandler and thus superflucious. Both are removed in favor of a derivation through THandler (see PR 2183).

  • Require ConnectionHandler::{InEvent,OutEvent,Error} to implement Debug (see PR 2183).

  • Remove DisconnectedPeer::set_connected and Pool::add (see PR 2195).

  • Report ConnectionLimit error through ConnectionError and thus through NetworkEvent::ConnectionClosed instead of previously through PendingConnectionError and thus NetworkEvent::{IncomingConnectionError, DialError} (see PR 2191).

  • Report abortion of pending connection through DialError, UnknownPeerDialError or IncomingConnectionError (see PR 2191).

  • Remove deprecated functions upgrade::write_one, upgrade::write_with_len_prefix and upgrade::read_one (see PR 2213).

  • Add SignedEnvelope and PeerRecord according to RFC0002 and RFC0003 (see PR 2107).

  • Report ListenersEvent::Closed when dropping a listener in ListenersStream::remove_listener, return bool instead of Result<(), ()> (see PR 2261).

  • Concurrently dial address candidates within a single dial attempt (see PR 2248) configured via Network::with_dial_concurrency_factor.

    • On success of a single address, provide errors of the thus far failed dials via NetworkEvent::ConnectionEstablished::outgoing.

    • On failure of all addresses, provide the errors via NetworkEvent::DialError.

0.29.0 [2021-07-12]

  • Switch from parity-multiaddr to upstream multiaddr.

  • Update dependencies.

  • Implement Keypair::from_protobuf_encoding for ed25519 keys (see PR 2090).

  • Deprecate upgrade::write_one. Deprecate upgrade::write_with_len_prefix. Deprecate upgrade::read_one. Introduce upgrade::read_length_prefixed and upgrade::write_length_prefixed. See PR 2111.

0.28.3 [2021-04-26]

  • Fix build with secp256k1 disabled PR 2057.

0.28.2 [2021-04-13]

  • Update dependencies.

0.28.1 [2021-03-17]

  • Update paritytech-multiaddr to >=v0.11.2.

0.28.0 [2021-03-17]

  • Network::dial() understands /p2p addresses and Transport::dial gets a "fully qualified" /p2p address when dialing a specific peer, whether through the Network::peer() API or via Network::dial() with a /p2p address.

  • Network::dial() and network::Peer::dial() return a DialError on error.

  • Shorten and unify Debug impls of public keys.

0.27.1 [2021-02-15]

  • Update dependencies.

0.27.0 [2021-01-12]

  • (Re)add Transport::address_translation to permit transport-specific translations of observed addresses onto listening addresses. PR 1887

  • Update dependencies.

0.26.0 [2020-12-17]

  • Make PeerId be Copy, including small PeerId API changes. PR 1874.

0.25.2 [2020-12-02]

  • Require multistream-select-0.9.1.

0.25.1 [2020-11-25]

  • Add missing multiaddr upgrade.

0.25.0 [2020-11-25]

  • The NetworkConfig API is now a builder that moves self. PR 1848.

  • New configurable connection limits for established connections and dedicated connection counters. Removed the connection limit dedicated to outgoing pending connection per peer. Connection limits are now represented by u32 intead of usize types. PR 1848.

  • Update multihash.

  • Update multistream-select.

0.24.0 [2020-11-09]

  • Remove ConnectionInfo trait and replace it with PeerId everywhere. This was already effectively the case because ConnectionInfo was implemented on PeerId.

0.23.1 [2020-10-20]

  • Update dependencies.

0.23.0 [2020-10-16]

  • Rework transport boxing and move timeout configuration to the transport builder. PR 1794.

  • Update dependencies.

0.22.1 [2020-09-10]

  • Require at least parity-multiaddr v0.9.2 in order to fulfill Ord bound on Multiaddr. PR 1742.

0.22.0 [2020-09-09]

  • Simplify incoming connection handling. The IncomingConnectionEvent has been removed. Instead, pass the IncomingConnection obtained from NetworkEvent::IncomingConnection to Network::accept(). PR 1732.

  • Allow any closure to be passed as an executor. PR 1686

  • Remove PeerId compatibility mode for "identity" and SHA2 hashes. Historically, before 0.12, PeerIds were incorrectly always hashed with SHA2. Starting from version 0.13, rust-libp2p accepted both hashed and non-hashed keys as input. Starting from version 0.16 rust-libp2p compared PeerIds of "identity" and SHA2 hashes equal, which made it possible to connect through secio or noise to nodes with an identity hash for the same peer ID. Starting from version 0.17, rust-libp2p switched to not hashing the key (i.e. the correct behaviour) while retaining equality between peer IDs using the "identity" hash and SHA2. Finally, with this release, that will no longer be the case and it is assumed that peer IDs whose length is less or equal to 42 bytes always use the "identity" hash so two peer IDs are equal if and only if they use the same hash algorithm and have the same hash digest. PR 1608.

  • Return dialer address instead of listener address as remote_addr in MemoryTransport Listener ListenerEvent::Upgrade PR 1724.

0.21.0 [2020-08-18]

  • Remove duplicates when performing address translation PR 1697.

  • Add transport::Builder::multiplex_ext for further customisation during StreamMuxer creation. PR 1691.

  • Refactoring of connection close and disconnect behaviour. In particular, the former NetworkEvent::ConnectionError is now NetworkEvent::ConnectionClosed with the error field being an Option and None indicating an active (but not necessarily orderly) close. This guarantees that ConnectionEstablished events are always eventually paired with ConnectionClosed events, regardless of how connections are closed. Correspondingly, EstablishedConnection::close is now EstablishedConnection::start_close to reflect that an orderly close completes asynchronously in the background, with the outcome observed by continued polling of the Network. In contrast, disconnecting a peer takes effect immediately without an orderly connection shutdown. See PR 1619 for further details.

  • Add ConnectedPoint::get_remote_address (PR 1649).

0.20.1 [2020-07-17]

  • Update ed25519-dalek dependency.

0.20.0 [2020-07-01]

  • Conditional compilation fixes for the wasm32-wasi target (PR 1633).

  • Rename StreamMuxer::poll_inbound to poll_event and change the return value to StreamMuxerEvent. This new StreamMuxerEvent makes it possible for the multiplexing layer to notify the upper layers of a change in the address of the underlying connection.

  • Add ConnectionHandler::inject_address_change.

0.19.2 [2020-06-22]

  • Add PartialOrd and Ord for PeerId (PR 1594).

  • Updated dependencies.

  • Deprecate StreamMuxer::is_remote_acknowledged (PR 1616).