Changelog for Spartns
=====================

Version numbers are in the format A.B.C; the meaning of changes
in each position is:

A: incompatible changes or major new features
B: new features
C: bugfixes and cleanups

(This was not the case until 0.0.3)

1.4.3 - 09 Oct 2009
-------------------
	* The docstring issue in XCL has been fixed by Peter Graves!
	  Now all type declarations and optimize settings are used on
	  all Common Lisps (the #-xcl hack has been removed!).

1.4.2 - 07 Oct 2009
-------------------
	* Cleaned up tests

1.4.1 - 11 Aug 2009
-------------------
	* Fixed robust-adjust-array so it works without the element-type
	  argument; also fixed some typos in the documentation.
	* Include full text of GPL, LGPL and LLGPL, so there is absolutely
	  zero information missing for users.

1.4.0 - 11 Mar 2009
-------------------
	* Keeping an index fixed now also works with fast-traversals

1.3.0 - 28 Feb 2009
-------------------
	* It is now possible to traverse while keeping indices fixed.
	  For example,
	  (setf i 10)
	  (traverse-3dmatrix ((i j k) val matrix :dont-bind (i))
	    ...)
	  will traverse the two rightmost dimensions of matrix
	  (j, k). i will not be bound, so it will be fixed as
	  10.
	* Document the fact that the ARRAY and HASH schemes are
	  actually also SETFable while being traversed (and
	  include this as a test case).
	* Document the fact that Spartns works with Scieneer Common
	  Lisp (except for the benchmarks)

1.2.7 - 05 Oct 2008
-------------------
	* When traversing CVECTORs, values are now SETFable. (This
	  is not true for other schemes). Documented in manual.

1.2.6 - 01 Oct 2008
-------------------
	* Remove debugging function call...
	* Expanded and clarified some online documentation strings

1.2.5 - 01 Oct 2008
-------------------
	* Another attempt to fix w/fast-traversals, including better
	  documentation.

1.2.4 - 18 Sep 2008
-------------------
	* Fixed bugs in w/fast-traversals (thanks once again to Yves
          Vandriessche!)
	* Fix example of w/spartn-traversals usage in the manual
	* Also did some cosmetic changes in the manual

1.2.3 - 29 Aug 2008
-------------------
	* Fixes off-by-one bug found by Yves Vandriessche in w/fast-traversals
	* Some internal cleanup
	* Small updates to documentation: mention MCL, plus some
	  other additions

1.2.2 - 29 Jun 2008
-------------------
	* Removed some assertions that were causing problems 
	  with GCL

1.2.1 - 29 Jun 2008
-------------------
	* Removed old entries from TODO file
	* Updated and cleaned up the manual

1.2.0 - 29 Jun 2008
-------------------
	* New feature: besides resize-amount, it's now possible to
	  pass a resize-function to defspartn (for example, you can
	  double the size of a CVECTOR each time it gets full. You
	  would then use:resize-function (lambda (x) (* 2 x))).
	  So, "resize-amount 10" is the same as
	  "resize-function (lambda (x) (+ x 10))"
	* Fixed bug when non-zero-list was ommited. Thanks a
	  lot to Yves Vandriessche for sending a detailed bug
	  analysis!
	* Small changes to online documentation
	* Fixed thinko in PDF manual (thanks Yves Vandriessche)

1.1.6 - 07 Apr 2008
-------------------
	* Load lisp-unit before using it

1.1.5 - 07 Apr 2008
-------------------
	* Fix silly bug in ASDF file
	* Some small enhancements to the manual
	* Document the fact that Spartns does not work with Corman
	  Common Lisp

1.1.4 - 05 Apr 2008
-------------------
	* Spartns now works with Clozure Common Lisp
	* Fixed symbol generation again (and thanks again to Francis
	  Leboutte)
	* Don't require lisp-unit and test suites for ordinary use
	  (reported by Francis Leboutte)

1.1.3 - 01 Apr 2008
-------------------
	* Traversals on the HASH scheme have been optimized

1.1.2 - 31 Mar 2008
-------------------
	* Include spartns.asd (oops!)

1.1.1 - 31 Mar 2008
-------------------
	* Small optimization (using MULTIPLE-VALUE-BIND instead of
	  LET) makes the CVECTOR scheme much faster on SBCL
	* More cleanups

1.1.0 - 31 Mar 2008
-------------------
	* All schemes now cons much less and are faster (the previous
	  code would build structures without need)
	* Small optimizations
	* Function names are now created using uppercase for symbols
	  (GET-SCHEME instead of |GET-scheme|); thanks to Francis
	  Leboutte for reporting this
	* Cleaned up benchmarks a lot
	* Cleaned up tests a bit

1.0.1 - 10 Mar 2008
-------------------
	* Spartns again fully works with Allegro Common Lisp

1.0.0 - 14 Feb 2008
-------------------
	* Fast traversals: if you know that the sparsity structure of
	  your tensors will not change, you can traverse them *very*
	  fast. EXCEPT for Allegro Common Lisp
	* Equality test is now configurable (not just 'EQL, although
	  'EQL is still the default)
	* The CVECTOR scheme has been enhanced: cvectors will automatically
	  be resized (by a configurable anmount) when they're full.
	  EXCEPT for Allegro Common Lisp (it will signal an error)
	* It is possible to "pack" sparse tensors, releasing unused memory.
	  This is useful if you add an unknown number of elements to a
	  tensor represented as CVECTORS, and end up with extra unused
	  space.
	  EXCEPT for Allegro Common Lisp
	* Fix one-dimensional cvector spartns (the MAKE-* function was
	  creating 0-dimensional arrays)
	* Clarify the meaning of the :non-zeros key argument to defspartn
	* Add a section to the manual explaining how to create tensors
	  with unknown size, make them static and traverse quickly

0.2.0 - 06 Feb 2008
-------------------
	* New feature: you can traverse several tensors, possibly
	  stipulating that some indices are shared among tensors
	  (think matrix multiplication, for example)
	* Works with XCL now
	* Tests are a bit more robust, but still far from good

0.1.3 - 31 Jan 2008
-------------------
	* benchmark.lisp now adjusts maximum memory for Poplog, so all
	  functions finish sucessfully
	* spartn-copy was also broken; it has been fixed
	* More tests added

0.1.2 - 31 Jan 2008
-------------------
	* Fix traversals on the HASH representation scheme
	* Fix the ARRAY representation scheme

0.1.1 - 30 Jan 2008
-------------------
	* Now the HASH scheme works with Poplog
	* Documentation updates

0.1.0 - 30 Jan 2008
-------------------
	* New representation scheme, ARRAY, for dense dimensions

0.0.4 - 29 Jan 2008
-------------------
	* cvector scheme has been slightly optimized. Conses less and
	  is a bit faster
	* Test utils.lisp, not just spartns
	* Some internal cleanup and reorganization

0.0.3 - 29 Jan 2008
--------------------
	* Reformatted changelog
	* Some internal cleanup
	* Tests work with GCL now

0.0.2 - 28 Jan 2008
--------------------
	* ASDF installable
	* Made package and tests more robust with eval-when
	* Other minor changes

0.0.1 - 27 Jan 2008
--------------------
	* Initial release