Releases: planetarium/libplanet
Releases · planetarium/libplanet
Libplanet 0.23.1
Libplanet 0.23.0
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
forKBucket.GetRandomPeer()
now defaults tonull
. [#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
andKBucket.Tail
now properly returnnull
if the bucket is empty instead of faulting. [#1631]TxCompletion.Demand()
no longer requestsTransaction<T>
s already in storage. [#1649]
Dependencies
- Upgraded Bencodex from 0.4.0-dev.20211123080042+d7f6c810 to 0.4.0. [#1636]
- Upgraded Planetarium.RocksDbSharp from 6.2.3 to 6.2.4-planetarium. [#1635]
Libplanet 0.22.1
Libplanet 0.21.3
Released on December 5, 2021.
- Removed
ITransport.MessageHistory
property due to memory leak. [#1638]
Libplanet 0.22.0
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 becamelong?
(wereint?
). [#1609] - The type of
IBlockPolicy<T>.GetMaxBlockBytes(long)
method becamelong
(wasint
). [#1609] - The type of
BlockPolicy<T>()
constructor'sgetMaxBlockBytes
parameter becameFunc<long, long>?
(wasFunc<long, int>?
). [#1609] - The type of
InvalidBlockBytesLengthException()
constructor'sbytesLength
parameter becamelong
(wasint
). [#1609] - The type of
InvalidBlockBytesLengthException.BytesLength
property becamelong
(wasint
). [#1609] - Methods
IsEmpty()
andIsFull()
ofKBucket
changed to propertiesIsEmpty
andIsFull
respectively. [#1610] MessageCodec
class renamed toTcpMessageCodec
. [#1610]lifetime
parameter removed fromIMessageCodec.Decode()
.messageLifespan
parameter added to constructors ofNetMQMessageCodec
andTcpMessageCodec
. [#1610]- Removed unused
PeerStates
property fromSwarm<T>
. [#1610] - Method name
BoundPeer.QueryAppProtocolVersion()
changed toBoundPeer.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
andInvalidTimestampException
can now be serialized and deserialized. [#1613]- Fixed a bug where
PolymorphicAction<T>
had thrownInvalidCastException
when inner action's.PlainValue
returns other value thanBencodex.Types.Dictionary
. [#1628]
Dependencies
- Libplanet.Stun assembly is now distributed as a seaprate NuGet package: Libplanet.Stun. [#813, #1279, #1625]
- Upgraded Bencodex from 0.3.0 to 0.4.0-dev.20211123080042+d7f6c810. [#1609]
- Now depends on Caching.dll 1.4.0.1.
Libplanet 0.21.2
Released on November 25, 2021.
planet apv query
command became to communicate withNetMQTransport
instead ofTcpTransport
. [#1618]
Libplanet 0.21.1
Released on November 25, 2021.
Libplanet 0.21.0
Released on November 16, 2021.
Backward-incompatible API changes
- (Libplanet.RocksDBStore) Removed
MonoRocksDBStore
class. [#1513, #1579] - Removed
rehearsal
parameter fromITrie.Commit()
method. [#1554, #1570] - Removed
rehearsal
parameter fromStateStoreExtensions.Commit()
extension method. [#1554, #1570] - Removed
ITransport.RunAsync()
method.ITransport.StartAsync()
now conducts operation thatITransport.RunAsync()
used to conduct. [#1523] - Removed
ITransport.ReplyMessage()
method which was non-blocking. Instead, addedITransport.ReplyMessageAsync()
asynchronous method which is awaited until the reply message is sent. [#1523] - The type of
ITransport.ProcessMessageHandler
becameAsyncDelegate<T>
(which wasEventHandler
). [#1523] - Removed unused
BlockChain<T>
type parameter fromIStagePolicy<T>.Iterate()
method. [#1553, #1556] - Removed unsued
HashAlgorithmTable
class. [#1600] BlockChain<T>.MineBlock()
andBlockChain<T>.GatherTransactionsToMine()
now additionally acceptsmaxBlockBytes
parameter of typeint
. [#1600]- Removed
BlockInsufficientTxsException
andBlockExceedingTransactionsException
classes. [#1504, #1600]
Added APIs
- Added
ITransport.MessageHistory
property. [#1523] - Added
ITransport.WaitForRunning()
method. [#1523] - Added
TcpTransport
class which implementsITransport
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 inheritsIMessageCodec<T>
. [#1523] - Added
IStagePolicy<T>.GetNextTxNonce()
method. [#1553, #1556] - Added
InvalidBlockBytesLengthException
,InvalidBlockTxCountException
,InvalidBlockHashAlgorithmTypeException
, andInvalidBlockTxCountPerSignerException
classes. [#1504, #1600]
Behavioral changes
- Improved performance of
MerkleTrie.Commit()
andBlockChain<T>.ExecuteActions()
methods. [#1554, #1570] Swarm<T>.MineBlock()
now throwsOperationCanceledException
instead ofBlockInsufficientTxsException
when there are no sufficient number of blocks to mine. [#1600]- Default implementation
BlockPolicy<T>.ValidateNextBlock()
ofIBlockPolicy<T>
now validates the type forBlock<T>.HashAlgorithm
, size forBlock<T>.BytesLength
, and count forBlock<T>.Transactions
. [#1504, #1600]
CLI tools
Libplanet 0.20.2
Released on November 9, 2021.
- (Libplnaet.RocksDBStore) Fixed
DefaultStore.ForkBlockIndexes()
method's bug that it had been thrownChainIdNotFoundException
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
Released on November 8, 2021.
Swarm<T>
became to broadcast a new block to peers immediately afterSwarm<T>.BlockChain
'sTip
changes while it isRunning
. [#1582]