Regina - Changes since Regina 7.0

This page relates only to C++ and Python programmers.

Over time, Regina makes changes and improvements to its C++ and Python interfaces. This page explains how you will need to update your C++ code and/or Python scripts to work with the latest version of Regina.

Where possible, the old classes and routines that you should no longer use have been kept but marked as deprecated. These old deprecated classes and routines will be kept until the next major version (Regina 8.0), so that there is a comfortable transition period where your old code will still work. All of this deprecated code will be removed in Regina 8.0, whenever that may be.

If you have older code (from 2021 or earlier), you can also read the separate pages on:

Changes since Regina 7.0

Some general rules have been applied throughout the API:

In addition to the general changes outlined above, there are also specific changes to individual headers, classes, functions and/or constants. These are listed in the table below, along with suggestions for how you should change your code. Any changes in the behaviour of these routines or classes are noted in the comments column.

The blue cells indicate code that is still present in Regina, but is now deprecated (i.e., marked for removal in a future release). The red cells indicate code that has already been removed from Regina.

Deprecated code Replacement Comments
Classes, Enums and Type Aliases
DegreeLessThan, DegreeGreaterThan C++ lambda These classes were trivial, and nowadays a one-line lambda can do the same job.
Member Routines
Example<3>::whiteheadLink() Example<3>::whitehead()  
FacetPairing<dim>::toTextRep() FacetPairing<dim>::textRep()  
FacetPairing<3>::followChain(size_t&, ...) FacetPairing<3>::followChain(ssize_t&, ...)  
GroupPresentation::simplifyWord()
Removed in Regina 7.3
GroupPresentation::simplifyAndConjugate() This routine was renamed to make it clear that it might conjugate the given word. The behaviour has not changed (i.e., conjugation was always a possibility, even before the renaming).
Isomorphism<dim>::apply()
Isomorphism<dim>::applyInPlace()
iso(tri)
tri = iso(tri)
 
NormalHypersurface::doubleHypersurface() surface * 2 or surface *= 2  
NormalSurface::doubleSurface() surface * 2 or surface *= 2  
Packet::insertChildFirst()
Packet::insertChildLast()
Packet::insertChildAfter()
Packet::prepend()
Packet::append()
Packet::insert()
 
Perm<n>::cachedComp() with two arguments Perm<n>::cachedConjugate(), or two uses of the one-argument Perm<n>::cachedComp() The two-argument cachedComp() (i.e., a three-way product) was only ever used internally for conjugation, and there is now a new cachedConjugate() routine for this instead.
Triangulation<3>::isHandlebody()
Removed in Regina 7.2
Triangulation<3>::recogniseHandlebody() This returns an integer genus, not a boolean, and so the name has been changed to avoid any misinterpretation.
Triangulation<3>::minimizeBoundary()
Triangulation<3>::minimizeVertices()
Triangulation<3>::minimiseBoundary()
Triangulation<3>::minimiseVertices()
Regina uses British English consistently throughout its API.
Triangulation<dim>::barycentricSubdivision() Triangulation<3>::subdivide()  
Global Routines
regina::gcd()
regina::lcm()
std::gcd()
std::lcm()
GCD and LCM are now offered as part of the C++17 standard.

Back to main page ... Back to main page ...