New Release: c-lightning 0.9.1Speedups, improvements to MPP, and a new multifundchannel plugin
The c-lightning team is pleased to announce the v0.9.1 release of c-lightning. This release builds on the infrastructure work in our last release, by 15 contributors from all over the world (including three first-time contributors) and comprising 391 commits.
Some of the biggest changes coming with this release:Across-the-board speedups Multi-part payment fixes and refinements New multifundchannel plugin
Details of these updates are provided below.1.1 Speedups Everywhere
We had a bug report that listpays was slow and started digging. Creating a node with 50,000 payments listpays took over 50 seconds! By revisiting some unpolished corners of our JSON code, we have reduced that to 1.5 seconds.
This inspired Christian to optimize our JSON-reading code which reads blocks from bitcoind; this is particularly important if a node has been offline for a long time. After a week of downtime, digesting those 2000 blocks would take 16 minutes. The problem here is that the block is a single, two-megabyte JSON string, and as bitcoind sends a little more, lightningd would repeatedly try to parse the JSON only to realize the string was unfinished. After some simple optimizations, this is now down to 6 minutes; that’s up from 2.1 to 5.4 blocks per second.1.2 Multi-Part Payments Enhanced
Back in version 0.8.0 last year, c-lightning started accepting multi-part payments, but only started sending them in version 0.9.0 (the previous release). Our implementation is fairly ambitious: it will preemptively split large payments where possible. This turned out to be too aggressive with large payments, and there were also issues with combining route hints in invoices and multi-part payments and other bugs which made payments less reliable than they could be. These are all fixed, and like all things which simply work the first time, you shou...