Initial version of MD5 code, using multiple-values, which we abandoned
due to boxing on each call to update-md5-block (might have been caused
by missing inline declaration for that function).
Initial public release, which moved to simple-array representation of
working state (md5-regs).  This is the first release that doesn't cons
for normal operations.  Posted on cmucl-help on 2001-11-09.
Actually this release was the first public release.  It switches over to
using kernel:32bit-logical-* instead of the silly signed-byte acrobatics
that were previously needed to get the various logical and ash operations
optimized.  Also added rudimentary file-comment.
First release that works on big-endian CMU CL releases.  Should also work
on other ANSI CL implementations, but quite suboptimally, of course.
First production-quality release:
o This takes on board comments by Raymond Toy, and drops optimizations
  and implementation-specific cruft that isn't really needed.
o The code has been reorganized quite a bit, to better expose the
  structure
o md5-checksum is renamed to md5-digest.
o Added doc-strings and comments where necessary, added documentation to
  the file comment.
o Added md5sum-sequence function.
o Fixed restriction on <512MB of input, we now support unlimited amounts
  of input, as required by the spec.  Since this causes one possibly
  bignum addition per call to update-md5-block, the user can revert
  to the old behaviour by putting :md5-small-length on *features* prior
  to compiling/loading the code.
o Added test suite that is contained in Appendix A.5 of RFC 1321.
This fixes the code to properly work when being loaded uncompiled into
CMU CL, as noted by John Wiseman.
Added ID comment, and fixed doc-string for finalize-md5-state.
Fixed a stupid thinko in the padding routine, as reported by Edi Weitz.
Since the code in question was needlessly convoluted, rewrote those
sections to make them clearer.  Added another test-suite to test whether
padding works correctly, when compared with md5sum.
Change CVS id comment identifier to work for new git repository.
Make md5 case-mode agnostic (via kmr and ironclad repositories).
Fix portable implementation of i (via sbcl and cl-md5).
Wrap buffer-size defconstant in eval-when (via cl-md5).

This aids portability, especially to allegro and openmcl.
Incorporate fix for partial updates ending on rest boundaries from sbcl.

In all previous versions, if an update-md5-state call received a
sequence which exactly filled a partially filled buffer, then that
buffer block was ignored and the agregate data not updated.
Ensure fix for small blocks works with md5-small-length feature.

Based on my different fix for the small blocks issue, which got
integrated into cl-md5 but not sbcl.
Enhance test code for incremental sums and portable character codes.

Previously the test cases relied on ASCII coding for characters, and
didn't test incremental byte by byte checksum calculations.
Added SBCL-specific changes from sb-md5, including fillpointer-fix for cmu.
Add missing eval-when :execute for sbcl *features* frobbing.
Integrated Lispworks-specific optimizations, refactored types a bit.

This is based on the LW4.4 port of MD5 by Dmitriy Ivanov, with some
modernizations and fixes/updates for newer LW.
Changed non-conforming defconstant to defparameter forms in test code.
Regularize use of keywords in #+/#- complex conditionals.