This Month in Forest - June 2026 #7246
LesnyRumcajs
announced in
Announcements 📢
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This Month in Forest 🌲
Welcome to the June edition of This Month in Forest! We've been mostly busy with performance and stability work, and we have fantastic charts to show for it. Let's dive in.
Highlights
New releases
A couple of releases in the past month, make sure to upgrade to latest:
(v0.33.5 "Drift" was yanked — don't use it.)
RPC Performance improvements
In the past few months we focused heavily on making Forest's Ethereum-compatible JSON-RPC faster up to its limits (and beyond). The results are in. The following charts show the latency of RPC calls from Chain.Love, running Forest in production alongside Lotus.
Forest delivers faster average response times and a substantial reduction in worst-case latency (P95 and P99). The slow outliers that most affect reliability are now far less common, giving users a more consistent and predictable experience. Median response P50 is slightly better.
And resource usage didn't go up to pay for it:
Want to see Forest in action? Check out the RPC performance Grafana dashboard.
Is our job over here? Not at all. There are still some methods that need our love, and we are working on them.
Snapshot export comparison
As part of our performance work, we compared snapshot exports between Forest and Lotus. On a regular machine, Forest finishes the export substantially faster.
ProPGF Round 3
Do you use Forest? Endorse us here! We've applied for the ProPGF Round 3 grant, fingers crossed!
Development
Random improvements and fixes
Ethereum RPC: correctness and performance
The bulk of June's engineering effort was on the Ethereum-compatible JSON-RPC. On the performance side:
trace_blocknow caches results; JWT authentication is paid once per connection rather than per request; hot chain-state reads use lock-freeArcSwap(more) to cut p50 contention; and heavy FVM execution is dispatched to a dedicated blocking thread pool, pulling down p95 and p99.On the correctness side:
eth_callandeth_estimateGasare no longer blocked on the epoch after an expensive migration — matching Lotus, no more unnecessary recomputation; andFilecoin.StateCirculatingSupplynow accounts for the datacap actor and stops erroring on mainnet.New RPC methods and parity:
Filecoin.MpoolGetConfigis now implemented (with aPercenttype matching Lotus), andFilecoin.StateGetNetworkParamsincludes the NV29 placeholder.State-manager and message-pool restructuring
Continuing from May's restructuring, three concrete mempool fixes landed: a confirmed transaction no longer holds up the sender's next one; the next-block selection step only simulates the head change instead of removing real pending transactions; and Forest now accepts the same per-sender pending-transaction limit as Lotus.
Chain-store and storage
EC finality is now integrated into the chain follower, the follower cleans up dangling forks, the validated block cache is bounded, and leftover temporary chain data is cleared on startup.
Stability and diagnostics
The big one: a critical memory leak in the
quick_cachecrate Forest depends on was tracked down and fixed — the fix contributed back upstream. Other wins: internal P2P-layer maps shrink properly on entry removal, cache size metrics are now accurate, and ajemalloc-profilingfeature makes heap diagnostics easier in production. New size metrics for the chain follower, mempool, and zstd frame cache give operators much better visibility into node memory usage. Andforest-wallet --encrypt falsefinally does what it says, even when an encrypted keystore already exists.Operator-facing improvements
The
forest-explorerfaucet now offers an RPC provider selector — Glif, Ankr, or Filfox — so users can switch if one is slow or unavailable.See the CHANGELOG for the full list of client-facing changes; the commit history has the rest. 🤓
Upcoming work
Our immediate focus:
And then, of course, we will continue with our regular maintenance and improvements.
Outside of Forest
quick_cacheA critical memory leak Forest tracked down landed upstream, now benefiting every project using the crate.
Individual reports
@akaladarshi
Highlights
Full list of authored pull requests and filed issues, June 2026.
@hanabi1224
Highlights
quick_cachecaching library (#7143), with the fix contributed back upstream.ArcSwap(#7191, #7213), improving p50 RPC latency by reducing contention across concurrent requests.Bug fixes
pendingblock tag (#7165), improving correctness for Ethereum-compatible tooling.Filecoin.StateCirculatingSupplyreturning an error on mainnet by correctly accounting for the datacap actor (#7217).Performance improvements
Tooling & observability
jemalloc-profilingfeature and a convenience task for heap profiling (#7146, #7153), making it easier to diagnose memory issues in production.Full list of authored pull requests, June 2026.
@LesnyRumcajs
Highlights
Forest's JSON-RPC got noticeably faster this month. Led the team-wide effort: most of June's engineering went into the Ethereum-style API for the providers that depend on it. Spent a significant amount of time analysing production RPC traffic to pinpoint Forest's actual bottlenecks, then decomposed the work so the team could attack them in parallel. The month's improvements shipped to operators in Forest v0.33.7 "Shimmergloom" and previous releases. Forest went from usually slower to consistently faster. See the charts above.
Direct contributions on the performance side included
trace_blockcaching, JWT authentication once per connection, an opt-out for RPC metrics with reduced lock contention, and an in-flight RPC metric for live diagnostics.Built out the performance measurement platform, in collaboration with ChainLove. Continued work on the RPC traffic analytics tooling started last month, so Forest's performance decisions are grounded in real production call patterns rather than guesses. Worked directly with ChainLove on the measurement approach and validation of the results — the partnership has been central to deciding what to optimise.
Analysed security reports and cross-implementation discrepancies. Alongside the performance push, spent meaningful time working through security reports and tracking down behavioural differences between Forest and Lotus — converting findings into actionable work for the team.
Coordination
Full list of authored pull requests, June 2026.
@sudo-shashank
Highlights
Filecoin.MpoolGetConfigis now supported. Added theFilecoin.MpoolGetConfigRPC method, letting clients read the node's current message-pool settings, with a parity test confirming the response matches Lotus. As part of this, thereplace-by-feeratio is now represented using a Lotus-compatiblePercenttype (125 = 1.25×), so the value is reported in the same format Lotus uses (#7141).Filecoin.StateGetNetworkParamsnow includes anUpgradeXxHeightplaceholder for the upcoming NV29 upgrade, matching Lotus (#7194, ports lotus#13640, #7192).eth_callandeth_estimateGasare no longer blocked on the epoch immediately after a migration, only on the migration epoch itself — matching Lotus and avoiding unnecessary state recomputation (#7128, ports lotus#13644, #7192).TCP_NODELAYon incoming RPC connections, matching Go-based nodes like Lotus — so small request/response payloads are sent immediately instead of being buffered (#7187).forest-walletso--encrypt falsecorrectly uses the unencrypted keystore even when an encrypted keystore already exists (#7211).FOREST_ETH_RPC_COMPUTE_STATE_ON_INDEX_MISStest workaround, expandedEthGetBlockReceiptscoverage toSafeandFinalizedblock tags, and refreshed the affected ETH and Filecoin RPC snapshots (#7154).--reweightoption for fairer comparisons when two captures saw different RPC traffic mixes (analytics#1, #3, #8).api.node.glif.io), which the Glif maintainer fixed. As a follow-up, added an RPC provider selector across all faucet pages — Glif, Ankr, and Filfox — so users can switch providers if one is slow or unavailable (forest-explorer#460).cargo denyadvisories failure in Forest (#7225) and kept forest-explorer's dependencies patched via triaged Dependabot patch-version and worker-group updates (forest-explorer#456, forest-explorer#457, forest-explorer#458).Full list of authored pull requests, June 2026.
Beta Was this translation helpful? Give feedback.
All reactions