Frequently Asked Questions

Which Ice versions are binary compatible?

Ice version numbers use the scheme <major>.<minor>.<patch>. For example. Ice 3.3.1 is major version 3, minor version 3, and patch release 1.

Patch releases of Ice are binary compatible: you can always run a binary that was compiled with an earlier patch release with a later patch release of the Ice run time. For example, if you have a deployed application that was compiled with Ice 3.3.0, you can upgrade that application to use the Ice 3.3.1 run time simply by installing the new Ice libraries.

Exactly how to upgrade an existing Ice installation depends on the operating system and language mapping. Below are a few examples. Please see the release notes for your Ice installation for more detailed information.

C++ (Linux RPM installation)

For Linux and C++, Ice uses symbolic links that that point at each shared library; the symbolic links do not include the patch release. For example, for Ice 3.3.0, Ice uses a symbolic link as follows:

libIce.so.33 -> libIce.so.3.3.0

The Ice libraries are built with -Wl,-hlibIce.so.33. This sets the dependent library name to libIce.so.33, so when you link your application against the library, the application has a dependency on libIce.so.33, not on libIce.so.3.3.0 or libIce.so.

When you upgrade Ice from an RPM installation, the installer automatically changes the symbolic links for the libraries to point at the new version. For example, when upgrading to Ice 3.3.1, the RPM updates the symbolic link to:

libIce.so.33 -> libIce.so.3.3.1

This means that applications that used to use libIce.so.3.3.0 now automatically run with libIce.so.3.3.1 after the upgrade.

C++ (Solaris and OS X)

For an installation of Ice from a binary archive, you need to add a symbolic link to /opt that excludes the patch version. With Ice 3.3.0 installed in /opt/Ice-3.3.0, you should create a symbolic link as follows:

/opt/Ice-3.3 -> /opt/Ice-3.3.0

After installing Ice 3.3.1 in /opt/Ice-3.3.1, update the symbolic link to point at the new version:

/opt/Ice-3.3 -> /opt/Ice-3.3.1

Because the Ice libraries set the dependent library name to libIce.so.33
(/opt/Ice-3.3/lib/libIce33.dylib for OS X), when you run an application that was linked with Ice 3.3.0, after the upgrade, your application uses the 3.3.1 libraries.

C++ (Windows)

For Windows and C++, the library name excludes the patch release, so both Ice 3.3.0 and 3.3.1 libraries are installed as Ice33.dll. You can upgrade an application compiled with Ice 3.3.0 to use Ice 3.3.1 by copying the new run-time libraries over the old ones.

Java

For Java, you can upgrade an application by copying the new jar archive over the old one, or by installing the new jar file in a different location and changing the application's CLASSPATH accordingly.

.NET and Mono

For .NET and Mono, the Ice run time libraries are usually installed in the GAC. For patch releases, the distribution includes policy files that redirect existing applications to the new run time. You can install these policy files in the GAC, so applications built against an earlier version of the Ice run time automatically use the newer version.

Terms of Use | Privacy © 2010 ZeroC, Inc.