v4 is the async/await framework release where we circle back experience from building libraries for p2p networking, standards-compliant websockets, REST and JSON-RPC and of course a bunch of applications using these libraries into the core infrastructure layer, providing a stable base to continue building on.
Features:
See the porting guides for porting code from earlier chronos releases (as well as asyncdispatch)
See also the release candidate post for more background.
multithreading
the focus of this release has been on security, stability and feature completeness, mainly because we haven't yet reached the point where http performance is an actual bottleneck anywhere (ie when we benchmark whole-application performance, it's not the http part that stands out, but that's tightly related to the kind of processing out applications do) - ie it's by no means slow, but I have no doubt there are faster alternatives out there that target specific benchmarks. ymmv with the kind of workload you put on it - happy to hear back on this front if you find some particular weaknesses.
There are some loose plans to look more into multithreading for 5.0, ie a multithreaded connection delegator, that kind of stuff but ..
Is this designed to work well with ARC/ORC?
ORC has not yet been released at a quality level that is compatible with our needs - we keep an eye on it and as mentioned elsewhere, the chronos core is cycle-free meaning it's at least theoretically can work with ARC, so when ORC reaches the point of usability, we'll be in a good spot.
That said, I suspect proper support is a chronos 5.0 concern when a newer Nim is out and to fully take advantage of ORC most nim code "out there" will need a thorough review (much like when r-value references hit C++11) even if it seems to work passably today.
ORC has not yet been released at a quality level that is compatible with our needs - we keep an eye on it and as mentioned elsewhere, the chronos core is cycle-free meaning it's at least theoretically can work with ARC, so when ORC reaches the point of usability, we'll be in a good spot.
I can specify here a bit.
From my recent testing with orc and arc, you won't get any memory leaks under ORC, but you will get memory leaks under ARC - so says address sanitizer (that's the most recent issue I opened on chronos).
I therefore assume there's cycles somewhere since the cycle collector of ORC is the only meaningful difference I could think of, but can't really tell where - The stacktraces I left in the issue weren't particularly enlightening either.