fbpx
Wikipedia

compress (software)

compress is a Unix shell compression program based on the LZW compression algorithm.[1] Compared to gzip's fastest setting, compress is slightly slower at compression, slightly faster at decompression, and has a significantly lower compression ratio.[2] 1.8 MiB of memory is used to compress the Hutter Prize data, slightly more than gzip's slowest setting.[3]

compress / uncompress
Original author(s)Spencer Thomas
Initial releaseFebruary 1985; 38 years ago (1985-02)
Operating systemUnix, Unix-like, IBM i
TypeCommand
compress .Z
Filename extension
.Z
Internet media type
application/x-compress
Developed bySpencer Thomas
Type of formatdata compression

The uncompress utility will restore files to their original state after they have been compressed using the compress utility. If no files are specified, the standard input will be uncompressed to the standard output.

In the upcoming POSIX and Single Unix Specification revision, it is planned that DEFLATE algorithm used in gzip format be supported in those utilities.[4]

Description of program edit

Files compressed by compress are typically given the extension ".Z" (modeled after the earlier pack program which used the extension ".z"). Most tar programs will pipe their data through compress when given the command line option "-Z". (The tar program in its own does not compress; it just stores multiple files within one tape archive.)

Files can be returned to their original state using uncompress. The usual action of uncompress is not merely to create an uncompressed copy of the file, but also to restore the timestamp and other attributes of the compressed file.

For files produced by compress on other systems, uncompress supports 9- to 16-bit compression.

History edit

The LZW algorithm used in compress was patented by Sperry Research Center in 1983. Terry Welch published an IEEE article on the algorithm in 1984,[5] but failed to note that he had applied for a patent on the algorithm. Spencer Thomas of the University of Utah took this article and implemented compress in 1984, without realizing that a patent was pending on the LZW algorithm. The GIF image format also incorporated LZW compression in this way, and Unisys later claimed royalties on implementations of GIF. Joseph M. Orost led the team and worked with Thomas et al. to create the 'final' (4.0) version of compress and published it as free software to the 'net.sources' USENET group in 1985. U.S. Patent 4,558,302 was granted in 1985, and this is why compress could not be used without paying royalties to Sperry Research, which was eventually merged into Unisys.

compress has fallen out of favor in particular user-groups because it makes use of the LZW algorithm, which was covered by a Unisys patent – because of this, gzip and bzip2 increased in popularity on Linux-based operating systems due to their alternative algorithms, along with better file compression. compress has, however, maintained a presence on Unix and BSD systems and the compress and uncompress commands have also been ported to the IBM i operating system.[6]

The US LZW patent expired in 2003, so it is now in the public domain in the United States. All patents on the LZW worldwide have also expired (see Graphics Interchange Format#Unisys and LZW patent enforcement).

In the up-coming POSIX and Single Unix Specification revision, it is planned that DEFLATE algorithm used in gzip format be supported in those utilities.

Special output format edit

Output binary consists of bit groups. Each bit group consists of codes with fixed amount of bits (9-16). Each group (except last) should be aligned by amount of bits multiplied by 8 and right padded with zeroes. Last group should be aligned by 8 and padded with zeroes. You can find more information in ncompress issue.

Example:

You want to output ten 9-bit codes, five 10-bit codes and thirteen 11-bit codes. You now have three groups of bits that you want to output: 90 bits, 50 bits and 143 bits.
  • First group should then be 90 bits of data + 54 zero bits of padding in order to be aligned to 72 bits (9 bits × 8).
  • Second group should then be 50 bits of data + 30 zero bits of padding in order to be aligned to 80 bits (10 bits × 8).
  • Third group should then be 143 bits of data + 1 zero bit of padding in order to be aligned to 8 bits (1 byte only, since this is the last group in the output).

It is actually a bug. LZW doesn't require any alignment. This bug is a part of original UNIX compress, ncompress, gzip and even windows port. It exists more than 35 years. All application/x-compress files were created using this bug. So we have to include it in output specification.

Some compress implementations write random bits from uninitialized buffer as alignment bits. There is no guarantee that alignment bits will be zeroes. So in terms of 100% compatibility decompressor have to just ignore alignment bit values.

Standardization and availability edit

compress was standardized in X/Open CAE Specification in 1994,[7] and further in The Open Group Base Specifications, Issue 6 and 7.[8] Linux Standard Base does not requires compress.[9]

compress is often not installed by default in Linux distributions, but can be installed from an additional package.[10] compress is available for FreeBSD, OpenBSD, MINIX, Solaris and AIX.

compress is allowed for Point-to-Point Protocol in RFC 1977 and for HTTP/1.1 in RFC 9110, though it is rarely used in modern deployments as the better deflate/gzip is available.

See also edit

References edit

  1. ^ Frysinger, Mike. "ncompress: a public domain project". Retrieved 2014-07-30. Compress is a fast, simple LZW file compressor. Compress does not have the highest compression rate, but it is one of the fastest programs to compress data. Compress is the de facto standard in the UNIX community for compressing files.
  2. ^ Gommans, Luc. "compression - What's the difference between gzip and compress?". Unix & Linux Stack Exchange.
  3. ^ "Large Text Compression Benchmark". mattmahoney.net. compress 4.3d....
  4. ^ "0001041: Encourage implementations to include better integrity checksum, compression and decompression utilities if possible". Austin Group Bug Tracker. Retrieved 2017-11-23.
  5. ^ Welch, Terry A. (1984). "A technique for high performance data compression" (PDF). IEEE Computer. 17 (6): 8–19. doi:10.1109/MC.1984.1659158. S2CID 2055321.
  6. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM. Retrieved 2020-09-05.
  7. ^ X/Open CAE Specification Commands and Utilities Issue 4, Version 2 (pdf), 1994, opengroup.org
  8. ^ compress – Shell and Utilities Reference, The Single UNIX Specification, Version 3 from The Open Group
  9. ^ Chapter 17. Commands and Utilities in Linux Standard Base Core Specification 5.0.0, linuxfoundation.org
  10. ^ ncompress, pkgs.org

External links edit

  • compress: compress data – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
  • compress(1) – Version 8 Unix Programmer's Manual
  • compress(1) – FreeBSD General Commands Manual
  • compress(1) – OpenBSD General Commands Manual
  • compress(1) – Solaris 11.4 User Commands Reference Manual
  • ncompress - public domain compress/uncompress implementation for POSIX systems
  • compress - original Unix compress (in a compress'd archive)
  • compress - original Unix compress executable (gzip'd)
  • Source Code for compress v4.0 (gzip'd sharchives)
  • ZIP File containing a Windows port of the compress utility
  • source code to the current version of fcompress.c from compress
  • bit groups alignment - Explanation of bit groups alignment.
  • lzws - New library and CLI, implemented without legacy code.
  • ruby-lzws - Ruby bindings with streaming support.
  • compress.com - official website for file compression.

compress, software, compress, redirects, here, cloth, used, medicine, compress, medical, other, uses, compression, disambiguation, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sou. compress redirects here For the cloth used in medicine see Compress medical For other uses see Compression disambiguation This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Compress software news newspapers books scholar JSTOR June 2012 Learn how and when to remove this template message compress is a Unix shell compression program based on the LZW compression algorithm 1 Compared to gzip s fastest setting compress is slightly slower at compression slightly faster at decompression and has a significantly lower compression ratio 2 1 8 MiB of memory is used to compress the Hutter Prize data slightly more than gzip s slowest setting 3 compress uncompressOriginal author s Spencer ThomasInitial releaseFebruary 1985 38 years ago 1985 02 Operating systemUnix Unix like IBM iTypeCommandcompress ZFilename extension ZInternet media typeapplication x compressDeveloped bySpencer ThomasType of formatdata compressionThe uncompress utility will restore files to their original state after they have been compressed using the compress utility If no files are specified the standard input will be uncompressed to the standard output In the upcoming POSIX and Single Unix Specification revision it is planned that DEFLATE algorithm used in gzip format be supported in those utilities 4 Contents 1 Description of program 2 History 3 Special output format 4 Standardization and availability 5 See also 6 References 7 External linksDescription of program editFiles compressed by compress are typically given the extension Z modeled after the earlier pack program which used the extension z Most tar programs will pipe their data through compress when given the command line option Z The tar program in its own does not compress it just stores multiple files within one tape archive Files can be returned to their original state using uncompress The usual action of uncompress is not merely to create an uncompressed copy of the file but also to restore the timestamp and other attributes of the compressed file For files produced by compress on other systems uncompress supports 9 to 16 bit compression History editThe LZW algorithm used in compress was patented by Sperry Research Center in 1983 Terry Welch published an IEEE article on the algorithm in 1984 5 but failed to note that he had applied for a patent on the algorithm Spencer Thomas of the University of Utah took this article and implemented compress in 1984 without realizing that a patent was pending on the LZW algorithm The GIF image format also incorporated LZW compression in this way and Unisys later claimed royalties on implementations of GIF Joseph M Orost led the team and worked with Thomas et al to create the final 4 0 version of compress and published it as free software to the net sources USENET group in 1985 U S Patent 4 558 302 was granted in 1985 and this is why compress could not be used without paying royalties to Sperry Research which was eventually merged into Unisys compress has fallen out of favor in particular user groups because it makes use of the LZW algorithm which was covered by a Unisys patent because of this gzip and bzip2 increased in popularity on Linux based operating systems due to their alternative algorithms along with better file compression compress has however maintained a presence on Unix and BSD systems and the compress and uncompress commands have also been ported to the IBM i operating system 6 The US LZW patent expired in 2003 so it is now in the public domain in the United States All patents on the LZW worldwide have also expired see Graphics Interchange Format Unisys and LZW patent enforcement In the up coming POSIX and Single Unix Specification revision it is planned that DEFLATE algorithm used in gzip format be supported in those utilities Special output format editOutput binary consists of bit groups Each bit group consists of codes with fixed amount of bits 9 16 Each group except last should be aligned by amount of bits multiplied by 8 and right padded with zeroes Last group should be aligned by 8 and padded with zeroes You can find more information in ncompress issue Example You want to output ten 9 bit codes five 10 bit codes and thirteen 11 bit codes You now have three groups of bits that you want to output 90 bits 50 bits and 143 bits First group should then be 90 bits of data 54 zero bits of padding in order to be aligned to 72 bits 9 bits 8 Second group should then be 50 bits of data 30 zero bits of padding in order to be aligned to 80 bits 10 bits 8 Third group should then be 143 bits of data 1 zero bit of padding in order to be aligned to 8 bits 1 byte only since this is the last group in the output It is actually a bug LZW doesn t require any alignment This bug is a part of original UNIX compress ncompress gzip and even windows port It exists more than 35 years All application x compress files were created using this bug So we have to include it in output specification Some compress implementations write random bits from uninitialized buffer as alignment bits There is no guarantee that alignment bits will be zeroes So in terms of 100 compatibility decompressor have to just ignore alignment bit values Standardization and availability editcompress was standardized in X Open CAE Specification in 1994 7 and further in The Open Group Base Specifications Issue 6 and 7 8 Linux Standard Base does not requires compress 9 compress is often not installed by default in Linux distributions but can be installed from an additional package 10 compress is available for FreeBSD OpenBSD MINIX Solaris and AIX compress is allowed for Point to Point Protocol in RFC 1977 and for HTTP 1 1 in RFC 9110 though it is rarely used in modern deployments as the better deflate gzip is available See also editData compression Image compression List of Unix commands gzipReferences edit Frysinger Mike ncompress a public domain project Retrieved 2014 07 30 Compress is a fast simple LZW file compressor Compress does not have the highest compression rate but it is one of the fastest programs to compress data Compress is the de facto standard in the UNIX community for compressing files Gommans Luc compression What s the difference between gzip and compress Unix amp Linux Stack Exchange Large Text Compression Benchmark mattmahoney net compress 4 3d 0001041 Encourage implementations to include better integrity checksum compression and decompression utilities if possible Austin Group Bug Tracker Retrieved 2017 11 23 Welch Terry A 1984 A technique for high performance data compression PDF IEEE Computer 17 6 8 19 doi 10 1109 MC 1984 1659158 S2CID 2055321 IBM IBM System i Version 7 2 Programming Qshell PDF IBM Retrieved 2020 09 05 X Open CAE Specification Commands and Utilities Issue 4 Version 2 pdf 1994 opengroup org compress Shell and Utilities Reference The Single UNIX Specification Version 3 from The Open Group Chapter 17 Commands and Utilities in Linux Standard Base Core Specification 5 0 0 linuxfoundation org ncompress pkgs orgExternal links editcompress compress data Shell and Utilities Reference The Single UNIX Specification Version 4 from The Open Group compress 1 Version 8 Unix Programmer s Manual compress 1 FreeBSD General Commands Manual compress 1 OpenBSD General Commands Manual compress 1 Solaris 11 4 User Commands Reference Manual ncompress public domain compress uncompress implementation for POSIX systems compress original Unix compress in a compress d archive compress original Unix compress executable gzip d Source Code for compress v4 0 gzip d sharchives ZIP File containing a Windows port of the compress utility source code to the current version of fcompress c from compress bit groups alignment Explanation of bit groups alignment lzws New library and CLI implemented without legacy code ruby lzws Ruby bindings with streaming support compress com official website for file compression Retrieved from https en wikipedia org w index php title Compress software amp oldid 1168093991, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.