What's New

Last updated 1 July 2008

This file is the full list of new features and major changes for Zip 3.0
by beta release.  See the announcement file zip30.ann for a quick summary
of all features and changes in Zip 3.0.  Also see the file README for
release information, INSTALL for installation procedures, and the manual
pages zip.txt, zipsplit.txt, zipcloak.txt, and zipnote.txt for how to use
the new features.  The file CHANGES has all the day-to-day changes made
during development.


Below are some of the more significant items on the list for Zip 3.1
(see ToDo for a more complete list):

- AES encryption.
- Extended attributes for Windows, Linux, and Mac OS X.
- Support -d@ for deleting list of files.
- Decide if -R, -i and -x should use external rather than internal patterns.
- Though Unicode paths have been implemented and tested, Unicode comments
  are not yet supported (except for comments on UTF-8 native systems which
  are supported).
- Verbose mode -v may still need work.
- When pattern is directory add end / automatically.
- Add C# example for Zip 3.0 (need to be converted to new DLLs) - original
  C# example added with note.
- Path Prefix maybe, so entries added to an archive can have a directory
  path string prepended to each path.
- UNC path support maybe.
- Support for other languages maybe.
- Send in your suggestions.
- ...


MAJOR CHANGES BY BETA VERSION
-----------------------------

New things in Zip 3.0 since Zip 3.0h:

- Unicode fixes.
- Test and fix various ports as needed.
- Update Win32 resource to support more Windows ports.
- Add djgpp 2.x makefile that includes bzip2.
- Add Win32 version resource to Win32 executable.
- Bug fixes.
- Documentation updates.
- Package for release.


New things in Zip 3.0h

- Allow -@ and -x to work together.
- Unicode code cleanup.
- Allow forcing use of UTF-8 storage in standard path and comment.
- Update symbolic link checks.
- Add support for storing 32-bit UIDs/GIDs using new extra field.
  Backward compatible support for the old 16-bit UID/GID extra field
  remains if Zip is compiled on an OS that has 16-bit UID/GID
  storage.
- Update VMS notes.
- Directory scan using -AS (include only files with Windows archive
  bit set) now ignores archive bit on directories to include all files
  with archive bit set in all directories.  Also, to avoid empty
  directories being created, -AS now does not store directory
  entries.
- Add Unix IBM support.
- Change -W to -ws to free -W for later use.
- Fix large file support for MinGW.
- Fix large file support for bzip2.
- Fix compile error in ZipCloak when UNICODE_SUPPORT is not enabled.
- Fix Unicode bug in ZipCloak involving Unicode paths.
- Long Unicode escapes changed from #Lxxxxxxxx to #Lxxxxxx to shorten
  paths with escaped Unicode.
- Bug fixes.


New things in Zip 3.0g

- Add split support to VB project for Zip64.
- Disable reading of Unix FIFOs unless new -FI option used to avoid an
  archiving operation stopping when it hits an active unfed FIFO.
- The "[list]" wildcard expression (regular expression matching of any
  character or range of characters in list) is now disabled on DOS and
  Windows as it has caused confusion when filenames have [ and ] in
  them.  The new -RE option reenables it.
- Add negation to many display options such as -dc and -db.
- Allow -FF to read and fix archives having local entries that appear
  after central directory entries.
- Bug fixes.


New things in Zip 3.0f

- bzip2 - The bzip2 compression method looks supported for at least
  Windows, Unix, and VMS using the bzip2 library.  A new option, -Z cm,
  selects the compression method.

- Split archives - Can now use -s to create a split archive.  The
  default is to update split files as the archive is being written,
  which requires all splits to remain open until the archive is done.
  This should be no problem when writing the archive to a hard drive,
  for example, and this approach creates archives that should be
  supported by all unzips that support splits.  Adding the -sp option
  enables split pause mode that instead writes splits that do not
  need updating and pauses Zip after each split.  This allows splits
  to be written directly to removable media, however -sp archives
  may not be as universally compatible.

- Unicode support - Zip now stores Unicode paths that should be more
  portable across character sets and languages.  The unzip must have
  Unicode support enabled or the Unicode paths are ignored.  If
  reading an archive with Unicode paths, unsupported characters are
  replaced by #Uxxxx and #Lxxxxxxxx escapes in the file name.  Option
  -UN controls how Unicode is handled.  Also, on systems where the
  current character set is UTF-8, preliminary support for the new
  General Purpose Bit Flag, bit 11, UTF-8 flag, that indicates UTF-8
  is stored in the path and comment fields is implemented for paths.
- Unicode on Win32 - On WIN32 systems that support the wide character
  calls (mainly NT and later systems using NTFS), when UNICODE SUPPORT
  is enabled Zip will now do directory scans using Unicode and convert
  the Unicode paths to the local character set for storage in the standard
  path field and store UTF-8 in the Unicode extra field.  This allows
  directory scans to complete successfully regardless of the character
  set the path is in.  On Win9x systems wide character scans are not
  generally supported and Zip automatically uses a local character scan
  instead.

- Keep extra fields option - The default operation has been, and continues
  to be, to read then strip old extra fields when reading entries from an
  existing archive and then recreate the extra fields that Zip knows about.
  Extra fields specific to each operating system get added by default also.
  The new option -X- (negated -X) keeps any old extra fields, copying
  them to the updated archive unchanged (unless Zip has updated them).
  The unnegated -X still strips most all extra fields except Zip64,
  Unicode, and UT time.

- License - minor updates to the license.

- Windows OEM - When compiled with WIN32_OEM (the default for WIN32),
  Zip on WIN32 now stores OEM paths, which should be more compatible
  with other zips and should fix some character set problems.
- Windows Archive Bit support - On Windows can now use new -AS
  (include if archive bit set) option to select files with the DOS
  archive bit set and use new -AC (clear archive bits) option to clear
  the archive bits on files after the archive has been created.
  But -DF is probably better.

- Difference mode - A new option -DF (--dif) creates an output archive
  that includes only files changed or new since the input archive was
  created.  Can use to create incremental backups.
- File Sync - The new option -FS enables File Sync, a new mode that
  synchronizes the entries in an archive with the files on the file
  system, adding updating, and deleting entries as needed.  This
  should create the same results as creating a new archive, but
  since existing entries are copied, may be much faster.

- Copy Mode - A new --out option allows creating a new archive with a
  different name than the input archive, leaving the input archive
  unchanged.  This allows updating split archives.  It also allows
  for a new copy mode to select entries in one archive and copy them
  directly to a new archive.
- Empty archives - Now an empty archive is created when -i or -i@ is used
  and the file patterns given do not match anything.  This has been
  requested to support scripts.

- Global dots - A new -dg option now displays progress dots as -dd does,
  but instead of displaying them for each file, the dots track the total
  bytes read for the archive.  The -dg option also works when -q is used
  to disable most output, which allows for something like zip -qdgds 100m
  to be used to not display specific files but display a dot every 100 MB
  as a global status.
- Date range - Can now use -t and -tt to set a date range
- Fix options - Option -F redone and can recover files from an archive
  with a mostly complete central directory more reliably, but no longer
  can handle truncated archives.  Option -FF redone and now can salvage
  files from slightly more damaged archives, including truncated archives.
  In some ways -F is less powerful but more stable than it was and -FF will
  be needed where -F in Zip 2.32 was enough.  One big change is -F and -FF
  both now support split archives.
- Console writing - Updates to how messages are written to the console have
  been made including more consistent handling of line breaks.
- Show Files options - Option -sf lists the files that would be operated
  on.  This option can be used alone to list the files in an archive.
  Also see options -su and -sU for showing Unicode paths.
- UnZip Check - Now check that UnZip 6.00 or later is being used for
  unzip if testing a Zip64 archive.  A new option -TT can be used to set
  the unzip to use with the -T check.  Currently UnZip does not support
  split archives so split archives can't be tested by UnZip.
- Streaming - Directories are now handled better when streaming.
- Case matching - Normally all matching against archive entries is case
  sensitive, so *.BAR will not match or find foo.bar in an archive
  when deleting, copying, or freshening entries (deleting and copying
  only on VMS).  New option -ic (--ignore-case) enables case insensitive
  matching.  Currently -ic is only implemented on WIN32 and VMS.

- Delete date bug fixed - Bug when using -d to delete files while
  using -t or -tt to select the files based on date is fixed
- Large file encryption bug fixed - Fix for bug that very rarely
  results in bad data being stored when deflating and encrypting
  uncompressable data and resulting in CRC errors when extracting,
  but the chance of error increases with file size (thanks to
  WinZip for finding this bug).  See CHANGES for details.


New things in Zip 3.0e

- Bugs described in Debian patches 004 (unix configure script update) and
  005 (large path bug) fixed
- Various fixes
- Add optional running stats and also end stats if not all files could
  be read
- Options -l and -ll now do quick binary check on first buffer and skip
  formatting if first buffer has binary - still check at end to note
  if formatting was done on file that was later determined to be binary,
  but now potential file corruption is generally avoided
- Main binary check now uses new algorithm that should also treat UTF-8 and
  other similar encodings as text, allowing proper line end translation
  for UTF-8 files
- When output is not updatable by seeking back and Zip64 is enabled, output
  is forced to Zip64 to avoid possible later need for Zip64 when not enabled
- More work on splits, but still not usable
- Fixes for djgpp
- Add log file capability to save all errors and optionally messages
- Add code to test for a Zip64 archive when compiled without Zip64 support
- New VC6 projects for Win32 and WinDLL
- Updates to extended help
- Changes to force-zip64 option
- ZE_BIG error now given also for files too big to read or write
- Fix file delete bug
- Update license
- Update export documentation
- Add VMS extended filename support
- Add directory traversal improvements, some for Win32 ports and some for
  all ports, that can result in a 10 times increase in speed in some cases


New things in Zip 3.0d

- Some large file crypt fixes
- Some updates to support WiZ
- On VMS, changed -V (/VMS) processing to truncate file at EOF, allowing
  greater compatability with non-VMS systems.  New -VV (/VMS=ALL) option
  saves all allocated blocks in a file.  (Previously, -V did neither.)
- On VMS, pushed 2GB file size limit with -V out to 4GB
- On VMS (recent, non-VAX), with SET PROCESS /PARSE = EXTEND,
  command-line case is preserved.  This obviates quoting upper-case
  options, like -V, when enabled
- On VMS, fixed problems with mixed-case directory names.  Also changed
  to keep ODS5 extended file name escape characters ("^") out of the
  archived names in simple cases
- Changes to the display dots
- Option -W should now force wildcard matching to not cross directory
  separators.  For example, a/b*r/d will match a/bar/d but not a/ba/r/d
- Option -nw should turn off all wildcard matching so foo[bar] is matched
  literally and [bar] is not considered a regular expression
- Atheos port
- Debugging of Unix and VMS large file ports.  Most features may work now
  on these ports for large files.  Still need to fix 2 GB to 4 GB when not
  compiled with large file support
- On VMS, added an open callback function which (where supported) senses
  the process RMS_DEFAULT values for file extend quantity (deq)
  multi-block count (mbc), and multi-buffer count (mbf), and sets the
  FAB/RAB parameters accordingly.  The default deq is now much larger
  than before (16384 blocks, was none), and the default mbc is now 127
  (up from 64), speeding creation of a large archive file.  The "-v"
  option shows some of the activity.  On old VMS versions, RMS_DEFAULT
  sensing (GETJPI) fails (silently, without "-v"), and no changes will
  be made.  Even there, (DCL) SET RMS /EXTEND = <big> can help
  performance.  RMS_DEFAULT values override built-in default values.


New things in Zip 3.0c

- Converted to using 64-bit file environment instead of transitional functions
  like fseeko64 for ports that support it
- Added "--" argument to read all following arguments as paths
- Second help page added
- Binary detection adjusted from 20% binary is binary to 2%
- When -R and -i used together now -i has precedence over -R
- Archive names with spaces can now be tested on MSDOS and Win32


New things in Zip 3.0b

- Fixed ifdefs so can test base code by compiling with NO_LARGE_FILE_SUPPORT, then
  compiling with NO_ZIP64_SUPPORT to test 64-bit file calls (if port enables) but
  otherwise use base code, and compiling normally to enable Zip64 code
- Unix Zip64 fixes - should now be able to create and read large files
- WinDLL changes to support Zip64.  Zip 3.0 dll named Zip32z64.dll
- New VB example to show use of Zip32z64.dll
- New options -sc (show final command line and exit) and -sd (show each
  step zip is doing, a little different than verbose which is still there) added
  to help debug but both or at least -sd might go away in the release
- Some minor posted bugs fixed (see Changes)


New things in Zip 3.0a

- Initial Zip64 support allowing large files and large numbers of files
- New command line processor
- Other changes, see file Changes


Note:  Zip 2.4 was never released.  That code was the start of the Zip 3.0
effort above.


New things in Zip 2.3

- IBM OS/390 port (Unix like, but EBCDIC) by Paul von Behren
- Apple Macintosh (MACOS) port by Dirk Haase
- Theos port by Jean-Michel Dubois
- Multibyte characterset support by Yoshioka Tsuneo
- Support for ISO 8601 date format with -t and -tt options
- Info-ZIP license


New things in Zip 2.2

- BEOS port by Chris Herborth
- QDOS port by Jonathan Hudson
- TANDEM port by Dave Smith
- WINDLL port (16-bit Win 3.x and 32-bit WinNT/Win95) by Mike White
- SYSV packages support by John Bush
- zip -P SeCrEt encrypts entries in the zip file with password SeCrEt
  (WARNING: THIS IS INSECURE, use at your own risk)
- zip -R recurses into subdirectories of current dir like "PKZIP -rP"
- zip -x@exclude.lst excludes files specified in the file exclude.lst
- zip -i@include.lst includes files specified in the file include.lst
- zip -@ only handles one filename per line, but supports whitespace in names
- zip -t mmddyyyy, 4 digit year number for uniqueness of years beyond 2000
- zip -tt mmddyyyy only includes files before a specified date
