Menu

Zip-Ada / News: Recent posts

Version 59

New features:

  • UnZip.Streams: added Set_Index & Index subprograms for inward streams from Zip archives.
  • Zip.Create: added procedure Add_Empty_Folder
Posted by Gautier de Montmollin 2024-05-25

Version 58

New feature in version 58 (as frozen in rev. 922): Support for Zip_64 archives. The Zip_64 format extension is needed when there are more than more than 65535 entries or more than 4 GiB data for a single entry's compressed or uncompressed size, or for a whole archive.

Posted by Gautier de Montmollin 2022-08-27

Some research with LZMA...

A rare case where Zip-Ada's LZMA encoder is much better than LZMA SDK's. Rare but still interesting, and with, on Zip-Ada's side, standard LZMA parameters (no specific tuning for that file):

The compressed size with current public revision (rev.#882) of Zip-Ada is slightly worse (42,559 bytes).... read more

Posted by Gautier de Montmollin 2020-11-28

Version 57

Changes in '57', 02-Oct-2020 [rev. 799]:

  • UnZip: fixed bad decoding case for the Shrink (LZW) format,
    on some data compressed only by PKZIP up to v.1.10,
    release date 1990-03-15.
  • Zip.Create: added Zip_Entry_Stream_Type for doing output
    streaming into Zip archives.
  • Zip.Compress: Preselection method detects Audacity files (.aup, .au)
    and compresses them better.
Posted by Gautier de Montmollin 2020-10-03

Version 56

Changes in '56', 17-Jan-2020 [rev. 780]:

  • Zip: the Zip_info type is now controlled (no need to call Delete;
    additionally, clones are done correctly).
  • UnZip.Streams: added Size and Name functions for Zipped_File_Type.
  • LZ77: added nice simple LZ77 compressor by Rich Geldreich, Jr.
  • (Tools) Added Zip_Dir_List.
  • Some refactoring was needed for -gnatwh warning switch (warnings for
    hiding declarations). Subprogram Create in package Zip.Create
    was renamed to Create_Archive.
  • Adapted to -gnatytc style checks.
  • Better names for some exceptions (the old names
    can be still used); better exception messages.
Posted by Gautier de Montmollin 2020-10-03

Preselection method for Audacity files

Latest commit (rev. 796) adds a stronger and faster compression specifically for Audacity files (.aud, .au) for hot backups of audio editing projects.
More about it in this article.

Posted by Gautier de Montmollin 2020-09-23

Zip-Ada (and Trained Compression) presented at FOSDEM 2019


Presentation is available as PDF and PPT.

Posted by Gautier de Montmollin 2019-02-06

Version 55

Zip-Ada v.55

Changes in '55', 22-Nov-2018:

  • Zip_Streams: ZS_Size_Type is now 64-bit signed, enabling Zip.Create
    to capture archive size overflows in Zip_32 mode.
  • Zip.Create raises Zip_Capacity_Exceeded when archive creation exceeds
    the Zip_32 format's capacity: 4GB total size, 65,535 entries.
  • Zip.Create is now using an Ada 2005+'s Containers's Hashed Maps;
    creation is much faster on Zip archives with many entries.
  • (Tools) ReZip has a new option for working only with its own internal
    compression algorithms - those provided by Zip.Compress.
    This option is useful if external tools are not available.
  • New Trained_Compression package: generic streaming encoder-decoder
    engine with the capability of training the engine with data known
    in advance, in order to achieve better compression. Not Zip-related.
  • Minimum required Ada version is now Ada 2005 (was Ada 95 before).... read more
Posted by Gautier de Montmollin 2018-11-22

Version 54

Changes:

  • Zip.Compress.Deflate: use of L1_tweaked measure; adjusted
    threshold for activating new compression block
  • Source gardening: removal of needless "use" clauses, these cases
    are detected by GNAT Community 2018
Posted by Gautier de Montmollin 2018-06-28

Version 53

  • Decompression and loading of archive directory are more
    resistant to fuzzing attacks. From that version, a random data
    passed as a Zip archive will be either valid (with an extremely tiny
    probability), or, for loading the archive directory, issue
    Zip.Archive_Corrupted. Data extraction will issue one of:
    Zip.Archive_Corrupted, UnZip.CRC_Error, UnZip.Wrong_password,
    UnZip.Unsupported_method, UnZip.Not_supported.
  • Zip.Compress & ReZip: fix in local header generation: EOS flag for
    LZMA format is properly set in any situation LZMA is actually used.
  • (Tools) ZipAda tool has a more useful recursive
    directory search (-r2 option).
  • (Tests) Added Fuzzip, a fuzzing tool for the compression side.
Posted by Gautier de Montmollin 2017-11-14

Version 53, preview 1

Fix: Zip.Create.Add_Stream: LZMA_EOS_Flag_Bit was missing in header on Preselection methods, when a LZMA compression was selected.
This header glitch was detected by 7-Zip v.17.01 (but not 16.x) on archives created by Zip-Ada using Preselection methods.

Posted by Gautier de Montmollin 2017-09-12

Version 52

Changes in '52', 08-Oct-2016:
- UnZip.Streams: all procedures have an additional (optional)
Ignore_Directory parameter.
- Zip.Compress has the following new methods with improved compression:
LZMA_3, Preselection_1 (replaces Preselection), Preselection_2.
Preselection methods use now entry name extension and size for
improving compression, while remaining 1-pass methods.

Posted by Gautier de Montmollin 2016-10-07

Version 51

Changes in '51', 27-Aug-2016:
- LZMA.Encoding has been added; it is a standalone compressor,
see lzma_enc.adb for an example of use.
- Zip.Compress provides now LZMA_1, LZMA_2 methods. In other words, you
can use the LZMA compression with Zip.Create.
- Zip.Compress has also a "Preselection" method that selects
a compression method depending on hints like the uncompressed size.
- Zip.Compress.Deflate: Deflate_1 .. Deflate_3 compression is
slightly better.

Posted by Gautier de Montmollin 2016-08-27

LZMA compression

  • LZMA.Encoding: started July 28th, first working version August 16th (revision 457).
  • Zip-Ada's Zip.Compress makes use of LZMA encoding since revision 459.

More details here.

Posted by Gautier de Montmollin 2016-08-18


Version 50 - binary distribution for Windows

Available from now here: http://sourceforge.net/projects/unzip-ada/files/zipada50-bin-win32.zip/download
To access it from the project page, click on "Browse All Files".

Posted by Gautier de Montmollin 2016-04-13

Version 50

In a nutshell, there are now, finally, fast and efficient compression methods available.

  • Changes in '50', 31-Mar-2016:
  • Zip.Compress.Shrink is slightly faster
  • Zip.Compress.Deflate has new compression features:
    • Deflate_Fixed is much faster, with slightly better compression
    • Deflate_1 was added: strength similar to zlib, level 6
    • Deflate_2 was added: strength similar to zlib, level 9
    • Deflate_3 was added: strength similar to 7-Zip, method=deflate, level 5
Posted by Gautier de Montmollin 2016-03-31

Version 50, preview 3

  • Zip.Compress.Deflate: first variant with 'dynamic' compression working
Posted by Gautier de Montmollin 2016-02-05

Version 49

Encryption implemented (portable Zip 2.0 encryption scheme)

Posted by Gautier de Montmollin 2015-03-21

Version 49 preview 1

Under test: encryption (the Zip 2.0 flavor).
Feedback is welcome!

Posted by Gautier de Montmollin 2015-03-05

Version 47 released

LZMA method has been added for decompression

Posted by Gautier de Montmollin 2014-06-29

Version 38 released

  • Changes in '38', 27-Feb-2010:
  • ReZip: added '-fast_dec' and '-rand_stable' options
  • Zip.Create: fixed major bottlenecks around Dir_entries
    -> 5x faster overall for 1000 files, 356x for 100'000 files !
Posted by Gautier de Montmollin 2010-02-27

Version 37 released

  • Changes in '37', 1-Jan-2010:
  • Minor changes which leads to a significant speedup on GNAT;
    active use of Ada.Calendar can be totally avoided if this is desired

  • Changes in '36', 21-Nov-2009:

  • BZip2 method added for decompression
  • Added Zip.Traverse_verbose
  • Added an UnZip.Extract to extract all files, using a Zip_Info variable

  • Changes in '35', 2-Nov-2009:

  • major performance improvement:
    decompression 10x faster, compression 3x faster (figures for GNAT),
    thanks to a workaround for slow 'Read, 'Write attributes
    in GNAT & ObjectAda
  • ReZip: HTML display improved
Posted by Gautier de Montmollin 2010-02-11

Version 36 released

  • Changes in '36', 21-Nov-2009:
  • BZip2 method added for decompression
  • Added Zip.Traverse_verbose
  • Added an UnZip.Extract to extract all files, using a Zip_Info variable

  • Changes in '35', 2-Nov-2009:

  • major performance improvement:
    decompression 10x faster, compression 3x faster (figures for GNAT),
    thanks to a workaround for slow 'Read, 'Write attributes
    in GNAT & ObjectAda
  • ReZip: HTML display improved... read more
Posted by Gautier de Montmollin 2009-11-21

Version 33 released

  • Changes in '33', 18-Jun-2009:
  • UnZip: added extract_as_text option (cf. UnZipAda with -a option)
  • Zip: Zip_comment function added (cf. UnZipAda with -z option)

Zip-Ada is now used in the Scala musical freeware ( http://www.huygens-fokker.org/scala/ )

Posted by Gautier de Montmollin 2009-06-22