The first version of Normaliz was a C program developed by Winfried Bruns and Robert Koch in 1997/98. In 2002 Bruns added a Singular library. Witold Jarnicki improved the h-vector computation in 2003 and augmented the output options.
Version 2.0 (of 2008) was completely rewritten in C++ by Bogdan Ichim. The algorithms and their implementations were significantly improved by the authors. Moreover, additional input modes and user-controlled arithmetic checks were added.
From version 2.5 (2010) on Winfried Bruns and Christof Söger (until 2016) have developed Normaliz. In the versions 2.5 – 2.12 many new features were added, in particular inhomogeneous input. In version 2.7 the pyramid decomposition was introduced and in 2.8 it was efficiently parallelized.
NmzIntegrate (2013) added weighted Ehrhart series and Lebesgue integrals of polynomials over rational polytopes. (Now included in Normaliz itself.)
Version 3.0 (2015) introduced a new user interface (with backward compatibility), the automatic choice of integer arithmetic and several other improvements. Later on nonpointed cones and polyhedra without vertices were added.
In 2016 – 2018 several new algorithms and computation goals were introduced. Matthias Köppe contributed autotools scripts, and Sebastian Gutsche wrote PyNormaliz. Together they allow the use of Normaliz from SageMath.
Version 3.7.0 (2019) added algebraic polyhedra, i.e., polyhedra defined over real algebraic extensions of the rational numbers.
Version 3.9.4 (2022) added semialgebraic constraints for lattice points
Version 3.10.2 (2024) added special functions for fusion rings
For further details see the file CHANGELOG in the Normaliz distribution. The Normaliz manual lists the changes in the most recent versions.