The .lzma format is too primitive. It doesn't have an integrity check like CRC32 and it has no magic bytes to make it easy to detect the file type. The .xz format doesn't have these problems. There are some additional features like support for multiple filters (algorithms), filter chaining (like piping on the command line), and limited random-access reading. The .xz format also makes it easier to write multithreaded encoder and decoder.
Development version of GNU Automake already supports the .xz format in form of dist-xz rule. I have understood that the dist-lzma rule will go away. So it is likely that the GNU packages currently distributed as .lzma will move to .xz.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I wanted to know why their are a new xz format when big projects like GNU just started to switch to lzma?
The .lzma format is too primitive. It doesn't have an integrity check like CRC32 and it has no magic bytes to make it easy to detect the file type. The .xz format doesn't have these problems. There are some additional features like support for multiple filters (algorithms), filter chaining (like piping on the command line), and limited random-access reading. The .xz format also makes it easier to write multithreaded encoder and decoder.
Development version of GNU Automake already supports the .xz format in form of dist-xz rule. I have understood that the dist-lzma rule will go away. So it is likely that the GNU packages currently distributed as .lzma will move to .xz.
Ah, thx