diff options
author | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-06-21 00:00:00 +0000 |
---|---|---|
committer | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-12-17 14:59:19 +0500 |
commit | 5b39dc76f1bc82f941d5c800ab9f34407a06b53a (patch) | |
tree | fe5e17420300b715021a76328444088d32047963 /DOC | |
parent | 93be7d4abfd4233228f58ee1fbbcd76d91be66a4 (diff) | |
download | 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.gz 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.bz2 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.zip |
23.0123.01
Diffstat (limited to 'DOC')
-rw-r--r-- | DOC/7zip.wxs | 2 | ||||
-rw-r--r-- | DOC/Methods.txt | 7 | ||||
-rw-r--r-- | DOC/lzma.txt | 43 | ||||
-rw-r--r-- | DOC/readme.txt | 49 | ||||
-rw-r--r-- | DOC/src-history.txt | 22 |
5 files changed, 83 insertions, 40 deletions
diff --git a/DOC/7zip.wxs b/DOC/7zip.wxs index 123182e..df1d320 100644 --- a/DOC/7zip.wxs +++ b/DOC/7zip.wxs | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0"?> | 1 | <?xml version="1.0"?> |
2 | 2 | ||
3 | <?define VerMajor = "22" ?> | 3 | <?define VerMajor = "23" ?> |
4 | <?define VerMinor = "01" ?> | 4 | <?define VerMinor = "01" ?> |
5 | <?define VerBuild = "00" ?> | 5 | <?define VerBuild = "00" ?> |
6 | <?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?> | 6 | <?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?> |
diff --git a/DOC/Methods.txt b/DOC/Methods.txt index d4a1b1d..541f1c1 100644 --- a/DOC/Methods.txt +++ b/DOC/Methods.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | 7-Zip method IDs for 7z and xz archives | 1 | 7-Zip method IDs for 7z and xz archives |
2 | --------------------------------------- | 2 | --------------------------------------- |
3 | 3 | ||
4 | Version: 18.06 | 4 | Version: 23.01 |
5 | Date: 2018-06-30 | 5 | Date: 2023-06-30 |
6 | 6 | ||
7 | Each compression or crypto method in 7z is associated with unique binary value (ID). | 7 | Each compression or crypto method in 7z is associated with unique binary value (ID). |
8 | The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes). | 8 | The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes). |
@@ -37,6 +37,7 @@ List of defined IDs | |||
37 | 07 - ARM (little-endian) | 37 | 07 - ARM (little-endian) |
38 | 08 - ARMT (little-endian) | 38 | 08 - ARMT (little-endian) |
39 | 09 - SPARC | 39 | 09 - SPARC |
40 | 0A - ARM64 | ||
40 | 41 | ||
41 | 21 - LZMA2 | 42 | 21 - LZMA2 |
42 | 43 | ||
@@ -88,6 +89,8 @@ List of defined IDs | |||
88 | 0A - Imploding | 89 | 0A - Imploding |
89 | 0C - BZip2 (not used. Use {040202} instead) | 90 | 0C - BZip2 (not used. Use {040202} instead) |
90 | 0E - LZMA (LZMA-zip) | 91 | 0E - LZMA (LZMA-zip) |
92 | |||
93 | 5D - ZSTD | ||
91 | 5F - xz | 94 | 5F - xz |
92 | 60 - Jpeg | 95 | 60 - Jpeg |
93 | 61 - WavPack | 96 | 61 - WavPack |
diff --git a/DOC/lzma.txt b/DOC/lzma.txt index a65988f..142feb1 100644 --- a/DOC/lzma.txt +++ b/DOC/lzma.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | LZMA compression | 1 | LZMA compression |
2 | ---------------- | 2 | ---------------- |
3 | Version: 9.35 | 3 | Version: 23.01 |
4 | 4 | ||
5 | This file describes LZMA encoding and decoding functions written in C language. | 5 | This file describes LZMA encoding and decoding functions written in C language. |
6 | 6 | ||
@@ -169,12 +169,14 @@ How To compress data | |||
169 | Compile files: | 169 | Compile files: |
170 | 7zTypes.h | 170 | 7zTypes.h |
171 | Threads.h | 171 | Threads.h |
172 | Threads.c | ||
172 | LzmaEnc.h | 173 | LzmaEnc.h |
173 | LzmaEnc.c | 174 | LzmaEnc.c |
174 | LzFind.h | 175 | LzFind.h |
175 | LzFind.c | 176 | LzFind.c |
176 | LzFindMt.h | 177 | LzFindMt.h |
177 | LzFindMt.c | 178 | LzFindMt.c |
179 | LzFindOpt.c | ||
178 | LzHash.h | 180 | LzHash.h |
179 | 181 | ||
180 | Memory Requirements: | 182 | Memory Requirements: |
@@ -283,17 +285,26 @@ Return code: | |||
283 | Defines | 285 | Defines |
284 | ------- | 286 | ------- |
285 | 287 | ||
286 | _LZMA_SIZE_OPT - Enable some optimizations in LZMA Decoder to get smaller executable code. | 288 | Z7_LZMA_SIZE_OPT - Enable some code size optimizations in LZMA Decoder to get smaller executable code. |
287 | 289 | ||
288 | _LZMA_PROB32 - It can increase the speed on some 32-bit CPUs, but memory usage for | 290 | Z7_LZMA_PROB32 - It can increase the speed on some 32-bit CPUs, but memory usage for |
289 | some structures will be doubled in that case. | 291 | some structures will be doubled in that case. |
290 | 292 | ||
291 | _LZMA_UINT32_IS_ULONG - Define it if int is 16-bit on your compiler and long is 32-bit. | 293 | Z7_DECL_Int32_AS_long - Define it if int is 16-bit on your compiler and long is 32-bit. |
292 | 294 | ||
293 | _LZMA_NO_SYSTEM_SIZE_T - Define it if you don't want to use size_t type. | 295 | Z7_DECL_SizeT_AS_unsigned_int - Define it if you don't want to use size_t type. |
294 | 296 | ||
295 | 297 | ||
296 | _7ZIP_PPMD_SUPPPORT - Define it if you don't want to support PPMD method in AMSI-C .7z decoder. | 298 | Defines for 7z decoder written in C |
299 | ----------------------------------- | ||
300 | These defines are for 7zDec.c only (the decoder in C). | ||
301 | C++ 7z decoder doesn't uses these macros. | ||
302 | |||
303 | Z7_PPMD_SUPPORT - define it if you need PPMD method support. | ||
304 | Z7_NO_METHODS_FILTERS - do not use filters (except of BCJ2 filter). | ||
305 | Z7_USE_NATIVE_BRANCH_FILTER - use filter for native ISA: | ||
306 | use x86 filter, if compiled to x86 executable, | ||
307 | use arm64 filter, if compiled to arm64 executable. | ||
297 | 308 | ||
298 | 309 | ||
299 | C++ LZMA Encoder/Decoder | 310 | C++ LZMA Encoder/Decoder |
@@ -305,20 +316,26 @@ C++ LZMA code is just wrapper over ANSI-C code. | |||
305 | 316 | ||
306 | C++ Notes | 317 | C++ Notes |
307 | ~~~~~~~~~~~~~~~~~~~~~~~~ | 318 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
308 | If you use some C++ code folders in 7-Zip (for example, C++ code for .7z handling), | 319 | If you use some C++ code folders in 7-Zip (for example, C++ code for 7z archive handling), |
309 | you must check that you correctly work with "new" operator. | 320 | you must check that you correctly work with "new" operator. |
310 | 7-Zip can be compiled with MSVC 6.0 that doesn't throw "exception" from "new" operator. | 321 | 7-Zip can be compiled with MSVC 6.0 that doesn't throw "exception" from "new" operator. |
311 | So 7-Zip uses "CPP\Common\NewHandler.cpp" that redefines "new" operator: | 322 | So 7-Zip uses "CPP\Common\NewHandler.cpp" that redefines "new" operator, |
323 | if compiled by old MSVC compilers (MSVC before version VS 2010): | ||
324 | |||
312 | operator new(size_t size) | 325 | operator new(size_t size) |
313 | { | 326 | { |
314 | void *p = ::malloc(size); | 327 | void *p = ::malloc(size); |
315 | if (p == 0) | 328 | if (!p) |
316 | throw CNewException(); | 329 | throw CNewException(); |
317 | return p; | 330 | return p; |
318 | } | 331 | } |
319 | If you use MSCV that throws exception for "new" operator, you can compile without | 332 | |
320 | "NewHandler.cpp". So standard exception will be used. Actually some code of | 333 | If the compiler is VS 2010 or newer, NewHandler.cpp doesn't redefine "new" operator. |
321 | 7-Zip catches any exception in internal code and converts it to HRESULT code. | 334 | Sp if you use new compiler (VS 2010 or newer), you still can include "NewHandler.cpp" |
335 | to compilation, and it will not redefine operator new. | ||
336 | Also you can compile without "NewHandler.cpp" with new compilers. | ||
337 | If 7-zip doesn't redefine operator "new", standard exception will be used instead of CNewException. | ||
338 | Some code of 7-Zip catches any exception in internal code and converts it to HRESULT code. | ||
322 | So you don't need to catch CNewException, if you call COM interfaces of 7-Zip. | 339 | So you don't need to catch CNewException, if you call COM interfaces of 7-Zip. |
323 | 340 | ||
324 | --- | 341 | --- |
diff --git a/DOC/readme.txt b/DOC/readme.txt index faec8dc..5cd90c5 100644 --- a/DOC/readme.txt +++ b/DOC/readme.txt | |||
@@ -1,17 +1,18 @@ | |||
1 | 7-Zip 22.01 Sources | 1 | 7-Zip 23.01 Sources |
2 | ------------------- | 2 | ------------------- |
3 | 3 | ||
4 | 7-Zip is a file archiver for Windows. | 4 | 7-Zip is a file archiver for Windows. |
5 | 5 | ||
6 | 7-Zip Copyright (C) 1999-2022 Igor Pavlov. | 6 | 7-Zip Copyright (C) 1999-2023 Igor Pavlov. |
7 | 7 | ||
8 | 8 | ||
9 | License Info | 9 | License Info |
10 | ------------ | 10 | ------------ |
11 | 11 | ||
12 | 7-Zip is free software distributed under the GNU LGPL | 12 | 7-Zip is free software distributed under the GNU LGPL |
13 | (except for unRar code). | 13 | (except for unRar code). Also some code |
14 | read License.txt for more infomation about license. | 14 | is licensed under the "BSD 3-clause License". |
15 | Read "License.txt" for more infomation about license. | ||
15 | 16 | ||
16 | Notes about unRAR license: | 17 | Notes about unRAR license: |
17 | 18 | ||
@@ -46,13 +47,11 @@ How to compile in Windows | |||
46 | ------------------------- | 47 | ------------------------- |
47 | 48 | ||
48 | To compile the sources to Windows binaries you need Visual Studio compiler and/or Windows SDK. | 49 | To compile the sources to Windows binaries you need Visual Studio compiler and/or Windows SDK. |
49 | You can use latest Windows Studio 2017/2019 to compile binaries for x86, x64 and arm64 platforms. | 50 | You can use latest Windows Studio 2017/2019/2022 to compile binaries for x86, x64, arm64 and arm platforms. |
50 | Also you can use old compilers for some platforms: | 51 | Also you can use old compilers for some platforms: |
51 | x86 : Visual C++ 6.0 with Platform SDK | 52 | x86 : Visual C++ 6.0 with Platform SDK |
52 | x64 : Windows Server 2003 R2 Platform SDK | 53 | x64 : Windows Server 2003 R2 Platform SDK |
53 | arm64 : Windows Studio 2017 | 54 | ia64 (itanium) : Windows Server 2003 R2 Platform SDK |
54 | arm : Windows Studio 2017 | ||
55 | ia64 (itanium) : Windows Server 2003 R2 Platform SDK | ||
56 | arm for Windows CE : Standard SDK for Windows CE 5.0 | 55 | arm for Windows CE : Standard SDK for Windows CE 5.0 |
57 | 56 | ||
58 | If you use MSVC6, specify also Platform SDK directories at top of directories lists: | 57 | If you use MSVC6, specify also Platform SDK directories at top of directories lists: |
@@ -70,7 +69,7 @@ There are two ways to compile 7-Zip binaries: | |||
70 | 2) via dsp file in Visual Studio. | 69 | 2) via dsp file in Visual Studio. |
71 | 70 | ||
72 | The dsp file compiling can be used for development and debug purposes. | 71 | The dsp file compiling can be used for development and debug purposes. |
73 | The final 7-Zip binaries are compiled via makefiles, that provide best | 72 | All final 7-Zip binaries are compiled via makefiles, that provide best |
74 | optimization options. | 73 | optimization options. |
75 | 74 | ||
76 | 75 | ||
@@ -94,8 +93,8 @@ MY_DYNAMIC_LINK | |||
94 | Compiling 7-Zip for Unix/Linux | 93 | Compiling 7-Zip for Unix/Linux |
95 | ------------------------------ | 94 | ------------------------------ |
96 | 95 | ||
97 | There are several otpions to compile 7-Zip with different compilers: gcc and clang. | 96 | There are several options to compile 7-Zip with different compilers: gcc and clang. |
98 | Also 7-Zip code contains two versions for some critical parts of code: in C and in Assembeler. | 97 | Also 7-Zip code contains two versions for some parts of code: in C and in Assembeler. |
99 | So if you compile the version with Assembeler code, you will get faster 7-Zip binary. | 98 | So if you compile the version with Assembeler code, you will get faster 7-Zip binary. |
100 | 99 | ||
101 | 7-Zip's assembler code uses the following syntax for different platforms: | 100 | 7-Zip's assembler code uses the following syntax for different platforms: |
@@ -109,13 +108,14 @@ So if you compile the version with Assembeler code, you will get faster 7-Zip bi | |||
109 | https://github.com/nidud/asmc | 108 | https://github.com/nidud/asmc |
110 | 109 | ||
111 | 2) arm64: GNU assembler for ARM64 with preprocessor. | 110 | 2) arm64: GNU assembler for ARM64 with preprocessor. |
112 | That systax of that arm64 assembler code in 7-Zip is supported by GCC and CLANG for ARM64. | 111 | That systax is supported by GCC and CLANG for ARM64. |
113 | 112 | ||
114 | There are different binaries that can be compiled from 7-Zip source. | 113 | There are different binaries that can be compiled from 7-Zip source. |
115 | There are 2 main files in folder for compiling: | 114 | There are 2 main files in folder for compiling: |
116 | makefile - that can be used for compiling Windows version of 7-Zip with nmake command | 115 | makefile - that can be used for compiling Windows version of 7-Zip with nmake command |
117 | makefile.gcc - that can be used for compiling Linux/macOS versions of 7-Zip with make command | 116 | makefile.gcc - that can be used for compiling Linux/macOS versions of 7-Zip or Windows version |
118 | 117 | with MINGW (GCC) with make command. | |
118 | |||
119 | At first you must change the current folder to folder that contains `makefile.gcc`: | 119 | At first you must change the current folder to folder that contains `makefile.gcc`: |
120 | 120 | ||
121 | cd CPP/7zip/Bundles/Alone2 | 121 | cd CPP/7zip/Bundles/Alone2 |
@@ -143,7 +143,7 @@ To compile 7-Zip for arm64 with assembler: | |||
143 | To compile 7-Zip for arm64 for macOS: | 143 | To compile 7-Zip for arm64 for macOS: |
144 | make -j -f ../../cmpl_mac_arm64.mak | 144 | make -j -f ../../cmpl_mac_arm64.mak |
145 | 145 | ||
146 | Also you can change some compiler options in the mak files: | 146 | Also you can change some compiler options in the "mak" files: |
147 | cmpl_gcc.mak | 147 | cmpl_gcc.mak |
148 | var_gcc.mak | 148 | var_gcc.mak |
149 | warn_gcc.mak | 149 | warn_gcc.mak |
@@ -207,16 +207,17 @@ Description of 7-Zip sources package | |||
207 | 207 | ||
208 | DOC Documentation | 208 | DOC Documentation |
209 | --- | 209 | --- |
210 | 7zFormat.txt - 7z format description | 210 | readme.txt - Readme file |
211 | copying.txt - GNU LGPL license | ||
212 | unRarLicense.txt - License for unRAR part of source code | ||
213 | src-history.txt - Sources history | 211 | src-history.txt - Sources history |
212 | 7zC.txt - 7z ANSI-C Decoder description | ||
213 | 7zFormat.txt - 7z format description | ||
214 | Methods.txt - Compression method IDs | 214 | Methods.txt - Compression method IDs |
215 | readme.txt - Readme file | ||
216 | lzma.txt - LZMA compression description | 215 | lzma.txt - LZMA compression description |
217 | 7zip.nsi - installer script for NSIS | 216 | License.txt - license information |
218 | 7zip.wix - installer script for WIX | 217 | copying.txt - GNU LGPL license |
219 | 218 | unRarLicense.txt - License for unRAR part of source code | |
219 | 7zip.wxs - installer script for WIX | ||
220 | 7zip.hhp - html help project file | ||
220 | 221 | ||
221 | Asm - Source code in Assembler : optimized code for CRC, SHA, AES, LZMA decoding. | 222 | Asm - Source code in Assembler : optimized code for CRC, SHA, AES, LZMA decoding. |
222 | 223 | ||
@@ -250,9 +251,9 @@ Windows common files for Windows related code | |||
250 | SFXWin 7z.sfx: Windows 7z SFX module | 251 | SFXWin 7z.sfx: Windows 7z SFX module |
251 | SFXSetup 7zS.sfx: Windows 7z SFX module for Installers | 252 | SFXSetup 7zS.sfx: Windows 7z SFX module for Installers |
252 | 253 | ||
253 | Compress files for compression/decompression | 254 | Compress files for compression / decompression |
254 | 255 | ||
255 | Crypto files for encryption / decompression | 256 | Crypto files for encryption / decryption |
256 | 257 | ||
257 | UI | 258 | UI |
258 | 259 | ||
diff --git a/DOC/src-history.txt b/DOC/src-history.txt index f546c4e..c1c1b71 100644 --- a/DOC/src-history.txt +++ b/DOC/src-history.txt | |||
@@ -1,6 +1,28 @@ | |||
1 | HISTORY of the 7-Zip source code | 1 | HISTORY of the 7-Zip source code |
2 | -------------------------------- | 2 | -------------------------------- |
3 | 3 | ||
4 | 23.01 2023-06-20 | ||
5 | ------------------------- | ||
6 | - All external macros for compiling C/C++ code of 7-Zip now have Z7_ prefix. | ||
7 | - 7-Zip COM interfaces now use new macros that allow to declare and implement COM interface. | ||
8 | - The code has been modified to compile with the maximum diagnostic warning level: | ||
9 | -Wall in MSVC and -Weverything in CLANG. | ||
10 | And some warning types are disabled in 2 files: | ||
11 | - C/Compiler.h for C/C++ code warnings. | ||
12 | - CPP/Common/Common.h for C++ code warnings. | ||
13 | - Linux/macOS versions of 7-Zip: IUnknown interface in new code doesn't use | ||
14 | virtual destructor that was used in previous 7-Zip and p7zip: | ||
15 | // virtual ~IUnknown() {} | ||
16 | So 7-Zip's dynamically linked shared libraries (codecs) are not compatible | ||
17 | between new 7-Zip for Linux/macOS and old 7-Zip (and p7zip). | ||
18 | - Some optimizations in filters code: BCJ, BCJ2, Swap* and opthers. | ||
19 | - If 7-Zip uses BCJ2 filter for big datasets compressing, it can use additional temp | ||
20 | files in system's TEMP folder. 7-Zip uses temp file for additional compressed | ||
21 | data stream, if size of such compressed stream is larger than predefined limit: | ||
22 | 16 MiB in 32-bit version, 4 GiB in 64-bit version. | ||
23 | - Some bugs were fixed. | ||
24 | |||
25 | |||
4 | 22.00 2022-06-16 | 26 | 22.00 2022-06-16 |
5 | ------------------------- | 27 | ------------------------- |
6 | - 7-Zip interfaces now support high precision (1 ns) timestamps with reserved | 28 | - 7-Zip interfaces now support high precision (1 ns) timestamps with reserved |