*** Version 0.9.9, 2026-05-11
 - Fix shared library build in macOS.  Thanks to Ross George for the patch!

*** Version 0.9.8, 2026-05-07
 - Change /usr/bin/env to env in Makefile.  Thanks to Ross George for the
   patch!

*** Version 0.9.7, 2026-01-09
 - Install frobby.h during "make install" if library was built
 - Allow overriding of "strip" during build.  Thanks to Helmut Grohne
   for the patch!

*** Version 0.9.6, 2025-12-22
 - Several updates for modern C++.  Thanks to Arthur O'Dwyer for the patches!
 - Fix compilation with GCC 12+.  Thanks to Nico Mexis for the patch!
 - Build executable in cmake build.  Thanks to Matthias Köppe for the patch!
 - Library soversion bump from 0 -> 1 since constants::version was renamed
   to frobby_version.

*** Version 0.9.5, 2021-02-23
 - Now maintained by the Macaulay2 developers, merging patches from
   Macaulay2, CoCoA, and Debian.
 - Add CMake build

*** Version 0.9.4  2018-08-16
 - >>>> UNOFFICIAL <<<<
 - Improved portability
 - guilty party: John Abbott


*** Version 0.9.0, 2011-09-23

 - Added support for computing Euler characteristic
 - Added a deformation algorithm for computing Hilbert-Poincare series
 - Added the Bigatti et al. algorithm for computing Hilbert-Poincare series
 - Improved the Slice algorithm implementation for computing H-P series
 - All option names can now be given as a unique prefix just as for action names
 - The analyze action can now report on strong and weak genericity
 - The library interface now supports primary decomposition
 - The library interface now supports associated primes
 - Reading input monomial ideals is now significantly faster

The new Euler characteristic code uses a new algorithm that is joint
work with Eduardo Saenz-de-Cabezon. As documented in our paper, the
Frobby implementation of this algorithm is much faster than
implementations of Euler characteristic algorithms in other
systems. The euler action has many options, but the default should be the
fastest for nearly all ideals.

The Hilbert-Poincare series code was written to compare the Slice
algorithm, the deformation algorithm and the Bigatti et
al. algorithm. The deformation has as far as I know never previously
been implemented or even very explicitly described in the
litterature. The Bigatti algorithm wasn't faster initially after
implementing it as described in the litterature, but with some
additional improvements it got significantly better. It still is not
faster for all ideals, but the improved version is still usually the
best algorithm which is why it is the default algorithm used.

*** Version 0.8.2, 2009-07-07

New features and improvements in this version include

 - Fast dimension and codimension of monomial ideals
 - Various speed improvements (see below)
 - Generation of random edge ideals
 - Optimization over maximal standard monomials with negative
   objective function.

The new (co)dimension code uses an algorithm gleaned from the source
code of Macaulay 2, though the code in Frobby is substantially faster
due to a few improvements. It is not known to me who to credit with
this algorithm. Now that Frobby supports negative objective functions,
the more general optimize action can also be used to compute the
dimension, but this is not nearly as fast.

There are also many smaller improvements. They are too many to list
here, but the more visible ones are shown below.

 ** Performance improvements

 - Actions frobgrob and optimize are substantially faster due to code
   improvements and due to the bound optimization now being
   accessible. It had been turned off by mistake in the previous
   release, even when explicitly requested via the command line option
   -bound. The bound optimization itself has been improved to work
   with objective funtions with negative entries.

 - Improved the pure power split selection strategies to choose a
   middle variable in case of ties instead of the left-most
   variable. This makes no difference for most inputs, but leads to
   dramatic speed-ups for some particular highly non-generic inputs.

 - All slice-based algorithms are slightly faster due to low-level
   code improvements.

 - The action optimize now uses the degree split strategy by default
   instead of median, which is faster.

 ** Deprecated functionality

 - The action frobgrob is deprecated and will be removed in a future
   version of Frobby. Use the action optimize with options
   chopFirstAndSubtract and maxStandard to achieve the same effect.

 - The split selection strategy named frob is now deprecated and will
   be removed in a future version of Frobby. Use the name degree to
   achieve the same effect.

 ** Miscellaneous improvements

 - The polynomial ring is named R in the Macaulay 2 format, which is a
   problem if there is also a variable named R in the ring, since then
   Macaulay 2 will report an error on reading the file. Frobby now
   renames the ring to R1 in that case, or R2 if there is also a
   variable named R1 and so on.

 - All formats now support underscores as part of variable names.

 - There is now an output format "count" that just prints the total
   number of generators.

 ** Technical Improvements

 - A benchmark suite has been added to detect preformance regressions,
   such as the above situation with the bound optimization getting
   turned off. There is also support for profiling to detect the lines
   of code that are taking the most time.

 - The amount of information in the developer documentation, which is
   generated based on source code comments, has increased
   substantially.

 - The design for how internal C++ tests are done is much improved and
   the number of tests bas been expanded substantially.

 - Code file dependency tracking is much improved. It is now fully automatic,
   so the Makefile target depend is removed.

 - All Frobby files now use unix-style line endings, rather than the
   mix that was there before.

 - Frobby now explicitly refuses to use independence splits when
   solving Frobenius problems and other optimization problems. They
   were never implemented for that case.

 - The install makefile target now uses sudo, so that it does not have
   to be run as root to install Frobby. This is not the case on
   Cygwin, which does not seem to have sudo. 

 - Option -chopFirstAndSubtract now fails gracefully when there are no
   variables, such as when using -iformat null. In general actions now
   deal well with -iformat null, and this is now part of the
   testsuite.

 - Numerous small improvements to performance, design and comments all
   over the codebase.

*** Version 0.8.1, 2009-04-30

This is a minor update.

 - There is now a manual in doc/manual.tex.
 - Frobby no longer crashes when using the -stats and -debug options.
 - The developer documentation can now be built on Cygwin.
 - The example/ directory is now named liraryTest/ to avoid confusion.
 - The Makefile now has an "install" target.

*** Version 0.8.0, 2009-02-12

This version adds support for

 - Hilbert-Poincare series.
 - Primary decomposition.
 - Maximal standard monomials.
 - Linear optimization problems over monomial ideals.
 - The format cocoa4 that can be processed by CoCoA 4.
 - The format singular, which can be processed by Singular.
 - Manipulation of polynomials for formats where it makes sense.

The library interface is expanded and is now tested in the
testsuite. This interface is being used by Macaulay 2 and CoCoA to
perform some of their computations on monomial ideals. The library
interface, and Frobby in general, is now exception-safe and deals
gracefully with running out of memory. Frobby is also included with
Sage as an optional package.

The testsuite for every functionality has been greatly extended and
improved, with the consequence that the tests now take much longer to
run, as they are testing many more aspects of Frobby and there is more
testing going on.

Having Frobby included with Macaulay 2 and CoCoA has resulted in a
number of improvements to make Frobby build correctly on the many
platforms that these systems support. Thanks goes to Daniel R. Grayson,
Michael Stillman and Anna Bigatti for their work on this.

** Changes were not tracked prior to version 0.8.0
