Change history for MIME-Base64

3.16      2020-09-26
  - Convert the build to Dist::Zilla to ensure we're releasing well built
  - Ensure all tests are using strict and warnings (thanks, Nicolas R).
  - Cleanup this change log
  - Add a .mailmap to cleanup our contributors list
  - Use `our` instead of `use vars`
  - Bump the required Perl version to v5.6.2

3.15      2015-01-12
  - Avoid compilation warnings on Windows.
  - Restore compatibility with perl-5.4

3.14      2013-07-02
  - Install to 'site' instead of 'perl' when perl version is 5.12+

3.13      2010-10-26
  - The fix in v3.12 to try to preserve the SvUTF8 flag was buggy
    and actually managed to set the flag on strings that did not
    have it originally.

3.12      2010-10-25
  - Don't change SvUTF8 flag on the strings encoded [RT#60105]
  - Documentation tweaks

3.11      2010-10-24
  - Provide encode_base64url and decode_base64url functions to process
    the base64 scheme for "URL applications".
  - The decode_base64() does not issue warnings on suspect input data
    any more.

3.10      2010-10-11
  - Provide functions to calculate the length of encoded and decoded
    base64 strings [RT#62404]

3.09      2010-01-25
  - The Quoted-Printable encoder would sometimes output lines
    that were 77 characters long.  The max line length should be 76.

3.08      2009-06-09
  - EBCDIC changes from core (Thanks, Jarkko Hietaniemi)
  - Get rid of the PERL_CORE hacks (Thanks, Nicholas Clark)

3.07      2005-11-30
  - Use a Makefile.PL that is also suitable for core perl.

3.06      2005-11-26
  - Documentation tweaks.
  - use XSLoader; perl-5.6 now required.
  - Some consting from bleadperl.
  - Unbundled the {en,de}code-{base64,qp} utility scripts.
    These are now found in the MIME-Base64-Scripts package.

3.05      2004-09-20
  - Steve Hay <> found the warn test broken
    on Windows and provided a fix.

3.04      2004-09-18
  - Fixed the bad-sv.t test script to actually contain the
    correct expected result as of v3.02.

3.03      2004-08-25
  - Forgot to increment version number in MIME::QuotedPrint even
    if its interface changed in 3.02.  As a result you will now
    need to require MIME::QuotedPrint 3.03 if you want to ensure
    it provides the binmode interface.

3.02      2004-08-24
  - The encode_qp() function now takes an optional third argument
    to select binary encoding mode. (RT #7456)
  - The result of encode_qp($non_empty, $eol) will now always be
    $eol terminated.  If the string to encode does not end with "\n"
    then a soft line break is appended to the result.  As an example
    encode_qp("foo") used to be encoded as "foo", but now encodes as

3.01      2004-03-29
  - By compiling the extension with PERL_NO_GET_CONTEXT we can
    make it slightly faster on a threaded perl.  No change on a
    regular perl.  Patch provided by Beau E. Cox <>.
  - Fixed missing ";" with assert.   Patch provided by
    Brendan O'Dea <>.

3.00      2004-01-14
  - Drop the pure Perl implementations of the encoders and
    decoders.  They are bloat that hides real problems in
    the XS implementations.  I will re-release them separately
    in the new MIME-Base64-Perl distribution.
  - The 'gcc -Wall' fix in 2.22 broke support for perl5.005,
    as the isXDIGIT() macro is not available in that perl.
    This problem has now been fixed.

2.23      2004-01-08
  - Documentation fixes by Paul Croome <>.

2.22      2004-01-08
  - Fix 'gcc -Wall' complaints.

2.21      2003-10-09
  - Documentation tweaks.
  - Don't rely on SvEND(sv) == '\0' as discussed in the perl5-porters
    mailing list thread that starts with
  - Should now pass test suite even without XS support.
  - Perl v5.005 or better is now required.

2.20      2003-05-13
  - decode_qp() recognize soft whitespace when there is whitespace
    between the '=' and the '\n'.

2.19      2003-05-13
  - decode_qp() did eat up all trailing whitespace in the string decoded.
  - Only whitespace in front of "\n" should go.
  - Win32 fix for t/warn.t by Reini Urban <>.

2.18      2003-03-09
  - Fix up INSTALLDIRS for perl-5.8 and newer.

2.17      2003-03-09
  - Make it reliable to disable base64 decoding warnings by
    resetting $^W in recent perls.  Would really like to be
    able to do real lexical warnings but the current mechanism
    does not seems suitable for XS code.
  - Passing "" as $eol to encode_qp() disable soft line
    breaks as well.
  - Sync up with changes in bleadperl:
    - safer patchlevel.h include
    - bad cast

2.16      2003-01-05
  - Fixed the encode_qp() line breaking code.  It sometimes
    made lines longer than 76 chars and it could even get into
    an infinite loop on certain inputs.

2.15      2003-01-03
  - Fixed the XS based decode_qp() for strings where a =XX
    sequence was followed by digits.
  - Faster encode_qp() for long strings with lots of chars
    that need escaping.
  - The old_decode_base64() function introduced in 2.13
    was returning undef for empty input on olders perls.
    This problem has been fixed.

2.14      2003-01-01
  - MIME::QuotedPrint functions now also implemented using XS
    which make them faster.  2-3 times faster when encoding line by
    line and as much as 200 times faster on long binary input.  There
    is probably some breakage on non-ASCII systems from this.
  - The encode_qp() function now takes an $eol argument in the
    same way as encode_base64() does.
  - Slight change in behaviour: the decode_qp() function now turns
    \r\n terminated lines into \n terminated lines.  This makes is
    more likely that encode_qp(decode_qp()) round-trip properly.
  - Included {en,de}code-{base64,qp} utility scripts.

2.13      2002-12-27
  - Sync up with bleadperl:
    - Documentation update
    - EBCDIC support
    - Whitespace tweaks
    - Improved Unicode support
    - Test suite tweaks
  - Improved version of the old_{en,de}code_base64 functions
    contributed by Paul Szabo <>.

2.12      2001-02-23
  - Speed up pure perl base64 encoder/decoder by using join/map instead
    of while loop.  Contributed by Arno Beckmann <>
  - Doc update contributed by Jerrad Pierce <belg4mit@CALLOWAY.MIT.EDU>
  - Downgrade UTF8 strings before starting to encode.

2.11      1999-02-27
  - Fixed bogus "Premature end of base64 data" warning (Thanks, Dwayne
    Jacques Fontenot)
  - Workaround for Redhat shipping trial releases of perl.

2.10      1998-12-18
  - A tweak that should make compilation with some old perl5.00[23]
    perls better.
  - A cast that make some compilers more happy.

2.09      1998-11-13
  - The 2.08 release did not compile with perl5.005_53, because
    all simple globals now need to be prefixed with "PL_".

2.08      1998-10-22
  - Found another tweak to speed up decode_base64() with another 3%.
  - Improved MIME::Base64 documentation a little.

2.07      1998-10-21
  - Faster and smarter C implementation of the decode_base64()
    function.  The new decode_base64() was 25% faster when tested
    on Linux, i586, gcc -O2.

2.06      1998-07-15
  - The decode_base64() implemented in pure perl will only carp
    (not croak) if length of data to decode is not a multiple 4.  This
    actually made 'make test' fail after 'rm Base64.xs'.

2.05      1998-01-27
  - The decode_base64() would previously allocate a too short buffer for the
    result string when the trailing "==" padding was missing in the string to
    be decoded.
  - The encode_base64() now allocate one byte less space in the result
    strings returned.

2.04      1997-12-02
  - Documentation expanded a bit.

2.03      1997-07-10
  - Decode_base64() doesn't croak on premature ended data any more.
    A warning is generated instead if running under -w.

2.02      1997-06-27
  - QuotedPrint fix by Roderick Schertler <>:
    - Long lines were not broken unless they're at the beginning
      of the text
    - Lines near but not over 76 chars were broken when they
      shouldn't be

2.01     1997-06-13
  - Base64.xs: Avoid type conversion warnings with some compilers
  - Minor documentation updates

2.00     1997-04-24
  - based on libwww-perl-5.08.