  Regina is a software package for studying 3-manifold triangulations and
normal surfaces. It includes a graphical user interface and Python bindings,
and also supports angle structures, census enumeration, combinatorial
recognition of triangulations, and high-level functions such as 3-sphere
recognition, unknot recognition and connected sum decomposition.
  This paper brings 3-manifold topologists up-to-date with Regina as it appears
today, and documents for the first time in the literature some of the key
algorithms, heuristics and implementations that are central to Regina's
performance. These include the all-important simplification heuristics, key
choices of data structures and algorithms to alleviate bottlenecks in normal
surface enumeration, modern implementations of 3-sphere recognition and
connected sum decomposition, and more. We also give some historical background
for the project, including the key role played by Rubinstein in its genesis 15
years ago, and discuss current directions for future development.
