Changes 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. Revision history for Compression-Util
  2. 0.13 2024-08-25
  3. [IMPROVEMENTS]
  4. - More Gzip flags are now recognized.
  5. - Better compression ratio in bzip2_compress().
  6. [BUG-FIXES]
  7. - Fixed the extraction of Gzip data that contains a comment.
  8. - Fixed a potential CRC32 issue in bzip2_compress() when data gets expanded.
  9. 0.12 2024-08-23
  10. [ADDITIONS]
  11. - Added the `lz4_compress()` and `lz4_decompress()` functions.
  12. [IMPROVEMENTS]
  13. - Slightly better performance in `mtf_encode()`.
  14. - Replaced all "die" statements, with Carp::confess(), for better debugging.
  15. [BUG-FIXES]
  16. - Allow `$LZ77_MIN_LEN` to be set by the user to a value greater than 4, before calling `gzip_compress()`.
  17. 0.11 2024-08-22
  18. [ADDITIONS]
  19. - Added the `crc32()` function.
  20. - Added the `int2bytes()` and `int2bytes_lsb()` functions.
  21. - Added the `bzip2_compress()` and `bzip2_decompress()` functions.
  22. - Added the `gzip_compress()` and `gzip_decompress()` functions.
  23. - Added the `encode_alphabet_256()` and `decode_alphabet_256()` functions.
  24. [IMPROVEMENTS]
  25. - Minor documentation improvements.
  26. - Slightly more efficient encoding of the alphabet, in function `encode_alphabet()`.
  27. [CHANGES]
  28. - Changed the default value of `$Compression::Util::LZ_MAX_LEN` from 258 to 32768. For some inputs, this results in better compression at no additional costs.
  29. 0.10 2024-08-07
  30. [ADDITIONS]
  31. - Added the `mrl_compress()` and `mrl_decompress()` functions, for compressing/decompressing strings.
  32. - Added the `bytes2int()` and `bytes2int_lsb()` functions.
  33. [CHANGES]
  34. - Changed the order of values returned by `lz77_encode()`.
  35. - Changed the order of arguments accepted by `lz77_decode()`.
  36. [FIXES]
  37. - Fixed an issue in `lzb_decompress($fh)`, when there is more data after the LZB block.
  38. 0.09 2024-06-26
  39. - Generalized `make_deflate_tables()` to generate tables for arbitrarily large distances and match lengths.
  40. - Generalized `deflate_encode()` to encode arbitrarily large distances and arbitrarily large match lengths.
  41. - Better compression ratio when `$LZ_MAX_DIST` is set to a small value.
  42. - Minor documentation and performance improvements.
  43. 0.08 2024-06-03
  44. [ADDITIONS]
  45. - Added the `lzb_compress()` and `lzb_decompress()` functions.
  46. - Added the `lzss_encode_symbolic()` and `lzss_decode_symbolic()` functions.
  47. - Added the `lzss_compress_symbolic()` and `lzss_decompress_symbolic()` functions.
  48. - Added the `$LZ_MAX_DIST` variable, which controls the maximum backreference allowed in LZ parsing.
  49. [IMPROVEMENTS]
  50. - Better compression ratio in `lz77_compress()`.
  51. [CHANGES]
  52. - Renamed `bz2_compress` and `bz2_decompress` to `bwt_compress` and `bwt_decompress`, respectively.
  53. - Renamed `$LZSS_MIN_LEN` to `$LZ_MIN_LEN`.
  54. - Renamed `$LZSS_MAX_LEN` to `$LZ_MAX_LEN`.
  55. - Removed the `$LZ77_MIN_LEN` and `$LZ77_MAX_LEN` variables. Using `$LZ_MIN_LEN` and `$LZ_MAX_LEN` instead.
  56. 0.07 2024-05-12
  57. - Use the value of `$LZ_MAX_CHAIN_LEN` in `lz77_encode_symbolic()` as well.
  58. - Added the following package variables:
  59. $Compression::Util::LZSS_MIN_LEN
  60. $Compression::Util::LZSS_MAX_LEN
  61. $Compression::Util::LZ77_MIN_LEN
  62. $Compression::Util::LZ77_MAX_LEN
  63. ...which control the minimum and maximum lenght of a match in LZSS/lZ77 encoding.
  64. - Added support for exporting package variables with `use Compression::Util qw($PACKAGE_VARIABLE)`.
  65. 0.06 2024-05-05
  66. [ADDITIONS]
  67. - Added the lzss_encode_fast() function.
  68. - Added the lz77_compress_symbolic() and lz77_decompress_symbolic() functions.
  69. [IMPROVEMENTS]
  70. - Much faster algorithm in lzss_encode() for large enough strings.
  71. - Much better compression ratios achived by lzss_encode().
  72. - Extended lzss_compress() to accept an additional optional argument, specifying the LZSS encoding method.
  73. [CHANGES]
  74. - Removed the lzhd_compress() and lzhd_decompress() functions.
  75. - Renamed the mrl_compress() and mrl_decompress() to mrl_compress_symbolic() and mrl_decompress_symbolic(), respectively.
  76. - Simplified all functions to no longer take an optional output filehandle.
  77. [BUG-FIXES]
  78. - The output of delta_encode() is now always deterministic.
  79. 0.05 2024-04-13
  80. [ADDITIONS]
  81. - Added the mrl_compress() and mrl_decompress() functions.
  82. - Added the read_bit_lsb(), read_bits_lsb(), int2bits(), int2bits_lsb(), bits2int() and bits2int_lsb() functions.
  83. - Added the read_null_terminated() function.
  84. - Added the string2symbols() and symbols2string() functions.
  85. [IMPROVEMENTS]
  86. - Extended `huffman_from_*` to check the context and return only the encoding dictionary in scalar context.
  87. [CHANGES]
  88. - Simplified `lzss_encode()` for better performance, with a minimal impact on compression ratio.
  89. [BUG-FIXES]
  90. - Fixed several special cases and added more tests.
  91. 0.04 2024-04-06
  92. [ADDITIONS]
  93. - Added the deltas() and its inverse, accumulate(), functions.
  94. - Added the frequencies() function.
  95. - Added the huffman_from_symbols() function.
  96. - Added the huffman_from_code_lengths() function.
  97. [CHANGES]
  98. - Simplified deflate_encode() to always return a binary string (no longer writes to a file-handle).
  99. - Improved the delta_encode() function to also use RLE when it's beneficial.
  100. - Renamed huffman_tree_from_freq() to huffman_from_freq().
  101. 0.03 2024-03-22
  102. [ADDITIONS]
  103. - Added the lzhd_compress() and lzhd_decompress() functions.
  104. - Added the obh_encode() and obh_decode() functions.
  105. [CHANGES]
  106. - Simplified deflate_encode() to no longer require the size of the uncompressed data.
  107. 0.02 2024-03-21
  108. [ADDITIONS]
  109. - Added the run_length() function.
  110. - Added the binary_vrl_encode() and binary_vrl_decode() functions.
  111. - Added the elias_gamma_encode() and elias_gamma_decode() functions.
  112. - Added the adaptive_ac_encode() and adaptive_ac_decode() functions.
  113. - Added the create_adaptive_ac_entry() and decode_adaptive_ac_entry() functions.
  114. [CHANGES]
  115. - Renamed mtf_encode_alphabet() to encode_alphabet().
  116. - Renamed mtf_decode_alphabet() to decode_alphabet().
  117. 0.01 2024-03-21
  118. - Initial release.