Upgrading your Application from Ice 3.7.x

Ice 3.7.10 maintains full source and binary compatibility with previous Ice 3.7 releases: you can upgrade your application from Ice 3.7.x to Ice 3.7.10 without recompiling or relinking anything.

The database formats used by Ice services such as IceGrid and IceStorm have not changed, therefore no database migration is required. Generally speaking, you are free to use any combination of Ice 3.7.x applications and Ice services.

Some internal Ice interfaces may change in a patch release such as Ice 3.7.10, and therefore you must always upgrade all the Ice components of a given application together. For example, you should not use version 3.7.10 of the ice37.dll with version 3.7.1 of the icessl37.dll in the same application.


Due to changes required to support PHP 8 a new flag, --php5, has been added to the slice2php compiler to generate PHP 5 compatible code.  When this flag is used the compiler will not generate return type declarations for the __toString methods. Return type declarations were added in PHP 7 and are required for __toString as of PHP 8.2. 

Ice 3.7.6 C++98 Binary Compatibility Bug

The C++98 library included in the Ice 3.7.6 release does not maintain binary compatibility with previous 3.7 releases of that library due to a bug. This bug does not affect libraries built with the clang C++ compiler.
This bug was fixed in Ice 3.7.7: the C++98 library of Ice 3.7.7 is binary compatible with the C++98 library of Ice 3.7.5 and earlier releases, for all C++ compilers. However, the Ice 3.7.7 C++98 library is not binary compatible with the Ice 3.7.6 C++98 library, except with the clang compiler.

As a result, if you built an application using Ice C++98 3.7.5 (or earlier), you can upgrade this application to use Ice 3.7.7 C++98 without recompiling or relinking anything. However, if you built an application using Ice 3.7.6 C++98, you need to recompile your application when upgrading to Ice 3.7.7 C++98, unless you are using the clang C++ compiler.