Hello! I committed something. The liblzma part shouldn't need any big changes, I hope. There are a few FIXMEs but some of them might actually be fine as is. The xz side is just an initial commit, there isn't even --memlimit-threading option yet (I will add it).
Testing is welcome. It would be nice if someone who has 12-24 hardware threads could test if it scales well. One needs a file with like a hundred blocks, so with the default xz -6 that means a 2.5 gigabyte uncompressed file, smaller if one uses, for example, --block-size=8MiB when compressing. If the input is broken, it should produce as much output as the single-threaded stable version does. That is, if one thread detects an error, the data before that point is first flushed out before the error is reported. This has pros and cons. It would be easy to add a flag to allow switching to fast error reporting for applications that don't care about partial output from broken files. -- Lasse Collin