diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2015-04-07 10:36:45 -0230 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2015-04-07 10:36:45 -0230 |
commit | 28d881a380dfe3c1cb399b4eb27a195fe5bd7ea3 (patch) | |
tree | ebefe18e678cf7326d3cc12bd845abb71dfbcb96 /CHANGELOG-3.4.md | |
parent | Removed makegem and makepy scripts and associated support files. (diff) | |
download | ice-28d881a380dfe3c1cb399b4eb27a195fe5bd7ea3.tar.bz2 ice-28d881a380dfe3c1cb399b4eb27a195fe5bd7ea3.tar.xz ice-28d881a380dfe3c1cb399b4eb27a195fe5bd7ea3.zip |
ICE-6398 added more CHANGELOG files
Diffstat (limited to 'CHANGELOG-3.4.md')
-rw-r--r-- | CHANGELOG-3.4.md | 1031 |
1 files changed, 1031 insertions, 0 deletions
diff --git a/CHANGELOG-3.4.md b/CHANGELOG-3.4.md new file mode 100644 index 00000000000..8a133fd8279 --- /dev/null +++ b/CHANGELOG-3.4.md @@ -0,0 +1,1031 @@ +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. + +- [Changes in Ice 3.4.2](#changes-in-ice-342) + - [General Changes](#general-changes) + - [C++ Changes](#c-changes) + - [Java Changes](#java-changes) + - [C# Changes](#c#-changes) + - [Python Changes](#python-changes) + - [Ruby Changes](#ruby-changes) + - [PHP Changes](#php-changes) + - [Visual Studio Add-in Changes](#visual-studio-add-in-changes) +- [Changes in 3.4.1](#changes-in-341) + - [General Changes](#general-changes-1) + - [C++ Changes](#c-changes-1) + - [Java Changes](#java-changes-1) + - [C# Changes](#c#-changes-1) + - [Python Changes](#python-changes-1) +- [Changes for 3.4.0](#changes-for-340) + - [General Changes](#general-changes-2) + - [C++ Changes](#c-changes-2) + - [Java Changes](#java-changes-2) + - [C# Changes](#c#-changes-2) + - [Python Changes](#python-changes-2) + - [Ruby Changes](#ruby-changes-1) + - [PHP Changes](#php-changes-1) + - [Visual Studio Plugin Changes](#visual-studio-plugin-changes) + +# Changes in Ice 3.4.2 + +These are changes since Ice 3.4.1. + +## General Changes + +- The operation mode sent over the wire for the Object operations + `ice_ping`, `ice_isA`, `ice_ids`, and `ice_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 the `Ice::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; + ``` + +## C++ Changes + +- 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. + +## Java Changes + +- Added support for Android. + +- Added overloaded constructors for user and system exceptions that + accept a `Throwable` argument. + +- Added an `ice_staticId` method to generated `PrxHelper` 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. + +## C# Changes + +- 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 generated `PrxHelper` classes. + +- Fixed a bug in the generated code when a Slice class uses the + property mapping and declares default values for its members. + +## Python Changes + +- Fixed bug where `None` was not recognized as a keyword. + +## Ruby Changes + +- 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. + +## PHP Changes + +- Fixed a bug that caused `undefined symbol IcePHP__t_XXX` errors when + `Ice.php` or a generated file is included from a non-global scope. + +- `slice2php` now generates `require_once` statements corresponding to + Slice `#include` directives, replacing the `require` statements used + in previous releases. + +- Fixed a bug in the Ice extension that caused Ice-related INI + settings to be ignored. + +## Visual Studio Add-in Changes + +- 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`, and `Apply` 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. + +# Changes in 3.4.1 + +These are changes since Ice 3.4.0. + +## General Changes + +- Added the new property `Freeze.DbEnv.<db>.LockFile` and changed the + `dumpdb` and `transformdb` 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 to `Glacier2.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 the `getPort()` method would return an incorrect default port if + no port was configured. + +## C++ Changes + +- 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 asynchronous `end_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. + +## Java Changes + +- Fixed an issue in which intensive use of Freeze or the stream API + could cause an `OutOfMemoryError`. Note that Freeze maps must be + regenerated with `slice2freezej` 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 in `slice2java` + 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 from + `Ice.Callback`. + +- The `size` method on a `Freeze.Map` and on the value of an indexed + submap now use the current transaction associated with the + connection, if any. + +## C# Changes + +- 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. + +## Python Changes + +- 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 from `main()`. + +# Changes in 3.4.0 + +These are changes since Ice 3.3.1. + +## General Changes + +- 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` and `slice2py` that would occur if a comment + contained a `<` with no closing `>`. + +- Fixed a bug in the Java and C# stream classes where `readString()` and + `readBlob()` 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)` + and `Ice.createProperties()` overloads in Python, Ruby and PHP to + match the C++, .NET and Java behavior. These overloads no longer + read the `ICE_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 the `Logger` interface. + +- Added a `removeServantLocator` operation to the `ObjectAdapter` + 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 extends `Ice::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 the `Ice.SyslogFacility` + property. The default value is `LOG_USER`. + +- It is now legal to pass an empty name to `createObjectAdapterWithRouter` + and `createObjectAdapterWithEndpoints`. 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 an + `Ice::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 of `Ice.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 an + `Ice::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. Modified `demo/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 the + `waitForHold()` 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 throw `Ice::NullHandleException` if the server endpoints + were not set; instead it now returns an empty string. + +- `Ice.NegativeSizeException` has been removed. The run time now throws + `MarshalException` or `UnmarshalOutOfBoundsException` 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 of + + module::interface::operation + + `slice2html` now expects + + module.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 to `NativeConnectionInfo` 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 to `PluginManager` 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. + +## C++ Changes + +- Renamed the `createIceStringConverter` function back to + `createStringConverter` 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 in + `cpp/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 to `Exception` 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 to `AMD_Object_ice_invoke` that uses the array + type. + +- The system logger (enabled when `Ice.UseSyslog` is set) now uses the + value of `Ice.ProgramName` as the log identifier prefix. + +- Fixed crash if `Application::main()` or Service::main() were called + with `argc == 0`. + +## Java Changes + +- 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 to `Object` that does not take a + `DispatchInterceptorAsyncCallback` 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 to `Ice.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 interface `Ice.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` and `Freeze.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 if `Ice.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. Use + `java.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 to `Properties::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 if `IceSSL.CheckCertName` is enabled. IceSSL now uses the host + name from the proxy for this validation step. + +## C# Changes + +- 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 a + `DispatchInterceptorAsyncCallback` 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 <assembly>.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. Use + `System.Guid.NewGuid.ToString()` instead. + +## Python Changes + +- 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. + + +## Ruby Changes + +- 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()` + +## PHP Changes + +- 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()` + +## Visual Studio Add-in Changes + +- 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`. |