p7zip 9.13 was released

my space
2010-05-30
2013-05-28
  • my space
    my space
    2010-05-30

    changes since p7zip 9.04 :

      - From Windows version of 7-zip
        - ZIP / PPMd compression ratio was improved in Maximum and Ultra modes.
        - The BUG in 7-Zip 9.* beta was fixed: LZMA2 codec didn't work,
          if more than 10 threads were used (or more than 20 threads in some modes).
        - 7-Zip now supports PPMd compression in .ZIP archives.
        - Speed optimizations in PPMd codec.
        - The support for archives in installers was improved.
        - 7-Zip now can unpack Apple Partition Map (APM) disk images.
        - 7-Zip now can unpack MSLZ archives.
        - Partial parsing for EXE resources, SWF and FLV.           
        - Some bugs were fixed.

     
      - #2863580 "Crash in Rar decoder on a corrupted file" fixed

      - #2860898 "Dereferencing a zero pointer in cab handler" fixed

      - #2860679 "Division by zero in cab decoder" fixed

      - makefile.openbsd is now compatible with OpenBSD ports tree.
        (thanks to jggimi)

      - cmake projects added.

      - 7zFM and 7zG can be built on MacOSX but these ports are in very alpha stage.
        make app to build p7zip.app (p7zip for MacOSX)

      - p7zip can now use hugetlbfs on Linux (thank to Joachim Henke)
        Like with the Windows large pages, this gives a nice speedup,
        when running memory intensive operations.

      - p7zip now uses UTF8 (kCFStringNormalizationFormD) On MacOSX
        fixes  #2831266 "p7zip can't find NFC Unicode  filename in OSX Terminal"
        and    #2976169 "German Umlauts Failure"
       
      - p7zip now uses precompiled header with gcc 4

     
  • Igor Pavlov
    Igor Pavlov
    2010-06-01

    to myspace:
    1) GUI porting is difficult task. Can you describe any details about it?
    2) Do you use ASM code (CRC code) now?
    If NO, what performabce do you have with C version?
    7z b -mm=crc
    It shows results in MB/s.
    3) I have some GCC asm code in CpuArch.c. I tested it with cygwin. Does it work OK with your GCC compilers?

     
  • my p7zip
    my p7zip
    2010-06-03

    > 1) GUI porting is difficult task. Can you describe any details about it?

    the wxWidgets library looks like MFC which is very close to the Win32 API (MFC = C++ wrapper over the win32 API).

    So after rewritten your CPP/Windows/Control/*.h and .cpp using wxWidgets, I was able to use your code for 7zG.
    7zG for p7zip is very like the Windows version ( code, look, multi-language and functionalities)

    But for 7zFM, I had to put a lot of your code in comments.
    7zFM for p7zip is very alpha and does only the basic functionalities :
    - no drag and drop
    - no popup menu
    - …

    The "file.rc" files are replaced by a "file_rc.cpp" which defines
    the window and the "ressources" strings.

    On Linux, adding 7zG in the popup menu of the gnome explorer or the KDE explorer
    is a difficult task …

    On MacOSX, you cannot add 7zG in the popup menu of the finder (files explorer for Mac).
    All you can do is to associate the commun archives extensions to 7zFM …
    double-clicking on an archive will open 7zFM, then click on the extract button to
    extract all the files …

    I think that the logic of 7-zip (7zFM and 7zG) does not fit the logic of a commun mac GUI.

    > 2) Do you use ASM code (CRC code) now?
    > If NO, what performabce do you have with C version?
    > 7z b -mm=crc
    > It shows results in MB/s.

    I did not port your new ASM code (since AesOpt.asm).

    p7zip still use the ASM code  (7zCrcT8U.asm) before AesOpt.asm, 7zAsm.asm and 7zCrcOpt.asm.

    As I remember, on AMD64, the C CRC code is as fast as 7zCrcT8U.asm …

    > 3) I have some GCC asm code in CpuArch.c. I tested it with cygwin. Does it work OK with your GCC compilers?

    p7zip does not use CpuArch.c .

    I tried to compile CpuArch.c :
    - compiles for a x86 target
    - does not compile for a AMD64 target

    According to http://en.wikipedia.org/wiki/CPUID : cpuid was introduced by Intel in 1993 when it introduced the Pentium and SL-Enhanced 486 processors

    So I don't think that you need to test for the cpuid for a AMD64 target…

    Even for the x86 target, it's pretty useless because a CPU that hasn't cpuid can't be fast enough
    to handle 7z archive (and what about the RAM available with this kind of cpu ?).

    Perharps in the next version of p7zip, I would try to port your AesOpt.asm and your new CRC code…

    As I don't have a CPU that support Intel AES, this port is not on my priority list …
    And my main machine does not support "SDE" …

    Igor, do you plan in a near future to make major changes/enhancements in 7-zip ?
    If so, can you tell us what you have in mind for 7-zip ?`

     
  • Igor Pavlov
    Igor Pavlov
    2010-06-04

    Now I use CPUID for two things:
    1) to detect hardware AES support
    2) to detect best way for CRC code from 2 versions:
    T4 (for weak CPUs like Atom)
    T8 (for good CPUs like Core/Athlon).
    CrcOpt.c uses T4 algorithm.

    BTW, one user have executed 7za.exe on 386 with 8 MB of RAM. Its was DOS with HX DOS-Extender.
    You can see benchmark results of that 386 here:
    http://www.7-cpu.com/lzma-cpu.html

    I don't plan big changes in near future.
    I'm still working for Subblock filter, that can detect filetype (like BMP / WAV / ELF / PE) by header.
    It can be used in XZ format. And it can improve compression ratio for some files like TAR/ISO.

     
  • my p7zip
    my p7zip
    2010-06-04

    > BTW, one user have executed 7za.exe on 386 with 8 MB of RAM
    I think that this 7za.exe is compiled from p7zip (4.65 ?) with DJGPP.
    This target does not use ASM code so don't need a test for cpuid ;)

    I provide makefile with ASM support for only a small number of target :
    - linux  x86 and AMD64
    - macosx x86  (I did  not tried AMD64 on MacOSX …)
    - cygwin x86

    > I don't plan big changes in near future.

    Ok : it means less work to update the next version of p7zip ;)

    > I'm still working for Subblock filter, that can detect filetype. It can be used in XZ format

    Do you means that these filters will not be available for the 7z format ?

     
  • Igor Pavlov
    Igor Pavlov
    2010-06-04

    It was just my 7za.exe for Windows. There are some DOS extenders that emulate WIN32 API in DOS.

    I'll use Subblock filter for both 7z and xz. It will allow to use mutiple filters (like BCJ or Delta) inside same big file, like ISO. Another advantage that you don't need to check EXECUTABLE attribute to select BCJ2 in p7zip. Subblock filter must select correct filter from BCJ/PowerPC/Sparc/IA64/ARM filters usinmg ELF/PE headers.

     
  • my p7zip
    my p7zip
    2010-06-04

    > There are some DOS extenders that emulate WIN32 API in DOS
    I didn't know that such DOS extenders exist …

    > Another advantage that you don't need to check EXECUTABLE attribute to select BCJ2 in p7zip.
    > Subblock filter must select correct filter from BCJ/PowerPC/Sparc/IA64/ARM filters usinmg ELF/PE headers.

    Good news :)
    Perhaps, this filter will increase the use of filter like  PowerPC/Sparc/IA64/ARM in 7z archives …
    p7zip (like 7-zip) always use BCJ/BCJ2 for executable files even if p7zip runs in a non x86 machine …

     
  • tho
    tho
    2011-02-07

    Hi,

    iam want to compress some windows data with lzma2.

    But if I use 7z a -mx=9 -md=512m -mfb=273 -m0=LZMA2 1.7z dir/

    7z doesnt compress the *.exe *.dll files with the bcj2 filer. 7z compresses simply all files with lzma2.

    How must i change the cmdline that 7z is apply the bcj2 filter only on executables and not over all files?

    thanks

     
  • Igor Pavlov
    Igor Pavlov
    2011-02-07

    create list file with *.exe, *.dll  and so on.
    And use two commands:
    cd dir\
    7z a a.7z -xr!listfile
    7z a a.7z -ir!listfile with bcj2 filter.

     
  • tho
    tho
    2011-02-07

    Hi,

    i would to try this

    7z a a.7z -ir!listfile with bcj2 filter

    but here i get an error that there are duplicate files, there are but not in the same folder.
    is that a bug of p7zip?

    and then

    7z a a.7z -xr!listfile

     
  • Igor Pavlov
    Igor Pavlov
    2011-02-07

    use on;ly simple masks in listfile:
    *.exe
    *.dll
    don't use absolute paths.

     
  • my p7zip
    my p7zip
    2011-02-07

    Warning : p7zip (unlike 7-zip) does not use the extension of a file to activate the bcj/bcj2 filter.
    If you want p7zip to use bcj/bcj2 filter then ensure that the files have the execution permission file.
    (Unix don't care about the extension …)

    cd  the_directory_of_your_files
    find . -iname "*.exe" -exec chmod +x {} \;

    find . -iname "*.dll" -exec chmod +x {} \;

    then p7zip will automatically use the bcj/bcj2 filter on the according files.

     
  • tho
    tho
    2011-02-07

    Hm ok it works but I dont get lzma2 apply to the files

    Iam searching something like

    7z a -mx=9 -md512m -mfb=273 -ms=12g -v4400m 1.7z dir/

    So that all files will compress via LZMA2 but the "executables" should also be preprocessed by the bcj* filter

    spliting data into 2 commands doenst help because updating isnt supportet at splittet archives
    iam using version 9.04 and 9.13

    thanks again

     
  • tho
    tho
    2011-02-07

    and when i add -m0=LZMA2 it compresses all files to lzma2 without preprocessing

     
  • Igor Pavlov
    Igor Pavlov
    2011-02-07

    maybe you can call some external split command like.
    There is "split" command in linux as I understand.
    Ut will use another file extension.
    But 7-zip must open it too as I suppose.

     
  • my p7zip
    my p7zip
    2011-02-22

    I tried with "p7zip_9.20_222" on a MacOSX 10.6 :

    p7zip_9.20_222/bin/7z a -mx=9 -md512m -mfb=273 -ms=12g -v4400m  -m0=LZMA2   A.7z    p7zip_9.20_222

    and then

    p7zip_9.20_222/bin/7z l -slt A.7z.001

    I can find that some files were compressed with the BCJ2 filter , for example :

    Path = p7zip_9.20_222/bin/7z
    Size = 505624
    Packed Size = 984037
    Modified = 2011-01-23 17:33:12
    Attributes = ….A
    CRC = C6A4539B
    Encrypted = -
    Method = BCJ2 LZMA2:48m LZMA:20 LZMA:20
    Block = 1

    How can you say that your archive does not contains files with the BCJ or BCJ2 filter ?