- Bump to
nothunks
0.2 - Add
NoThunks
orphan instance forNoGenesis era
- Update
txSize
to returnSizeInBytes
instead ofTxSizeInBytes
- Expose
SizeInBytes
instead ofTxSizeInBytes
- Update
mpEnvTxSize
andtxSizesInBytes
to returnSizeInBytes
instead ofTxSizeInBytes
initMempoolEnv
,extendVRNew
,openMempool
,openMempoolWithoutSyncThread
,implAddTx
,implTryAddTx
andopenMockedMempool
now require callback(GenTx blk -> SizeInBytes)
instead of(GenTx blk -> TxSizeInBytes)
- Update
txTicketTxSizeInBytes
,mSizeBytes
's types fromTxSizeInBytes
toSizeInBytes
splitAfterTxSize
,splitAfterTxSizeSpec
requiresSizeInBytes
instead ofTxSizeInBytes
- Added
TickedLedgerState
argument totxMeasure
.
- Track size of txs' ref scripts in mempool.
- Updated dependencies, but no changes to the interface.
-
Fixed GDD implementation. (still disabled by default)
-
ImmutableDB: added
headerToTip
.
-
Implemented a first version of CSJ (ChainSync Jumping). (disabled by default)
-
Added
getHashForSlot
to the internal ImmutableDB API. -
ImmutableDB
blockToTip
: relaxed constraints.
-
Fixed LoE implementation. (still disabled by default)
-
ChainSync client: removed redundant intersection check with selection (we already do that on every RollForward).
-
Un-orphan instances for
Condense
andHeaderHash (Ticked l)
. -
Provide
NoThunks
instances for:Sum a
,RAWLock m st
,StrictTVar (WithEarlyExit m) a
,StrictSVar (WithEarlyExit m) a
-
Added
Complete
andIncomplete
type aliases for arguments. -
Implement
HTrans
instance forHardForkState
-
SomeSecond
became poly-kinded.
-
Added new
BlockSupportsDiffusionPipelining
class (as well as supporting data types), which is a superclass constraint ofSingleEraBlock
andRunNode
. Added the new necessary instances. -
Update BlockFetch punishment logic for
BlockSupportsDiffusionPipelining
. -
Update ChainSel tentative header logic for
BlockSupportsDiffusionPipelining
. -
Remove now-obsolete
Ouroboros.Consensus.Util.TentativeState
module. -
Added the
eraGenesisWin
toEraParams
and adapted serialisation for backwards-compatibility. Also added corresponding support to the HFC interpreter. -
Implemented a first version of the GDD (Genesis Density Disconnect) governor. (disabled by default)
-
Refactored ChainSync client argument passing.
-
Introduced new
ChainOrder
(withpreferCandidate
) class forSelectView
s, and add necessary instances. AdaptedpreferAnchoredCandidate
to usepreferCandidate
instead of relying onpreferAnchoredFragment
. -
Tweak the ChainDB arguments:
- Remove unused fields in
CDB
:cdbTraceLedger
this was always set to nullTracer, furthermore it would trace the whole LedgerDB.cdbChunkInfo
was never accessed from the ChainDB.cdbCheckIntegrity
was never accessed from the ChainDB.
- Transform
ChainDbArgs
into an isomorphic product of the different arguments of the inner databases. - Define most common operations on
ChainDbArgs
as separate functions:ensureValidateAll
,updateTracer
andupdateDiskPolicyArgs
- Remove unused fields in
-
Tweak the LgrDB arguments:
LgrDB.cfg
andLgrDbArgs.lgrConfig
are nowLedgerDbCfg (ExtLedgerState blk)
instead ofTopLevelConfig blk
.defaultArgs
no longer expects a filesystem.
-
Tweak the ImmutableDB arguments:
defaultArgs
no longer expects a filesystem.
-
Tweak the VolatileDB arguments:
defaultArgs
no longer expects a filesystem.
-
Hide the
Identity
/Defaults
types inOuroboros.Consensus.Util.Args
in favor ofComplete
/Incomplete
. -
Expose
noDefault
to replaceNoDefault
. -
New
TranslateProto
class moved fromouroboros-consensus-protocol
. -
Renamed
QueryLedger
class toBlockSupportsLedgerQuery
. -
StreamAPI
was moved to the newOuroboros.Consensus.Storage.ImmutableDB.Stream
module.- A
StreamAPI
now can stream specific block components. NextBlock
was renamed toNextItem
.
- A
-
Removed unused
Ouroboros.Consensus.Util.TraceSize
. -
Removed unused
assertEqWithMessage
function. -
Mempool.removeTxs
now expects aNonEmpty (GenTxId blk)
as an argument. -
VolatileDB traces were tweaked
VolatileDB.OpenedVolatileDB
trace message now includes the maximum slot seen.- Added
VolatileDB.ClosedDB
.
-
Deleted
Ouroboros.Consensus.Util.Some
in favour ofOuroboros.Network.Protocol.LocalStateQuery.Codec.Some
.
- Implement lightweight checkpointing #449.
A validation to help nodes follow the historical chain. A new field
topLevelConfigCheckpoints
has been added to theTopLevelConfig
record, with a new typeCheckpointsMap
. - LoP: run the ChainSync client against a leaky bucket
- Add
ConvertRawTxId
and require it forSingleEraBlock
.
- Integrate with network-packages and io-sim 1.4.1 packages
- Bump dependencies version bounds
-
cdbDiskPolicy :: DiskPolicy
forChainDbArgs
is replaced bycdbDiskPolicyArgs :: DiskPolicyArgs
-
similarly,
lgrDiskPolicy :: DiskPolicy
forLgrDbArgs
is replaced bylgrDiskPolicyArgs :: DiskPolicyArgs
-
defaultDiskPolicy
is renamed tomkDiskPolicy
and requiresDiskPolicyArgs
instead of aSnapshotInterval
-
Mempool API: generalize types of
addTxs
andaddLocalTxs
to anyTraversable
. -
Added
cdbsHasFSGsmDB
to the ChainDB args, for the GSM's persistent marker file. -
Added arguments to
bracketChainSyncClient
andChainSync.DynamicEnv
for tracking idling peers. -
Added arguments to
readFetchModeDefault
for sensitivity to the GSM state: when using bootstrap peers, simply mimic the GSM state. Otherwise, fall back to the legacy logic.
- Updated to GHC 9.8.1.
- Updated
ouroboros-network-protocols
0.6 -> 0.7.
- Update dependency on
nothunks
to^>=0.1.5
.
-
Added a new
InFutureCheck
to the ChainSync client, which requires additional arguments to the 'chainSyncClient' definition. The node no longer propagates headers/blocks from the future: a ChainSync client thread now sleeps until the received header is no longer from the future. -
Bundled up the arguments to the ChainSync client into new record types,
ConfigEnv
andDynamicEnv
. -
Also introduced a
SomeHeaderInFutureCheck
that binds the existential type variables separately from the actual payload of theHeaderInFutureCheck
record type. -
Bump
strict-checked-vars
to^>= 0.2
. Normal-formStrictTVar
s are refactored and moved to their own modules. Normal-formStrictTVar
s andStrictMVar
s are exported by theIOLike
module. -
Removed
EraNodeToNodeVersion
, replacing it withWrapNodeToNodeVersion
. -
Mempool: add reason for transaction removal to
TraceMempoolRemoveTxs
. This can be used in the node to enrich the trace output.
-
New internal testing module.
-
Update to
io-sim 1.3.1.0
. -
Update index-state for
ouroboros-network 0.10.1.0
andouroboros-network-api 0.6.1.0
.
- ChainSync client: remove redundant
DoesntFit
exception
- Update to
vector ^>=0.13
- Replace all occurrences of
Ticked (LedgerView X)
withLedgerView X
.
-
Added
ChainGenerators
. SeecheckAdversarialChain
andcheckHonestChain
for the invariants these generators ensure. -
Add
castRealPoint
utility function. -
Export
HardForkSelectView
fromOuroboros.Consensus.HardFork.Combinator.Protocol
(and hence, also fromOuroboros.Consensus.HardFork.Combinator
).
-
Remove
Ticked
from the return type offorecastFor
. -
Remove
Ticked (LedgerView X)
data family instances. -
Remove
Ticked (K a x)
data family instance. -
Remove
WrapTickedLedgerView
. -
Rename
tickedLedgerView
field ofTickedExtLedgerState
toledgerView
. -
Rename
NewTipInfo
(contained in the trace constructorsAddedToCurrentChain
/SwitchedToAFork
) toSelectionChangedInfo
, and add theSelectView
s of the old and the new tip. Concrete motivation is that these contain the tie-breaker VRF which is very useful to have at hand in various cases. -
Renamed
TriggerHardForkNever
toTriggerHardForkNotDuringThisExecution
.
- Refactorings in unstable test libraries.
-
Use
ouroboros-network-0.9.0.0
. -
Use
io-classes-1.2
andstrict-checked-vars-0.1.0.3
. -
Use
strict-checked-vars-0.1.0.4
.
- Add
StrictMVar
s with defaultNoThunks
invariantsOuroboros.Consensus.Util.NormalForm.StrictMVar
.
-
Removed the orphaned
NoThunk
instance forTime
defined insi-timers
package. -
Replace
StrictSVar
s byStrictMVar
s where possible.
- Removed the
expose-sublibs
cabal flag, since Cabal/Nix handled it poorly. - Instead, added a
unstable-
prefix to the name of each sublibrary, to strongly indicate that we ignore them when evolving the package's version.
- Update
fs-api
dependency to^>=0.2
-
Add new
mempool-test-utils
public library containing utilities for opening a mocked mempool. -
Add
ProtocolParams
data family toOuroboros.Consensus.Node.ProtocolInfo
. -
Add
PerEraProtocolParams
newtype toOuroboros.Consensus.HardFork.Combinator.AcrossEras
.
- Remove
groupOn
andgroupSplit
fromOuroboros.Consensus.Util
.
-
Change the behaviour of
addBlockRunner
so that it notifies all blocked threads if interrupted. -
Add
closeBlocksToAdd
function
-
Remove the
pInfoBlockForging
record field from theProtocolInfo
type. -
Remove
ProtocolInfo
monad parameter -
Change
AddBlockPromise
APIblockProcessed
now wraps the return value in a newProcessed
type. This is needed for improving the async exception safety.
-
Change
BlockToAdd
APIvarBlockProcessed
now wraps the return value in a newProcessed
type. This is needed for improving the async exception safety.
-
Don't depend on cardano-ledger-binary
-
Require
fs-sim >= 0.2
in test libraries.
-
Call
cryptoInit
indefaultMainWithTestEnv
-
Always force new value of StrictMVar before calling putTMVar in updateMVar
-
Fix the mempool benchmarks.
-
The
pure @(NonEmpty xs)
implementation was unlawful; this has been fixed by making it return ana
for everyxs
(similar toZipList
).
-
Remove
ConnectionId
Condense
instance. -
Rename the
StrictMVar
type toStrictSVar
. Rename related definitions and variables to mentionSVar
instead ofMVar
. Rename theStrictMVar
module toStrictSVar
. -
IOLike m
now requiresMonadCatch (STM m)
instead of justMonadThrow (STM m)
.
- Remove deprecated modules from
consensus-testlib
.Test.Util.Blob
Test.Util.Classify
Test.Util.FS.Sim.*
- Remove deprecated modules from the main
ouroboros-consensus
library.Ouroboros.Consensus.HardFork.Combinator.Util.*
Ouroboros.Consensus.Mempool.Impl
Ouroboros.Consensus.Mempool.TxLimits
Ouroboros.Consensus.Mempool.Impl.Pure
Ouroboros.Consensus.Mempool.Impl.Types
Ouroboros.Consensus.Storage.IO
Ouroboros.Consensus.Storage.FS.*
Ouroboros.Consensus.Storage.LedgerDB.InMemory
Ouroboros.Consensus.Storage.LedgerDB.OnDisk
Ouroboros.Consensus.Storage.LedgerDB.Types
Ouroboros.Consensus.Util.Counting
Ouroboros.Consensus.Util.OptNP
Ouroboros.Consensus.Util.SOP
- Remove deprecated definitions from non-deprecated modules in the main
ouroboros-consensus
library:Ouroboros.Consensus.Mempool.API
:MempoolCapacityBytes
,MempoolCapacityBytesOverride
,MempoolSize
,TraceEventMempool
,computeMempoolCapacity
.Ouroboros.Consensus.Storage.ChainDB.Impl.Types
:TraceLedgerEvent
.
- In the main
ouroboros-consensus
library, remove exports that were only there to make deprecated modules compile.Ouroboros.Consensus.Mempool.Update
:pureRemoveTxs
,pureSyncWithLedger
.Ouroboros.Consensus.Mempool.Impl.Common
:initInternalState
.
- Map unreleased
NodeToClientV_16
version.
- Renamed
TranslateForecast
toCrossEraForecaster
andtranslateLedgerView
tocrossEraForecast
.
-
Update
io-sim
dependency to 1.1.0.0. -
Update
ouroboros-network
dependency.
- Remove function
tryAddTxs
from the mempool API. The implementation (Shelly Era) of this function relied on the fairness of 'service-in-random-order', and endeavoured to maximally fill the mempool. Since the Babbage Era there is an increased variation in representational size of transactions for a given cost of processing. This means that, under certain conditions, representationally large transactions could be stalled in progress between mempools. This function was replaced byaddTx
. - Add a
addTx
function to the mempool API. This function tries to add a single transaction and blocks if the mempool can not accept the given transaction. This means that entry to a mempool is now a (per-peer) FIFO. This also ensure that transactions will always progress, irrespective of size. The refactoring introduces two FIFO queues. Remote clients have to queue in both of them, whereas local clients only have to queue in the local clients' queue. This gives local clients a higher precedence to get into their local mempool under heavy load situations.
- Apply new organization of Consensus packages. Absorb the testing packages and tutorials.
-
ouroboros-consensus
andouroboros-consensus-diffusion
: Since the filesystem API that lives inouroboros-consensus
will live in thefs-api
package for now on, start depending onfs-api
, and change imports accordingly. -
Collapse all imports into one group in every file.
-
Adapt to relocation of SOP-related
Util
modules.
-
Move
Util
modules that are related only to SOP toData.SOP
. Deprecate the following modules:Ouroboros.Consensus.HardFork.Combinator.Util.DerivingVia
->Ouroboros.Consensus.HardFork.Lifting
Ouroboros.Consensus.HardFork.Combinator.Util.Functors
->Data.SOP.Functors
Ouroboros.Consensus.HardFork.Combinator.Util.InPairs
->Data.SOP.InPairs
Ouroboros.Consensus.HardFork.Combinator.Util.Match
->Data.SOP.Match
Ouroboros.Consensus.HardFork.Combinator.Util.Telescope
->Data.SOP.Telescope
Ouroboros.Consensus.Util.Counting
->Data.SOP.Counting
Ouroboros.Consensus.Util.OptNP
->Data.SOP.OptNP
Ouroboros.Consensus.Util.SOP
-> split intoData.SOP.Index
,Data.SOP.Lenses
,Data.SOP.NonEmpty
and some functions moved toData.SOP.Strict
ouroboros-consensus
: Move the filesystem API that lives underOuroboros.Consensus.Storage.FS
andOuroboros.Consensus.Storage.IO
to a new package calledfs-api
. The original modules become deprecated.
-
Add
mkCapacityBytesOverride
, a convenience function to create an override for the mempool capacity using the provided number bytes. -
Fix version bounds for the bundle.
-
Deprecate the
Test.Util.Classify
module fromouroboros-consensus-test
in favour of theTest.StateMachine.Labelling
module fromquickcheck-state-machine
.
Ouroboros.Consensus.Storage.LedgerDB.*
andOuroboros.Consensus.Mempool.*
modules now have deprecation warnings for the previously exposed API to ease updates downstream. Old modules have deprecation headers and also every function and type exposed is now an alias to the right entity coupled together with a deprecation warning.
- Exposed the
Pushing
newtype wrappers for the tracing of theLedgerDB
-
Reorganized
Ouroboros.Consensus.Storage.LedgerDB.*
modules. Old modules have a deprecation warning for downstream users but otherwise they still export the same functionality. -
Added
NodeToClientV_15
, to support theConway
era. -
Reorganization on the
Mempool
modules. Stub deprecated modules are in place which should ensure that no code breaks downstream just yet. Clients should directly importOuroboros.Consensus.Mempool
.
-
Remove redundant proxy argument for
ledgerDbTip
. -
Removed the
idx
type variable on theMempool
andMempoolSnapshot
datatypes in favour of usingTicketNo
always. -
Ouroboros.Consensus.Node
andOuroboros.Consensus.Network
hierarchies of modules where moved fromouroboros-consensus
toouroboros-consensus-diffusion
package.
- Version bump on ledger-agnostic packages to move in lockstep.
Before following a more structured release process, we tracked most significant changes affecting downstream users in the interface-CHANGELOG.md.