The packaged version of GLM, 0.9.9~a2 is an alpha (the current release is still
0.9.8.5) and removes the default initialization of vector, matrix and
quaternion types. Because of this code written against any earlier versions of
GLM may now have uninitialized value bugs introduced by this change (e.g. where
GLM types are member variables of a class) or now behave differently (mat4()
previously gave you an identity matrix, now this gives you a zero'd matrix).
Several issues have been raised upstream (including by myself) to re-add
initialization or at least make it optional.
This is the commit that introduced the change:
Additionally the requirement in this version to define GLM_ENABLE_EXPERIMENTAL
to use simple functions like length2() has broken multiple packages. I have put
off fixing this since making it compile just exposes the user to the
uninitialized value bugs. Unfortunately this has now meant my gource and
logstalgia debian packages have been removed from debian since they don't
complile with this GLM version.
Related upstream issues:
IMO the ideal solution would be for 0.9.8.5 to be packaged instead, or at the
very least revert the initialization change.
I believe 0.9.9~a2 was originally packaged as it included an upstream fix to
compile with GCC 7.3. Some other distros have instead patched 0.9.8.5:
-- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 4.14.0-3-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8),
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-- no debconf information