Skip to content

Latest commit

 

History

History
165 lines (93 loc) · 3.98 KB

CHANGELOG.md

File metadata and controls

165 lines (93 loc) · 3.98 KB

Changelog

0.0.5 - 2024-01-12

Updated

  • Use bt_bencode version 0.8.

  • Use gen_value version 0.7.

0.0.4 - 2023-08-27

Fixed

  • Fix bug in pieces count in Metainfo

  • Fix piece length for last piece

Changed

  • Use borrowed types for KRPC messages and Metainfo

  • Parse frames using reference types

  • Use byte slice instead of Bytes for data parameter in Session::on_read_unknown.

  • Refactor choke/interest peer states based on local perspective of peer. Guard against re-entrancy.

Added

  • Derive Eq for protocol messages

  • Add From impls for Error

  • Add protocol::parse_handshake function

  • Derive Clone for DHT Bucket and Table

  • Add all_set and not_all_set to IndexBitfield

  • Add prev to Index

  • Add TryFrom<Length>, TryFrom<BlockBegin>, and TryFrom<BlockLength> for usize

  • Add BlockBegin::index method

0.0.3 - 2022-05-31

Fixed

  • Fix documentation for peer module types

Changed

  • Add InfoHash fmt implementations

  • Add Id and ReservedBytes fmt implementations

  • Add const, #[must], and #[inline] to various types

  • Add pub to stable newtypes

Added

  • Add DHT Node Id and CompactAddress types

  • Add KRPC traits and common message types for error, ping, find_node, announce_peer and get_peers

  • Add KRPC transaction Id and collection types

  • Add DHT Routing types to manage known nodes

0.0.2 - 2022-04-27

Fixed

  • Fix IndexBitfield::from_slice()

    from_slice() took a raw byte slice which did not give enough information about the length of the bitfield. Unused bytes would increase the size.

Changed

  • Remove clones for is_superset and is_subset

    Remove the need to take ownership which usually resulted in a clone of the IndexBitfield for is_superset() and is_subset().

  • Simplify IndexBitfield API

    Add simple getter/setter for IndexBitfield to get/set bool for index

  • Add type parameter for IndexCountedSet

    In most cases, u8 should be enough but in case a larger number of peers are simultaneously connected.

Added

  • Add time::Instant trait

    Add Instant trait for portability

  • Add peer::MetricsHistory

    MetricsHistory can be used to store regular intervals of history. Useful to make decisions based on metric averages over a period of time.

  • Add peer::Session for managing peer state

    Session maintains the various state changes for peers when a message is received or sent.

    Make peer::State and peer::SendState private to allow implementation details to change.

  • Add max_index() to IndexBitfield and IndexCountedSet

  • Add peer::Metrics and peer::State

    Metrics contain both the current interval's metrics and a running total of accumulated metrics.

    peer::State contains the local and remote state as well as deadlines for read and write.

  • Add protocol::Metrics methods for specific types

    Allow individual message type metrics to be added to skip the match expression if the message type is already known

  • Adds IndexBitfield::clear_with_max_index

    Enables reuse of the IndexBitfield by clearing and resizing to the new maximum piece index.

  • Add generational index and vector types

    Generational vectors can be used to store data related to peers and torrents inside a session type

  • Add protocol::Metrics, conn::Metrics, and torrent::Metrics

    Metrics can be used to keep track of what data has been exchanged. The metrics may be used to change behavior between peers.

  • Add PartialEq to protocol types

    For ReservedBytes and ReceivedHandshakeState

0.0.1 - 2022-04-19

Added

  • Initial release