The entries below contain brief descriptions of the changes in a release, in no particular order. Some of the entries reflect significant new additions, while others represent minor corrections. Although this list is not a comprehensive report of every change we made in a release, it does provide details on the changes we feel Ice users might need to be aware of.
We recommend that you use the release notes as a guide for migrating your applications to this release, and the manual for complete details on a particular aspect of Ice.
These are changes since Ice 3.4.1.
-
The operation mode sent over the wire for the Object operations
ice_ping
,ice_isA
,ice_ids
, andice_id
should be Nonmutating, but the language mappings were inconsistent in this respect. All language mappings now send the correct mode. -
Fixed a bug where under certain circumstances, Ice would indefinitely re-try to add a proxy to the Glacier2 routing table.
-
Improved queuing of Glacier2 requests to the client to not invoke requests if the client connection already has requests pending for send. Instead, Glacier2 waits for the pending requests to be sent. This allow request overriding to occur more often when the client connection is slow.
-
Fixed bug where an IceGrid node or registry could hang for a long time on startup if some IceGrid registry replicas weren't reachable.
-
Added
throwLocalException
method to theIce::AsyncResult
class. If the request fails with a local exception, this method throws the local exception. -
Fixed a bug that caused a crash if a timeout occurs while sending an AMI request and if automatic retry is enabled (the default).
-
It is now possible to use a constant as the default value for a data member. For example:
const int MIN = 1; struct Info { int size = MIN; };
It is also possible for a constant to refer to another constant:
const int MAXIMUM_SIZE = 100; const int DEFAULT_SIZE = MAXIMUM_SIZE;
-
Fixed a bug in the Linux epoll selector implementation that could cause hangs when using the thread pool serialization mode.
-
Fixed a memory leak in IceSSL on Windows.
-
Fixed a bug in the generated code for a Slice structure containing at least one data member that declares a default value. The constructors were not being exported correctly in this case.
-
Fixed a bug where the
IceUtil::Timer
thread could die in case very large delays were specified. -
Removed extra
include/IceGrid/Perf.h
file.
-
Added support for Android.
-
Added overloaded constructors for user and system exceptions that accept a
Throwable
argument. -
Added an
ice_staticId
method to generatedPrxHelper
classes. -
Fixed a bug in
slice2java
in which a floating point default value could cause a compile error. -
Fixed a bug where
Ice.ServerIdleTime
wouldn't consistently shutdown servers after the given period of inactivity.
-
Added support for the .NET Compact Framework.
-
Added
demo/Ice/compact
, which is a simple graphical client that uses Ice for .NET Compact Framework. -
Fixed bugs in the generated code that caused naming conflicts when using a Slice module named
System
. -
Added an
ice_staticId
method to generatedPrxHelper
classes. -
Fixed a bug in the generated code when a Slice class uses the property mapping and declares default values for its members.
- Fixed bug where
None
was not recognized as a keyword.
- Fixed a bug in the Ice extension that would cause an
ArgumentError
to be raised when attempting to print a byte sequence whose value is a string that contains null bytes.
-
Fixed a bug that caused
undefined symbol IcePHP__t_XXX
errors whenIce.php
or a generated file is included from a non-global scope. -
slice2php
now generatesrequire_once
statements corresponding to Slice#include
directives, replacing therequire
statements used in previous releases. -
Fixed a bug in the Ice extension that caused Ice-related INI settings to be ignored.
-
Fixed a bug that prevented the Add-in from automatically compiling Slice files when using a non-English version of Visual Studio.
-
Improved the layout and wording of the Ice Configuration dialogs.
-
Added
$(IceHome)
macro to VS 2008 project configurations. -
Changed C++ project configurations to use
$(IceHome)
macro in configuration settings. -
Removed Ice Home field from
Ice Configuration
dialog. Projects now always use the Ice installation corresponding to the location of the add-in DLL. -
Fixed issues that prevented the use of solution folders in Ice projects.
-
Fixed an issue that caused the add-in to not work when using Visual Studio 2010 and
Solution Navigator
. -
Added a check to prevent incorrect Runtime library usage in C++ projects.
-
Added support for .NET Smart Device project types used by the .NET Compact Framework.
-
Improved add-in output messages.
-
Fixed an issue that produced a deadlock in Visual Studio when Slice compiler output was large enough to fill the output buffer.
-
Fixed support for parallel builds. The Slice compiler was run several times, once for each parallel build. Now the Slice compiler is run only once, before all parallel builds begin.
-
Fixed an issue that could cause errors with Visual Studio if a Slice file was saved while the project was building.
-
Fixed the add-in to work properly when
--header-ext
and--source-ext
are present in Extra Compiler Options. -
Fixed the add-in to support building Freeze demos without the need to set environment variables.
-
Fixed the add-in to always open generated files as read only; previously the generated files were not opened read only until the first project build.
-
Added support for setting the output directory for generated files, making the add-in more VCS friendly.
-
Added support for .NET
DEVPATH
. -
Added support for canceling changes in configuration dialogs. All the configuration dialogs now have
OK
,Cancel
, andApply
buttons with the standard semantics. -
Added warnings to prevent incorrect options from being entered in Extra Compiler Options.
-
Added a timestamp to Slice build output, which is only printed when the trace level is Debug.
-
The add-in now supports command-line builds.
-
The add-in now avoids making extraneous changes to projects that could result in merge issues when projects are in a shared development.
-
The add-in no longer overrides the debug environment setting for
PATH
, but rather appends appropriately. -
On the loss of focus when adding an include directory in the Slice Include Path, the addition is now saved rather than lost.
-
Fixed an issue where moving a Slice-generated file to a filter so that it would be ignored by source control did not always work because the generated files could be moved back into the regular Source Files list by a build.
-
Improved the tracing output generated by the add-in and changed the tracing options.
These are changes since Ice 3.4.0.
-
Added the new property
Freeze.DbEnv.<db>.LockFile
and changed thedumpdb
andtransformdb
utilities so that they can be run safely on a database environment that is currently open in another process. -
Changed the Glacier2 helper classes to cache the client category.
-
Added the ability to use underscores in Slice identifiers. See the release notes for important information on this change.
-
Added the
setConnectContext
method toGlacier2.SessionFactoryHelper
, which allows an application to provide a request context to be used when creating a Glacier2 session. (Java and C#) -
Fixed IceGrid bug where node observers would not be notified when a server is re-enabled after it has been updated and if the server was disabled following an activation failure.
-
Fixed a bug in the
Glacier2.SessionFactoryHelper
class (Java/C#) in which thegetPort()
method would return an incorrect default port if no port was configured.
-
Fixed a bug in
slice2cpp
in which streaming code was not generated properly for types in nested modules. -
slice2cpp
now generates a "one-shot" constructor for a Slice structure if at least one of its members has a default value. -
Fixed a bug in
slice2cpp
so that asynchronousend_op
methods are now exported properly. -
Fixed a bug in
slice2cpp
that would generate invalid code for a Slice exception when the--stream
option was not used. -
Fixed compatibility issues with OpenSSL 1.0.
-
Fixed a bug in
slice2cpp
that would cause invalid code to be generated for a nested Slice definition when the--stream
option was used. -
Fixed a bug in Freeze that disabled automatic log deletion.
-
Fixed an issue in which intensive use of Freeze or the stream API could cause an
OutOfMemoryError
. Note that Freeze maps must be regenerated withslice2freezej
to incorporate this fix. -
Fixed a bug in the Slice2Java ant task in which duplicate Slice files could be passed to
slice2java
. Also fixed a bug inslice2java
that caused the translator to fail if a duplicate file was passed on the command line. -
Fixed race condition which could cause the thread pool selector thread to go away (causing the thread pool to not dispatch further incoming messages).
-
Deprecated
Ice.AsyncCallback
. To use the generic asynchronous callback facility, applications should derive their classes fromIce.Callback
. -
The
size
method on aFreeze.Map
and on the value of an indexed submap now use the current transaction associated with the connection, if any.
-
Fixed a bug in the generated code that prevented sequences from being marshaled using the stream API if the sequences used generic collection types.
-
Fixed a bug in the IceSSL plug-in that could incorrectly report a certificate verification failure when the
IceSSL.CheckCertName
property is enabled.
-
Fixed a bug in which destroyed Communicator instances were not being garbage collected.
-
Fixed a bug in
Ice.Application
in which the exit status was not properly returned frommain()
.
These are changes since Ice 3.3.1.
-
Added ability to define default values for Slice data members. For example, you can write:
class C { int i = 2; string name = "John"; };
-
Fixed IceGrid bug where the IceGrid node would disconnect from the registry if the clock was moved backward.
-
Fixed hang in
slice2cs
andslice2py
that would occur if a comment contained a<
with no closing>
. -
Fixed a bug in the Java and C# stream classes where
readString()
andreadBlob()
were not checking the size before allocating memory. -
Fixed source files to have consistent end of line terminators.
-
Fixed the
Ice.initialize()
,Ice.initialize(Ice.InitializationData)
andIce.createProperties()
overloads in Python, Ruby and PHP to match the C++, .NET and Java behavior. These overloads no longer read theICE_CONFIG
environment variable. -
Fixed IceGrid bug where updating an application could cause a temporary hang if a server deactivation hanged during the update.
-
Added a new asynchronous method invocation (AMI) facility for C++, C#, Java, and Python. The previous API is now deprecated.
-
Added the ability to invoke
flushBatchRequests
asynchronously on a communicator or connection. -
The Ice extension for Visual Studio is now included in the Ice distribution. The source code for the extension can be found in the
vsplugin
subdirectory of the source distribution. Note that the extension no longer supports Visual Studio 2005. -
Added a
cloneWithPrefix
operation to theLogger
interface. -
Added a
removeServantLocator
operation to theObjectAdapter
interface. -
The translators now include a comment at the beginning of each generated file to indicate that the file is machine-generated. This is particularly useful for tools such as StyleCop.
-
The IceGrid graphical administration tool now allows you to filter the live deployment for a particular application.
-
Added the ability to query an IceGrid node to determine the number of CPU sockets on its host machine. Currently this only works for Windows Vista (or later) and native (non-VM) Linux. You can also manually configure the number of CPU sockets.
-
Freeze now uses file locks to prevent multiple processes from opening the same database environment.
-
Added new utility classes to simplify the use of Glacier2. The
Glacier2::Application
class extendsIce::Application
to add support for keeping a Glacier2 session alive and automatically restarting it when necessary. For Java and C#, helper classes are also provided for use in graphical programs. See the Ice manual for more information. -
Added new
InputStream::readAndCheckSeqSize
method to read and check the size of a sequence. The check ensures the sequence size is consistent with the stream buffer size. This is useful to prevent over-allocating memory for the sequence if the input stream data cannot be trusted. -
When using the system logger (enabled when
Ice.UseSyslog
is set), it is now possible to set the facility via theIce.SyslogFacility
property. The default value isLOG_USER
. -
It is now legal to pass an empty name to
createObjectAdapterWithRouter
andcreateObjectAdapterWithEndpoints
. If so, a UUID will be used for the object adapter's name. -
Added support for dispatching servant invocations and AMI callbacks in application-specific threads (e.g., in a GUI-safe thread). The application needs to implement the
Ice::Dispatcher
interface and initialize the communicator appropriately to use this dispatcher implementation. See the Ice manual for more information. -
icegridadmin
now clears the user-supplied password after use. -
icegridadmin
now correctly handles EOF when reading username and password. -
The
Connection::createProxy
method will now create a secure proxy if the connection is secure and a datagram proxy if the connection is a datagram connection. -
Added
Communicator::proxyToProperty
which converts a proxy to a property set. -
Calling
Glacier2::Router::destroySession()
no longer raises anIce::ConnectionLostException
exception. Glacier2 no longer forcefully closes the connection of a destroyed session but instead allows active connection management (ACM) for client connections to close it (see below). -
Glacier2 has been changed to support the use of active connection management. Active connection management is enabled by default for Glacier2 client connections if
Glacier2.SessionTimeout
is set. The ACM timeout is set to twice the value of the session timeout. If the session timeout is disabled, ACM is also disabled for client connections. -
Added support for a per-object adapter ACM timeout configured via the
<adapter>.ACM property
. If not set, the property defaults to value ofIce.ACM.Server
set for the adapter's communicator. -
Improved the Ice run time's invocation retry facility to always retry at least once on
Ice::CloseConnectionException
failures even if the retry limit has been reached. If retries are disabled, this ensures that an invocation is retried if it fails with anIce::CloseConnectionException
. -
Added
Glacier2.AddConnectionContext
property to enable forwarding connection information into the context of routed invocations. See the manual for more information.Glacier2.AddSSLContext
has been deprecated, this new property should be used instead. -
Added
Ice.Override.CloseTimeout
property. This property overrides timeout settings used to close connections. -
Ice connections are now forcefully closed after sending a close connection message and once the connection timeout expires. Previously, the connection would only be closed when the object adapter or communicator was destroyed.
-
The new
Ice::ThreadHookPlugin
class allows you to install thread notification hooks during communicator initialization via plug-ins. -
Added
Glacier2::Router::refreshSession
, which keeps the client's Glacier2 session alive. This is useful in the case that the application architecture does not use a Glacier2 session manager. Modifieddemo/Glacier2/callback
to demonstrate the use of this method. -
Fixed bug in
icegridadmin
where invalid XML could cause a crash. -
Fixed a bug where calling the object adapter
waitForHold()
method would cause other calls on the object adapter to hang until thewaitForHold()
method returned. -
Improved connection establishment scalability. Creating or accepting a new connection should now be done in constant time regardless of the number of connections already established or accepted.
-
Fixed Glacier2 router bug which would cause the
getCategoryForClient
method to throwIce::NullHandleException
if the server endpoints were not set; instead it now returns an empty string. -
Ice.NegativeSizeException
has been removed. The run time now throwsMarshalException
orUnmarshalOutOfBoundsException
instead. -
The Ice thread pool now supports receiving and sending data over Ice connections using multiple threads. Allowing multiple connections to concurrently send and receive data improves CPU usage on machines with multiple cores. The maximum number of threads allowed to concurrently send/receive data is capped by the number of available cores.
-
The Ice run time now uses Windows completion ports and overlapped IO to accept, connect, and receive and send data over connections. This improves scalability of server applications handling many connections on Windows.
-
Ice connections now support read timeouts. A connection will now eventually timeout once the connection timeout is reached if no more data is available for reading after the message header was received. ACM no longer closes a connection for which a message is being received.
-
The
IceSSL.TrustOnly
properties support a new syntax that allows you to reject a peer whose distinguished name matches certain criteria. -
IceSSL now compares the host name or IP address in a proxy endpoint (if any) against the common name of the server's certificate when the property
IceSSL.CheckCertName
is enabled. This is in addition to the existing behavior that compared the host name or IP address against the DNS names and IP addresses in the server certificate's subject alternative name extension. -
slice2docbook
is no longer supported and has been removed from the distribution. -
slice2html
comments now use a syntax that matches the javadoc syntax. Instead ofmodule::interface::operation
slice2html
now expectsmodule.interface#operation
Similarly, the link syntax now follows the javadoc syntax. Instead of
[module::interface::operation]
slice2html
now expects{@link module.interface#operation}
The old syntax is still supported;
slice2html
prints a warning for each source file in which it encounters the old syntax. -
A batch invocation now only throws if the connection associated with the proxy failed and there were batch requests queued at the time of the failure. If there were no batch requests queued, the batch invocation does not throw but instead tries to obtain a new connection.
-
Added the ability to read properties from the Windows registry. This is done by setting the Ice.Config property to a value such as the following:
HKLM\Software\MyCompany\IceProperties
This will read all the string values from the specified key in
HKEY_LOCAL_MACHINE
and set them as Ice properties. -
iceserviceinstall
, the Windows service installation utility, now supports reading its configuration settings from HKLM in the Windows registry. -
Added ability to get information from endpoints such as host and port without having to parse the stringified endpoint.
-
Added ability to get addressing information from a connection.
-
The
IceSSL::ConnectionInfo
type is now generated from a local Slice definition. You can downcast this type toNativeConnectionInfo
if you require access to native certificates. -
Slice files are now allowed to be in UTF-8 format and include UTF-8 BOM at start of file and include UTF-8 characters in comments.
-
Fixed bug in Slice compilers that would cause a crash if a Slice file had double slashes in its path.
-
The following properties were deprecated in Ice 3.2 and have been removed:
Glacier2.AddUserToAllowCategories
Glacier2.AllowCategories
Ice.UseEventLog
-
The following APIs were deprecated in Ice 3.2 and have been removed:
Communicator::setDefaultContext
Communicator::getDefaultContext
ObjectPrx:ice_defaultContext
-
Support for the deprecated Slice keyword
nonmutating
has been removed. As a result the following property has also been removed:Freeze.UseNonmutating
-
HP-UX is no longer a supported platform for Ice.
-
Added extra network tracing to show the list of local interfaces currently available when an endpoint is using a wildcard host, as well as the published endpoints for an object adapter. Both of these traces will be shown when
Ice.Trace.Network
>= 1. -
Added new property,
Ice.Trace.ThreadPool
, that when set >= 1 enables tracing of thread pool creation as dynamic thread pools grow and shrink. -
Changed the format of the default logger output. Traces are now prepended by '--', warnings by '-!' and errors by '!!'.
-
The value of the thread pool
SizeWarn
property is now 0 by default rather than 80% of Size. This means that by default warnings about thread pool growth will now be disabled. -
Added example
demo/Ice/plugin
to show how to write a simple Ice plug-in as well as a Logger plug-in. -
Added
getPlugins
method toPluginManager
which returns a list of the names of all installed plug-ins. -
The reason member of
MemoryLimitException
now contains the size of the request that caused the exception as well as the value of the maximum message size. -
The
Ice::Application
helper classes now use the process logger to emit errors rather than just writing directly to stderr. -
A Slice class that implements an interface but does not define or inherit any operations is now mapped to a concrete class. This change affects the Java, C#, Python, and Ruby language mappings.
-
It is now possible to use an UNC path as an include directive for the Slice compilers.
-
Fixed a bug in
slice2html
that caused incorrect hyperlinks to be generated for the summary of the index sections of a module page. -
Added a new property,
Ice.LogFile
, which causes the default Ice logger to write to a file rather than stderr. The file name is the property's value. -
Added the following operations to the
ObjectAdapter
API:addDefaultServant
removeDefaultServant
findDefaultServant
These methods provide a simpler way of using default servants in Ice. Please refer to the manual for more information.
-
Using the
--depend
option with Slice compilers that support it no longer outputs dependency info even if the Slice file itself contains errors.
-
Renamed the
createIceStringConverter
function back tocreateStringConverter
for compatibility with previous releases. -
Added a new demo named
interleaved
that shows how to use asynchronous invocation and dispatch to achieve maximum throughput with Ice. -
Fixed a bug that prevented an application from using Unicode path names for Freeze databases on Windows.
-
Enhanced the portable streaming API to provide better support for template programming.
-
The C++ class generated for a derived Slice class no longer uses virtual inheritance by default. The metadata
cpp:virtual
can be defined for a Slice class to force the translator to use virtual inheritance when necessary. -
The following functions have new overloaded versions on Windows that accept a Unicode argument vector:
Ice::Application::main
Ice::Service::main
Ice::argsToStringSeq
-
Added support for specifying the priority of threads in a thread pool. See the Ice manual for more information.
-
Added new demo
book/map_filesystem
. -
IceUtil:: Shared
now uses the native atomic functions provided by gcc 4.1 and later on supported platforms. For details see http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html -
Fixed a bug in
slice2cpp
that could cause incorrect includes to be generated if a Slice file was included that was a symbolic link. -
On Windows it is now possible to build the Ice DLLs with unique names for each supported compiler. See
UNIQUE_DLL_NAMES
setting incpp/config/Make.rules.mak
. -
The Ice DLLs no longer all use the default base load address.
-
Changed the signature of the
Ice::Service
start method. -
Added new static methods to initialize an
IceUtil::Time
class from a double:IceUtil::Time::secondsDouble(double)
IceUtil::Time::milliSecondsDouble(double)
IceUtil::Time::microSecondsDouble(double)
-
Added the ability to use alternative database storage for IceStorm and IceGrid other than Freeze. The following SQL databases are supported: SQLite and PostgreSQL. Please see the manual for more information.
-
Fixed a bug where globally-scoped garbage collected class pointers could cause a crash on application termination.
-
Fixed a bug where an SSL connection was rejected because of a certificate validation failure even if
IceSSL.VerifyPeer=0
. -
Added
ice_stackTrace()
method toException
classes, which returns the exception stack trace on platforms/compilers that support it. Currently this is only supported with the GCC compiler. -
Added new property,
Ice.PrintStackTraces
, which controls whether the Ice logger utility classes (Ice::Trace
,Ice::Warning
, etc) print the stack trace for Ice exceptions. By default it is enabled for debug builds and disabled for release builds. -
Removed
AMD_Array_Object_ice_invoke
class and instead added an ice_response method toAMD_Object_ice_invoke
that uses the array type. -
The system logger (enabled when
Ice.UseSyslog
is set) now uses the value ofIce.ProgramName
as the log identifier prefix. -
Fixed crash if
Application::main()
or Service::main() were called withargc == 0
.
-
The Freeze map API now uses Java5 generic type conventions.
-
Ice now tests for the presence of the Bzip2 classes only if an application attempts to use compression.
-
Added new demo
book/map_filesystem
. -
Changed IceSSL to use the keystore as the truststore if no truststore is explicitly defined.
-
Added new
ice_dispatch
method toObject
that does not take aDispatchInterceptorAsyncCallback
parameter to be used for synchronous dispatch only. -
Added support for using direct buffers in the transport layer to minimize copying. The semantics of the
Ice.CacheMessageBuffers
property have been extended as follows:0 = no buffer caching 1 = buffer caching using non-direct buffers 2 = buffer caching using direct buffers
If this property is not defined, the new default value is 2.
-
The Ice run time now re-throws exceptions using fillInStackTrace to ensure the exception stack trace includes the calling point.
-
Added the
classLoader
member toIce.InitializationData
, which allows you to supply a custom class loader that Ice uses to load plug-ins, user exceptions, concrete Slice classes, etc. -
Fixed a bug in the implementation of
ice_invoke_async
. -
The Freeze classes are now stored in a separate JAR file named
Freeze.jar
. -
The translator no longer generates one-shot constructors for class, struct and exception types if doing so would exceed Java's limit of 255 parameters for a method.
-
Fixed a bug where an outgoing SSL connection was allowed even though certificate validation failed.
-
A holder class generated for a Slice class or interface now extends the generic base class
Ice.ObjectHolderBase
and implements the streaming interfaceIce.ReadObjectCallback
. -
slice2java
no longer generates a<name>OperationsNC
interface for local interfaces and classes. This makes the code easier to browse with IDEs. -
slice2java
now preserves javadoc comments that appear in the Slice source and writes them through to the corresponding APIs in the generated code. -
Ice.jar
andFreeze.jar
now include source files. This allows IDEs such as Eclipse to browse the Ice source code and to display javadoc comments. -
Fixed a bug that caused
UnmarshalOutOfBoundsException
during an attempt to unmarshal an exception or class ifIce.jar
is installed in the JVM's extension directory. -
The following APIs are deprecated and will be removed in a future release.
Ice.Object.ice_hash()
Ice.ObjectPrx.ice_getHash()
Ice.ObjectPrx.ice_toString()
-
The
StackSize
thread pool configuration property is now used. -
The generated classes for Slice structs are no longer declared final.
-
Ice.Util.generateUUID
has been deprecated. Usejava.util.UUID.randomUUID().toString()
instead. -
Ice now supports the ability to load a configuration file as a class path resource. For a path name specified in the
ICE_CONFIG
environment variable, in the--Ice.Config
command-line option, or passed toProperties::load()
, Ice first attempts to open the file as a class path resource and, if that fails, tries to open it as a file in the local file system. See the manual for more information. -
Removed the Java2 mapping. The release notes contain instructions for migrating an application to the Java5 mapping.
-
Changed the Slice compiler to emit
@SuppressWarning
annotations only when necessary. -
Fixed a discrepancy between the documented behavior of the property
IceSSL.CheckCertName
and its actual behavior. The documented behavior states that IceSSL compares the host name as it appears in the proxy's endpoint against the server certificate's alternative subject names. The actual behavior in Ice 3.3 differed slightly in that the host name may have undergone a translation that could result in IceSSL using a different host name than that of the proxy. For example, the proxy may have contained "127.0.0.1" but IceSSL used "localhost". This could cause the SSL connection attempt to fail ifIceSSL.CheckCertName
is enabled. IceSSL now uses the host name from the proxy for this validation step.
-
The Ice DLLs no longer all use the default base load address.
-
Both Ice Plugin and IceBox Service configuration now allow you to enter a full path as the assembly DLL name.
-
Added new
ice_dispatch
method to Object that does not take aDispatchInterceptorAsyncCallback
parameter to be used for synchronous dispatch only. -
IceSSL's behavior with respect to the
IceSSL.CheckCertName
property is now consistent with that of C++ and Java. Specifically, IceSSL compares the host name or IP address in a proxy endpoint (if any) against the common name and subject alternative names of the server's certificate. In prior releases, IceSSL relied on .NET to perform the validation of the common name but no comparison was made with the subject alternative names. -
Fixed bug where random endpoint selection would only work for proxies with more than two endpoints.
-
Fixed thread safety issue in random endpoint selection.
-
slice2cs
no longer generates a<name>OperationsNC
interface for local interfaces and classes. This makes the code easier to browse with IDEs. -
slice2cs
now converts javadoc comments in Slice files into Visual C# XML documentation comments. This allows you to generate an<assembly>.xml
file from the documentation comments by passing the/doc
option to Visual C#. The comments in the .xml file are shown as Visual C# tooltips if the<assembly>.xml
file is installed in the same directory as the<assembly>.dll
file.The build for Ice now generates the
<assembly>.xml
file for each assembly and installs it, so Visual C# displays tooltips for Ice APIs. -
The generated types for Slice classes, interfaces, structs and exceptions are now declared as partial.
-
The following APIs are deprecated and will be removed in a future release.
Ice.Object.ice_hash()
Ice.ObjectPrx.ice_getHash()
Ice.ObjectPrx.ice_toString()
-
The
StackSize
thread pool configuration property is now used. -
The default Ice logger now uses
System.Diagnostics.Trace
to output messages. Please see manual and Trace documentation for more information. -
Ice.Util.generateUUID
has been deprecated. UseSystem.Guid.NewGuid.ToString()
instead.
-
Fixed a code generation bug that could lead to undefined Slice types, depending on the order in which the generated code was imported.
-
Changed the Python mapping for long integer constants so that 64-bit values are no longer generated as strings.
-
The extension now restores the pre-existing dlopen flags.
-
The
__cmp__
method generated for slice structures and enumerations has been replaced by the rich operators__lt__
,__le__
,__eq__
,__ne__
,__gt__
,__ge__
. -
Slice comments are now converted into Python docstrings in the generated code.
-
Added the administrative facet API.
-
Integer values are now accepted where floating point values are expected.
-
Objects that support the number protocol are now accepted as legal values for Slice integer and floating-point types.
-
64-bit integers are now supported in buffer types.
-
Fixed a compilation error when using Ruby 1.8.7 (patch level >= 248).
-
The following API as been deprecated and will be removed in a future release.
Ice::ObjectPrx::ice_getHash()
-
Enumerations are now supported as dictionary key types.
-
Integer values are now accepted where floating point values are expected.
-
Added
slice2php
and removed dynamic Slice translation. -
Added support for PHP namespaces (requires PHP 5.3 or later).
-
Added ability to create and destroy communicators. Use the function
Ice_initialize
(\Ice\initialize
) to create a communicator. By default, all communicators created during a page request are destroyed automatically at the end of the request. -
Added ability to register a communicator for use in a subsequent page request. Three new functions are provided:
-
Ice_register
(\Ice\register
) -
Ice_unregister
(\Ice\unregister
) -
Ice_find
(\Ice\find
)
-
-
Added a demo (in
Glacier2/hello
) that shows how to register and use the same communicator instance for multiple page requests in a PHP session. -
Added support for all Slice local exceptions.
-
The INI settings are now used to configure property sets that a script can use to initialize a communicator. The
ice.slice
directive is no longer supported. -
Added the function
Ice_createProperties()
. -
Now generating minimal proxy classes to simplify downcasting.
-
Removed the
$ICE
global variable. -
Removed the following methods:
$ICE->setProperty()
$ICE->getProperty()
-
Removed the following functions:
Ice_stringToIdentity()
Ice_identityToString()
Ice_loadProfile()
Ice_loadProfileWithArgs()
Ice_dumpProfile()
-
Added support for Visual Basic projects. For Visual Basic projects the plug-in only takes care of managing Ice references and not slice compilation.
-
It is now possible to install the plug-in when
My Documents
is linked to a network drive. -
The plug-in will no longer modify projects for which it is not enabled.
-
The plug-in will now compile slice files for C++ projects even if the project does not have
C++ Options
.