The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension PerlIO::Gzip.

0.01  Sat Feb  3 13:51:15 2001
	- original version; created by h2xs 1.21 with options
		-c -n Layer::Gzip /usr/local/include/sfio.h

0.02  Sunday
      parse gzip header, 40 regression tests

0.03  Tue Feb  6 18:50:01 GMT 2001
      Change name from Layer::Gzip to PerlIO::gzip following feedback on p5p.
      Add checks to Makefile.PL to ensure you have 5.7.0 [or later :-)] and
      PerlIO configure.

0.04  Tue Feb  6 23:56:16 GMT 2001
      Added autopop mode.  There must be a better name for it.
      Changed order in PerlIOGzip_pushed to call PerlIObuf first (D'oh)
      and to pop without error in autopop mode with a write.

0.05  Sun Feb 11 22:12:42 GMT 2001
      Mmm. CRCs at the ends of files - maybe I should check them?
      Now gives error on close if the z_stream is at the end and either
      the CRC or the length recorded in the gzip trailer is wrong.  Doesn't
      try these checks for files with no gzip header.
      PROTOTYPES: DISABLE in the .xs

0.06  Fri Feb 16 23:59:18 GMT 2001
      We have compression!
      Hmm. Didn't check the return from close on perl.gz - transpires there
      was a bug in my code to read the length of uncompressed data from the
      gzip file
      Hmm. Why was I passing *my* args down to the PerlIOBuf I'm a derived
      class of? On the other hand, why not? ISA or HASA? My args, HASA, I
      guess, so I'll give it NULL args.

0.07  Sun Feb 18 23:21:48 GMT 2001
      s/to/too/ in the BARF message in Makefile.PL [1 character change. Look
      at the paperwork that generated :-)]
      use XSLoader rather than Dynaloader.

0.08  Mon Feb 19 21:14:45 GMT 2001
      fix bug in get_more's return value that basically prevented you from
      reading any header with embedded filename from an unbuffered layer.
      [Obscure, but it's supposed to work with unbuffered] However, still
      problems with unread, so you can't inflate any gzip file with an
      original filename (or comment) in the header. This is related to the
      /* fix me */ mentioned in perlio.c. Hopefully it will be soon.

0.09  Sat Apr 21 16:14:54 BST 2001
      The perlio.c layer API has changed by the 5.7.1 release. 0.08 and earlier
      won't compile - 0.09 mainly consists of necessary changes to function
      prototypes and the layer struct. 5.7.1 contains a known bug - when
      opening a file with layers specified, failure of a layer to push is
      supposed to cause the open to fail. In 5.7.0 it did. In 5.7.1 it doesn't.
      Commented the tests that will fail due to this bug.
      Attempted to detect the "OS" type at compile time to set the default
      OS for the gzip header.

0.10  Sun Aug 26 13:05:25 BST 2001
      By 5.7.2 it seems that the pushed argument is passed in as &sv_undef
      rather than NULL. I wasn't testing SvOK() and was getting use of
      uninitialized value errors.

0.11  Mon Oct 29 20:28:38 GMT 2001
      perlio.c layer API has changed again with the addition of a dup()
      function for cloning layers across. (both within and across ithreads)
      Currently I don't want to pretend that PerlIO::gzip can cope with this,
      hence it will croak. Fixing this properly is a TODO.

0.12  Mon Mar 18 21:03:52 GMT 2002
      Catch up with the 5.7.3 perlio API changes.

0.13  Tue Jul  2 21:55:08 BST 2002
      Richard Clamp sent me a complete patch to catch up with the 5.8.0-RC2
      perlio API changes, and sprinkles C<pTHX>ie dust to make it compile for
      a threaded perl. (But please don't create any threads or fork on Win32
      while a gzip layer is active, as bad things will happen (duplicate
      frees))

0.14  Fri Jul 19 23:19:24 BST 2002
      Whoops. Same undefined behaviour bug in my argument passing code as
      PerlIO::subfile. No surprise there, as PerlIO::subfile got the code
      from PerlIO::gzip. So I'll migrate the fix back from there to here.
      Well spotted valgrind.
      Use valgrind. http://developer.kde.org/~sewardj/
      It's far more effective than coffee.

0.15  Tue Jul 15 21:07:11 BST 2003
      gzip.xs was using PerlIOBuf_close, which isn't on the list of exported
      symbols. Hence gzip.xs won't link on platforms such as AIX and Windows.
      This is fixed in 5.8.1 - Inline the code for PerlIOBuf_close when
      building for 5.8.0.

0.16  Fri Jun 25 09:38:28 BST 2004
      Merge this in from Sun Nov  4 15:27:24 GMT 2001:
      Split the tests from test.pl into t/read.t, t/write.t
      use Test::More; [Happy Schwern? :-)] and loop over several buffering
      possibilities.
      
      Actually unlink the test perl.gz file.

0.17  Wed Jun 30 18:29:30 BST 2004
      Track down the cause of the problem reported by some Linux users. It's
      another manifestation of the core perlio bug, whereby perlio loses data
      if you push another layer onto a file handle with unread data. In this
      case the layer push is happening on some Linux systems because the stdio
      layer isn't supporting Perl's fast buffer snooping, presuambly because
      glibc has decided to use mmap() for the file. Work around is for
      PerlIO::gzip to push its buffering layer before it calls unread, which
      is a somewhat messy hack, but works.
      This means that all the TODO tests can be taken out, as they now pass.

      Fix small typo in read.t

0.18  Sun Oct  1 22:08:32 BST 2006
      Patch from alexchorny [at] gmail.com (#21469) - write.t fails
      (I had the skip arguments wrong)
      TODO 2 tests in read.t which fail. I'm infering that this is because
      :stdio opens in text mode, and there's no way to tell it to open in
      binary mode. Time to consult p5p.

0.19  Sat Feb 28 11:31:29 CET 2015
      Two patches from zefram [at] fysh.org
      (#92412) - usesfio config removal breaks
      And whose fault was this anyway? (See core commit 0b39d4dc4ab83828)
      (#92031) - printf format mismatch

0.20  Wed Jun 21 21:29:59 CEST 2017
      Patch from Slaven to fix test skip count on Win32 (#76335)
      Really this should have been in 0.19.