Merged
Conversation
* Fix XDC flaky reward test with correct signature for transaction * Add Retry to LockFairnessTest * fix GetMemoryOwner for managed dbs + refactors * whitespace * Decrease Retain_Some_PersistedNodes threshold to resolve flakiness * fix review * tiny refactor * Parallelize Trie.Tests * Parallelize Nethermind.Blockchain.Test * Revert FilterManagerTests parall
Co-authored-by: rubo <rubo@users.noreply.github.com>
* Fix XDC flaky reward test with correct signature for transaction * Add Retry to LockFairnessTest * fix GetMemoryOwner for managed dbs + refactors * whitespace * Decrease Retain_Some_PersistedNodes threshold to resolve flakiness * fix review * tiny refactor * Parallelize Trie.Tests * Parallelize Nethermind.Blockchain.Test * Revert FilterManagerTests parall * parallelize some TxPool tests * Try parallelize more tests * make TxPool tests more parallelizable * revert * fix * fix issues in Nethermind.Blockchain.Test * more fixes * more fixes * FilterManagerTests nonparallelizable * fix * fix flaky test * fix shutter test * Add retry to Fuzz_accounts_with_storage * retry flaky test * add [NonParallelizable]
add custom state sync allocation strategy for xdc
* processing stats extensibility * improvement * build fix * fix
* fix: correct Bytes.BytesComparer length comparison ordering The BytesComparer had inverted length comparison logic: - null was considered greater than non-null (should be less) - shorter arrays with same prefix were considered greater than longer arrays (should be less) Fixed by inverting the return values for length-related comparisons: - null < non-null - [] < [x, ...] (empty < non-empty) - [prefix] < [prefix, more] (shorter with same prefix < longer) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Switched to sequence compare to * Address comment * fix: handle null y in BytesComparer when x is non-null Null arrays implicitly convert to empty ReadOnlySpan<byte> in SequenceCompareTo, losing the null vs empty distinction. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Use CodeInfo type instead of ICodeInfo Replace the ICodeInfo abstraction with a concrete CodeInfo type and adapt related APIs and implementations. CodeInfo was extended to carry precompile info, provide Code/CodeSpan, Version, IsPrecompile/IsEmpty semantics and background analysis. EofCodeInfo now derives from CodeInfo and provides EOF-specific data and versioning. PrecompileInfo was removed and precompiles are represented as CodeInfo (wrapping CachedPrecompile when needed). API changes: ICodeInfoRepository, IOverridableCodeInfoRepository and IPrecompileProvider signatures and caches now use CodeInfo; CodeInfoFactory and CodeLruCache updated accordingly. Call sites across the VM, instruction implementations, tracers, transaction processing, repositories and tests were updated to use CodeInfo directly and to perform EOF checks using 'is EofCodeInfo' where appropriate. JumpDestinationAnalyzer.MachineCode was made accessible for CodeInfo.Code. Overall this unifies EOF and precompile handling under a single CodeInfo model and simplifies caching and execution logic. * Feedback
* Add CI workflow for Surge integration tests and update workflow for Taiko * Update CI workflow to reference the correct surge configuration file * Update CI workflows to increase timeout for integration tests and adjust repository references * Resolve comments
remove broken Parallelizable Co-authored-by: Lukasz Rozmej <lukasz.rozmej@gmail.com>
* Add JitAsm tool to be able to analyse the Jit output * Spelling * Address AGENTS.md LINQ guideline feedback on JitAsm PR (#10433) * Initial plan * Strengthen AGENTS.md LINQ guideline with explicit examples Co-authored-by: benaadams <1142958+benaadams@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: benaadams <1142958+benaadams@users.noreply.github.com> * Spell * feedback * Feedback * Improve initialization --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: benaadams <1142958+benaadams@users.noreply.github.com>
* Update README with performance highlights of Nethermind Revised description to emphasize performance metrics. * Update README.md Co-authored-by: Lukasz Rozmej <lukasz.rozmej@gmail.com> * Update README.md Co-authored-by: Ruben Buniatyan <rubo@users.noreply.github.com> * Update README with image sources and badges * Add 'srcset' to cspell.json dictionary * Remove cspell directives from README Removed cspell directives from README.md. --------- Co-authored-by: Lukasz Rozmej <lukasz.rozmej@gmail.com> Co-authored-by: Ruben Buniatyan <rubo@users.noreply.github.com>
Co-authored-by: rubo <rubo@users.noreply.github.com>
Co-authored-by: emlautarom1 <emlautarom1@users.noreply.github.com>
- PeerManagerTests: Increase After timeout from 1000ms to 3000ms in Will_not_stop_trying_on_rlpx_connection_failure to prevent false failures on loaded CI runners - SyncServerTests: Use Interlocked.Increment in Broadcast_NewBlock_on_arrival_to_sqrt_of_peers to fix race condition where concurrent SyncPeerMock background threads could lose count increments - Rename _travisDelay fields to _delay, _delayLong, _delayLonger Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Metrics and BlockStatistics extension * extensibility fixes
* more Agents changes avoid var, use testcases * Revise testing guidelines and LINQ usage recommendations Updated guidelines for adding tests and using LINQ.
refactoring & codeinfo changes
…ssor` (#10462) * fix: add missing yield break after shutdown response * Add test * ensure pipereader is completed on shutdown early-exit * cover pipereader completion when shutdown is requested --------- Co-authored-by: Lukasz Rozmej <lukasz.rozmej@gmail.com>
#10468) * Update Rlp.cs * Add regression test for Rlp.Encode<T> with Rlp input --------- Co-authored-by: Ben {chmark} Adams <thundercat@illyriad.co.uk>
* Add SeqlockCache and use for Accounts and Values * Add tests * Spelling * By in * Feedback * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix * Feedback * Change to 2 way cache * 2-way skew-associative * Add prefetch for way 1 and hash-bit alternating eviction Prefetch way 1's cache line while checking way 0 to hide L2/L3 latency in the skew layout where ways are ~1MB apart. Use a hash bit to alternate eviction when both ways are live instead of always evicting way 0 — measured identical hit rates with zero extra memory. * Add Volatile.Read/Write for _hashes in BlockhashProvider Ensures cross-thread visibility of the prefetched hashes array on ARM's weak memory model. On x86 (TSO) these are no-ops. * Convert NodeStorageCache and PreBlockCaches.RlpCache to SeqlockCache * Inline Address comparison in StorageCell.Equals for SeqlockCache hot path Seal Address class and inline 20-byte comparison (Vector128 + uint) directly in StorageCell.Equals to eliminate Address.Equals calls that the JIT refuses to inline in deep chains. Adds ReferenceEquals fast-path. * Outline cold paths in SeqlockCache and fix IsPersisted delegate allocation Extract GetOrAddMiss as NoInlining to keep GetOrAdd hit path lean (2122 -> 748 bytes). Change WriteEntry to NoInlining and collapse eviction tree to single call site. Reuse cached _tryLoadRlp delegate in PreCachedTrieStore.IsPersisted. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ck re-encode (#10435) * Add encoded-tx root calc and trie decode perf Allow computing the transactions trie root directly from RLP-encoded transactions and update callers to use it. ExecutionPayload.TryGetBlock now passes the encoded Transactions to TxTrie.CalculateRoot. Implement TxTrie.CalculateRoot(ReadOnlySpan<byte[]>) and InitializeFromEncodedTransactions to populate the trie from encoded payloads and compute RootHash; use a TrackingCappedArrayPool and UpdateRootHash. Add a unit test to assert encoded and decoded transaction paths produce the same root. Also refine trie node RLP encoding parallelization: UseParallel now checks the node's non-null child count (only parallelize when >= 4 children and multiple CPU cores) to avoid parallel overhead on small branches. * Fast block re-encode * Feedback
Update .NET packages
…10476) * Move tx block-format wrapping logic from BlockDecoder to TxDecoder Extract the legacy-vs-typed tx wrapping knowledge into static helpers on TxDecoder (GetBlockFormatLength, WriteBlockFormat) so BlockDecoder no longer directly checks TxType.Legacy for encoding decisions. * Feedback
Co-authored-by: rubo <rubo@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes Closes Resolves #
Please choose one of the keywords above to refer to the issue this PR solves followed by the issue number (e.g. Fixes #000). If no issue number, remove the line. Also, remove everything marked optional that is not applicable. Remove this note after reading.
Changes
Types of changes
What types of changes does your code introduce?
Testing
Requires testing
If yes, did you write tests?
Notes on testing
Optional. Remove if not applicable.
Documentation
Requires documentation update
If yes, link the PR to the docs update or the issue with the details labeled
docs. Remove if not applicable.Requires explanation in Release Notes
If yes, fill in the details here. Remove if not applicable.
Remarks
Optional. Remove if not applicable.