In this file we record the changes since the first GAP 4 release of
the GUAVA package.

Version 3.20 (2-2025)
   o Many changes to the manual were made. Accumulated anachronisms were revealed by manual/example
     test extraction via AutoDoc
   o The C23 standard defines a bool type and that will shortly be the default for gcc.  Adjusted old C code 
     (which defined its own bool type).
   o CoveringRadius() for codes over small non-binary fields was throwing an error.  Fixed, but a more permanent solution
     is needed.  (See issue #104)
   o Many other minor fixes (also revealed by AutoDoc's extraction of tests from the manual examples).
   
Version 3.19 (3-2024)
   o Fix various issues in the C source code, including potential buffer
     overflows and many compiler warnings
   o Various other minor and/or janitorial changes

Version 3.18 (1-2023)
   o Enhance the `configure` script to accept `--with-gaproot=PATH`

Version 3.17 (9-2022)
   o Add back QCLDPCCodeFromGroup method (it was accidentally removed
     between Guava 3.8 and 3.9)
   o Fix out of bounds access in the C code
   o Fix most (all?) compiler warnings in the C code
   o Fix PutStandardForm *again*
   o Update several outdated manual examples
   o Avoid accidentally displaying the output of subprocesses to the user
   o Improve the package banner
   o Various minor and/or janitorial changes

Version 3.16 (4-2022)
   o CirculantMatrixi() now circulates to the right.
   o Build of the automorphism group subsystem by Jeff Leon was failing on Macs : fixed

Version 3.15 (8-2019):
   o Fixed decoding of cyclic codes
   o Several updates to build system
   o Updated Travis integration
   
Version 3.14 (4-2018):
   o The external binaries from J. S. Leon and Cen Tjhai can now be used on all 
     architectures (Unix/Linux, MacOS, and Windows) 
   o The bug fix for MinimumWeight() from 3.13 was not sufficiently well tested...
   o The decoding method for cyclic codes fails in certain situations.  We are leaving this as
     a known bug for the moment.
   o A bug fix for MinimumDistanceLeon() from Alex K. 
   o Lots of clean up of the lib files -- removing old comments, obsolete version strings, 
     leftovers from CVS, etc.
   o Constructions were added for several of the optimal codes in the bounds tables that 
     were referenced in the now defunct online table by Brouwer and Verhoeff.

Version 3.13 (2-2016):
   o Incorporated fixes by Dima Pasechnik. 
   o Incorporated fixes by Jerome Benoit.
   o Fixed bug in MinimumWeight() uncovered by Simon Tinius.
   o The infix "in" operator was not working for the case of a codeword 
     in a code, when the code was defined by a generator polynomial.  
   o Fixed BCH decoding 
   o Changes to the test suite:  moved test files to a separate "tst" 
     subdirectory,  added "decoding.tst" file which includes thorough tests 
     of decoding algorithms, modified "guava.tst" so that randomization of 
     input values does not effect output. Added "hadamard.tst" for testing the 
     construction of Hadamard matrices
   o Rewrite of the algorithms for constructing Hadamard matrices.  Hadamard 
     matrices can be constructed using Sylvester's and Paley's (type I and II) 
     methods.  The Paley constructions use properties of the quadratic 
     residues in a finite field, which previously was assumed to be of 
     prime order - GF(p) - now we can also handle extension fields - GF(p^k).
     The smallest order without a construction is now 92.
   o Changes necessitated by switch to GitHub (mostly to the webpage)
   o Added ErrorVector() convenience function for creating small weight
      error vectors from a list of error positions (used in testing Decode()
      methods.)
   o Cleaned up Decode/Decodeword which are supposed to return info. words 
     and corrected codewords respectively.  Many codes with SpecialDecoder 
     functions were doing the wrong thing.
   o Tested against GAP 4.8.1 and made changes necessitated by GAP updates.
     (E.g. ReadTest -> Test)

Version 3.12 (5-2012):
   o More work on configure/make.  Switched "configure" script to that 
     written by Frank Lubeck for Browse. EDIM, etc.
   o Revamped init.g and read.g and the AvailabilityTest function in 
     PackageInfo.g for GAP 4.5 compatibility.
   o Some fixes to guava.tst.  There are now exactly 4 known errors. 
   o Switched bibliography database in /doc to an xml format and repaired
     many LaTeX warnings due to inappropriate Label attributes in 
     <ManSection> tags.

Version 3.11 (1-2012):
   o General editing and improvements to the documentation.
   o Various modifications for compatibility with GAP 4.5.
   o Rework of configure/make process for compiling binaries of subsystems
     written by Leon and Tjhai.
   o Revamped the "guava.tst" file.
   o Bug fix in TraceCode reported by Stanislav Bulygin.
   o Fixes to RootsCode, bugs reported by Andries Brouwer.
   o One known bug: Decoding of BCH codes is broken.

Version 3.10 (3-2009):
   o Improved fix for BCH decoder bug reported by Heiko Dietrich.
   o Bug fix for GV lower bound reported by Stanislav Bulygin.

Version 3.9 (12-2008):
   o Fix for BCH decoder bug reported by Heiko Dietrich.
   o Fix for MinimumDistanceLeon bug reported by Jorge Ernesto 
     Perez Chamorro

Version 3.8 (11-2008):
   o Fix for C code computing minimum distance written by CJ Tjhai

Version 3.7 (08-2008):
   o Fix to leonconv.c reported by Klaus Lux.
   o Fix to libtool problem in leon configure script, 
     reported by Petr Salinger and Timothy Abbott.

Version 3.6 (06-2008):
   o Added QCLDPCCodeFromGroup function.
   o Improved HadamardMat.
   o Corrected a missing ';' in Makefile.in, as well as several
     other minor make edits (thanks to Timothy Abbott)
   o Updated documentation.

Version 3.5 (04-2008):
   o Minor changes (permission changes, etc)

Version 3.4 (03-2008):
   o Modified the configure file for the C code (R. Miller).
   o Updated documentation.

Version 3.3 (03-2008):
   o Added new C code written by CJ and a new Guava function MinimumWeight
     which is *much* faster than MinimumDistance (when the ground
     field is GF(2) or GF(3)).
   o Added Andreas Brouwer's patch for Leon's code to avoid some
     memory problems.

Version 3.2 (01-2008):
   o Added a macro for malloc.h in leonconv.c to fix compilation error
     under Mac OS X
   o Added ExtendedReedSolomonCode, QuasiCyclicCode, CyclicMDSCode, 
     FourNegacirculantSelfDualCode, ConstructionXCode, ConstructionXXCode,
     BZCode, IsDoublyEvenCode, IsSinglyEvenCode and IsEvenCode functions.

Version 3.1 (10-2007):
   o Fixed a bug in MinimumDistance reported by Lappas Eleftherios.
   o William Stein fixed a compilation bug.
   o Fixed XML bugs pointed out by Frank Luebeck and Max Neunhoeffer

Version 3.0: (7-2007) 
   o Robert Miller and Tom Boothby added as authors. 
   o Leon's code is now GPL'd (many thanks to Vera Pless 
     and Steve Smith)! Robert and Tom are working on rewriting 
     the code and have already fixed some bugs, compiling errors, 
     and memory problems.
   o Fixed several bugs reported by Punarbasu Purkayastha (a EE
     grad student at the Univ of Maryland) in Decode, Decodeword
     for ReedSolomon codes, as well as a problem in the
     GUAVA documentation.
   o Re-united the "odd" and "even" forks of the GUAVA code.

Version 2.8: Forked off a branch of GUAVA which is entirely
GPL'd code. (None of Leon's code is included.) Otherwise, same
as 2.7. This branch is used in SAGE (sage.scipy.org).

Version 2.7: (5-2005) 
   o Cen Tjhai ("CJ") added as author.
   o cjt: Complete rewrite of the files in the tbl subdirectory. 
     There are (as of May 11, 2006) as updated as Brouwer's
     online tables (www.win.tue.nl/~aeb/voorlincod.html).
   o cjt: Created two functions in codeman.g*, SubCode and 
     ConstructionB2Code. The ConstructionB2Code function is empty
     and to be implemented in a future version.
   o wdj: GUAVA Manual changes.

Version 2.6: Forked off a branch of GUAVA which is entirely
GPL'd code. (None of Leon's code is included.) Otherwise, same
as 2.5. This branch is used in SAGE (sage.scipy.org).

Version 2.5: (1-2006) 
   o Fixed undesired feature in Decodeword (spotten by Cayanne 
     McFarlane).
   o Added MinimumWeightWords to manual; modified GAP code
     for MinimumWeightWords to speed it up. 
   o Modified CheckMatCode to "Set" *mutable* generator
     and check matrices.
   o Added BitFlipDecoder, a fast decoder for LDPC codes 
     (written with Gordon McDonald).
   o Added GuavaVersion and guava_version
   o Added FerrorDesignCode, written with Peter Mayr at Linz
     (one of the SONATA authors). This requires SONATA be
     loaded.
   o Added QQRCodeNC (written with Greg Coy).
   o Miscellaneous additions to the GUAVA manual.

Version 2.4: (6-2005) Minor bug fix - 
   o In MatrixRepresentationOnRiemannRochSpaceP1,
     cleaned up code and fixed a bug (GAP does not process 1 the 
     same as x^0 in some cases).
   o Fixed spelling error in guava.tst file.

Version 2.3: (5-2005)
   o added PermutationDecoderNC, CyclicDecoder
   o change PermutationGroup in PermutationDecoder
     to PermutationAutomorphismGroup 
   o in codegen.gi, line 2066, replace C.GeneratorMat 
     by C.EvaluationMat, and then add the existence of this extra 
     record component to the documentation 
   o classical Goppa = AG codes over P^1
   o curve record data structure for plane curves 
     and some associated functions
   o divisor record data structure for curves (only used for P^1)
     and some associated functions
   o automorphism group of a divisor on P^1 (very slow)
   o function computing matrix representation of group 
     action on Riemann-Roch space (in P^1 case only, also
     very slow)
   o one point AG codes
   o nicer evaluation codes in 2-d
   o miscellaneous functions for multivariate polynomials
   o new section on algebraic geometric codes in manual

Version 2.0002 (5-2005)
   o A renaming of GUAVA 2.0, for the GAP 4.4.5 release.

Version 2.0001: (12-2004)
   o Merely added PolynomialByExtRepNC to GUAVA. (A *temporary* addition to
     last until GAP 4.4.5 was released.)

Version 2.0: (12-2004)
   o Changed `ViewObj` method for random linear codes, 
     speeding up the implementation of the RandomLinearCode command.
   o Modified BCHCode and RootsCode implementation.
   o Corrected bug in UpperBoundElias.
   o Rewrote GUAVA documentation into GAPDoc, with many revisions.
   o Added EvaluationCode and related codes
     (GeneralizedReedMullerCode, GeneralizedReedSolomonCode, 
      OnePointAGCode, joint with Jason McGowan)
   o Added interpolation decoding method for GeneralizedReedSolomonCode
     (joint with Jason McGowan), GeneralizedReedSolomonDecoder.
   o Added S. Gao decoding method for GeneralizedReedSolomonCode,
     GeneralizedReedSolomonDecoderGao.
   o Fixed bug in MinimumDistance (wrong result if G=(I|A)
     and A had a row of 0s)
   o MinimumDistanceRandom algorithm implemented in non-binary case
     (joint with Wayne Irons).
   o Added list-decoding algorithm GeneralizedReedSolomonListDecoder
     (joint with Clifton Lennon) and related commands
     (some undocumented). 
   o Bug fix for SortedGaloisFieldElements (used to construct
     Gabidulin codes).
   o CalculateLinearCodeCoveringRadius changed to a slightly faster
     algorithm.
   o minor bug fix for ExhaustiveSearchCoveringRadius
   o minor bug fix for IncreaseCoveringRadiusLowerBound
   o Changed ConstantWeightSubcode so it does not call Leon's
     program if wtdist is not installed. Moreover, the procedure 
     interfacing with the binary had a bug, which was fixed.
   o Added check in AutomorphismGroup: if Leon's desauto is not
     compiled (e.g., on a windows machine) then it calls PermutationGroup 
     command instead.
   o Added Decodeword (which also works for non-linear codes)
   o Added NearestNeighborDecodewords (for linear codes)
   o Added NearestNeighborGRSDecodewords (for GRS codes)
   o Added PermutationAutomorphismGroup (which will replace the
     poorly named PermutationGroup command added in version 1.9)
   o Moved several decoding commands from codeops.gi to decoders.gi
     (with no change in functionality).
   o Added LowerBoundGilbertVarshamov and LowerBoundSpherePacking.
   o Added DivisorsMultivariatePolynomial and related commands
     (some undocumented). 
   o Released under the GNU GPL.

Version 1.9: (3-2004)
   o Faster MinimumDistance algorithm (joint with Aron Foster, a student).
   o MinimumDistanceLeon algorithm (joint with Aron Foster) in 
     binary case.
   o Faster PutStandard form algorithm (with Frank Luebeck).
   o New PermutationGroup command (for possibly non-binary codes).
   o New PermutationDecode command.

Version 1.82: (7-2003)
   o Slight changes to prepare for the different loading 
     mechanism for GAP packages used in the upcoming GAP 4.4.

Version 1.8: 
   o New commands for toric codes. 

Version 1.7: (2-2003)
   o Various typos in manual fixed.
   o lib/codecstr.g[di]:
       `AmalgamatedDirectSumCode' previously misspelt as 
       `AmalgatedDirectSumCode' corrected.
   o Version Id headers in doc/* and lib/* files added.
   o README:
       updated.
   o init.g:
       now checks the C code has been compiled and warns of
       missing functionality if not compiled.
   o banner.g, lib/setup.g:
       banner split off as a separate file.
   o PkgInfo.g, CHANGES (this file):
       added.

Version 1.6: (9-2001)
   New maintainer: David Joyner.
   o Bugs in `IsAffineCode' and `MinimumDistance' (reported by
     Akihiro Munemasa, who also supplied a fix for the `IsAffineCode'
     bug) fixed.
   o Manual thoroughly reworked. HTML manual made available.

Version 1.5:
   GAP 4.2 version. Not compatible with GAP 4.1.

Version 1.4:
   First GAP4 version by Lea Ruscio. Created for GAP 4.1. 
   Incompatible with GAP 4.2.

Version 1.3:
   Last GAP3 version.

  - Joe Fields (fieldsj1@southernct.edu)
    March 2018
