manifold-random v0.3.0.0 Release NotesRelease Date: 2016-09-30 // about 5 years ago
🚀 This release is a major implementation change: we got rid of hmatrix, in favour of the new linearmap-category package, which implements all the necessary linear algebra fundamentals in native Haskell.
📦 A major motivation for this step was the doubtful reliability of
hmatrix(bindings to the GSL library in C) in a multithreaded context – we were experiencing deadlocks in the multithreaded dynamic-plot visualiser.
📦 While it turns out that this point was probably unjustified – the deadlocks still appeared after the switch; the culprit was probably gtk2hs in connection with async (now fixed by a different multithreading strategy) – it also has other benefits, as we now have a proper well-typed interface all the way down instead of basing every local operation on ugly dynamically-sized matrices.
🐎 The switch also improves performance somewhat, probably mainly because we don't need all that C-marshalled memory and because we don't need to convert between Haskell-native data and hmatrix data. Though
linearmap-categoryisn't really optimised yet, there may be potential for much faster speeds still.