Skip to content

Releases: planetarium/libplanet

Libplanet 0.25.3

14 Jan 05:42
1108e6e
Compare
Choose a tag to compare

Released on January 14, 2022.

  • Fixed a bug when message broadcasting on Swarm<T> had been stopped suddenly. [#1715]

Libplanet 0.25.2

11 Jan 05:03
55bccc4
Compare
Choose a tag to compare

Released on January 11, 2022.

  • Fixed a bug where TxCompletion<TPeer, TAction> failed to fetch transactions from other peers. [#1704]
  • In TxCompletion<TPeer, TAction>, instead of maintaining single RequestTxsFromPeerAsync() task for each peer, a new RequestTxsFromPeerAsync() task is spawned every time a new demand is received. [#1704]

Libplanet 0.25.1

06 Jan 07:54
b66a0e2
Compare
Choose a tag to compare

Released on January 6, 2022.

Behavioral changes

  • Swarm<T> changed back, reverting the behavior implemented in #1606 to append blocks to the canonical chain instead of using a forked chain while syncing recent blocks. [#1693]

Libplanet 0.25.0

05 Jan 11:45
0.25.0
0761c4f
Compare
Choose a tag to compare

Released on January 5, 2022.

Backward-incompatible API changes

  • Replaced HashDigest<T>(ImmutableArray<byte>) constructor with HashDigest<T>(in ImmutableArray<byte>) constructor. [#1678]
  • IKeyValueStore's key type became KeyBytes (was byte[]). [#1678]
    • Replaced IKeyValueStore.Get(byte[]) method with Get(in KeyBytes) method.
    • Replaced IKeyValueStore.Set(byte[], byte[]) method with Set(in KeyBytes, byte[]) method.
    • Replaced IKeyValueStore.Set(IDictionary<byte[], byte[]>) method with Set(IDictionary<KeyBytes, byte[]>) method.
    • Replaced IKeyValueStore.Delete(byte[]) method with Delete(in KeyBytes) method.
    • Replaced IKeyValueStore.Exists(byte[]) method with Exists(in KeyBytes) method.
    • IKeyValueStore.ListKeys() method's return type became IEnumerable<KeyBytes> (was IEnumerable<byte[]>).
  • ITrie's key type became KeyBytes (was byte[]). [#1689]
    • Replaced ITrie.Set(byte[], IValue) method with Set(in KeyBytes, IValue) method.
    • Replaced ITrie.TryGet(byte[], out IValue?) method with TryGet(in KeyBytes, out IValue?) method.
    • The return type of MerkleTrieExtensions.ListAllStates() static method became IEnumerable<KeyValuePair<KeyBytes, IValue>> (was IEnumerable<KeyValuePair<ImmutableArray<byte>, IValue>>). [#1653]
  • Added IKeyValueStore.Get(IEnumerable<KeyBytes>) method. [#1678]
  • Added IKeyValueStore.Delete(IEnumerable<KeyBytes>) method. [#1678]
  • nullable context enabled for Peer and BoundPeer classes. All public constructors now explicitly take non-nullable parameters. [#1679]
    • All publicly accessibe properties of Peer and BoundPeer are now non-nullable except for Peer.PublicIPAddress.
  • Replaced HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) overloaded static method with ohter new overloads. [#1680]

Backward-incompatible network protocol changes

  • Removed Sender property from Messages.TxIds and Messages.TxIds's MessageType value bumped to 0x31. [#1681]

Added APIs

  • Added KeyBytes readonly struct. [#1678]
  • Added HashDigest<T>(in ImmutableArray<byte>) constructor. [#1678]
  • Added HashDigest<T>.DeriveFrom(byte[]) overloaded static method. [#1680]
  • Added HashDigest<T>.DeriveFrom(ImmutableArray<byte>) overloaded static method. [#1680]
  • Added HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>) overloaded static method. [#1680]
  • Added StateStoreExtensions.EncodeKey() static method. [#1689]
  • Added StateStoreExtensions.DecodeKey() static method. [#1689]

Behavioral changes

  • Improved performance of Swarm<T>'s block propagation. [#1676]
  • Improved performance of RocksDBStore<T>.IterateIndexes() method. [#1676]

Libplanet 0.24.2

24 Dec 05:09
0.24.2
b2cb48f
Compare
Choose a tag to compare

Released on December 24, 2021.

  • Fixed a bug of NonblockRenderer<T> and NonblockActionRenderer<T> where they had thrown ThreadStateException when any render events occured after disposed. [#1682]
  • Log output compacted by removing duplicate exception messages. [#1632, #1677]

Libplanet 0.23.4

24 Dec 04:51
0.23.4
71c7eee
Compare
Choose a tag to compare

Released on December 24, 2021.

  • Fixed a bug of NonblockRenderer<T> and NonblockActionRenderer<T> where they had thrown ThreadStateException when any render events occured after disposed. [#1682]

Libplanet 0.24.1

16 Dec 11:09
0.24.1
bfae795
Compare
Choose a tag to compare

Released on December 16, 2021.

  • Fixed a bug where Transaction<T>s were unstaged when they were not supposed to. [#1672]

Libplanet 0.24.0

16 Dec 08:08
b51f327
Compare
Choose a tag to compare

Released on December 16, 2021.

Backward-incompatible API changes

  • IStagePolicy<T>'s interface methods updated. Notably, all IStagePolicy<T> now accept BlockChain<T> as its parameter. [#1648]
    • Get(BlockChain<T> blockChain, TxId id, bool includeInstaged) changed to Get(BlockChain<T> blockChain, TxId id, bool filtered = true).
    • Iterate() changed to Iterate(BlockChain<T> blockChain, bool filtered = true).
    • GetNextTxNonce(Address address, long minedTxs) changed to GetNextTxNonce(BlockChain<T> blockChain, Address address).

Behavioral changes

  • Description of IStagePolicy<T> and its default implementation VolatileStagePolicy<T> is overhauled. [#1648]
    • IStagePolicy<T>.Iterate() no longer guarantees any kind of ordering.
    • IStagePolicy<T>.Ignore() now also unstages the Transaction<T>.
    • VolatileStagePolicy<T> now holds every previously known unconfirmed Transaction<T> regardless of its staging/unstaging history unless it is expired or ignored.
  • New log output tagged with Metric added to measure execution time for BlockChain<T>.FindNextHashes(). [#1669]

Bug fixes

  • Fixed a bug where TxCompletion had broadcasted invalid transactions. [#1661]

Libplanet 0.23.3

13 Dec 10:44
0.23.3
Compare
Choose a tag to compare

Released on December 13, 2021.

  • Virtually disabled state fragmentation due to its critical negative impact on action evaluation performance. This will be enabled again after more practical tests in the future releases. [#1665]

Libplanet 0.23.2

13 Dec 03:27
93eb98a
Compare
Choose a tag to compare

Released on December 13, 2021.

  • Removed unnecessary a reader lock on BlockChain<T>.GetState() method to improve parallelism. [#1657]
  • Improved performance of Swarm<T>'s block synchronization. [#1657]
  • Fixed a bug where Swarm<T> had swapped to improper chain. [#1657]
  • Fixed a bug where RocksDBStore.ForkBlockIndexes() had created temporary chains unnecessarily. [#1657]