I’m pleased to announce the release of KIMAP2 0.1.0.
KIMAP2 is a KJob based IMAP protocol implementation.
KIMAP2 received a variety of improvements since it’s KIMAP times, among others:
- A vastly reduced dependency chain as we no longer depend on KIO. KIMAP2 depends only on Qt, KF5CoreAddons, KF5Codecs, KF5Mime and the cyrus SASL library.
- A completely overhauled parser. The old parser performed poorly in situations where data arrived faster at the socket than we could process it, resulting in a lot of time wasted memcpying buffers around and an unbounded memory usage. To fix this a dedicated thread was used for every socket, resulting in a lot of additional complexity and threading issues. The new parser uses a ringbuffer with fixed memory usage and doesn’t require any extra threads, allowing the socket to fill up if the application can’t process fast enough, and thus keeping the server from sending more data eventually.
It also minimizes memcopies and other parsing overhead, so the cost of parsing is roughly reading the data once.
- Minor API improvements for the fetch and list jobs.
- Various fixes for the login process.
- No more KI18N dependencies. KIMAP2 is a protocol implementation and doesn’t require translations.
For more information please refer to the README.
While KIMAP2 the successor of KIMAP, KIMAP will stick around for the time being for kdepim.
KIMAP and KIMAP2 are completely coinstallable: library names, namespaces, envirionment variables etc. have all been adjusted accordingly.
KIMAP2 is actively used in sink and is fully functional, but we do not yet guarantee API or ABI stability (this will mark the 1.0 release).
If you need API stability rather sooner than later, please do get in touch with me.