Changelog - version 2
=====================
v2.7.4 (released 18/06/2025)
----------------------------
This is a minor release mainly to include the fix of:
https://github.com/libsemigroups/libsemigroups/issues/557
in
https://github.com/libsemigroups/libsemigroups/pull/558
No such issue exists from v3.0.0 of libsemigroups onwards, but currently the
`Semigroups_` package for GAP requires v2 of libsemigroups, which is the reason
for this release. See:
https://github.com/semigroups/Semigroups/issues/1064
Unless you are cloning libsemigroups to use in the GAP package `Semigroups_`,
then please use version v3.0.3 or higher of libsemigroups. We are preparing a
new version of the `Semigroups_` package for GAP that uses libsemigroups
version 3, and this will (hopefully) be the final version 2 release of
libsemigroups.
v2.7.3 (released 19/01/2024)
----------------------------
* configure.ac: fix shell equality test by @orlitzky in
https://github.com/libsemigroups/libsemigroups/pull/490
* Optimise Konieczny by @flsmith in
https://github.com/libsemigroups/libsemigroups/pull/491
This is a minor release where some minor issues have been resolved.
v2.7.2 (released 20/10/2023)
----------------------------
This is a minor release where some minor issues have been resolved.
v2.7.1 (released 29/03/2023)
----------------------------
In this release a couple of bugs in ``presentation::sort_rules`` are resolved:
* present: fix sort_rules bug by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/478
v2.7.0 (released 22/03/2023)
----------------------------
This is a minor release with some new features and bug fixes:
* Remove a pessimizing move by @jamesjer in
https://github.com/libsemigroups/libsemigroups/pull/467
* More new features for presentations by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/473
* Allow computation of strongly connected components of non-complete word
graphs by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/474
* Ukkonen: expose suffix tree impl by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/476
v2.6.2 (released 27/02/2023)
----------------------------
This is a minor release adding the configuration options ``--enable-backward``,
and ``--disable-backward``, and some related changes to the build system.
v2.6.1 (released 24/02/2023)
----------------------------
This is a minor release with some fixes and improvements to exception messages,
the documentation, and:
* backward-cpp: add backward files by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/462
* Remove auto return type from ``first_unused_letter`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/464
* Properly initialise ``RepOrc`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/465
v2.6.0 (released 06/02/2023)
----------------------------
This is a minor release including some new features related to presentations
for semigroups and monoids.
* Add a second symmetric group presentation due to Moore by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/431
* Add three functions to ``presentation`` namespace by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/436
* Add presentation for the monoid of partial isometries of a cycle graph by
@MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/433
* suffix-tree: fix longest common subword issue by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/451
* word: implement user-defined literal ``_w`` for ``word_type`` by
@james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/449
* New helper functions for ``Presentation`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/453
* Add ``congruence_kind`` argument check to ``ToddCoxeter`` function
``to_gap_string`` by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/455
v2.5.1 (released 22/12/2022)
----------------------------
This is a minor release that resolves a number of minor issues.
v2.5.0 (released 14/12/2022)
----------------------------
In this release a small number of issues are resolved, and one major new
feature is added. The features added in this release are:
* Add ``order_preserving_monoid`` presentation by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/428
* Add presentations for the cyclic inverse monoid, and its order-preserving
part by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/426
* Stephen's procedure for finitely presented semigroups by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/403
v2.4.1 (released 06/12/2022)
----------------------------
This is a minor release fixing some issues in the build system that should have
been included in the last release.
* Change ``-march=avx`` -> ``-mavx`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/418
v2.4.0 (released 01/12/2022)
----------------------------
In this release a number of bugs and other minor issues were resolved. The new
features in this release are:
New features:
* Add ``replace_word`` presentation helper by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/388
* A library of examples of finite presentations was added by @MTWhyte.
Issues resolved:
* Fix issue with ``replace_subword`` and the empty word by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/384
* build: add missing eigen3 to pkg-config file by @jengelh in
https://github.com/libsemigroups/libsemigroups/pull/414
* Fix ``Konieczny::add_generators`` by @flsmith in
https://github.com/libsemigroups/libsemigroups/pull/420
New Contributors:
* @jengelh made their first contribution in
https://github.com/libsemigroups/libsemigroups/pull/414
v2.3.2 (released 28/10/2022)
----------------------------
In this release a number of bugs and other minor issues were resolved.
* Fix inaccurate exception information for ``replace_subword`` by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/394
* Fix broken link in ``CONTRIBUTING.rst`` by @MTWhyte in
https://github.com/libsemigroups/libsemigroups/pull/396
* matrix: add case for some Apple clang weirdness by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/401 This might be a bug
in clang versions 13 and 14, which caused the ``identity`` static member
function of the ``StaticMatrix`` class template to not properly initialise the
matrix being constructed.
* string-view: fix bug in append method by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/399
This bug sometimes caused the ``normal_form`` member function of the
``Kambites`` class template to return incorrect results, or sometimes to
cause a crash.
v2.3.1 (released 10/10/2022)
----------------------------
In this release a number of corner cases in the ``Sims1`` class are
fixed:
* sometimes ``number_of_congruences`` erroneously returned ``0`` for the number
of congruences with 1 class;
* if an empty presentation (no generators or relations) was used to
initialise ``short_rules``, then the ``Sims1::for_each`` and
``Sims1::find_if`` could crash;
* a more serious bug which could cause an invalid read beyond the end of a
container (caused by the erroneous assumption that the containers were always
of even length). Thanks to `J. James`_ for reporting this issue.
v2.3.0 (released 28/09/2022)
----------------------------
In this release a number of minor issues a fixed, some improvements are made,
and the ``Sims1`` class has been redesigned and improved to implement a parallel
version of the low index congruences algorithm.
v2.2.3 (released 22/09/2022)
----------------------------
This is a minor release fixing a number of minor issues, and including some
minor improvements.
v2.2.2 (released 12/09/2022)
----------------------------
This is a minor release fixing a number of minor issues, and including some
minor improvements.
v2.2.1 (released 12/08/2022)
----------------------------
This is a minor release fixing a data race (probably) caused by setting the
global locale, that sometimes caused a crash.
v2.2.0 (released 01/07/2022)
----------------------------
This release adds two new features to libsemigroups:
* Sims Low-Index Congruence Algorithm by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/349
* Add permutation group intersections for SchreierSims by @reiniscirpons in
https://github.com/libsemigroups/libsemigroups/pull/351
v2.1.5 (released 21/04/2022)
----------------------------
This is a minor release with a few minor changes:
* schreier-sims: fix issue #343 by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups/pull/344
* Replace -march=native by -march=avx by @fingolfin in
https://github.com/libsemigroups/libsemigroups/pull/345
@fingolfin made their first contribution in
https://github.com/libsemigroups/libsemigroups/pull/345 welcome @fingolfin!
v2.1.4 (released 04/03/2022)
----------------------------
This is a minor release with a few minor changes:
* it is now possible to create the ``quotient_froidure_pin`` of a congruence
with infinitely many classes;
* some exception messages were corrected for ``Bipartition`` objects;
* compilation of v2.1.0 to v2.1.3 did not work in cygwin for Windows;
* there was a file missing in the archive, which meant that it wasn't possible
to build the documentation.
v2.1.3 (released 16/12/2021)
----------------------------
This is a minor release with some performance improvements in:
``ActionDigraph::number_of_paths`` (`eigen`_ is used in some circumstances when
available); the suffix tree implementation (used by ``Kambites``); and in
``KnuthBendix``.
v2.1.2 (released 30/11/2021)
----------------------------
This is another very minor release resolving an issue in the last release
on 32-bit systems raised by Jan Engelhardt.
v2.1.1 (released 28/11/2021)
----------------------------
This is a very minor release resolving an issue in the last release pointed out
by Jan Engelhardt.
v2.1.0 (released 28/11/2021)
----------------------------
The following new features, improvements, and fixes are included in this
release:
* new implementations of the linear time algorithm by Kambites for equality
checking and the algorithm by Mitchell and Tsalakou
for finding normal forms in small overlap monoids in the class ``Kambites``
(@james-d-mitchell and @mariatsalakou
https://github.com/libsemigroups/libsemigroups/pull/278)
* a performance improvement in the implementation of Konieczny algorithm, for
determining the structure of a finite semigroup or monoid (@flsmith
https://github.com/libsemigroups/libsemigroups/pull/297
https://github.com/libsemigroups/libsemigroups/pull/304)
* an implement of the linear time algorithm by Radoszewski and Rytter for
checking equality of words in free bands in the function
``freeband_equal_to`` (@reiniscirpons
https://github.com/libsemigroups/libsemigroups/pull/298)
* a major revision, expansion of the settings, and improvement in the
performance of the implementation of the Todd-Coxeter algorithm in the
class ``ToddCoxeter`` (@james-d-mitchell
https://github.com/libsemigroups/libsemigroups/pull/313
https://github.com/libsemigroups/libsemigroups/pull/318)
* some other minor issues in the class templates
``FroidurePin`` and ``ActionDigraph`` were resolved
(@james-d-mitchell
https://github.com/libsemigroups/libsemigroups/pull/299
https://github.com/libsemigroups/libsemigroups/pull/300)
**Full Changelog**:
https://github.com/libsemigroups/libsemigroups/compare/v2.0.3...v2.1.0
v2.0.3 (released 11/11/2021)
----------------------------
This release contains a minor change to the ``FroidurePin`` class template that
resolves an issue with the `python binding <
https://github.com/libsemigroups/libsemigroups_pybind11>`_ highlighted by `Maria Tsalakou`_ and Chinmaya Nagpal.
v2.0.2 (released 20/09/2021)
----------------------------
This release includes some missing operators, adapters, and doc were added.
v2.0.1 (released 28/08/2021)
----------------------------
This release includes some improvements and minor fixes including:
- some remnants of C++11 in the code and docs were removed
- the class ``Runner`` was given proper copy and move constructors
- some performance improvements were made to ``Konieczny`` by `Finn Smith`_
- some minor updates were made to ``FroidurePin`` and its documentation
- some missing adapters for ``KBE`` and ``TCE`` were implemented.
v2.0.0 (released 26/05/2021)
----------------------------
This release includes a major rewrite of the functionality in ``libsemigroups``
for matrices, transformations, and other elements of semigroups.
``libsemigroups`` has been updated to use C++14 (from C++11), and some
simplifications were made as a consequence. The documentation has been
improved, some deprecated functionality was remove, and other minor
improvements, and simplifications were made. The included version of `eigen`_
was updated from version 3.3.7 to 3.3.9.
.. _eigen:
http://eigen.tuxfamily.org/
`J. James`_ contributed some improvements to the build system, and some
additional updates were made which arose from warnings issued by newer versions
of autotools.
The following function was added:
- ``Action::cache_scc_multipliers``
The following deprecated functionality was removed:
- ``FroidurePin::FroidurePin(std::vector<element_type> const*)``
- ``FroidurePin::reset_next_relation``
- ``FroidurePin::next_relation``
- the ``Element`` class was removed
- the ``UFOld`` class was removed (replaced by ``Suf`` and ``Duf`` in v1.3.4)
The following backwards incompatible changes have been made:
- every function including ``_nr_`` has been renamed using ``_number_of_`` for
consistency
- ``const`` has been removed from all function parameters passed by value
- ``congruence_type`` was renamed ``congruence_kind`` for consistency
- ``CongruenceByPairsHelper`` was renamed ``CongruenceByPairs``
- ``Congruence::policy`` was renamed ``Congruence::options``
- ``FroidurePin::copy_closure`` returns by value instead of returning a pointer
- ``FroidurePin::copy_add_generators`` returns by value instead of returning a
pointer
- ``FroidurePin::letter_to_pos`` was renamed ``FroidurePin::current_position``
- ``FroidurePin::length_const`` was renamed ``FroidurePin::length``
- ``FroidurePin::length_non_const`` was renamed ``FroidurePin::current_length``
(again for consistency)
- ``FroidurePin::word_to_pos`` was renamed ``FroidurePin::current_position``
- ``KnuthBendix::policy`` was renamed ``KnuthBendix::options``
- ``ToddCoxeter::policy`` was renamed ``ToddCoxeter::options``
The following files were renamed:
- ``libsemigroups-config.hpp`` was renamed ``config.hpp``
- ``libsemigroups-debug.hpp`` was renamed ``debug.hpp``
- ``libsemigroups-exception.hpp`` was renamed ``exception.hpp``
Changelog - version 1
=====================
.. toctree::
changelog-v1
.. _J. James:
http://www.jamezone.org/
.. _Isuru Fernando:
https://github.com/isuruf
.. _Bernhard M. Wiedemann:
https://lizards.opensuse.org/author/bmwiedemann/
.. _Semigroups:
https://github.com/semigroups/Semigroups/
.. _Finn Smith:
https://flsmith.github.io
.. _Maria Tsalakou:
https://mariatsalakou.github.io/
.. _Reinis Cirpons:
https://reinisc.id.lv
.. _Finn Smith:
https://flsmith.github.io