Announcing the release of version 4.10 of the Silo Library

Organization of information in this announcement

  1. Important information regarding this release.
  2. Bugs fixed in this release.
  3. New features in this release.
  4. Removal of Legacy Datatype'd pointers.
  5. Const qualification and multi-level arrays.

1. Important information regarding this release.

2. Bugs fixed in this release

3. New features in this release

4. Removal of Legacy Datatype'd pointers.

In a Nutshell...

This applies mainly to very old Silo applications prior to version 4.6. Explicitly casting to float** two-level arrays in calls to some of the older Silo functions (e.g. DBPutUcd{mesh|var} or DBPutQuad{mesh|var}) is no longer required and will now result in compiler warnings for C callers and compiler errors for C++ callers.

The details...

In the early years of Silo's development, several functions designed to accept two-level arrays of arbitrary type nonetheless defined the function's formal arguments as float** instead of void**. These were changed to void** years ago. However, the configuration option, --enable-legacy-datatyped-pointers, was provided to maintain backward compatability with this old interface.

As part of the work to const qualify the Silo interface, continuing to maintain this backward compatability was becoming too complex. The configuration option --enable-legacy-datatyped-pointers has been eliminated along with the convenience macros DB_DTPTRx (for x=1, 2 and 3).

If you have been in the habit of using the --enable-legacy-datatyped-pointers configuration option and are wondering what will happen when you try to use Silo 4.10 in your application, the most likely biggest issue you will face is to remove cases where have explicitly cast certain array arguments in Silo calls to float**.

5. Const qualification and multi-level arrays.

In a Nutshell...

The details...

Please refer to this discussion for a detailed explanation.