Skip to content

Releases: planetarium/libplanet

Libplanet 0.23.1

10 Dec 06:18
0.23.1
8c5e573
Compare
Choose a tag to compare

Released on December 10, 2021.

  • Fixed TrieStateStore.PruneStates() method's bug that it had thrown ArgumentOutOfRangeException. [#1653, #1654]

Libplanet 0.23.0

08 Dec 05:45
0.23.0
bf2a321
Compare
Choose a tag to compare

Released on December 8, 2021.

From this version Libplanrt can be built on arm64 machines including Apple Silicon (aarch64-apple-darwin).

Added APIs

  • Added PreEvaluationBlock<T>.DetermineStateRootHash(BlockChain<T>, StateCompleterSet<T>, out IImmutableDictionary<string, IValue>) overloaded method. [#1636]
  • Added PreEvaluationBlock<T>.DetermineStateRootHash(IAction?, IStateStore, out IImmutableDictionary<string, IValue>) overloaded method. [#1636]
  • Parameter except for KBucket.GetRandomPeer() now defaults to null. [#1631]
  • Added ArrayEqualityComparer<T> class. [#1636]

Behavioral changes

  • States became to take up much less space than before by reducing unnecessary duplicate data. Although this guarantees the backward compatibility with the existing state store, in order to take complete effect of this optimization, please replay your existing blockchain from the genesis block with the empty store. [#1636]
  • (Libplanet.Analyzers) Rule LAA1002 no more warns about enumerating sorted sets/dictionaries:
    • System.Collections.Generic.SortedDictionary<TKey, TValue>
    • System.Collections.Generic.SortedSet<T>
    • System.Collections.Immutable.ImmutableSortedDictionary<TKey, TValue>
    • System.Collections.Immutable.ImmutableSortedSet<T>
    • Bencodex.Types.Dictionary (which became to guarantee enumeration order since Bencodex 0.4.0)

Bug fixes

  • KBucket.Head and KBucket.Tail now properly return null if the bucket is empty instead of faulting. [#1631]
  • TxCompletion.Demand() no longer requests Transaction<T>s already in storage. [#1649]

Dependencies

Libplanet 0.22.1

05 Dec 09:33
eb370e3
Compare
Choose a tag to compare

Released on December 5, 2021.

  • Compacted log output for convenience. [#1633]
  • Removed ITransport.MessageHistory property due to memory leak. [#1639]

Libplanet 0.21.3

05 Dec 09:35
1bcf37f
Compare
Choose a tag to compare

Released on December 5, 2021.

  • Removed ITransport.MessageHistory property due to memory leak. [#1638]

Libplanet 0.22.0

30 Nov 10:07
0.22.0
63cdbe2
Compare
Choose a tag to compare

Released on November 30, 2021.

Backward-incompatible API changes

  • Removed Transaction<T>.BytesLength property. [#1609]
  • Removed Block<T>.BytesLength property. [#1609]
  • The types of BlockChain<T>.MineBlock() overloaded methods' maxBlockBytes parameters became long? (were int?). [#1609]
  • The type of IBlockPolicy<T>.GetMaxBlockBytes(long) method became long (was int). [#1609]
  • The type of BlockPolicy<T>() constructor's getMaxBlockBytes parameter became Func<long, long>? (was Func<long, int>?). [#1609]
  • The type of InvalidBlockBytesLengthException() constructor's bytesLength parameter became long (was int). [#1609]
  • The type of InvalidBlockBytesLengthException.BytesLength property became long (was int). [#1609]
  • Methods IsEmpty() and IsFull() of KBucket changed to properties IsEmpty and IsFull respectively. [#1610]
  • MessageCodec class renamed to TcpMessageCodec. [#1610]
  • lifetime parameter removed from IMessageCodec.Decode(). messageLifespan parameter added to constructors of NetMQMessageCodec and TcpMessageCodec. [#1610]
  • Removed unused PeerStates property from Swarm<T>. [#1610]
  • Method name BoundPeer.QueryAppProtocolVersion() changed to BoundPeer.QueryAppProtocolVersionNetMQ(). [#1610]

Behavioral changes

  • Swarm<T> became to append blocks to forked chain to avoid locking the canonical chain while syncing recent blocks. [#1606]
  • More streamlined structured logging together with additional logs tagged as Metric. [#1627]

Bug fixes

  • InvalidMagicCookieException and InvalidTimestampException can now be serialized and deserialized. [#1613]
  • Fixed a bug where PolymorphicAction<T> had thrown InvalidCastException when inner action's .PlainValue returns other value than Bencodex.Types.Dictionary. [#1628]

Dependencies

Libplanet 0.21.2

25 Nov 14:36
ecdc5df
Compare
Choose a tag to compare

Released on November 25, 2021.

  • planet apv query command became to communicate with NetMQTransport instead of TcpTransport. [#1618]

Libplanet 0.21.1

25 Nov 06:10
0.21.1
0de92c1
Compare
Choose a tag to compare

Released on November 25, 2021.

  • SwarmOptions.TipLifespan property' default value was changed. The default lifespan for a tip going stale is now 60 seconds instead of 30 seconds for the purpose of polling blocks. [#1614]
  • Swarm<T>'s internal logic for determining when the BlockChain<T>.Tip becomes stale is now fixed. [#1614]

Libplanet 0.21.0

16 Nov 08:26
0.21.0
178973d
Compare
Choose a tag to compare

Released on November 16, 2021.

Backward-incompatible API changes

  • (Libplanet.RocksDBStore) Removed MonoRocksDBStore class. [#1513, #1579]
  • Removed rehearsal parameter from ITrie.Commit() method. [#1554, #1570]
  • Removed rehearsal parameter from StateStoreExtensions.Commit() extension method. [#1554, #1570]
  • Removed ITransport.RunAsync() method. ITransport.StartAsync() now conducts operation that ITransport.RunAsync() used to conduct. [#1523]
  • Removed ITransport.ReplyMessage() method which was non-blocking. Instead, added ITransport.ReplyMessageAsync() asynchronous method which is awaited until the reply message is sent. [#1523]
  • The type of ITransport.ProcessMessageHandler became AsyncDelegate<T> (which was EventHandler). [#1523]
  • Removed unused BlockChain<T> type parameter from IStagePolicy<T>.Iterate() method. [#1553, #1556]
  • Removed unsued HashAlgorithmTable class. [#1600]
  • BlockChain<T>.MineBlock() and BlockChain<T>.GatherTransactionsToMine() now additionally accepts maxBlockBytes parameter of type int. [#1600]
  • Removed BlockInsufficientTxsException and BlockExceedingTransactionsException classes. [#1504, #1600]

Added APIs

  • Added ITransport.MessageHistory property. [#1523]
  • Added ITransport.WaitForRunning() method. [#1523]
  • Added TcpTransport class which implements ITransport interface. [#1523]
  • Added SwarmOptions.Type property. [#1523]
  • Added SwarmOptions.TransportType enum. [#1523]
  • Added AsyncDelegate<T> class. [#1523]
  • Added InvalidMagicCookieException class. [#1523]
  • Added MessageCodec class which inherits IMessageCodec<T>. [#1523]
  • Added IStagePolicy<T>.GetNextTxNonce() method. [#1553, #1556]
  • Added InvalidBlockBytesLengthException, InvalidBlockTxCountException, InvalidBlockHashAlgorithmTypeException, and InvalidBlockTxCountPerSignerException classes. [#1504, #1600]

Behavioral changes

  • Improved performance of MerkleTrie.Commit() and BlockChain<T>.ExecuteActions() methods. [#1554, #1570]
  • Swarm<T>.MineBlock() now throws OperationCanceledException instead of BlockInsufficientTxsException when there are no sufficient number of blocks to mine. [#1600]
  • Default implementation BlockPolicy<T>.ValidateNextBlock() of IBlockPolicy<T> now validates the type for Block<T>.HashAlgorithm, size for Block<T>.BytesLength, and count for Block<T>.Transactions. [#1504, #1600]

CLI tools

  • planet stats command's -p/--path option no more supports the store type monorocksdb. [#1513, #1579]
  • Subcommands under planet store no more supports the store type monorocksdb. [#1513, #1579]

Libplanet 0.20.2

09 Nov 05:39
0.20.2
983fee8
Compare
Choose a tag to compare

Released on November 9, 2021.

  • (Libplnaet.RocksDBStore) Fixed DefaultStore.ForkBlockIndexes() method's bug that it had been thrown ChainIdNotFoundException when received a chain forked from already deleted. [#1591, #1592]
  • Fixed improper implementations of BlockExceedingTransactionsException InvalidBlockBytesLengthException in regards to serialization and related tests. [#1594]

Libplanet 0.20.1

08 Nov 07:18
0.20.1
bdd351e
Compare
Choose a tag to compare

Released on November 8, 2021.

  • Swarm<T> became to broadcast a new block to peers immediately after Swarm<T>.BlockChain's Tip changes while it is Running. [#1582]