In December, CenterSpace Software rolled out a major new release of NMath, version 7.0, built on the .NET Standard Library 2.0. The focus of this release has been to support the .NET Standard library, to further improve the ease of use of the NMath library, and to unify all CenterSpace libraries into one. CenterSpace now offers one unified, powerful, math library: NMath 7.0.
This version requires developers to be using at least .NET Core 2.0 or at least .NET Framework 4.6.1. Adding support of .NET Core to NMath has been in the works for over a year and was done at the request of many of our active developers.
Future development work will concentrate on the .NET Standard based NMath 7.0. However, NMath 6.2, build on .NET 4.0, but not supporting the .NET Standard Library, will be available for years to come.
Below is a list of major changes released in NMath 7.0:
- 32-bit support has been dropped. Demand has been waning for years for this. Dropping it has made usage simpler and easier.
- GPU support has been dropped. As developers, we liked the automatic GPU offloading. However, the technical advantages have dissipated as multi-core processors have improved. We believe that this is no longer compelling for a general math library.
- NMath Stats has been merged into NMath. This is for ease of use for our users.
- In summer of 2019, our pricing will be streamlined to reflect these changes. There will be one price for a perpetual NMath license and there will be one price for annual NMath maintenance which includes technical support and all upgrades available on NuGet. NMath Stats will no longer be sold separately.
- We have merged the four NMath namespaces into one,
CenterSpace.NMath.Core
, to simplify development. Originally, CenterSpace had four NMath products and four namespaces, these namespacesCenterSpace.NMath.Core, CenterSpace.NMath.Matrix, CenterSpace.NMath.Stats, CenterSpace.NMath.Analysis
reflect that history. We have left stubs so users won’t have any breaking changes. - We have dropped charting. The ecosystem is full of powerful visualization packages. We have only three main data structures in NMath, vectors, matrices and data frames, and all can be easily used with different charting packages.
- Some of our optimizations use Microsoft Solver Foundation. If you use these, you’ll need to be on the .NET Framework track and not on the .NET Core track.
- We have dropped the installers. The compelling ease of NuGet for our users has made these obsolete.
NMath 7.0 on Windows and Linux
Please try the new versions on NuGet. Feedback welcome as always.
This is really great news and I look forward to implementing this in our code base.
Just one bit of feedback based on the nuget packages that we had made. The three separate packages that you have for different OSes means that we won’t be able to make shared packages that we can use locally on Windows and also on say Lambda.
Ideally you would just have one package, but if you need to have separate ones, then can you provide a common core package that they all depend on and that we can just add the OS specific ones to the top level tools. That’s how we previously managed x86 vs x64, we had a common package with nmath and nmath stats that all libraries referenced and then native packages that the top level packages referenced.
As it is, I expect we’ll end up making our own nuget packages again from the contents of these ones.
We definitely need separate ones because of the native functionality under the hood. This seems like a good suggestion. We will investigate it.
– Trevor
@Mark, @Trevor, did you find any smart solution to this. I have the exact same situation, which is creating a lot of hassle in creating a common nuget package (consuming nmath) for for linux and windows.
@Trevor, can you let me know if the lib/NMath.dll library (from the nuget package) is the same for windows/linux/osx? I am trying to create a single nuget package and don’t understand what needs to be done with these different NMath.dll assemblies. I am blocked for now, your help in this regard would be greatly appreciated.
We have made a NuGet package with both Windows and Linux support (64-bit only) here: https://www.nuget.org/packages/CenterSpace.NMath.Standard.WindowsAndLinux.X64/
OSX could not be included because of size restrictions from NuGet.
Please note that we have made an x86/x64 Windows package for those needing to target all Windows machines.
Do you plan to replace the Microsoft Solver Foundation so that all optimizations can be used under .NET Core?
.NET Core can still use all of our optimizations if .NET Framework is available. So, not everywhere. Yes, this is an annoyance. We are looking at alternatives that will be better and .NET Standard compliant (fully-supported by .NET Core and .NET Framework).
We released NMath 7.2 today which uses Google OR Tools and is built on the .NET Standard Library.