Zip-Ada: Ada library for zip files (.zip). Ada programming.
Zip-Ada20 years Zip-Ada

[NEW] BZip2 and LZMA compression supported.

What is Zip-Ada ?

Zip-Ada is a free, open-source, independent programming library for dealing with the Zip compressed archive file format.
The full sources of Zip-Ada are written in the Ada programming language.
For more details, read the files zipada.txt and zip.ads from the archive below.
Some features
(*) within limits of compiler's provided integer types and target architecture capacity.
Why not call an zip or unzip executable, or use the zlib library ?
(*) within limits of compiler's provided integer types and target architecture capacity.

Distribution

Zip-Ada is free software under MIT license - see copyright notice in the file zip.ads.

Download

Download the library from the SourceForge project page.

You can also...
The zipada*.zip archive contains:

Screenshots:

Zip-Ada in action
within a Zip archive
manager (AZip):

Zip-Ada in action
within a self-extracting
installer:
HTML report
from the ReZip tool:
AZip Installer ReZip report

Presentations:

Swiss Ada Event 2025
FOSDEM 2025
FOSDEM 2019
Swiss Ada Event 2017
Zip-Ada @ Swiss Ada Event 2025 Zip-Ada @ FOSDEM 2025 Zip-Ada @ FOSDEM 2019 Zip-Ada @ Swiss Ada Event 2017 (part 1) Zip-Ada @ Swiss Ada Event 2017 (part 1)

A small demo's source:


   1  --  Zip archive creation demo.
   2  --  For a complete Zip creation tool, see tools/zipada.adb .
   3  --
   4  with Zip.Create;
   5  
   6  procedure Demo_Zip is
   7    use Zip.Create;
   8    zip_file : aliased Zip_File_Stream;  --  Archive is a file in this example.
   9    archive : Zip_Create_Info;
  10  begin
  11    Create_Archive (archive, zip_file'Unchecked_Access, "mini_zip.zip");
  12    --  We insert a couple of files into the Zip archive:
  13    Add_File (archive, "demo/demo_zip.adb", Password => "1234");
  14    Add_File (archive, "demo/demo_unzip.adb");
  15    --  Here we add directly some contents to the Zip archive
  16    --  without a file in the first place:
  17    Add_String
  18      (archive,
  19       "==== Hello world! ====" & ASCII.LF &
  20       "It is such a nice ""Hello world""-like demo, isn't it ?",
  21       "nice_string.txt");
  22    Add_Empty_Folder (archive, "empty_folder/");
  23    Finish (archive);
  24  end Demo_Zip;


For viewing more sources...

Browse the source (of version 61)

Source web pages automatically generated by gnathtml (GNAT).

Present state - latest changes - history

For the full history, click here.

Contact:

Mail: � � Gautier de Montmollin, e-mail
For a little sponsoring (e.g. the equivalent of a glass of wine)... � Support This Project

An article about fuzzing (testing with randomized input data) and Zip-Ada:

Technical documentation: read PKWare's appnote.txt (included in the Zip-Ada archive).

On Gautier's blog: some news about Zip-Ada and other Ada projects.

Visit the Ada Forum:



Combinations (Operating System, processor, compiler) where the Zip-Ada library - one single source, zero conditional compilation - is reported to be in use:

OSCPUCompiler
OpenVMSIntel Itanium (64 bit) GNU - GNAT
AIXPower7 (64 bit)
MS Windows 32-bitIntel x86
MS Windows 64-bitAMD/Intel x64
Linux 32-bitIntel x86
Linux 64-bitAMD/Intel x64
Linux on PS3Cell (64 bit)
Linux on Raspberry PiARM
Mac OS XPowerPC (64 bit)
Mac OS XAMD/Intel x64 (64 bit)
Mac OS Xaarch64
SolarisSPARC (32 or 64 bit)
SolarisAMD/Intel x64 (64 bit)
OpenBSD(one of several)
FreeBSDIntel x86 (32 bit)
FreeBSDAMD/Intel x64 (64 bit)
Android 2.3+ARM
MS Windows x64AMD/Intel x64 (64 bit)PTC - ObjectAda
MS Windows NT+Intel x86 (32 bit)SofCheck - AdaMagic
MS Windows NT+AMD/Intel x64 (64 bit)
LinuxIntel x86 (32 bit)
Mac OS XPowerPC (64 bit)
Mac OS XAMD/Intel x64 (64 bit)
SolarisSPARC (32 or 64 bit)
SolarisAMD/Intel x64

Don't hesitate to tell me about other OS / CPU / compiler combinations!
Summary of supported Zip internal compression formats (each compressed file in a Zip archive can have a different compression format):

Zip-Ada Other software. Info-Zip
Format Format # Compress Decompress PKZip 7-Zip WinZip Zip UnZip
Store 0 v.22 v.1 v.0.90 all all all all
Shrink 1 v.22 v.1 v.0.90 v.9.20 all never
Reduce 1 .. 4 2 .. 5 v.29 v.1 v.0.90 all never v.<=5.12
Implode 6 never v.1 v.1.01 v.9.20 all never
Deflate 8 v.50
(v.40-49: limited)
v.1 v.2.0 all all v.2.0 all
Enhanced Deflate 9 never v.30 v.2.1 all v.8.0 v.5.5
BZip2 12 v.60 v.36 v.4.6 v.9.20 v.9.0 v.3.0 v.6.0
LZMA 14 v.51 v.47 v.6.3 all v.12.0
PPMd 98 v.6.3 v.9.11 v.10.0
Zstandard 93 v.6.3.8 v.24.01 v.24


Some Zip-Ada users:
Here is a list of other open-source projects I participate to on SourceForge. Click on the links below for details.
Some projects have GitHub mirrors too.

Some Ada compilers:
External compression tools used by ReZip:
Powered by Ada �������� Awesome Ada ��������


��� ���