add Haskell Benchmark (customSmallerIsBetter) benchmark result for 6db35d0206e37a62c485ffedcaac1b76bd24bb3c
Apr 18, 10-11 AM (1)
Apr 18, 11-12 PM (6)
Apr 18, 12-1 PM (7)
Apr 18, 1-2 PM (8)
Apr 18, 2-3 PM (9)
Apr 18, 3-4 PM (0)
Apr 18, 4-5 PM (2)
Apr 18, 5-6 PM (6)
Apr 18, 6-7 PM (2)
Apr 18, 7-8 PM (2)
Apr 18, 8-9 PM (4)
Apr 18, 9-10 PM (9)
Apr 18, 10-11 PM (21)
Apr 18, 11-12 AM (23)
Apr 19, 12-1 AM (1)
Apr 19, 1-2 AM (4)
Apr 19, 2-3 AM (1)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (3)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (2)
Apr 19, 8-9 AM (1)
Apr 19, 9-10 AM (1)
Apr 19, 10-11 AM (4)
Apr 19, 11-12 PM (7)
Apr 19, 12-1 PM (6)
Apr 19, 1-2 PM (8)
Apr 19, 2-3 PM (23)
Apr 19, 3-4 PM (7)
Apr 19, 4-5 PM (4)
Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (8)
Apr 20, 6-7 AM (12)
Apr 20, 7-8 AM (29)
Apr 20, 8-9 AM (42)
Apr 20, 9-10 AM (37)
Apr 20, 10-11 AM (95)
Apr 20, 11-12 PM (42)
Apr 20, 12-1 PM (39)
Apr 20, 1-2 PM (53)
Apr 20, 2-3 PM (68)
Apr 20, 3-4 PM (47)
Apr 20, 4-5 PM (41)
Apr 20, 5-6 PM (31)
Apr 20, 6-7 PM (24)
Apr 20, 7-8 PM (10)
Apr 20, 8-9 PM (7)
Apr 20, 9-10 PM (16)
Apr 20, 10-11 PM (28)
Apr 20, 11-12 AM (18)
Apr 21, 12-1 AM (24)
Apr 21, 1-2 AM (5)
Apr 21, 2-3 AM (13)
Apr 21, 3-4 AM (4)
Apr 21, 4-5 AM (3)
Apr 21, 5-6 AM (8)
Apr 21, 6-7 AM (15)
Apr 21, 7-8 AM (44)
Apr 21, 8-9 AM (119)
Apr 21, 9-10 AM (36)
Apr 21, 10-11 AM (35)
Apr 21, 11-12 PM (98)
Apr 21, 12-1 PM (57)
Apr 21, 1-2 PM (71)
Apr 21, 2-3 PM (60)
Apr 21, 3-4 PM (33)
Apr 21, 4-5 PM (31)
Apr 21, 5-6 PM (27)
Apr 21, 6-7 PM (38)
Apr 21, 7-8 PM (35)
Apr 21, 8-9 PM (37)
Apr 21, 9-10 PM (14)
Apr 21, 10-11 PM (34)
Apr 21, 11-12 AM (12)
Apr 22, 12-1 AM (2)
Apr 22, 1-2 AM (3)
Apr 22, 2-3 AM (3)
Apr 22, 3-4 AM (4)
Apr 22, 4-5 AM (3)
Apr 22, 5-6 AM (17)
Apr 22, 6-7 AM (34)
Apr 22, 7-8 AM (21)
Apr 22, 8-9 AM (37)
Apr 22, 9-10 AM (18)
Apr 22, 10-11 AM (47)
Apr 22, 11-12 PM (45)
Apr 22, 12-1 PM (56)
Apr 22, 1-2 PM (64)
Apr 22, 2-3 PM (44)
Apr 22, 3-4 PM (86)
Apr 22, 4-5 PM (46)
Apr 22, 5-6 PM (17)
Apr 22, 6-7 PM (10)
Apr 22, 7-8 PM (18)
Apr 22, 8-9 PM (15)
Apr 22, 9-10 PM (23)
Apr 22, 10-11 PM (31)
Apr 22, 11-12 AM (17)
Apr 23, 12-1 AM (7)
Apr 23, 1-2 AM (4)
Apr 23, 2-3 AM (4)
Apr 23, 3-4 AM (6)
Apr 23, 4-5 AM (3)
Apr 23, 5-6 AM (8)
Apr 23, 6-7 AM (17)
Apr 23, 7-8 AM (26)
Apr 23, 8-9 AM (33)
Apr 23, 9-10 AM (33)
Apr 23, 10-11 AM (29)
Apr 23, 11-12 PM (30)
Apr 23, 12-1 PM (51)
Apr 23, 1-2 PM (69)
Apr 23, 2-3 PM (65)
Apr 23, 3-4 PM (26)
Apr 23, 4-5 PM (21)
Apr 23, 5-6 PM (7)
Apr 23, 6-7 PM (7)
Apr 23, 7-8 PM (11)
Apr 23, 8-9 PM (14)
Apr 23, 9-10 PM (6)
Apr 23, 10-11 PM (28)
Apr 23, 11-12 AM (18)
Apr 24, 12-1 AM (7)
Apr 24, 1-2 AM (4)
Apr 24, 2-3 AM (7)
Apr 24, 3-4 AM (5)
Apr 24, 4-5 AM (8)
Apr 24, 5-6 AM (13)
Apr 24, 6-7 AM (12)
Apr 24, 7-8 AM (33)
Apr 24, 8-9 AM (40)
Apr 24, 9-10 AM (41)
Apr 24, 10-11 AM (71)
Apr 24, 11-12 PM (57)
Apr 24, 12-1 PM (37)
Apr 24, 1-2 PM (53)
Apr 24, 2-3 PM (34)
Apr 24, 3-4 PM (19)
Apr 24, 4-5 PM (16)
Apr 24, 5-6 PM (38)
Apr 24, 6-7 PM (25)
Apr 24, 7-8 PM (10)
Apr 24, 8-9 PM (41)
Apr 24, 9-10 PM (17)
Apr 24, 10-11 PM (30)
Apr 24, 11-12 AM (16)
Apr 25, 12-1 AM (8)
Apr 25, 1-2 AM (1)
Apr 25, 2-3 AM (10)
Apr 25, 3-4 AM (5)
Apr 25, 4-5 AM (3)
Apr 25, 5-6 AM (13)
Apr 25, 6-7 AM (1)
Apr 25, 7-8 AM (4)
Apr 25, 8-9 AM (22)
Apr 25, 9-10 AM (17)
Apr 25, 10-11 AM (0)
3,669 commits this week
Apr 18, 2026
-
Apr 25, 2026
Merge pull request #5757 from IntersectMBO/5664-check-if-any-of-the-pre-conway-transactions-contain-padded-ip-addresses
Remove `allowLeftOver` flag from `binaryGetDecoder` and simplify IP address decoders
refactor: remove SealedTx cardano-api surface
docs: plan for finishing SealedTx cardano-api decommission
Enumerates every remaining caller of the deprecated surface after
#5271: production (Cardano.Wallet.hs, Server.hs), old tx builder
(Shelley/Transaction.hs, partially overlaps with #5243), integration
tests (Shared/Transactions.hs, addRequiredSigners in TransactionsNew)
and unit tests (TransactionSpec, TransactionLedgerSpec).
Organises the work into three phases:
A. reachable without #5243 (4 sites)
B. unit-test migration (~20 sites, two files)
C. delete the bridge functions and the three Cardano.Api*
imports in SealedTx.hs
refactor: migrate buildAndSignTransactionPure to ledger-native seal
The signedTx wrapping in Cardano.Wallet went through toCardanoApiTx -> inAnyCardanoEra -> sealedTxFromCardano purely to smuggle the already-ledger tx back through cardano-api. Use the existing ledger-native sealWriteTx from Transaction.Ledger instead (now exported). Drops the two cardano-api bridges inAnyCardanoEra and sealedTxFromCardano from this module. Also refresh the sealWriteTx haddock (the function has been ledger- native since the last revamp; the stale comment claimed otherwise).
refactor: port metadata extraction in Shared/Transactions to ledger-native
Mirror the TransactionsNew.hs:getMetadataFromTx port: project metadata directly from Read.Tx era via Meta.getMetadata . Meta.getEraMetadata instead of round-tripping through cardano-api. Drops the two callers of cardanoTxIdeallyNoLaterThan in this file and the Cardano.Api / ApiEra qualified imports.
refactor: drop dead cardano-api body in addRequiredSigners
The function has been an ADP-3077 TODO stub (error "...") for a long time; the commented-out cardano-api body still referenced getSealedTxBody and sealedTxFromCardanoBody, which blocks their removal. Drop the dead block and note that a future implementation should operate on Read.Tx era via reqSignerHashesTxBodyL.
refactor: drop local sealWriteTx cardano-api bridge in Server.hs
Server.hs carried a local copy of sealWriteTx that re-entered cardano-api (toCardanoApiTx + sealedTxFromCardano) to wrap an already ledger-native balanceTx result. Import the ledger-native sealWriteTx from Transaction.Ledger instead; the local helper goes away. Two call sites now pass Write.recentEra explicitly. Drops the cardano-api bridges cardanoEraFromRecentEra, toCardanoApiTx and W.sealedTxFromCardano from this module's imports.
refactor: migrate _postSealedTx to ledger-native GenTx via EraValue Read.Tx
Replace the cardano-api path (SealedTx → unsealShelleyTx → TxInMode → toConsensusGenTx → GenTx) with a direct ledger-native path (SealedTx → unsafeReadTx :: EraValue Read.Tx → consensusGenTxFromTxRecent → GenTx). The stored 'EraValue Read.Tx' already knows its era, so the separate 'readCurrentEra' query is no longer needed, and 'TxInMode' / 'toConsensusGenTx' / 'unsealShelleyTx' / 'UnsealException' all become unused. Deletes: - Cardano.Wallet.Primitive.Ledger.Shelley.unsealShelleyTx - Cardano.Wallet.Primitive.Ledger.Shelley.UnsealException - cardano-api 'TxInMode' import in primitive - cardano-api 'toConsensusGenTx' import in network-layer Adds 'unsafeReadTx' to the re-export of 'SealedTx' in Cardano.Wallet.Primitive.Types.Tx. Step 1 of SealedTx decommission plan. One fewer caller of 'cardanoTxIdeallyNoLaterThan'; the submission path no longer touches cardano-api.
feat: add sealedTxWitnessCount (ledger-native) and migrate Server.hs
Introduce sealedTxWitnessCount :: SealedTx -> Int, counting VKey plus bootstrap witnesses via 'addrTxWitsL'/'bootAddrTxWitsL' on the stored 'EraValue Read.Tx'. Byron txs counted as 0 (wallet doesn't construct them through SealedTx). Migrate Server.hs's two 'length $ getSealedTxWitnesses sealedTx' sites (redeemer and witness accounting) to use it. Drops 'getSealedTxWitnesses' from Server.hs's import list. Step 2b of SealedTx decommission plan.
feat: port getMetadataFromTx in TransactionsNew to ledger-native
Replace cardano-api round-trip with direct Read.Tx era projection via Meta.getMetadata . Meta.getEraMetadata. Drops the four callers of cardanoTxIdeallyNoLaterThan in this file (the cardano-api re-decode was only used to feed getTxBody/txMetadata). No behavioural change: the ledger metadata path is what Server.hs and DB.TransactionInfo already use.
refactor: delete cardanoTxInExactEra (no remaining callers)
Following the migration of parsePartialTx to deserializeTx, cardanoTxInExactEra has no external callers. Remove it along with the now-redundant Data.Data import in SealedTx.hs.
refactor: use ledger-native deserialisation in parsePartialTx
Replace cardanoTxInExactEra (cardano-api path) with deserializeTx (ledger-native) in the redeemer-bearing partial tx parser. Pattern-matches on RecentEra era so the era singleton witnesses the target ledger type. One fewer caller of cardano-api's 'deserialiseFromCBOR / InAnyCardanoEra Cardano.Tx' path. 'fromCardanoApiTx' → direct use of 'Read.Tx era' unwrapped into 'Write.Tx era'.
feat: add sealedTxFromLedgerTx and migrate sealWriteTx off cardano-api
Introduce sealedTxFromLedgerTx :: Read.IsEra era => Read.Tx era -> SealedTx. Serialises via Read.serializeTx (ledger-native) and wraps in EraValue without any cardano-api involvement. Migrate sealWriteTx in Transaction.Ledger.hs to use the new constructor, pattern-matching on RecentEra to witness the era. Removes the toCardanoApiTx -> sealedTxFromCardano' roundtrip, dropping the Cardano.Api.Extra import from that module. Step 2a of SealedTx decommission plan.
docs: plan for decommissioning SealedTx cardano-api surface
Five-step plan to remove the three remaining Cardano.Api imports from lib/primitive/lib/Cardano/Wallet/Primitive/Types/Tx/SealedTx.hs by eliminating the bridge functions (cardanoTxIdeallyNoLaterThan, cardanoTxInExactEra, sealedTxFromCardano*, getSealedTxBody, getSealedTxWitnesses, cardanoApiTxToReadTx).
refactor(test): compare SealedTx by raw CBOR bytes in TransactionLedgerSpec
Replace compareOnCBOR's roundtrip through cardano-api (cardanoTx → Cardano.serialiseToCBOR) with the raw bytes already stored in SealedTx.serialisedTx. Identical comparison outcome, one fewer caller of cardanoTxIdeallyNoLaterThan. Step 1 of SealedTx decommission plan.
fix: adapt singleton network conversion
docs: plan for finishing SealedTx cardano-api decommission
Enumerates every remaining caller of the deprecated surface after
#5271: production (Cardano.Wallet.hs, Server.hs), old tx builder
(Shelley/Transaction.hs, partially overlaps with #5243), integration
tests (Shared/Transactions.hs, addRequiredSigners in TransactionsNew)
and unit tests (TransactionSpec, TransactionLedgerSpec).
Organises the work into three phases:
A. reachable without #5243 (4 sites)
B. unit-test migration (~20 sites, two files)
C. delete the bridge functions and the three Cardano.Api*
imports in SealedTx.hs
refactor: drop dead cardano-api body in addRequiredSigners
The function has been an ADP-3077 TODO stub (error "...") for a long time; the commented-out cardano-api body still referenced getSealedTxBody and sealedTxFromCardanoBody, which blocks their removal. Drop the dead block and note that a future implementation should operate on Read.Tx era via reqSignerHashesTxBodyL.
refactor: drop local sealWriteTx cardano-api bridge in Server.hs
Server.hs carried a local copy of sealWriteTx that re-entered cardano-api (toCardanoApiTx + sealedTxFromCardano) to wrap an already ledger-native balanceTx result. Import the ledger-native sealWriteTx from Transaction.Ledger instead; the local helper goes away. Two call sites now pass Write.recentEra explicitly. Drops the cardano-api bridges cardanoEraFromRecentEra, toCardanoApiTx and W.sealedTxFromCardano from this module's imports.
refactor: port metadata extraction in Shared/Transactions to ledger-native
Mirror the TransactionsNew.hs:getMetadataFromTx port: project metadata directly from Read.Tx era via Meta.getMetadata . Meta.getEraMetadata instead of round-tripping through cardano-api. Drops the two callers of cardanoTxIdeallyNoLaterThan in this file and the Cardano.Api / ApiEra qualified imports.
refactor: migrate buildAndSignTransactionPure to ledger-native seal
The signedTx wrapping in Cardano.Wallet went through toCardanoApiTx -> inAnyCardanoEra -> sealedTxFromCardano purely to smuggle the already-ledger tx back through cardano-api. Use the existing ledger-native sealWriteTx from Transaction.Ledger instead (now exported). Drops the two cardano-api bridges inAnyCardanoEra and sealedTxFromCardano from this module. Also refresh the sealWriteTx haddock (the function has been ledger- native since the last revamp; the stale comment claimed otherwise).
refactor: delete cardanoTxInExactEra (no remaining callers)
Following the migration of parsePartialTx to deserializeTx, cardanoTxInExactEra has no external callers. Remove it along with the now-redundant Data.Data import in SealedTx.hs.
feat: add sealedTxFromLedgerTx and migrate sealWriteTx off cardano-api
Introduce sealedTxFromLedgerTx :: Read.IsEra era => Read.Tx era -> SealedTx. Serialises via Read.serializeTx (ledger-native) and wraps in EraValue without any cardano-api involvement. Migrate sealWriteTx in Transaction.Ledger.hs to use the new constructor, pattern-matching on RecentEra to witness the era. Removes the toCardanoApiTx -> sealedTxFromCardano' roundtrip, dropping the Cardano.Api.Extra import from that module. Step 2a of SealedTx decommission plan.
feat: add sealedTxWitnessCount (ledger-native) and migrate Server.hs
Introduce sealedTxWitnessCount :: SealedTx -> Int, counting VKey plus bootstrap witnesses via 'addrTxWitsL'/'bootAddrTxWitsL' on the stored 'EraValue Read.Tx'. Byron txs counted as 0 (wallet doesn't construct them through SealedTx). Migrate Server.hs's two 'length $ getSealedTxWitnesses sealedTx' sites (redeemer and witness accounting) to use it. Drops 'getSealedTxWitnesses' from Server.hs's import list. Step 2b of SealedTx decommission plan.