• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1HISTORY of the LZMA SDK
2-----------------------
3
424.09          2024-11-29
5-------------------------
6- The default dictionary size values for LZMA/LZMA2 compression methods were increased:
7         dictionary size   compression level
8  v24.08  v24.09  v24.09
9          32-bit  64-bit
10    8 MB   16 MB   16 MB   -mx4
11   16 MB   32 MB   32 MB   -mx5 : Normal
12   32 MB   64 MB   64 MB   -mx6
13   32 MB   64 MB  128 MB   -mx7 : Maximum
14   64 MB   64 MB  256 MB   -mx8
15   64 MB   64 MB  256 MB   -mx9 : Ultra
16  The default dictionary size values for 32-bit versions of LZMA/LZMA2 don't exceed 64 MB.
17- If an archive update operation uses a temporary archive folder and
18  the archive is moved to the destination folder, 7-Zip shows the progress of moving
19  the archive file, as this operation can take a long time if the archive is large.
20- Some bugs were fixed.
21
22
2324.07          2024-06-19
24-------------------------
25- Changes in files:
26    Asm/x86/Sha256Opt.asm
27  Now it uses "READONLY" flag for constant array segment.
28  It fixes an issue where ".rodata" section in 7-Zip for x86/x64 Linux had a "WRITE" attribute.
29
30
3124.05          2024-05-14
32-------------------------
33- New switch -myv={MMNN} to set decoder compatibility version for 7z archive creating.
34  {MMNN} is 4-digit number that represents the version of 7-Zip without a dot.
35  If -myv={MMNN} switch is specified, 7-Zip will only use compression methods that can
36  be decoded by the specified version {MMNN} of 7-Zip and newer versions.
37  If -myv={MMNN} switch is not specified, -myv=2300 is used, and 7-Zip will only
38  use compression methods that can be decoded by 7-Zip 23.00 and newer versions.
39- New switch -myfa={FilterID} to    allow 7-Zip to use the specified filter method for 7z archive creating.
40- New switch -myfd={FilterID} to disallow 7-Zip to use the specified filter method for 7z archive creating.
41
42
4324.03          2024-03-23
44-------------------------
45- 7-Zip now can use new RISCV filter for compression to 7z and xz archives.
46  RISCV filter can increase compression ratio for data containing executable
47  files compiled for RISC-V architecture.
48- The speed for LZMA and LZMA2 decompression in ARM64 version for Windows
49  was increased by 20%-60%.
50  It uses arm64 assembler code, and clang-cl is required for arm64 assembler code compiling.
51- -slmu switch : to show timestamps as UTC instead of LOCAL TIME.
52- -slsl switch : in console 7-Zip for Windows : to show file paths with
53  linux path separator slash '/' instead of backslash separator '\'.
54- 7-Zip supports .sha256 files that use backslash path separator '\'.
55- Some bugs were fixed.
56
57
5824.01          2024-01-31
59-------------------------
60- 7-Zip uses file C/Precomp.h that is included to all c and c++ files.
61  CPP/Common/Common.h also includes C/Precomp.h.
62  C/Precomp.h defines the following macros (if _WIN32 is defined):
63    Z7_LARGE_PAGES 1
64    Z7_LONG_PATH 1
65    Z7_WIN32_WINNT_MIN  0x0500 (or higher)
66    _WIN32_WINNT        0x0500 (or higher)
67    WINVER  _WIN32_WINNT
68    UNICODE 1
69    _UNICODE 1
70  if _WIN32_WINNT is defined already, C/Precomp.h doesn't redefine it.
71
72- Speed optimizations for hash caclulation: CRC-32, CRC-64.
73- The bug was fixed: 7-Zip for Linux could fail for multivolume creation in some cases.
74- 7zr.exe for arm64 is included to LZMA SDK package.
75- Some bugs were fixed.
76
77
7823.01          2023-06-20
79-------------------------
80- 7-Zip now can use new ARM64 filter for compression to 7z and xz archives.
81  ARM64 filter can increase compression ratio for data containing executable
82  files compiled for ARM64 (AArch64) architecture.
83  Also 7-Zip now parses executable files (that have exe and dll filename extensions)
84  before compressing, and it selects appropriate filter for each parsed file:
85    - BCJ or BCJ2 filter for x86 executable files,
86    - ARM64 filter for ARM64 executable files.
87  Previous versions by default used x86 filter BCJ or BCJ2 for all exe/dll files.
88- Default section size for BCJ2 filter was changed from 64 MiB to 240 MiB.
89  It can increase compression ratio for executable files larger than 64 MiB.
90- Some optimizations in filters code: BCJ, BCJ2, Swap* and opthers.
91- If 7-Zip uses BCJ2 filter for big datasets compressing, it can use additional temp
92  files in system's TEMP folder. 7-Zip uses temp file for additional compressed
93  data stream, if size of such compressed stream is larger than predefined limit:
94  16 MiB in 32-bit version, 4 GiB in 64-bit version.
95- When new 7-Zip creates multivolume archive, 7-Zip keeps in open state
96  only volumes that still can be changed. Previous versions kept all volumes
97  in open state until the end of the archive creation.
98- 7-Zip for Linux and macOS now can reduce the number of simultaneously open files,
99  when 7-Zip opens, extracts or creates multivolume archive. It allows to avoid
100  the failures for cases with big number of volumes, bacause there is a limitation
101  for number of open files allowed for a single program in Linux and macOS.
102- Some bugs were fixed.
103- Source code changes:
104- All external macros for compiling C/C++ code of 7-Zip now have Z7_ prefix.
105- 7-Zip COM interfaces now use new macros that allow to declare and implement COM interface.
106- The code has been modified to compile with the maximum diagnostic warning level:
107    -Wall in MSVC and -Weverything in CLANG.
108  And some warning types are disabled in 2 files:
109    - C/Compiler.h for C/C++ code warnings.
110    - CPP/Common/Common.h for C++ code warnings.
111- Linux/macOS versions of 7-Zip: IUnknown interface in new code doesn't use
112  virtual destructor that was used in previous 7-Zip and p7zip:
113     // virtual ~IUnknown() {}
114  So 7-Zip's dynamically linked shared libraries (codecs) are not compatible
115  between new 7-Zip for Linux/macOS and old 7-Zip (and p7zip).
116
117
11821.07          2021-12-26
119-------------------------
120- New switches: -spm and -im!{file_path} to exclude directories from processing
121    for specified paths that don't contain path separator character at the end of path.
122- The sorting order of files in archives was slightly changed to be more consistent
123  for cases where the name of some directory is the same as the prefix part of the name
124  of another directory or file.
125
126
12721.06          2021-11-24
128-------------------------
129- Bug in LZMA encoder in file LzmaEnc.c was fixed:
130  LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work incorrectly,
131    if size value for output buffer is smaller than size required for all compressed data.
132  LzmaEnc_Encode() could work incorrectly,
133    if callback ISeqOutStream::Write() doesn't write all compressed data.
134  NCompress::NLzma::CEncoder::Code() could work incorrectly,
135    if callback ISequentialOutStream::Write() returns error code.
136- Bug in versions 21.00-21.05 was fixed:
137  7-Zip didn't set attributes of directories during archive extracting.
138
139
14021.04 beta     2021-11-02
141-------------------------
142- 7-Zip now reduces the number of working CPU threads for compression,
143  if RAM size is not enough for compression with big LZMA2 dictionary.
144- 7-Zip now can create and check "file.sha256" text files that contain the list
145  of file names and SHA-256 checksums in format compatible with sha256sum program.
146
147
14821.03 beta     2021-07-20
149-------------------------
150- The maximum dictionary size for LZMA/LZMA2 compressing was increased to 4 GB (3840 MiB).
151- Minor speed optimizations in LZMA/LZMA2 compressing.
152
153
15421.02 alpha    2021-05-06
155-------------------------
156- The command line version of 7-Zip for macOS was released.
157- The speed for LZMA and LZMA2 decompression in arm64 versions for macOS and Linux
158  was increased by 20%-60%.
159
160
16121.01 alpha    2021-03-09
162-------------------------
163- The command line version of 7-Zip for Linux was released.
164- The improvements for speed of ARM64 version using hardware CPU instructions
165  for AES, CRC-32, SHA-1 and SHA-256.
166- Some bugs were fixed.
167
168
16920.02 alpha    2020-08-08
170-------------------------
171- The default number of LZMA2 chunks per solid block in 7z archive was increased to 64.
172  It allows to increase the compression speed for big 7z archives, if there is a big number
173  of CPU cores and threads.
174- The speed of PPMd compressing/decompressing was increased for 7z archives.
175- The new -ssp switch. If the switch -ssp is specified, 7-Zip doesn't allow the system
176  to modify "Last Access Time" property of source files for archiving and hashing operations.
177- Some bugs were fixed.
178
179
18020.00 alpha    2020-02-06
181-------------------------
182- 7-Zip now supports new optional match finders for LZMA/LZMA2 compression: bt5 and hc5,
183  that can work faster than bt4 and hc4 match finders for the data with big redundancy.
184- The compression ratio was improved for Fast and Fastest compression levels with the
185  following default settings:
186   - Fastest level (-mx1) : hc5 match finder with 256 KB dictionary.
187   - Fast    level (-mx3) : hc5 match finder with 4 MB dictionary.
188- Minor speed optimizations in multithreaded LZMA/LZMA2 compression for Normal/Maximum/Ultra
189  compression levels.
190
191
19219.00          2019-02-21
193-------------------------
194- Encryption strength for 7z archives was increased:
195  the size of random initialization vector was increased from 64-bit to 128-bit,
196  and the pseudo-random number generator was improved.
197- The bug in 7zIn.c code was fixed.
198
199
20018.06          2018-12-30
201-------------------------
202- The speed for LZMA/LZMA2 compressing was increased by 3-10%,
203  and there are minor changes in compression ratio.
204- Some bugs were fixed.
205- The bug in 7-Zip 18.02-18.05 was fixed:
206  There was memory leak in multithreading xz decoder - XzDecMt_Decode(),
207  if xz stream contains only one block.
208- The changes for MSVS compiler makefiles:
209   - the makefiles now use "PLATFORM" macroname with values (x64, x86, arm64)
210     instead of "CPU" macroname with values (AMD64, ARM64).
211   - the makefiles by default now use static version of the run-time library.
212
213
21418.05          2018-04-30
215-------------------------
216- The speed for LZMA/LZMA2 compressing was increased
217    by 8% for fastest/fast compression levels and
218    by 3% for normal/maximum compression levels.
219- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in
220  Windows 10 because of some BUG with "Large Pages" in Windows 10.
221  Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299).
222- The BUG was fixed in Lzma2Enc.c
223    Lzma2Enc_Encode2() function worked incorretly,
224      if (inStream == NULL) and the number of block threads is more than 1.
225
226
22718.03 beta     2018-03-04
228-------------------------
229- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm
230  for x64 with about 30% higher speed than main version of LZMA decoder written in C.
231- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%.
232- 7-Zip now can use multi-threading for 7z/LZMA2 decoding,
233  if there are multiple independent data chunks in LZMA2 stream.
234- 7-Zip now can use multi-threading for xz decoding,
235  if there are multiple blocks in xz stream.
236
237
23818.01          2019-01-28
239-------------------------
240- The BUG in 17.01 - 18.00 beta was fixed:
241  XzDec.c : random block unpacking and XzUnpacker_IsBlockFinished()
242  didn't work correctly for xz archives without checksum (CRC).
243
244
24518.00 beta     2019-01-10
246-------------------------
247- The BUG in xz encoder was fixed:
248  There was memory leak of 16 KB for each file compressed with
249  xz compression method, if additional filter was used.
250
251
25217.01 beta     2017-08-28
253-------------------------
254- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression.
255  7-Zip now uses additional memory buffers for multi-block LZMA2 compression.
256  CPU utilization was slightly improved.
257- 7-zip now creates multi-block xz archives by default. Block size can be
258  specified with -ms[Size]{m|g} switch.
259- xz decoder now can unpack random block from multi-block xz archives.
260- 7-Zip command line: @listfile now doesn't work after -- switch.
261  Use -i@listfile before -- switch instead.
262- The BUGs were fixed:
263  7-Zip 17.00 beta crashed for commands that write anti-item to 7z archive.
264
265
26617.00 beta     2017-04-29
267-------------------------
268- NewHandler.h / NewHandler.cpp:
269    now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900).
270- C/7zTypes.h : the names of variables in interface structures were changed (vt).
271- Some bugs were fixed. 7-Zip could crash in some cases.
272- Some internal changes in code.
273
274
27516.04          2016-10-04
276-------------------------
277- The bug was fixed in DllSecur.c.
278
279
28016.03          2016-09-28
281-------------------------
282- SFX modules now use some protection against DLL preloading attack.
283- Some bugs in 7z code were fixed.
284
285
28616.02          2016-05-21
287-------------------------
288- The BUG in 16.00 - 16.01 was fixed:
289  Split Handler (SplitHandler.cpp) returned incorrect
290  total size value (kpidSize) for split archives.
291
292
29316.01          2016-05-19
294-------------------------
295- Some internal changes to reduce the number of compiler warnings.
296
297
29816.00          2016-05-10
299-------------------------
300- Some bugs were fixed.
301
302
30315.12          2015-11-19
304-------------------------
305- The BUG in C version of 7z decoder was fixed:
306  7zDec.c : SzDecodeLzma2()
307  7z decoder could mistakenly report about decoding error for some 7z archives
308  that use LZMA2 compression method.
309  The probability to get that mistaken decoding error report was about
310  one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size).
311- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed:
312  7zArcIn.c : SzReadHeader2()
313  7z decoder worked incorrectly for 7z archives that contain
314  empty solid blocks, that can be placed to 7z archive, if some file is
315  unavailable for reading during archive creation.
316
317
31815.09 beta     2015-10-16
319-------------------------
320- The BUG in LZMA / LZMA2 encoding code was fixed.
321  The BUG in LzFind.c::MatchFinder_ReadBlock() function.
322  If input data size is larger than (4 GiB - dictionary_size),
323  the following code worked incorrectly:
324  -  LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions
325     for compressing from memory to memory.
326     That BUG is not related to LZMA encoder version that works via streams.
327  -  LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if
328     default value of chunk size (CLzma2EncProps::blockSize) is changed
329     to value larger than (4 GiB - dictionary_size).
330
331
3329.38 beta      2015-01-03
333-------------------------
334- The BUG in 9.31-9.37 was fixed:
335  IArchiveGetRawProps interface was disabled for 7z archives.
336- The BUG in 9.26-9.36 was fixed:
337  Some code in CPP\7zip\Archive\7z\ worked correctly only under Windows.
338
339
3409.36 beta      2014-12-26
341-------------------------
342- The BUG in command line version was fixed:
343  7-Zip created temporary archive in current folder during update archive
344  operation, if -w{Path} switch was not specified.
345  The fixed 7-Zip creates temporary archive in folder that contains updated archive.
346- The BUG in 9.33-9.35 was fixed:
347  7-Zip silently ignored file reading errors during 7z or gz archive creation,
348  and the created archive contained only part of file that was read before error.
349  The fixed 7-Zip stops archive creation and it reports about error.
350
351
3529.35 beta      2014-12-07
353-------------------------
354- 7zr.exe now support AES encryption.
355- SFX mudules were added to LZMA SDK
356- Some bugs were fixed.
357
358
3599.21 beta      2011-04-11
360-------------------------
361- New class FString for file names at file systems.
362- Speed optimization in CRC code for big-endian CPUs.
363- The BUG in Lzma2Dec.c was fixed:
364    Lzma2Decode function didn't work.
365
366
3679.18 beta      2010-11-02
368-------------------------
369- New small SFX module for installers (SfxSetup).
370
371
3729.12 beta      2010-03-24
373-------------------------
374- The BUG in LZMA SDK 9.* was fixed: LZMA2 codec didn't work,
375  if more than 10 threads were used (or more than 20 threads in some modes).
376
377
3789.11 beta      2010-03-15
379-------------------------
380- PPMd compression method support
381
382
3839.09           2009-12-12
384-------------------------
385- The bug was fixed:
386   Utf16_To_Utf8 funstions in UTFConvert.cpp and 7zMain.c
387   incorrectly converted surrogate characters (the code >= 0x10000) to UTF-8.
388- Some bugs were fixed
389
390
3919.06           2009-08-17
392-------------------------
393- Some changes in ANSI-C 7z Decoder interfaces.
394
395
3969.04           2009-05-30
397-------------------------
398- LZMA2 compression method support
399- xz format support
400
401
4024.65           2009-02-03
403-------------------------
404- Some minor fixes
405
406
4074.63           2008-12-31
408-------------------------
409- Some minor fixes
410
411
4124.61 beta      2008-11-23
413-------------------------
414- The bug in ANSI-C LZMA Decoder was fixed:
415    If encoded stream was corrupted, decoder could access memory
416    outside of allocated range.
417- Some changes in ANSI-C 7z Decoder interfaces.
418- LZMA SDK is placed in the public domain.
419
420
4214.60 beta      2008-08-19
422-------------------------
423- Some minor fixes.
424
425
4264.59 beta      2008-08-13
427-------------------------
428- The bug was fixed:
429    LZMA Encoder in fast compression mode could access memory outside of
430    allocated range in some rare cases.
431
432
4334.58 beta      2008-05-05
434-------------------------
435- ANSI-C LZMA Decoder was rewritten for speed optimizations.
436- ANSI-C LZMA Encoder was included to LZMA SDK.
437- C++ LZMA code now is just wrapper over ANSI-C code.
438
439
4404.57           2007-12-12
441-------------------------
442- Speed optimizations in �++ LZMA Decoder.
443- Small changes for more compatibility with some C/C++ compilers.
444
445
4464.49 beta      2007-07-05
447-------------------------
448- .7z ANSI-C Decoder:
449     - now it supports BCJ and BCJ2 filters
450     - now it supports files larger than 4 GB.
451     - now it supports "Last Write Time" field for files.
452- C++ code for .7z archives compressing/decompressing from 7-zip
453  was included to LZMA SDK.
454
455
4564.43           2006-06-04
457-------------------------
458- Small changes for more compatibility with some C/C++ compilers.
459
460
4614.42           2006-05-15
462-------------------------
463- Small changes in .h files in ANSI-C version.
464
465
4664.39 beta      2006-04-14
467-------------------------
468- The bug in versions 4.33b:4.38b was fixed:
469  C++ version of LZMA encoder could not correctly compress
470  files larger than 2 GB with HC4 match finder (-mfhc4).
471
472
4734.37 beta      2005-04-06
474-------------------------
475- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined.
476
477
4784.35 beta      2005-03-02
479-------------------------
480- The bug was fixed in C++ version of LZMA Decoder:
481    If encoded stream was corrupted, decoder could access memory
482    outside of allocated range.
483
484
4854.34 beta      2006-02-27
486-------------------------
487- Compressing speed and memory requirements for compressing were increased
488- LZMA now can use only these match finders: HC4, BT2, BT3, BT4
489
490
4914.32           2005-12-09
492-------------------------
493- Java version of LZMA SDK was included
494
495
4964.30           2005-11-20
497-------------------------
498- Compression ratio was improved in -a2 mode
499- Speed optimizations for compressing in -a2 mode
500- -fb switch now supports values up to 273
501- The bug in 7z_C (7zIn.c) was fixed:
502  It used Alloc/Free functions from different memory pools.
503  So if program used two memory pools, it worked incorrectly.
504- 7z_C: .7z format supporting was improved
505- LZMA# SDK (C#.NET version) was included
506
507
5084.27 (Updated) 2005-09-21
509-------------------------
510- Some GUIDs/interfaces in C++ were changed.
511 IStream.h:
512   ISequentialInStream::Read now works as old ReadPart
513   ISequentialOutStream::Write now works as old WritePart
514
515
5164.27           2005-08-07
517-------------------------
518- The bug in LzmaDecodeSize.c was fixed:
519   if _LZMA_IN_CB and _LZMA_OUT_READ were defined,
520   decompressing worked incorrectly.
521
522
5234.26           2005-08-05
524-------------------------
525- Fixes in 7z_C code and LzmaTest.c:
526  previous versions could work incorrectly,
527  if malloc(0) returns 0
528
529
5304.23           2005-06-29
531-------------------------
532- Small fixes in C++ code
533
534
5354.22           2005-06-10
536-------------------------
537- Small fixes
538
539
5404.21           2005-06-08
541-------------------------
542- Interfaces for ANSI-C LZMA Decoder (LzmaDecode.c) were changed
543- New additional version of ANSI-C LZMA Decoder with zlib-like interface:
544    - LzmaStateDecode.h
545    - LzmaStateDecode.c
546    - LzmaStateTest.c
547- ANSI-C LZMA Decoder now can decompress files larger than 4 GB
548
549
5504.17           2005-04-18
551-------------------------
552- New example for RAM->RAM compressing/decompressing:
553  LZMA + BCJ (filter for x86 code):
554    - LzmaRam.h
555    - LzmaRam.cpp
556    - LzmaRamDecode.h
557    - LzmaRamDecode.c
558    - -f86 switch for lzma.exe
559
560
5614.16           2005-03-29
562-------------------------
563- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder):
564   If _LZMA_OUT_READ was defined, and if encoded stream was corrupted,
565   decoder could access memory outside of allocated range.
566- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster).
567  Old version of LZMA Decoder now is in file LzmaDecodeSize.c.
568  LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c
569- Small speed optimization in LZMA C++ code
570- filter for SPARC's code was added
571- Simplified version of .7z ANSI-C Decoder was included
572
573
5744.06           2004-09-05
575-------------------------
576- The bug in v4.05 was fixed:
577    LZMA-Encoder didn't release output stream in some cases.
578
579
5804.05           2004-08-25
581-------------------------
582- Source code of filters for x86, IA-64, ARM, ARM-Thumb
583  and PowerPC code was included to SDK
584- Some internal minor changes
585
586
5874.04           2004-07-28
588-------------------------
589- More compatibility with some C++ compilers
590
591
5924.03           2004-06-18
593-------------------------
594- "Benchmark" command was added. It measures compressing
595  and decompressing speed and shows rating values.
596  Also it checks hardware errors.
597
598
5994.02           2004-06-10
600-------------------------
601- C++ LZMA Encoder/Decoder code now is more portable
602  and it can be compiled by GCC on Linux.
603
604
6054.01           2004-02-15
606-------------------------
607- Some detection of data corruption was enabled.
608    LzmaDecode.c / RangeDecoderReadByte
609    .....
610    {
611      rd->ExtraBytes = 1;
612      return 0xFF;
613    }
614
615
6164.00           2004-02-13
617-------------------------
618- Original version of LZMA SDK
619
620
621
622HISTORY of the LZMA
623-------------------
624  2001-2008:  Improvements to LZMA compressing/decompressing code,
625              keeping compatibility with original LZMA format
626  1996-2001:  Development of LZMA compression format
627
628  Some milestones:
629
630  2001-08-30: LZMA compression was added to 7-Zip
631  1999-01-02: First version of 7-Zip was released
632
633
634End of document
635