Phew… this was a huge effort! But now it’s done: ILNumerics Ultimate VS version 5 is released.
For those of you who have wondered: yes, it became a little quiet around ILNumerics lately. Honestly, we were so busy finishing this release that we simply forgot to throw out some news. Anyways! Now that it’s finally done, let’s turn on the spotlight!
What’s new in ILNumerics Ultimate VS version 5?
- New, redesigned array classes
- Nicer class names: ILArray<T> is gone!
- Breaking the limits: support for big and huge data
- Support for Matlab® and (new:) numpy array styles
- Outstanding speed for all array sizes
- Installs into Visual Studio 2013…2017
New, redesigned Array Classes
ILNumerics Ultimate VS versions 5 focusses on the Computing Engine. The array classes have been redesigned for better execution speed and better compatibility with huge data and numpy arrays. However, the API has been kept mostly the same.
‘Unmanaged’ as in ‘unlimited’
In previous versions, ILNumerics arrays were internally based on 1-dimensional .NET arrays. They were stored on the managed heap and derived their limitations for the CLR: the maximum size consumed by a version 4 array could not exceed 2GB. There were tweaks to somehow shift this limit up a little. But at the end, the arrays would not be able to break this limit, really.
With version 5 ILNumerics arrays are well prepared for big- and huge data. Our arrays now live on the process’ unmanaged memory. Their size can grow as much as the system state allows. Be sure to run your app as 64bit, though!
Naturally, this step brings important implications. We have been able to hide the changes from the public API. It is only when accessing the underlying element storage directly and on a low level where changes to the API become visible.
Addressing huge Arrays
The most obvious change, though, is probably the new type for array indices: System.Int64. Whenever indices are addressed this can now be done by <long> values (instead of <int> in version 4). The same is true for the length of dimensions, number of array elements etc.
Also, index arrays returned from functions like sort(), max(), find() etc. now must be of type: Array<long> (instead of ILArray<int> in version 4). For some functions, we kept the System.Int32 indices as an additional option and for compatibility and easier upgrades. Consult the changelog and the corresponding class reference for all details.
ILNumerics for Matlab® and numpy Arrays
With version 5 ILNumerics catches up on both popular numerical prototyping languages today: Matlab® & Co and numpy (new!). Our arrays now fully support the feature sets from both languages, including storage schemes, array scalars and subarrays / advanced indexing. This makes the implementation of algorithms into production code easier than ever before – regardless which language they were designed in. Get the big picture here. Or visit the compatibility table.
Many new documentation articles are found inside the array online documentation.
Fast, faster, … Version 5
We want to become faster with each release. This time, the step-up is really impressive! Read here how this was done.
Please report back your own benchmark results!
Nicer Class Names
After 10 years of ILNumerics and after recognizing that the “I” and “L” keys broke fastest on our development keyboards… we decided to get rid of this legacy. All class names are released from the leading “IL…” and, indeed…look much nicer this way! Don’t worry, adapting to this change is really easy: just use the regular expression from our conversion guide in Visual Studio to convert all files to the new scheme at once: conversion guide
Visual Studio 2017 Compatibility
Version 5 finally removes the need for any manual step during the installation of ILNumerics. It simply installs into Visual Studio 2013… 2017. Just follow the instructions after starting the common ILNumerics installer!
Version 5 is a big step ahead, we believe! It includes ILNumerics’ aggregated experience of 10 years dealing with high-performance computing on .NET. The new arrays mark a milestone in efficiency and convenience for building technical applications on this popular production platform. We hope you enjoy it as much as we do!