• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1HISTORY of the LZMA SDK
2-----------------------
3
423.01          2023-06-20
5-------------------------
6- 7-Zip now can use new ARM64 filter for compression to 7z and xz archives.
7  ARM64 filter can increase compression ratio for data containing executable
8  files compiled for ARM64 (AArch64) architecture.
9  Also 7-Zip now parses executable files (that have exe and dll filename extensions)
10  before compressing, and it selects appropriate filter for each parsed file:
11    - BCJ or BCJ2 filter for x86 executable files,
12    - ARM64 filter for ARM64 executable files.
13  Previous versions by default used x86 filter BCJ or BCJ2 for all exe/dll files.
14- Default section size for BCJ2 filter was changed from 64 MiB to 240 MiB.
15  It can increase compression ratio for executable files larger than 64 MiB.
16- Some optimizations in filters code: BCJ, BCJ2, Swap* and opthers.
17- If 7-Zip uses BCJ2 filter for big datasets compressing, it can use additional temp
18  files in system's TEMP folder. 7-Zip uses temp file for additional compressed
19  data stream, if size of such compressed stream is larger than predefined limit:
20  16 MiB in 32-bit version, 4 GiB in 64-bit version.
21- When new 7-Zip creates multivolume archive, 7-Zip keeps in open state
22  only volumes that still can be changed. Previous versions kept all volumes
23  in open state until the end of the archive creation.
24- 7-Zip for Linux and macOS now can reduce the number of simultaneously open files,
25  when 7-Zip opens, extracts or creates multivolume archive. It allows to avoid
26  the failures for cases with big number of volumes, bacause there is a limitation
27  for number of open files allowed for a single program in Linux and macOS.
28- Some bugs were fixed.
29- Source code changes:
30- All external macros for compiling C/C++ code of 7-Zip now have Z7_ prefix.
31- 7-Zip COM interfaces now use new macros that allow to declare and implement COM interface.
32- The code has been modified to compile with the maximum diagnostic warning level:
33    -Wall in MSVC and -Weverything in CLANG.
34  And some warning types are disabled in 2 files:
35    - C/Compiler.h for C/C++ code warnings.
36    - CPP/Common/Common.h for C++ code warnings.
37- Linux/macOS versions of 7-Zip: IUnknown interface in new code doesn't use
38  virtual destructor that was used in previous 7-Zip and p7zip:
39     // virtual ~IUnknown() {}
40  So 7-Zip's dynamically linked shared libraries (codecs) are not compatible
41  between new 7-Zip for Linux/macOS and old 7-Zip (and p7zip).
42
43
4421.07          2021-12-26
45-------------------------
46- New switches: -spm and -im!{file_path} to exclude directories from processing
47    for specified paths that don't contain path separator character at the end of path.
48- The sorting order of files in archives was slightly changed to be more consistent
49  for cases where the name of some directory is the same as the prefix part of the name
50  of another directory or file.
51
52
5321.06          2021-11-24
54-------------------------
55- Bug in LZMA encoder in file LzmaEnc.c was fixed:
56  LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work incorrectly,
57    if size value for output buffer is smaller than size required for all compressed data.
58  LzmaEnc_Encode() could work incorrectly,
59    if callback ISeqOutStream::Write() doesn't write all compressed data.
60  NCompress::NLzma::CEncoder::Code() could work incorrectly,
61    if callback ISequentialOutStream::Write() returns error code.
62- Bug in versions 21.00-21.05 was fixed:
63  7-Zip didn't set attributes of directories during archive extracting.
64
65
6621.04 beta     2021-11-02
67-------------------------
68- 7-Zip now reduces the number of working CPU threads for compression,
69  if RAM size is not enough for compression with big LZMA2 dictionary.
70- 7-Zip now can create and check "file.sha256" text files that contain the list
71  of file names and SHA-256 checksums in format compatible with sha256sum program.
72
73
7421.03 beta     2021-07-20
75-------------------------
76- The maximum dictionary size for LZMA/LZMA2 compressing was increased to 4 GB (3840 MiB).
77- Minor speed optimizations in LZMA/LZMA2 compressing.
78
79
8021.02 alpha    2021-05-06
81-------------------------
82- The command line version of 7-Zip for macOS was released.
83- The speed for LZMA and LZMA2 decompression in arm64 versions for macOS and Linux
84  was increased by 20%-60%.
85
86
8721.01 alpha    2021-03-09
88-------------------------
89- The command line version of 7-Zip for Linux was released.
90- The improvements for speed of ARM64 version using hardware CPU instructions
91  for AES, CRC-32, SHA-1 and SHA-256.
92- Some bugs were fixed.
93
94
9520.02 alpha    2020-08-08
96-------------------------
97- The default number of LZMA2 chunks per solid block in 7z archive was increased to 64.
98  It allows to increase the compression speed for big 7z archives, if there is a big number
99  of CPU cores and threads.
100- The speed of PPMd compressing/decompressing was increased for 7z archives.
101- The new -ssp switch. If the switch -ssp is specified, 7-Zip doesn't allow the system
102  to modify "Last Access Time" property of source files for archiving and hashing operations.
103- Some bugs were fixed.
104
105
10620.00 alpha    2020-02-06
107-------------------------
108- 7-Zip now supports new optional match finders for LZMA/LZMA2 compression: bt5 and hc5,
109  that can work faster than bt4 and hc4 match finders for the data with big redundancy.
110- The compression ratio was improved for Fast and Fastest compression levels with the
111  following default settings:
112   - Fastest level (-mx1) : hc5 match finder with 256 KB dictionary.
113   - Fast    level (-mx3) : hc5 match finder with 4 MB dictionary.
114- Minor speed optimizations in multithreaded LZMA/LZMA2 compression for Normal/Maximum/Ultra
115  compression levels.
116
117
11819.00          2019-02-21
119-------------------------
120- Encryption strength for 7z archives was increased:
121  the size of random initialization vector was increased from 64-bit to 128-bit,
122  and the pseudo-random number generator was improved.
123- The bug in 7zIn.c code was fixed.
124
125
12618.06          2018-12-30
127-------------------------
128- The speed for LZMA/LZMA2 compressing was increased by 3-10%,
129  and there are minor changes in compression ratio.
130- Some bugs were fixed.
131- The bug in 7-Zip 18.02-18.05 was fixed:
132  There was memory leak in multithreading xz decoder - XzDecMt_Decode(),
133  if xz stream contains only one block.
134- The changes for MSVS compiler makefiles:
135   - the makefiles now use "PLATFORM" macroname with values (x64, x86, arm64)
136     instead of "CPU" macroname with values (AMD64, ARM64).
137   - the makefiles by default now use static version of the run-time library.
138
139
14018.05          2018-04-30
141-------------------------
142- The speed for LZMA/LZMA2 compressing was increased
143    by 8% for fastest/fast compression levels and
144    by 3% for normal/maximum compression levels.
145- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in
146  Windows 10 because of some BUG with "Large Pages" in Windows 10.
147  Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299).
148- The BUG was fixed in Lzma2Enc.c
149    Lzma2Enc_Encode2() function worked incorretly,
150      if (inStream == NULL) and the number of block threads is more than 1.
151
152
15318.03 beta     2018-03-04
154-------------------------
155- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm
156  for x64 with about 30% higher speed than main version of LZMA decoder written in C.
157- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%.
158- 7-Zip now can use multi-threading for 7z/LZMA2 decoding,
159  if there are multiple independent data chunks in LZMA2 stream.
160- 7-Zip now can use multi-threading for xz decoding,
161  if there are multiple blocks in xz stream.
162
163
16418.01          2019-01-28
165-------------------------
166- The BUG in 17.01 - 18.00 beta was fixed:
167  XzDec.c : random block unpacking and XzUnpacker_IsBlockFinished()
168  didn't work correctly for xz archives without checksum (CRC).
169
170
17118.00 beta     2019-01-10
172-------------------------
173- The BUG in xz encoder was fixed:
174  There was memory leak of 16 KB for each file compressed with
175  xz compression method, if additional filter was used.
176
177
17817.01 beta     2017-08-28
179-------------------------
180- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression.
181  7-Zip now uses additional memory buffers for multi-block LZMA2 compression.
182  CPU utilization was slightly improved.
183- 7-zip now creates multi-block xz archives by default. Block size can be
184  specified with -ms[Size]{m|g} switch.
185- xz decoder now can unpack random block from multi-block xz archives.
186- 7-Zip command line: @listfile now doesn't work after -- switch.
187  Use -i@listfile before -- switch instead.
188- The BUGs were fixed:
189  7-Zip 17.00 beta crashed for commands that write anti-item to 7z archive.
190
191
19217.00 beta     2017-04-29
193-------------------------
194- NewHandler.h / NewHandler.cpp:
195    now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900).
196- C/7zTypes.h : the names of variables in interface structures were changed (vt).
197- Some bugs were fixed. 7-Zip could crash in some cases.
198- Some internal changes in code.
199
200
20116.04          2016-10-04
202-------------------------
203- The bug was fixed in DllSecur.c.
204
205
20616.03          2016-09-28
207-------------------------
208- SFX modules now use some protection against DLL preloading attack.
209- Some bugs in 7z code were fixed.
210
211
21216.02          2016-05-21
213-------------------------
214- The BUG in 16.00 - 16.01 was fixed:
215  Split Handler (SplitHandler.cpp) returned incorrect
216  total size value (kpidSize) for split archives.
217
218
21916.01          2016-05-19
220-------------------------
221- Some internal changes to reduce the number of compiler warnings.
222
223
22416.00          2016-05-10
225-------------------------
226- Some bugs were fixed.
227
228
22915.12          2015-11-19
230-------------------------
231- The BUG in C version of 7z decoder was fixed:
232  7zDec.c : SzDecodeLzma2()
233  7z decoder could mistakenly report about decoding error for some 7z archives
234  that use LZMA2 compression method.
235  The probability to get that mistaken decoding error report was about
236  one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size).
237- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed:
238  7zArcIn.c : SzReadHeader2()
239  7z decoder worked incorrectly for 7z archives that contain
240  empty solid blocks, that can be placed to 7z archive, if some file is
241  unavailable for reading during archive creation.
242
243
24415.09 beta     2015-10-16
245-------------------------
246- The BUG in LZMA / LZMA2 encoding code was fixed.
247  The BUG in LzFind.c::MatchFinder_ReadBlock() function.
248  If input data size is larger than (4 GiB - dictionary_size),
249  the following code worked incorrectly:
250  -  LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions
251     for compressing from memory to memory.
252     That BUG is not related to LZMA encoder version that works via streams.
253  -  LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if
254     default value of chunk size (CLzma2EncProps::blockSize) is changed
255     to value larger than (4 GiB - dictionary_size).
256
257
2589.38 beta      2015-01-03
259-------------------------
260- The BUG in 9.31-9.37 was fixed:
261  IArchiveGetRawProps interface was disabled for 7z archives.
262- The BUG in 9.26-9.36 was fixed:
263  Some code in CPP\7zip\Archive\7z\ worked correctly only under Windows.
264
265
2669.36 beta      2014-12-26
267-------------------------
268- The BUG in command line version was fixed:
269  7-Zip created temporary archive in current folder during update archive
270  operation, if -w{Path} switch was not specified.
271  The fixed 7-Zip creates temporary archive in folder that contains updated archive.
272- The BUG in 9.33-9.35 was fixed:
273  7-Zip silently ignored file reading errors during 7z or gz archive creation,
274  and the created archive contained only part of file that was read before error.
275  The fixed 7-Zip stops archive creation and it reports about error.
276
277
2789.35 beta      2014-12-07
279-------------------------
280- 7zr.exe now support AES encryption.
281- SFX mudules were added to LZMA SDK
282- Some bugs were fixed.
283
284
2859.21 beta      2011-04-11
286-------------------------
287- New class FString for file names at file systems.
288- Speed optimization in CRC code for big-endian CPUs.
289- The BUG in Lzma2Dec.c was fixed:
290    Lzma2Decode function didn't work.
291
292
2939.18 beta      2010-11-02
294-------------------------
295- New small SFX module for installers (SfxSetup).
296
297
2989.12 beta      2010-03-24
299-------------------------
300- The BUG in LZMA SDK 9.* was fixed: LZMA2 codec didn't work,
301  if more than 10 threads were used (or more than 20 threads in some modes).
302
303
3049.11 beta      2010-03-15
305-------------------------
306- PPMd compression method support
307
308
3099.09           2009-12-12
310-------------------------
311- The bug was fixed:
312   Utf16_To_Utf8 funstions in UTFConvert.cpp and 7zMain.c
313   incorrectly converted surrogate characters (the code >= 0x10000) to UTF-8.
314- Some bugs were fixed
315
316
3179.06           2009-08-17
318-------------------------
319- Some changes in ANSI-C 7z Decoder interfaces.
320
321
3229.04           2009-05-30
323-------------------------
324- LZMA2 compression method support
325- xz format support
326
327
3284.65           2009-02-03
329-------------------------
330- Some minor fixes
331
332
3334.63           2008-12-31
334-------------------------
335- Some minor fixes
336
337
3384.61 beta      2008-11-23
339-------------------------
340- The bug in ANSI-C LZMA Decoder was fixed:
341    If encoded stream was corrupted, decoder could access memory
342    outside of allocated range.
343- Some changes in ANSI-C 7z Decoder interfaces.
344- LZMA SDK is placed in the public domain.
345
346
3474.60 beta      2008-08-19
348-------------------------
349- Some minor fixes.
350
351
3524.59 beta      2008-08-13
353-------------------------
354- The bug was fixed:
355    LZMA Encoder in fast compression mode could access memory outside of
356    allocated range in some rare cases.
357
358
3594.58 beta      2008-05-05
360-------------------------
361- ANSI-C LZMA Decoder was rewritten for speed optimizations.
362- ANSI-C LZMA Encoder was included to LZMA SDK.
363- C++ LZMA code now is just wrapper over ANSI-C code.
364
365
3664.57           2007-12-12
367-------------------------
368- Speed optimizations in �++ LZMA Decoder.
369- Small changes for more compatibility with some C/C++ compilers.
370
371
3724.49 beta      2007-07-05
373-------------------------
374- .7z ANSI-C Decoder:
375     - now it supports BCJ and BCJ2 filters
376     - now it supports files larger than 4 GB.
377     - now it supports "Last Write Time" field for files.
378- C++ code for .7z archives compressing/decompressing from 7-zip
379  was included to LZMA SDK.
380
381
3824.43           2006-06-04
383-------------------------
384- Small changes for more compatibility with some C/C++ compilers.
385
386
3874.42           2006-05-15
388-------------------------
389- Small changes in .h files in ANSI-C version.
390
391
3924.39 beta      2006-04-14
393-------------------------
394- The bug in versions 4.33b:4.38b was fixed:
395  C++ version of LZMA encoder could not correctly compress
396  files larger than 2 GB with HC4 match finder (-mfhc4).
397
398
3994.37 beta      2005-04-06
400-------------------------
401- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined.
402
403
4044.35 beta      2005-03-02
405-------------------------
406- The bug was fixed in C++ version of LZMA Decoder:
407    If encoded stream was corrupted, decoder could access memory
408    outside of allocated range.
409
410
4114.34 beta      2006-02-27
412-------------------------
413- Compressing speed and memory requirements for compressing were increased
414- LZMA now can use only these match finders: HC4, BT2, BT3, BT4
415
416
4174.32           2005-12-09
418-------------------------
419- Java version of LZMA SDK was included
420
421
4224.30           2005-11-20
423-------------------------
424- Compression ratio was improved in -a2 mode
425- Speed optimizations for compressing in -a2 mode
426- -fb switch now supports values up to 273
427- The bug in 7z_C (7zIn.c) was fixed:
428  It used Alloc/Free functions from different memory pools.
429  So if program used two memory pools, it worked incorrectly.
430- 7z_C: .7z format supporting was improved
431- LZMA# SDK (C#.NET version) was included
432
433
4344.27 (Updated) 2005-09-21
435-------------------------
436- Some GUIDs/interfaces in C++ were changed.
437 IStream.h:
438   ISequentialInStream::Read now works as old ReadPart
439   ISequentialOutStream::Write now works as old WritePart
440
441
4424.27           2005-08-07
443-------------------------
444- The bug in LzmaDecodeSize.c was fixed:
445   if _LZMA_IN_CB and _LZMA_OUT_READ were defined,
446   decompressing worked incorrectly.
447
448
4494.26           2005-08-05
450-------------------------
451- Fixes in 7z_C code and LzmaTest.c:
452  previous versions could work incorrectly,
453  if malloc(0) returns 0
454
455
4564.23           2005-06-29
457-------------------------
458- Small fixes in C++ code
459
460
4614.22           2005-06-10
462-------------------------
463- Small fixes
464
465
4664.21           2005-06-08
467-------------------------
468- Interfaces for ANSI-C LZMA Decoder (LzmaDecode.c) were changed
469- New additional version of ANSI-C LZMA Decoder with zlib-like interface:
470    - LzmaStateDecode.h
471    - LzmaStateDecode.c
472    - LzmaStateTest.c
473- ANSI-C LZMA Decoder now can decompress files larger than 4 GB
474
475
4764.17           2005-04-18
477-------------------------
478- New example for RAM->RAM compressing/decompressing:
479  LZMA + BCJ (filter for x86 code):
480    - LzmaRam.h
481    - LzmaRam.cpp
482    - LzmaRamDecode.h
483    - LzmaRamDecode.c
484    - -f86 switch for lzma.exe
485
486
4874.16           2005-03-29
488-------------------------
489- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder):
490   If _LZMA_OUT_READ was defined, and if encoded stream was corrupted,
491   decoder could access memory outside of allocated range.
492- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster).
493  Old version of LZMA Decoder now is in file LzmaDecodeSize.c.
494  LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c
495- Small speed optimization in LZMA C++ code
496- filter for SPARC's code was added
497- Simplified version of .7z ANSI-C Decoder was included
498
499
5004.06           2004-09-05
501-------------------------
502- The bug in v4.05 was fixed:
503    LZMA-Encoder didn't release output stream in some cases.
504
505
5064.05           2004-08-25
507-------------------------
508- Source code of filters for x86, IA-64, ARM, ARM-Thumb
509  and PowerPC code was included to SDK
510- Some internal minor changes
511
512
5134.04           2004-07-28
514-------------------------
515- More compatibility with some C++ compilers
516
517
5184.03           2004-06-18
519-------------------------
520- "Benchmark" command was added. It measures compressing
521  and decompressing speed and shows rating values.
522  Also it checks hardware errors.
523
524
5254.02           2004-06-10
526-------------------------
527- C++ LZMA Encoder/Decoder code now is more portable
528  and it can be compiled by GCC on Linux.
529
530
5314.01           2004-02-15
532-------------------------
533- Some detection of data corruption was enabled.
534    LzmaDecode.c / RangeDecoderReadByte
535    .....
536    {
537      rd->ExtraBytes = 1;
538      return 0xFF;
539    }
540
541
5424.00           2004-02-13
543-------------------------
544- Original version of LZMA SDK
545
546
547
548HISTORY of the LZMA
549-------------------
550  2001-2008:  Improvements to LZMA compressing/decompressing code,
551              keeping compatibility with original LZMA format
552  1996-2001:  Development of LZMA compression format
553
554  Some milestones:
555
556  2001-08-30: LZMA compression was added to 7-Zip
557  1999-01-02: First version of 7-Zip was released
558
559
560End of document
561