From: Jeff Bonyun (jeff_at_[hidden])
Date: 2019-05-22 15:47:10


I've implemented a multithreaded update to iostreams' lzma filter for my
own purposes, and I was wondering if this change would be considered for
including in Boost.iostreams?

It uses liblzma's own multithreaded functions, so the changes to boost
are actually pretty minimal. It does add a new member to the
boost-provided lzma options struct -- to specify your desired number of
threads -- which changes how people might use the constructor for the
filter.

My two biggest concerns with including it in Boost.iostreams are:
 Â  - Making the filter constructor backwards compatible. Right now,
users can initialize the options struct with a single unbraced int when
calling the filter constructor. With the change to the struct, I want to
make sure this old way still works. I.e. not requiring a braced
initializer list if you only want to provide the compression level.
 Â  - Handling older versions of liblzma that didn't offer
multithreading. I'll work on identifying the exact versions needed, and
branching on their #defined version numbers.

If there is appetite for it, I can make a pull request on github.

As this would be my first submission to boost, I'm sure I'll screw
something up and need correcting, so be patient.

Jeff