fbpx
Wikipedia

LZFSE

LZFSE (Lempel–Ziv Finite State Entropy) is an open source lossless data compression algorithm created by Apple Inc. It was released with a simpler algorithm called LZVN.[2]

LZFSE
Developer(s)Apple
Initial release2015
Stable release
lzfse-1.0 / 8 May 2017; 6 years ago (2017-05-08)
Repositorylzfse on GitHub
Written inC
Operating systemmacOS, iOS, Linux[1]
Available inC
TypeData compression
License3-clause New BSD License

Overview edit

The name is an acronym for Lempel–Ziv and finite-state entropy[3] (implementation of asymmetric numeral systems). LZFSE was introduced by Apple at its Worldwide Developer Conference 2015. It shipped with that year's iOS 9 and OS X 10.11 releases.

Apple claims that LZFSE compresses with a ratio comparable to that of zlib (DEFLATE) and decompresses two to three times faster while using fewer resources, therefore offering higher energy efficiency than zlib. It was aimed for scenarios where decompression speed and rate should be prioritised equally.[3] Part of this energy efficiency was achieved by optimising the algorithm for modern micro-architectures, specifically focusing on arm64.[4] Third-party benchmarking confirms that LZFSE decompresses faster than zlib, but also suggests that many other modern compression algorithms may have more favorable compression algorithm performance characteristics such as density, compression speed and decompression speed by a significant margin.[5]

According to the Squash Benchmark, LZFSE is similar in speed to zstd (level 6), but has a slightly worse ratio. LZVN is similar in speed to LZ4 level 4, with a slightly worse ratio as well.[6] Neither LZFSE nor LZVN is tunable at runtime, although a few constants can be tweaked at compile time for the usual speed-ratio trade-off.[7]

Implementation edit

A reference C library written by Eric Bainville was made available under the 3-clause BSD License after WWDC 2016. It includes an executable to compress and decompress LZFSE streams as well. There are no plans to expose an LZVN API.[1]

Apple's LZFSE implementation uses a simpler algorithm called LZVN when the input is smaller than LZFSE_ENCODE_LZVN_THRESHOLD (4096 bytes). This is a LZSS-type algorithm without entropy encoding but with three widths of REP (L,M,D) packets. In the open source reference implementation, Apple explains that LZFSE does not perform as well for small sizes, so LZVN is used instead.[7] This algorithm in libfastCompression.a was discovered earlier as the default kernelcache compression method in Mac OS X Yosemite Developer Preview 1 (2014), replacing the legacy lzss compression from Haruhiko Okumura.[8]

Usage edit

AppleFSCompression.framework (AFSC), the mechanism for quasi-transparent compression in HFS Plus and Apple File System, supports LZFSE and LZVN since OS X 10.9.

Apple's Disk Images framework has offered an LZFSE-based encoding called ULFO since Mac OS X 10.11,[9] accessible via hdiutil(1)[10] and some third-party image utilities.

Apple introduced the Apple Archive format and its associated API in macOS High Sierra in 2017.[11] The extension name is .aar (since macOS Big Sur, used to be .yaa). Encryption was introduced in macOS Monterey, when AA became the default Archive Utility format. Three command-line utilities are available in macOS to handle AA files.[12][13] Of third-party programs, Keka is able to use the system APIs to handle AA files, but no independent implementations exist on other systems.[14]

See also edit

References edit

  1. ^ a b Bainville, Eric (2016-06-07). "LZFSE compression library and command line tool". GitHub. Retrieved 2016-07-04.
  2. ^ Apple Inc. "Data Compression - Compression | Apple Developer Documentation". developer.apple.com. Retrieved 2017-04-07.
  3. ^ a b De Simone, Sergio. "Apple Open-Sources its New Compression Algorithm LZFSE". infoq. Retrieved 2016-07-07.
  4. ^ Apple Inc. (2015-06-12). "Low Energy, High Performance: Compression and Accelerate – WWDC 2015 – Apple Developer Videos". developer.apple.com. Retrieved 2017-03-05. pdf
  5. ^ "Compression Benchmark". Retrieved 2018-08-10.
  6. ^ "Squash Compression Benchmark". GitHub. Squash. Retrieved 25 December 2019.
  7. ^ a b "lzfse_tunables.h". GitHub. 18 December 2019. Retrieved 22 December 2019.
  8. ^ Piker-Alpha (4 June 2014). "OS X 10.10 Yosemite DP1 kernel(cache)". Pike's Universum. Retrieved 22 December 2019.
  9. ^ Tsai, Michael (2015-10-07). . Archived from the original on 2017-04-09. Retrieved 2022-04-15.
  10. ^ "hdiutil(1) mojave man page". Retrieved 2022-04-15.
  11. ^ "Apple Archive". Apple Developer Documentation.
  12. ^ "Inside Apple Archive: more than a compression format". The Eclectic Light Company. 10 May 2022.
  13. ^ "AA(1): Manipulate Apple Archives". keith.github.io.
  14. ^ "AppleArchive support · Issue #829 · aonez/Keka". GitHub.
  15. ^ "compression_algorithm". Apple Developer Documentation. Apple Inc. Retrieved 2019-08-11.

External links edit

  • lzfse on GitHub
  • Finite State Entropy by Yann Collet (Cyan4973), the source of the FSE implementation in LZFSE
  • Discussion on Encode.su, from which the maintainer Eric Bainville has taken suggestions

lzfse, lempel, finite, state, entropy, open, source, lossless, data, compression, algorithm, created, apple, released, with, simpler, algorithm, called, lzvn, developer, appleinitial, release2015stable, releaselzfse, 2017, years, 2017, repositorylzfse, githubw. LZFSE Lempel Ziv Finite State Entropy is an open source lossless data compression algorithm created by Apple Inc It was released with a simpler algorithm called LZVN 2 LZFSEDeveloper s AppleInitial release2015Stable releaselzfse 1 0 8 May 2017 6 years ago 2017 05 08 Repositorylzfse on GitHubWritten inCOperating systemmacOS iOS Linux 1 Available inCTypeData compressionLicense3 clause New BSD License Contents 1 Overview 2 Implementation 3 Usage 4 See also 5 References 6 External linksOverview editThe name is an acronym for Lempel Ziv and finite state entropy 3 implementation of asymmetric numeral systems LZFSE was introduced by Apple at its Worldwide Developer Conference 2015 It shipped with that year s iOS 9 and OS X 10 11 releases Apple claims that LZFSE compresses with a ratio comparable to that of zlib DEFLATE and decompresses two to three times faster while using fewer resources therefore offering higher energy efficiency than zlib It was aimed for scenarios where decompression speed and rate should be prioritised equally 3 Part of this energy efficiency was achieved by optimising the algorithm for modern micro architectures specifically focusing on arm64 4 Third party benchmarking confirms that LZFSE decompresses faster than zlib but also suggests that many other modern compression algorithms may have more favorable compression algorithm performance characteristics such as density compression speed and decompression speed by a significant margin 5 According to the Squash Benchmark LZFSE is similar in speed to zstd level 6 but has a slightly worse ratio LZVN is similar in speed to LZ4 level 4 with a slightly worse ratio as well 6 Neither LZFSE nor LZVN is tunable at runtime although a few constants can be tweaked at compile time for the usual speed ratio trade off 7 Implementation editA reference C library written by Eric Bainville was made available under the 3 clause BSD License after WWDC 2016 It includes an executable to compress and decompress LZFSE streams as well There are no plans to expose an LZVN API 1 Apple s LZFSE implementation uses a simpler algorithm called LZVN when the input is smaller than LZFSE ENCODE LZVN THRESHOLD 4096 bytes This is a LZSS type algorithm without entropy encoding but with three widths of REP L M D packets In the open source reference implementation Apple explains that LZFSE does not perform as well for small sizes so LZVN is used instead 7 This algorithm in libfastCompression a was discovered earlier as the default kernelcache compression method in Mac OS X Yosemite Developer Preview 1 2014 replacing the legacy lzss compression from Haruhiko Okumura 8 Usage editAppleFSCompression framework AFSC the mechanism for quasi transparent compression in HFS Plus and Apple File System supports LZFSE and LZVN since OS X 10 9 Apple s Disk Images framework has offered an LZFSE based encoding called ULFO since Mac OS X 10 11 9 accessible via hdiutil 1 10 and some third party image utilities Apple introduced the Apple Archive format and its associated API in macOS High Sierra in 2017 11 The extension name is aar since macOS Big Sur used to be yaa Encryption was introduced in macOS Monterey when AA became the default Archive Utility format Three command line utilities are available in macOS to handle AA files 12 13 Of third party programs Keka is able to use the system APIs to handle AA files but no independent implementations exist on other systems 14 See also editZstandard another combination of LZ77 and FSE by Yann Collet the FSE author LZ4 compression algorithm a fast member of the LZ77 family also available on Apple platforms 15 References edit a b Bainville Eric 2016 06 07 LZFSE compression library and command line tool GitHub Retrieved 2016 07 04 Apple Inc Data Compression Compression Apple Developer Documentation developer apple com Retrieved 2017 04 07 a b De Simone Sergio Apple Open Sources its New Compression Algorithm LZFSE infoq Retrieved 2016 07 07 Apple Inc 2015 06 12 Low Energy High Performance Compression and Accelerate WWDC 2015 Apple Developer Videos developer apple com Retrieved 2017 03 05 pdf Compression Benchmark Retrieved 2018 08 10 Squash Compression Benchmark GitHub Squash Retrieved 25 December 2019 a b lzfse tunables h GitHub 18 December 2019 Retrieved 22 December 2019 Piker Alpha 4 June 2014 OS X 10 10 Yosemite DP1 kernel cache Pike s Universum Retrieved 22 December 2019 Tsai Michael 2015 10 07 LZFSE Disk Images in El Capitan Archived from the original on 2017 04 09 Retrieved 2022 04 15 hdiutil 1 mojave man page Retrieved 2022 04 15 Apple Archive Apple Developer Documentation Inside Apple Archive more than a compression format The Eclectic Light Company 10 May 2022 AA 1 Manipulate Apple Archives keith github io AppleArchive support Issue 829 aonez Keka GitHub compression algorithm Apple Developer Documentation Apple Inc Retrieved 2019 08 11 External links editlzfse on GitHub Finite State Entropy by Yann Collet Cyan4973 the source of the FSE implementation in LZFSE Discussion on Encode su from which the maintainer Eric Bainville has taken suggestions Retrieved from https en wikipedia org w index php title LZFSE amp oldid 1185317652, 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.