Releases: planetarium/libplanet
Releases · planetarium/libplanet
Libplanet 0.25.3
Released on January 14, 2022.
- Fixed a bug when message broadcasting on
Swarm<T>
had been stopped suddenly. [#1715]
Libplanet 0.25.2
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 singleRequestTxsFromPeerAsync()
task for each peer, a newRequestTxsFromPeerAsync()
task is spawned every time a new demand is received. [#1704]
Libplanet 0.25.1
Libplanet 0.25.0
Released on January 5, 2022.
Backward-incompatible API changes
- Replaced
HashDigest<T>(ImmutableArray<byte>)
constructor withHashDigest<T>(in ImmutableArray<byte>)
constructor. [#1678] IKeyValueStore
's key type becameKeyBytes
(wasbyte[]
). [#1678]- Replaced
IKeyValueStore.Get(byte[])
method withGet(in KeyBytes)
method. - Replaced
IKeyValueStore.Set(byte[], byte[])
method withSet(in KeyBytes, byte[])
method. - Replaced
IKeyValueStore.Set(IDictionary<byte[], byte[]>)
method withSet(IDictionary<KeyBytes, byte[]>)
method. - Replaced
IKeyValueStore.Delete(byte[])
method withDelete(in KeyBytes)
method. - Replaced
IKeyValueStore.Exists(byte[])
method withExists(in KeyBytes)
method. IKeyValueStore.ListKeys()
method's return type becameIEnumerable<KeyBytes>
(wasIEnumerable<byte[]>
).
- Replaced
ITrie
's key type becameKeyBytes
(wasbyte[]
). [#1689]- Replaced
ITrie.Set(byte[], IValue)
method withSet(in KeyBytes, IValue)
method. - Replaced
ITrie.TryGet(byte[], out IValue?)
method withTryGet(in KeyBytes, out IValue?)
method. - The return type of
MerkleTrieExtensions.ListAllStates()
static method becameIEnumerable<KeyValuePair<KeyBytes, IValue>>
(wasIEnumerable<KeyValuePair<ImmutableArray<byte>, IValue>>
). [#1653]
- Replaced
- Added
IKeyValueStore.Get(IEnumerable<KeyBytes>)
method. [#1678] - Added
IKeyValueStore.Delete(IEnumerable<KeyBytes>)
method. [#1678] nullable
context enabled forPeer
andBoundPeer
classes. All public constructors now explicitly take non-nullable parameters. [#1679]- All publicly accessibe properties of
Peer
andBoundPeer
are now non-nullable except forPeer.PublicIPAddress
.
- All publicly accessibe properties of
- Replaced
HashDigest<T>.DeriveFrom(ReadOnlySpan<byte>)
overloaded static method with ohter new overloads. [#1680]
Backward-incompatible network protocol changes
- Removed
Sender
property fromMessages.TxIds
andMessages.TxIds
'sMessageType
value bumped to0x31
. [#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
Libplanet 0.24.2
Libplanet 0.23.4
Released on December 24, 2021.
- Fixed a bug of
NonblockRenderer<T>
andNonblockActionRenderer<T>
where they had thrownThreadStateException
when any render events occured after disposed. [#1682]
Libplanet 0.24.1
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
Released on December 16, 2021.
Backward-incompatible API changes
IStagePolicy<T>
'sinterface
methods updated. Notably, allIStagePolicy<T>
now acceptBlockChain<T>
as its parameter. [#1648]Get(BlockChain<T> blockChain, TxId id, bool includeInstaged)
changed toGet(BlockChain<T> blockChain, TxId id, bool filtered = true)
.Iterate()
changed toIterate(BlockChain<T> blockChain, bool filtered = true)
.GetNextTxNonce(Address address, long minedTxs)
changed toGetNextTxNonce(BlockChain<T> blockChain, Address address)
.
Behavioral changes
- Description of
IStagePolicy<T>
and its default implementationVolatileStagePolicy<T>
is overhauled. [#1648]IStagePolicy<T>.Iterate()
no longer guarantees any kind of ordering.IStagePolicy<T>.Ignore()
now also unstages theTransaction<T>
.VolatileStagePolicy<T>
now holds every previously known unconfirmedTransaction<T>
regardless of its staging/unstaging history unless it is expired or ignored.
- New log output tagged with
Metric
added to measure execution time forBlockChain<T>.FindNextHashes()
. [#1669]
Bug fixes
- Fixed a bug where
TxCompletion
had broadcasted invalid transactions. [#1661]
Libplanet 0.23.3
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
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]