1 ======================================================================
3 ======================================================================
5 The entries below contain brief descriptions of the changes in a
6 release, in no particular order. Some of the entries reflect
7 significant new additions, while others represent minor corrections.
8 Although this list is not a comprehensive report of every change we
9 made in a release, it does provide details on the changes we feel
10 Ice users might need to be aware of.
12 We recommend that you use the release notes included in your Ice
13 distribution as a guide for migrating your applications to this
14 release, and the Ice manual for complete details on a particular
17 Note that this file only includes changes since Ice 3.2.1. For the
18 change history of prior releases, refer to the CHANGES file in the
19 subdirectory of each language mapping (e.g., cpp/CHANGES).
22 ======================================================================
23 Changes since version 3.4.1
24 ======================================================================
30 - The operation mode sent over the wire for the Object operations
31 ice_ping, ice_isA, ice_ids, and ice_id should be Nonmutating, but
32 the language mappings were inconsistent in this respect. All
33 language mappings now send the correct mode.
35 - Fixed a bug where under certain circumstances, Ice would
36 indefinitely re-try to add a proxy to the Glacier2 routing table.
38 - Improved queuing of Glacier2 requests to the client to not invoke
39 requests if the client connection already has requests pending for
40 send. Instead, Glacier2 waits for the pending requests to be
41 sent. This allow request overriding to occur more often when the
42 client connection is slow.
44 - Fixed bug where an IceGrid node or registry could hang for a long
45 time on startup if some IceGrid registry replicas weren't reachable.
47 - Added throwLocalException method to the Ice AsyncResult class. If
48 the request fails with a local exception, this method throws the
51 - Fixed a bug that caused a crash if a timeout occurs while sending
52 an AMI request and if automatic retry is enabled (the default).
54 - It is now possible to use a constant as the default value for a data
65 It is also possible for a constant to refer to another constant:
68 const int MAXIMUM_SIZE = 100;
69 const int DEFAULT_SIZE = MAXIMUM_SIZE;
75 - Fixed a bug in the Linux epoll selector implementation that could
76 cause hangs when using the thread pool serialization mode.
78 - Fixed a memory leak in IceSSL on Windows.
80 - Fixed a bug in the generated code for a Slice structure containing
81 at least one data member that declares a default value. The
82 constructors were not being exported correctly in this case.
84 - Fixed a bug where the IceUtil::Timer thread could die in case very
85 large delays were specified.
87 - Removed extra include/IceGrid/Perf.h file.
93 - Added support for Android.
95 - Added overloaded constructors for user and system exceptions that
96 accept a Throwable argument.
98 - Added an ice_staticId method to generated PrxHelper classes.
100 - Fixed a bug in slice2java in which a floating point default value
101 could cause a compile error.
103 - Fixed a bug where Ice.ServerIdleTime wouldn't consistently shutdown
104 servers after the given period of inactivity.
110 - Added support for the .NET Compact Framework.
112 - Added demo/Ice/compact, which is a simple graphical client that uses
113 Ice for .NET Compact Framework.
115 - Fixed bugs in the generated code that caused naming conflicts when
116 using a Slice module named 'System'.
118 - Added an ice_staticId method to generated PrxHelper classes.
120 - Fixed a bug in the generated code when a Slice class uses the
121 property mapping and declares default values for its members.
127 - Fixed bug where None was not recognized as a keyword.
133 - Fixed a bug in the Ice extension that would cause an ArgumentError
134 to be raised when attempting to print a byte sequence whose value is
135 a string that contains null bytes.
141 - Fixed a bug that caused 'undefined symbol IcePHP__t_XXX' errors when
142 Ice.php or a generated file is included from a non-global scope.
144 - slice2php now generates 'require_once' statements corresponding to
145 Slice #include directives, replacing the 'require' statements used
146 in previous releases.
148 - Fixed a bug in the Ice extension that caused Ice-related INI
149 settings to be ignored.
152 Visual Studio Add-in Changes
153 ============================
155 - Fixed a bug that prevented the Add-in from automatically compiling
156 Slice files when using a non-English version of Visual Studio.
158 - Improved the layout and wording of the Ice Configuration dialogs.
160 - Added $(IceHome) macro to VS 2008 project configurations.
162 - Changed C++ project configurations to use $(IceHome) macro in
163 configuration settings.
165 - Removed Ice Home field from "Ice Configuration" dialog. Projects
166 now always use the Ice installation corresponding to the location
169 - Fixed issues that prevented the use of solution folders in Ice
172 - Fixed an issue that caused the add-in to not work when using
173 Visual Studio 2010 and "Solution Navigator".
175 - Added a check to prevent incorrect Runtime library usage in C++
178 - Added support for .NET Smart Device project types used by the .NET
181 - Improved add-in output messages.
183 - Fixed an issue that produced a deadlock in Visual Studio when
184 Slice compiler output was large enough to fill the output buffer.
186 - Fixed support for parallel builds. The Slice compiler was run
187 several times, once for each parallel build. Now the Slice
188 compiler is run only once, before all parallel builds begin.
190 - Fixed an issue that could cause errors with Visual Studio if a
191 Slice file was saved while the project was building.
193 - Fixed the add-in to work properly when --header-ext and
194 --source-ext are present in Extra Compiler Options.
196 - Fixed the add-in to support building Freeze demos without the need
197 to set environment variables.
199 - Fixed the add-in to always open generated files as read only;
200 previously the generated files were not opened read only until the
203 - Added support for setting the output directory for generated files,
204 making the add-in more VCS friendly.
206 - Added support for .NET DEVPATH.
208 - Added support for canceling changes in configuration dialogs. All
209 the configuration dialogs now have OK, Cancel, Apply buttons with
210 the standard semantics.
212 - Added warnings to prevent incorrect options from being entered in
213 Extra Compiler Options.
215 - Added a timestamp to Slice build output, which is only printed when
216 the trace level is Debug.
218 - The add-in now supports command-line builds.
220 - The add-in now avoids making extraneous changes to projects that
221 could result in merge issues when projects are in a shared
224 - The add-in no longer overrides the debug environment setting for
225 PATH, but rather appends appropriately.
227 - On the loss of focus when adding an include directory in the Slice
228 Include Path, the addition is now saved rather than lost.
230 - Fixed an issue where moving a Slice-generated file to a filter so
231 that it would be ignored by source control did not always work
232 because the generated files could be moved back into the regular
233 Source Files list by a build.
235 - Improved the tracing output generated by the add-in and changed
239 ======================================================================
240 Changes since version 3.4.0
241 ======================================================================
247 - Added the new property Freeze.DbEnv.<db>.LockFile and changed the
248 dumpdb and transformdb utilities so that they can be run safely on
249 a database environment that is currently open in another process.
251 - Changed the Glacier2 helper classes to cache the client category.
253 - Added the ability to use underscores in Slice identifiers. See the
254 release notes for important information on this change.
256 - Added the setConnectContext method to Glacier2.SessionFactoryHelper,
257 which allows an application to provide a request context to be used
258 when creating a Glacier2 session. (Java and C#)
260 - Fixed IceGrid bug where node observers would not be notified when a
261 server is re-enabled after it has been updated and if the server was
262 disabled following an activation failure.
264 - Fixed a bug in the Glacier2.SessionFactoryHelper class (Java/C#) in
265 which the getPort() method would return an incorrect default port if
266 no port was configured.
272 - Fixed a bug in slice2cpp in which streaming code was not generated
273 properly for types in nested modules.
275 - slice2cpp now generates a "one-shot" constructor for a Slice
276 structure if at least one of its members has a default value.
278 - Fixed a bug in slice2cpp so that asynchronous "end_op" methods are
279 now exported properly.
281 - Fixed a bug in slice2cpp that would generate invalid code for a
282 Slice exception when the --stream option was not used.
284 - Fixed compatibility issues with OpenSSL 1.0.
286 - Fixed a bug in slice2cpp that would cause invalid code to be
287 generated for a nested Slice definition when the --stream option was
290 - Fixed a bug in Freeze that disabled automatic log deletion.
296 - Fixed an issue in which intensive use of Freeze or the stream API
297 could cause an OutOfMemoryError. Note that Freeze maps must be
298 regenerated with slice2freezej to incorporate this fix.
300 - Fixed a bug in the Slice2Java ant task in which duplicate Slice
301 files could be passed to slice2java. Also fixed a bug in slice2java
302 that caused the translator to fail if a duplicate file was passed
305 - Fixed race condition which could cause the thread pool selector
306 thread to go away (causing the thread pool to not dispatch further
309 - Deprecated Ice.AsyncCallback. To use the generic asynchronous
310 callback facility, applications should derive their classes from
313 - The size method on a Freeze.Map and on the value of an indexed
314 submap now use the current transaction associated with the
321 - Fixed a bug in the generated code that prevented sequences from
322 being marshaled using the stream API if the sequences used generic
325 - Fixed a bug in the IceSSL plug-in that could incorrectly report a
326 certificate verification failure when the IceSSL.CheckCertName
333 - Fixed a bug in which destroyed Communicator instances were not being
336 - Fixed a bug in Ice.Application in which the exit status was not
337 properly returned from main().
340 ======================================================================
341 Changes since version 3.4b
342 ======================================================================
348 - Added ability to define default values for Slice data members. For
349 example, you can write:
355 string name = "John";
358 - Fixed IceGrid bug where the IceGrid node would disconnect from the
359 registry if the clock was moved backward.
361 - Fixed hang in slice2cs and slice2py that would occur if a comment
362 contained a '<' with no closing '>'.
364 - Fixed a bug in the Java and C# stream classes where readString() and
365 readBlob() were not checking the size before allocating memory.
367 - Fixed source files to have consistent end of line terminators.
369 - Fixed the Ice.initialize(), Ice.initialize(Ice.InitializationData)
370 and Ice.createProperties() overloads in Python, Ruby and PHP to
371 match the C++, .NET and Java behavior. These overloads no longer
372 read the ICE_CONFIG environment variable.
374 - Fixed IceGrid bug where updating an application could cause a
375 temporary hang if a server deactivation hanged during the update.
381 - Renamed the createIceStringConverter function back to
382 createStringConverter for compatibility with previous releases.
388 - Fixed a code generation bug that could lead to undefined Slice
389 types, depending on the order in which the generated code was
392 - Changed the Python mapping for long integer constants so that 64-bit
393 values are no longer generated as strings.
399 - Fixed a compilation error when using Ruby 1.8.7 (patch level >=
403 ======================================================================
404 Changes since version 3.3.1
405 ======================================================================
411 These entries apply to all relevant language mappings unless otherwise
414 - Added a new asynchronous method invocation (AMI) facility for C++,
415 C#, Java, and Python. The previous API is now deprecated.
417 - Added the ability to invoke flushBatchRequests asynchronously on a
418 communicator or connection.
420 - The Ice extension for Visual Studio is now included in the Ice
421 distribution. The source code for the extension can be found in the
422 vsplugin subdirectory of the source distribution. Note that the
423 extension no longer supports Visual Studio 2005.
425 - Added a cloneWithPrefix operation to the Logger interface.
427 - Added a removeServantLocator operation to the ObjectAdapter
430 - The translators now include a comment at the beginning of each
431 generated file to indicate that the file is machine-generated.
432 This is particularly useful for tools such as StyleCop.
434 - The IceGrid graphical administration tool now allows you to filter
435 the live deployment for a particular application.
437 - Added the ability to query an IceGrid node to determine the number
438 of CPU sockets on its host machine. Currently this only works for
439 Windows Vista (or later) and native (non-VM) Linux. You can also
440 manually configure the number of CPU sockets.
442 - Freeze now uses file locks to prevent multiple processes from
443 opening the same database environment.
445 - Added new utility classes to simplify the use of Glacier2. The
446 Glacier2::Application class extends Ice::Application to add support
447 for keeping a Glacier2 session alive and automatically restarting it
448 when necessary. For Java and C#, helper classes are also provided
449 for use in graphical programs. See the Ice manual for more
452 - Added new InputStream::readAndCheckSeqSize method to read and check
453 the size of a sequence. The check ensures the sequence size is
454 consistent with the stream buffer size. This is useful to prevent
455 over-allocating memory for the sequence if the input stream data
458 - When using the system logger (enabled when Ice.UseSyslog is set), it
459 is now possible to set the facility via the Ice.SyslogFacility
460 property. The default value is LOG_USER.
462 - It is now legal to pass an empty name to createObjectAdapterWithRouter
463 and createObjectAdapterWithEndpoints. If so, a UUID will be used for
464 the object adapter's name.
466 - Added support for dispatching servant invocations and AMI callbacks
467 in application-specific threads (e.g., in a GUI-safe thread). The
468 application needs to implement the Ice::Dispatcher interface and
469 initialize the communicator appropriately to use this dispatcher
470 implementation. See the Ice manual for more information.
472 - icegridadmin now clears the user-supplied password after use.
474 - icegridadmin now correctly handles EOF when reading username and
477 - The Connection::createProxy method will now create a secure
478 proxy if the connection is secure and a datagram proxy if the
479 connection is a datagram connection.
481 - Added Communicator::proxyToProperty which converts a proxy to a
484 - Calling Glacier2::Router::destroySession() no longer raises an
485 Ice::ConnectionLostException exception. Glacier2 no longer
486 forcefully closes the connection of a destroyed session but instead
487 allows active connection management (ACM) for client connections to
488 close it (see below).
490 - Glacier2 has been changed to support the use of active connection
491 management. Active connection management is enabled by default for
492 Glacier2 client connections if Glacier2.SessionTimeout is set.
493 The ACM timeout is set to twice the value of the session timeout. If
494 the session timeout is disabled, ACM is also disabled for client
497 - Added support for a per-object adapter ACM timeout configured via
498 the <adapter>.ACM property. If not set, the property defaults to
499 value of Ice.ACM.Server set for the adapter's communicator.
501 - Improved the Ice run time's invocation retry facility to always
502 retry at least once on Ice::CloseConnectionException failures even
503 if the retry limit has been reached. If retries are disabled, this
504 ensures that an invocation is retried if it fails with an
505 Ice::CloseConnectionException.
507 - Added Glacier2.AddConnectionContext property to enable forwarding
508 connection information into the context of routed invocations. See
509 the manual for more information. Glacier2.AddSSLContext has been
510 deprecated, this new property should be used instead.
512 - Added Ice.Override.CloseTimeout property. This property overrides
513 timeout settings used to close connections.
515 - Ice connections are now forcefully closed after sending a close
516 connection message and once the connection timeout
517 expires. Previously, the connection would only be closed when the
518 object adapter or communicator was destroyed.
520 - The new Ice::ThreadHookPlugin class allows you to install thread
521 notification hooks during communicator initialization via plug-ins.
523 - Added Glacier2::Router::refreshSession, which keeps the client's
524 Glacier2 session alive. This is useful in the case that the
525 application architecture does not use a Glacier2 session
526 manager. Modified demo/Glacier2/callback to demonstrate the use of
529 - Fixed bug in icegridadmin where invalid XML could cause a crash.
531 - Fixed a bug where calling the object adapter waitForHold() method
532 would cause other calls on the object adapter to hang until the
533 waitForHold() method returned.
535 - Improved connection establishment scalability. Creating or accepting
536 a new connection should now be done in constant time regardless of
537 the number of connections already established or accepted.
539 - Fixed Glacier2 router bug which would cause the getCategoryForClient
540 method to throw Ice::NullHandleException if the server endpoints
541 were not set; instead it now returns an empty string.
543 - Ice.NegativeSizeException has been removed. The run time now throws
544 MarshalException or UnmarshalOutOfBoundsException instead.
546 - The Ice thread pool now supports receiving and sending data over Ice
547 connections using multiple threads. Allowing multiple connections to
548 concurrently send and receive data improves CPU usage on machines
549 with multiple cores. The maximum number of threads allowed to
550 concurrently send/receive data is capped by the number of available
553 - The Ice run time now uses Windows completion ports and overlapped IO
554 to accept, connect, and receive and send data over connections. This
555 improves scalability of server applications handling many
556 connections on Windows.
558 - Ice connections now support read timeouts. A connection will now
559 eventually timeout once the connection timeout is reached if no more
560 data is available for reading after the message header was received.
561 ACM no longer closes a connection for which a message is being
564 - The IceSSL.TrustOnly properties support a new syntax that allows you
565 to reject a peer whose distinguished name matches certain criteria.
567 - IceSSL now compares the host name or IP address in a proxy endpoint
568 (if any) against the common name of the server's certificate when
569 the property IceSSL.CheckCertName is enabled. This is in addition to
570 the existing behavior that compared the host name or IP address
571 against the DNS names and IP addresses in the server certificate's
572 subject alternative name extension.
574 - slice2docbook is no longer supported and has been removed from
577 - slice2html comments now use a syntax that matches the javadoc
580 module::interface::operation
582 slice2html now expects
584 module.interface#operation
586 Similarly, the link syntax now follows the javadoc syntax. Instead
589 [module::interface::operation]
591 slice2html now expects
593 {@link module.interface#operation}
595 The old syntax is still supported; slice2html prints a warning for
596 each source file in which it encounters the old syntax.
598 - A batch invocation now only throws if the connection associated
599 with the proxy failed and there were batch requests queued at the
600 time of the failure. If there were no batch requests queued, the
601 batch invocation does not throw but instead tries to obtain a new
604 - Added the ability to read properties from the Windows registry. This
605 is done by setting the Ice.Config property to a value such as the
608 HKLM\Software\MyCompany\IceProperties
610 This will read all the string values from the specified key in
611 HKEY_LOCAL_MACHINE and set them as Ice properties.
613 - iceserviceinstall, the Windows service installation utility, now
614 supports reading its configuration settings from HKLM in the Windows
617 - Added ability to get information from endpoints such as host and
618 port without having to parse the stringified endpoint.
620 - Added ability to get addressing information from a connection.
622 - The IceSSL::ConnectionInfo type is now generated from a local Slice
623 definition. You can downcast this type to NativeConnectionInfo if
624 you require access to native certificates.
626 - Slice files are now allowed to be in UTF-8 format and include UTF-8
627 BOM at start of file and include UTF-8 characters in comments.
629 - Fixed bug in Slice compilers that would cause a crash if a Slice
630 file had double slashes in its path.
632 - The following properties were deprecated in Ice 3.2 and have been
635 Glacier2.AddUserToAllowCategories
636 Glacier2.AllowCategories
639 - The following APIs were deprecated in Ice 3.2 and have been removed:
641 Communicator::setDefaultContext
642 Communicator::getDefaultContext
643 ObjectPrx:ice_defaultContext
645 - Support for the deprecated Slice keyword 'nonmutating' has been
646 removed. As a result the following property has also been removed:
648 Freeze.UseNonmutating
650 - HP-UX is no longer a supported platform for Ice.
652 - Added extra network tracing to show the list of local interfaces
653 currently available when an endpoint is using a wildcard host, as
654 well as the published endpoints for an object adapter. Both of these
655 traces will be shown when Ice.Trace.Network >= 1.
657 - Added new property, Ice.Trace.ThreadPool, that when set >= 1 enables
658 tracing of thread pool creation as dynamic thread pools grow and
661 - Changed the format of the default logger output. Traces are now
662 prepended by '--', warnings by '-!' and errors by '!!'.
664 - The value of the thread pool SizeWarn property is now 0 by default
665 rather than 80% of Size. This means that by default warnings about
666 thread pool growth will now be disabled.
668 - Added example demo/Ice/plugin to show how to write a simple Ice
669 plug-in as well as a Logger plug-in.
671 - Added getPlugins method to PluginManager which returns a list of the
672 names of all installed plug-ins.
674 - The reason member of MemoryLimitException now contains the size of
675 the request that caused the exception as well as the value of the
676 maximum message size.
678 - The Ice::Application helper classes now use the process logger to
679 emit errors rather than just writing directly to stderr.
681 - A Slice class that implements an interface but does not define or
682 inherit any operations is now mapped to a concrete class. This
683 change affects the Java, C#, Python, and Ruby language mappings.
685 - It is now possible to use an UNC path as an include directive for
688 - Fixed a bug in slice2html that caused incorrect hyperlinks to be
689 generated for the summary of the index sections of a module page.
691 - Added a new property, Ice.LogFile, which causes the default Ice
692 logger to write to a file rather than stderr. The file name is the
695 - Added the following operations to the ObjectAdapter API:
698 - removeDefaultServant
701 These methods provide a simpler way of using default servants in
702 Ice. Please refer to the manual for more information.
704 - Using the --depend option with Slice compilers that support it no
705 longer outputs dependency info even if the Slice file itself
712 - Added a new demo named "interleaved" that shows how to use
713 asynchronous invocation and dispatch to achieve maximum throughput
716 - Fixed a bug that prevented an application from using Unicode path
717 names for Freeze databases on Windows.
719 - Enhanced the portable streaming API to provide better support for
720 template programming.
722 - The C++ class generated for a derived Slice class no longer uses
723 virtual inheritance by default. The metadata "cpp:virtual" can be
724 defined for a Slice class to force the translator to use virtual
725 inheritance when necessary.
727 - The following functions have new overloaded versions on Windows that
728 accept a Unicode argument vector:
730 Ice::Application::main
734 - Added support for specifying the priority of threads in a thread
735 pool. See the Ice manual for more information.
737 - Added new demo book/map_filesystem.
739 - IceUtil:: Shared now uses the native atomic functions provided by gcc
740 4.1 and later on supported platforms. For details see
741 http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
743 - Fixed a bug in slice2cpp that could cause incorrect includes to be
744 generated if a Slice file was included that was a symbolic link.
746 - On Windows it is now possible to build the Ice DLLs with unique names
747 for each supported compiler. See UNIQUE_DLL_NAMES setting in
748 cpp/config/Make.rules.mak.
750 - The Ice DLLs no longer all use the default base load address.
752 - Changed the signature of the Ice::Service start method.
754 - Added new static methods to initialize an IceUtil::Time class from
757 IceUtil::Time::secondsDouble(double)
758 IceUtil::Time::milliSecondsDouble(double)
759 IceUtil::Time::microSecondsDouble(double)
761 - Added the ability to use alternative database storage for IceStorm
762 and IceGrid other than Freeze. The following SQL databases are
763 supported: SQLite and PostgreSQL. Please see the manual for more
766 - Fixed a bug where globally-scoped garbage collected class pointers
767 could cause a crash on application termination.
769 - Fixed a bug where an SSL connection was rejected because of a
770 certificate validation failure even if IceSSL.VerifyPeer=0.
772 - Added ice_stackTrace() method to Exception classes, which returns
773 the exception stack trace on platforms/compilers that support it.
774 Currently this is only supported with the GCC compiler.
776 - Added new property, Ice.PrintStackTraces, which controls whether the
777 Ice logger utility classes (Ice::Trace, Ice::Warning, etc) print the
778 stack trace for Ice exceptions. By default it is enabled for debug
779 builds and disabled for release builds.
781 - Removed AMD_Array_Object_ice_invoke class and instead added an
782 ice_response method to AMD_Object_ice_invoke that uses the array
785 - The system logger (enabled when Ice.UseSyslog is set) now uses the
786 value of Ice.ProgramName as the log identifier prefix.
788 - Fixed crash if Application::main() or Service::main() were called
795 - The Freeze map API now uses Java5 generic type conventions.
797 - Ice now tests for the presence of the Bzip2 classes only if an
798 application attempts to use compression.
800 - Added new demo book/map_filesystem.
802 - Changed IceSSL to use the keystore as the truststore if no
803 truststore is explicitly defined.
805 - Added new ice_dispatch method to Object that does not take a
806 DispatchInterceptorAsyncCallback parameter to be used for
807 synchronous dispatch only.
809 - Added support for using direct buffers in the transport layer to
810 minimize copying. The semantics of the Ice.CacheMessageBuffers
811 property have been extended as follows:
813 0 = no buffer caching
814 1 = buffer caching using non-direct buffers
815 2 = buffer caching using direct buffers
817 If this property is not defined, the new default value is 2.
819 - The Ice run time now re-throws exceptions using fillInStackTrace to
820 ensure the exception stack trace includes the calling point.
822 - Added the "classLoader" member to Ice.InitializationData, which
823 allows you to supply a custom class loader that Ice uses to load
824 plug-ins, user exceptions, concrete Slice classes, etc.
826 - Fixed a bug in the implementation of ice_invoke_async.
828 - The Freeze classes are now stored in a separate JAR file named
831 - The translator no longer generates one-shot constructors for class,
832 struct and exception types if doing so would exceed Java's limit of
833 255 parameters for a method.
835 - Fixed a bug where an outgoing SSL connection was allowed even though
836 certificate validation failed.
838 - A holder class generated for a Slice class or interface now extends
839 the generic base class Ice.ObjectHolderBase and implements the
840 streaming interface Ice.ReadObjectCallback.
842 - slice2java no longer generates a <name>OperationsNC interface for
843 local interfaces and classes. This makes the code easier to browse
846 - slice2java now preserves javadoc comments that appear in the Slice
847 source and writes them through to the corresponding APIs in the
850 - Ice.jar and Freeze.jar now include source files. This allows IDEs
851 such as Eclipse to browse the Ice source code and to display javadoc
854 - Fixed a bug that caused UnmarshalOutOfBoundsException during an
855 attempt to unmarshal an exception or class if Ice.jar is installed
856 in the JVM's extension directory.
858 - The following APIs are deprecated and will be removed in a future
861 Ice.Object.ice_hash()
862 Ice.ObjectPrx.ice_getHash()
863 Ice.ObjectPrx.ice_toString()
865 - The StackSize thread pool configuration property is now used.
867 - The generated classes for Slice structs are no longer declared final.
869 - Ice.Util.generateUUID has been deprecated. Use
870 java.util.UUID.randomUUID().toString() instead.
872 - Ice now supports the ability to load a configuration file as a class
873 path resource. For a path name specified in the ICE_CONFIG
874 environment variable, in the --Ice.Config command-line option, or
875 passed to Properties::load(), Ice first attempts to open the file as
876 a class path resource and, if that fails, tries to open it as a file
877 in the local file system. See the manual for more information.
879 - Removed the Java2 mapping. The release notes contain instructions
880 for migrating an application to the Java5 mapping.
882 - Changed the Slice compiler to emit @SuppressWarning annotations only
885 - Fixed a discrepancy between the documented behavior of the property
886 IceSSL.CheckCertName and its actual behavior. The documented
887 behavior states that IceSSL compares the host name as it appears in
888 the proxy's endpoint against the server certificate's alternative
889 subject names. The actual behavior in Ice 3.3 differed slightly in
890 that the host name may have undergone a translation that could
891 result in IceSSL using a different host name than that of the proxy.
892 For example, the proxy may have contained "127.0.0.1" but IceSSL
893 used "localhost". This could cause the SSL connection attempt to
894 fail if IceSSL.CheckCertName is enabled. IceSSL now uses the host
895 name from the proxy for this validation step.
901 - The Ice DLLs no longer all use the default base load address.
903 - Both Ice Plugin and IceBox Service configuration now allow you to
904 enter a full path as the assembly DLL name.
906 - Added new ice_dispatch method to Object that does not take a
907 DispatchInterceptorAsyncCallback parameter to be used for
908 synchronous dispatch only.
910 - IceSSL's behavior with respect to the IceSSL.CheckCertName property
911 is now consistent with that of C++ and Java. Specifically, IceSSL
912 compares the host name or IP address in a proxy endpoint (if any)
913 against the common name and subject alternative names of the
914 server's certificate. In prior releases, IceSSL relied on .NET to
915 perform the validation of the common name but no comparison was made
916 with the subject alternative names.
918 - Fixed bug where random endpoint selection would only work for
919 proxies with more than two endpoints.
921 - Fixed thread safety issue in random endpoint selection.
923 - slice2cs no longer generates a <name>OperationsNC interface for
924 local interfaces and classes. This makes the code easier to browse
927 - slice2cs now converts javadoc comments in Slice files into Visual C#
928 XML documentation comments. This allows you to generate
929 an <assembly>.xml file from the documentation comments by passing
930 the /doc option to Visual C#. The comments in the <assembly>.xml
931 file are shown as Visual C# tooltips if the <assembly>.xml file is
932 installed in the same directory as the <assembly>.dll file.
934 The build for Ice now generates the <assembly>.xml file for each
935 assembly and installs it, so Visual C# displays tooltips for Ice
938 - The generated types for Slice classes, interfaces, structs and
939 exceptions are now declared as partial.
941 - The following APIs are deprecated and will be removed in a future
944 Ice.Object.ice_hash()
945 Ice.ObjectPrx.ice_getHash()
946 Ice.ObjectPrx.ice_toString()
948 - The StackSize thread pool configuration property is now used.
950 - The default Ice logger now uses System.Diagnostics.Trace to
951 output messages. Please see manual and Trace documentation for
954 - Ice.Util.generateUUID has been deprecated. Use
955 System.Guid.NewGuid.ToString() instead.
961 - The extension now restores the pre-existing dlopen flags.
963 - The __cmp__ method generated for slice structures and enumerations
964 has been replaced by the rich operators __lt__, __le__, __eq__,
965 __ne__, __gt__, __ge__.
967 - Slice comments are now converted into Python docstrings in the
970 - Added the administrative facet API.
972 - Integer values are now accepted where floating point values are
975 - Objects that support the number protocol are now accepted as legal
976 values for Slice integer and floating-point types.
978 - 64-bit integers are now supported in buffer types.
984 - The following API as been deprecated and will be removed in a
987 Ice::ObjectPrx::ice_getHash()
993 - Enumerations are now supported as dictionary key types.
995 - Integer values are now accepted where floating point values are
998 - Added slice2php and removed dynamic Slice translation.
1000 - Added support for PHP namespaces (requires PHP 5.3 or later).
1002 - Added ability to create and destroy communicators. Use the function
1003 Ice_initialize (\Ice\initialize) to create a communicator. By
1004 default, all communicators created during a page request are
1005 destroyed automatically at the end of the request.
1007 - Added ability to register a communicator for use in a subsequent
1008 page request. Three new functions are provided:
1010 * Ice_register (\Ice\register)
1011 * Ice_unregister (\Ice\unregister)
1012 * Ice_find (\Ice\find)
1014 - Added a demo (in Glacier2/hello) that shows how to register and
1015 use the same communicator instance for multiple page requests in a
1018 - Added support for all Slice local exceptions.
1020 - The INI settings are now used to configure property sets that a
1021 script can use to initialize a communicator. The ice.slice directive
1022 is no longer supported.
1024 - Added the function Ice_createProperties().
1026 - Now generating minimal proxy classes to simplify downcasting.
1028 - Removed the "$ICE" global variable.
1030 - Removed the following methods:
1035 - Removed the following functions:
1037 Ice_stringToIdentity()
1038 Ice_identityToString()
1040 Ice_loadProfileWithArgs()
1044 Visual Studio Plugin Changes
1045 ============================
1047 - Added support for Visual Basic projects. For Visual Basic projects
1048 the plug-in only takes care of managing Ice references and not slice
1051 - It is now possible to install the plug-in when "My Documents" is
1052 linked to a network drive.
1054 - The plug-in will no longer modify projects for which it is not
1057 - The plug-in will now compile slice files for C++ projects even if
1058 the project does not have "C++ Options".
1061 ======================================================================
1062 Changes since version 3.3.0
1063 ======================================================================
1069 These entries apply to all relevant language mappings unless otherwise
1072 - Fixed a bug where ice_getCachedConnection could throw if called
1073 shortly after connection establishment failed.
1075 - Fixed an IceGrid bug where an application update could trigger the
1076 deactivation of all session-activated servers even if these servers
1079 - The frequency at which Ice checks for connections that can be reaped
1080 by active connection management (ACM) is now set by default to 10%
1081 of the smallest, non-zero ACM setting (Ice.ACM.Client and
1082 Ice.ACM.Server), with a minimum value of 5 seconds and a maximum
1083 value of 5 minutes. This default can be overridden by setting
1084 Ice.MonitorConnections, which is no longer deprecated, and whose
1085 value is the check frequency in seconds.
1087 - Fixed a bug in IceBox where services using the shared communicator
1088 would be passed the wrong communicator if re-started with the IceBox
1089 service manager interface.
1091 - Improved Glacier2 to automatically destroy the client session if the
1092 forwarding of a request from a back-end server to the client fails
1093 with an unrecoverable error. This is particularly useful for clients
1094 that receive requests from back-end servers on a regular basis and
1095 disable the Glacier2 session timeout. If for some reason the client
1096 becomes unreachable, Glacier2 will eventually destroy the client
1097 session (assuming timeouts are properly configured on the Glacier2
1100 - Added support for updating locator cache endpoints in the background
1101 if the new Ice.BackgroundLocatorCacheUpdates property is set to 1.
1103 Locator cache updates are triggered if the proxy locator cache
1104 timeout is configured and the cached endpoints are older than the
1107 By default, locator cache updates are performed before making an
1108 invocation, delaying the invocation until the new endpoints are
1109 retrieved from the locator. With this feature enabled, the locator
1110 cache updates are performed in the background and the invocation
1111 that triggered the update uses the previously cached endpoints.
1113 - Optimized the Ice client run time to minimize locator requests when
1114 multiple concurrent or AMI requests need to resolve the endpoints of
1115 the same well-known object, object adapter, or replica group.
1117 - Fixed a bug in IceGrid that would cause it to generate incorrect
1118 configuration files for servers whose ice-version was set to a
1119 version previous to Ice 3.3.0.
1121 - Fixed a bug in the Slice translators that prevented them from being
1122 run from a directory without write permissions, even if no output
1123 files were being written to the directory.
1125 - Fixed a bug where retried AMI calls could cause the timer thread to
1126 print an error message if the retry failed and if Ice.RetryIntervals
1127 was configured with non-zero time intervals.
1129 - All error output from the Slice compilers now goes to stderr.
1131 - Made unmarshaling code robust against messages containing invalid
1132 indexes for class instances.
1134 - Fixed IcePatch2 to handle non-ASCII file names properly.
1136 - Fixed a bug in IceGrid that could cause the registry to fail with an
1137 assertion if an application is synchronized concurrently by multiple
1138 administrative clients (or by nodes started with the --deploy
1141 - IceGrid locator implementation changes:
1143 * Fixed a bug where the registry could crash when resolving the
1144 endpoints of a replica group if some servers were activating
1147 * Fixed a bug where the registry could hang when resolving the
1148 endpoints of a round-robin replica group if a member of the
1149 replica group was removed concurrently.
1151 * Improved the scalability of the locator implementation to better
1152 handle a high volume of concurrent requests. The registry now
1153 limits the number of invocations to the IceGrid nodes to get the
1154 object adapter endpoints.
1156 - A Slice compiler now removes any files it has generated during the
1157 current execution if it fails or is interrupted.
1159 - The Slice compilers that support the --depend option now use an exit
1160 status of 1 if a failure occurs while generating dependencies. In
1161 previous releases the compilers used an exit status of 0.
1163 - Fixed a bug in the iceca script that prevented the command "init
1164 --overwrite" from working properly on Windows.
1166 - Fixed a bug where the IceBox shared communicator ignored Ice
1167 communicator properties specified in an IceBox service configuration
1170 - Fixed a bug where Ice plug-ins could be destroyed more than once.
1172 - Fixed several issues in the IceGrid GUI.
1178 - Fixed a bug in IceSSL plug-in which could cause a crash on
1179 communicator destruction.
1181 - Changed the thread pool to ensure that references to AMI callback
1182 objects are released as soon as possible.
1184 - Fixed bug in slice2cpp that caused bad code to be generated for
1185 classes and modules whose name was a C++ keyword.
1187 - Fixed a bug in IceSSL where the IceSSL.CheckCertName property did
1188 not have any effect.
1190 - Fixed icegridadmin `service list' command crash.
1192 - Fixed a bug where slice2cpp and slice2freeze would generate absolute
1193 include paths if the command line option "-I." was used.
1195 - Fixed a Freeze transactional evictor bug that could cause the
1196 transaction of an asynchronous method dispatch to be rolled back if
1197 rollback on user exception was enabled.
1199 - Fixed a bug that could cause the first invocation on a proxy to
1200 incorrectly be sent compressed or not compressed.
1202 - Fixed a bug on Windows that could cause an interrupted application
1203 to spin for a while before terminating.
1209 - Slice types now implement java.io.Serializable.
1211 - If a servant raises OutOfMemoryError while dispatching an operation,
1212 the Ice run time now traps it and treats it as a hard error, meaning
1213 Ice logs an error message and closes the connection on which the
1214 request was received.
1216 - Added object serialization that allows native Java objects to be
1217 sent as operation parameters. See the Slice chapter and the Java
1218 language mapping chapter in the manual for more information.
1220 - Fixed bug in slice2java that caused bad code to be generated for a
1221 class whose name was a Java keyword if the class contained data
1224 - The path names specified by the IceSSL.Keystore, IceSSL.Truststore,
1225 and IceSSL.Random properties can now refer to class path resources.
1227 - Added methods to the IceSSL plug-in to allow keystores, truststores,
1228 and RNG seeds to be specified using input streams.
1230 - Fixed the IceSSL.ConnectionInfo type so that the "incoming" and
1231 "adapterName" members are public.
1233 - Added support for using Ice in an applet, along with a new demo.
1239 - Added object serialization that allows native C# objects to be sent
1240 as operation parameters. See the Slice chapter and the C# language
1241 mapping chapter in the manual for more information.
1243 - Changed the Ice run time to no longer rely on .NET worker threads
1244 to start asynchronous I/O operations.
1246 - Fixed a bug in slice2cs that caused a core dump if a dictionary had
1247 a value type of Object.
1249 - Fixed a bug in slice2cs that caused incorrect code to be generated
1250 if an operation had a parameter named "ex".
1252 - Fixed a bug in slice2cs that caused incorrect code to be generated
1253 if a Slice class used the property mapping and also applied
1254 a ["cs:attribute:..."] metadata directive to a data member.
1256 - Fixed an issue that could cause an application to fail to start if
1257 Ice was unable to load an assembly that was referenced (but not
1258 required) by the program and not present on the system.
1260 - Fixed a bug in marshaling code that caused a trailing zero byte
1261 to be marshaled for user exceptions without class data members.
1263 - Fixed a bug in slice2cs that caused incorrect code to be generated
1264 for a dictionary that used a structure as the key type.
1266 - Fixed a bug in slice2cs that caused incorrect code to be generated
1267 for a sequence whose element type is a structure that uses the
1274 - Implemented the Ice.Trace.Slicing property for user exceptions.
1276 - It is now possible to pass a sequence of 64-bit integer values
1277 using an object that supports the buffer protocol.
1279 - Fixed a bug in the constructors of user-defined types that have
1280 structures as data members. Consider this example:
1292 The Event constructor supplied a default instance of the Point
1293 member if the caller did not supply one. However, this default
1294 instance was unintentionally shared by all Event objects that
1295 omitted a value for the Point member during construction. The
1296 generated code now ensures that each instance of Event assigns a
1297 new instance of Point.
1299 - Fixed bugs in getImplicitContext related to using it when an
1300 implicit context had not been set.
1302 - Fixed bugs in stringToProxy and propertyToProxy related to null
1305 - Ice.getSliceDir() now only searches for the "slice" directory in a
1306 standard Ice installation.
1308 - Improved the way the build system locates the Python framework on
1315 - The translator now generates an eql? method for Slice structures.
1317 - Implemented the Ice.Trace.Slicing property for user exceptions.
1319 - Added helper Ice.getSliceDir, which locates the "slice" directory in
1320 a standard Ice installation.
1326 - It is now possible to specify multiple Slice files in your profile
1327 configuration that have common include files. For example, if A.ice
1328 and B.ice both include Common.ice, you can now do the following:
1330 ice.slice=-I. A.ice B.ice
1332 In previous releases this would have caused a redefinition error,
1333 which you could work around by creating a single Slice file that
1334 included both A.ice and B.ice. This workaround is no longer
1337 - Fixed bugs in the ice_router and ice_locator proxy methods.
1340 ======================================================================
1341 Changes since version 3.2.1
1342 ======================================================================
1348 These entries apply to all relevant language mappings unless otherwise
1351 - It is now possible to use UNC paths on Windows in the configuration
1352 of Ice services, such as in the value of the IceGrid.Node.Data
1353 property for an IceGrid node.
1355 - Fixed bug in slice2html that caused incorrect hyperlinks to be
1356 generated if nested modules were used.
1358 - Added support for non-blocking AMI and batch requests. Activities
1359 such as DNS lookups, endpoint resolution, connection establishment,
1360 and sending the request are now performed in the background if
1363 - AMI requests now return a boolean to indicate if the request is
1364 sent synchronously. If not sent synchronously and the AMI callback
1365 implements the Ice::AMISentCallback interface, the Ice run time
1366 calls the ice_sent() method once the request is sent.
1368 - AMI timeouts are no longer triggered by the connection monitor
1369 thread at regular time intervals. Instead, timeouts are now
1370 triggered on time just like synchronous invocations. As a result,
1371 the setting of the Ice.MonitorConnections is no longer useful and
1372 this property has been deprecated.
1374 - Added the proxy methods ice_flushBatchRequests() and
1375 ice_flushBatchRequests_async() to flush the batch requests of the
1376 connection associated with the proxy. Like AMI requests, the
1377 ice_flushBatchRequests_async() method is guaranteed to not block.
1379 - Added support for oneway AMI requests. The ice_response() method of
1380 the AMI callback is never called for oneway requests sent with AMI.
1381 Unlike regular oneway requests which might block until the request
1382 is passed to the TCP/IP stack, oneway AMI requests can't block.
1384 - Removed the thread-per-connection (TPC) concurrency model.
1385 Applications that were using TPC for its ordering guarantees can use
1386 the new thread pool serialization feature.
1388 - The Ice thread pool now supports a new serialization mode that
1389 serializes the processing of messages received over a connection.
1390 For example, this is useful when you want to ensure the orderly
1391 dispatching of oneway requests from a client even if the thread pool
1392 has multiple threads. Serialization is enabled by setting the thread
1393 pool's Serialize property to 1.
1395 - An Ice server will now abort() if there are no more file descriptors
1396 available to accept incoming connections. Note that this behavior is
1397 subject to change in the final release.
1399 - An IceGrid node is more conservative when removing the directory of
1400 a server. The node only removes the directory when the server is
1401 explicitly removed from a deployed application or if the directory
1402 contains only files and directories that were created by the node.
1404 - IceGrid's round-robin load balancing policy better handles servers
1405 that are unreachable.
1407 - Fixed an IceGrid bug where patching servers deployed with the
1408 attribute `application-distrib' set to false wouldn't work.
1410 - Added an object adapter to the IceGrid registry. The adapter is
1411 named `IceGrid.Registry.AdminSessionManager' and is responsible for
1412 Glacier2 administrative sessions.
1414 - When resolving the endpoints of a replica group, the IceGrid locator
1415 no longer waits for an object adapter to complete its activation if
1416 another adapter is already active.
1418 - Fixed an IceGrid descriptor bug where re-opening an unnamed property
1419 set would cause multiple property definitions.
1421 - Added a fix to prevent the IceGrid node from printing an annoying
1422 thread pool size warning on startup.
1424 - Fixed IceGrid bug where updates to IceBox services were not
1425 correctly sent to the IceGrid GUI or to IceGrid registry slaves.
1427 - The IceGrid node now unblocks the SIGHUP, SIGINT and SIGTERM signals
1428 from forked servers.
1430 - The IceGrid node now prints a warning if it can't reach the IceGrid
1431 registry when it starts. This warning can be disabled with --nowarn.
1433 - An IceBox service can now recursively start and stop other IceBox
1434 services from within its start and stop methods. The level of
1435 recursion is limited to the threads in the administrative object
1436 adapter's thread pool.
1438 - Configuration properties for IceBox services can now be defined on
1441 - IceBox services that share a communicator now use a dedicated
1442 communicator instance that is not used by the IceBox server. This
1443 dedicated communicator only inherits properties from the server's
1444 communicator if IceBox.InheritProperties is set to a non-zero value.
1446 - It is no longer necessary to define a value for the property
1447 IceBox.ServiceManager.Endpoints. If this property is not defined,
1448 the ServiceManager interface is not available.
1450 - Changes related to Highly-Available IceStorm
1452 - IceStorm now supports master/slave replication with automatic
1455 - IceStorm also supports a transient mode that uses no databases.
1456 This mode is enabled using the new property <service>.Transient.
1457 Replication is not supported in this mode.
1459 - Subscriptions are now persistent (except in transient mode).
1461 - Added a new Quality of Service (QoS) parameter, retryCount, to
1462 control when subscribers are removed. IceStorm automatically
1463 removes a subscriber after the specified number of unsuccessful
1464 event deliveries. The default value of retryCount is 0, meaning
1465 the subscriber is removed immediately upon any failure. A
1466 subscriber is always removed on a hard failure, which is defined
1467 as the occurrence of ObjectNotExistException or
1468 NotRegisteredException.
1470 - The IceStorm database format has changed. Use the utility
1471 icestormmigrate to migrate from the database formats of Ice 3.1.1
1472 and Ice 3.2.1. The old migration script (updateicestorm.py) has
1475 - Added the new C++ example demo/IceStorm/replication2, which
1476 demonstrates how to manually configure IceStorm replication.
1478 - Added the "replica" command to icestormadmin to get debugging
1479 information on IceStorm replication.
1481 - The TopicManager object adapter now uses its own thread pool in
1482 the replicated case to ensure that ordering is guaranteed by
1483 default even if a publisher uses a oneway proxy.
1485 - Upon shutdown IceStorm now guarantees that all received events
1486 are delivered to all subscribers.
1488 - Added Topic::getNonReplicatedPublisher, which always return a
1489 non-replicated publisher proxy.
1491 - All IceStorm properties must be prefixed with the service name.
1492 For example, consider the following IceBox service configuration:
1494 IceBox.Service.Foo=IceStormService,33:createIceStorm ...
1496 In this case the IceStorm configuration properties must use the
1497 "Foo" prefix, such as
1499 Foo.Discard.Interval=10
1501 - Removed the icestormadmin Slice checksum check. This avoids
1502 warnings when using icestormadmin against an older version of
1505 - It is now possible to specify properties in a config file with
1506 space, '#' or '=' in either the key or value string. It is necessary
1507 to escape '#' and '=' as '\#' and '\='. Leading or trailing spaces
1508 are only allowed in keys and need to be escaped as '\ '.
1510 - Properties set programmatically can no longer have leading or
1511 trailing whitespace in the key.
1513 - There is no longer a limit on the allowable length of a property
1514 line in an Ice config file. Previously the limit was 1024.
1516 - The new property Ice.Warn.UnusedProperties causes the communicator
1517 to display a warning during its destruction that lists all
1518 properties that were set but whose values were never read.
1520 - The way that the Ice run time determines whether a proxy invocation
1521 is eligible for collocation optimization has changed somewhat. The
1522 Ice run time no longer performs a DNS lookup; instead, invocations
1523 on a direct proxy will use the optimization only if the host and
1524 port of one of its endpoints match the host and port of an endpoint
1525 or published endpoint of an object adapter from the same
1528 - Exceptions thrown from collocation-optimized invocations are now
1529 fully transparent. If an operation throws an exception that is not
1530 in the operation's exception specification, or throws a non-Ice
1531 exception, the client receives UnknownUserException or
1532 UnknownException, exactly as if the servant for a remote invocation
1533 had thrown the same exception. (In earlier versions, the client
1534 received the original exception, rather than an unknown exception.)
1536 For Ice run-time exceptions, all run-time exceptions are passed
1537 to the client as UnknownLocalException, except for
1539 - ObjectNotExistException
1540 - FacetNotExistException
1541 - OperationNotExistException
1542 - OperationNotExistException
1544 - UnknownLocalException
1545 - UnknownUserException
1546 - CollocationOptimizationException
1548 - The property Ice.Default.CollocationOptimization and the proxy
1549 property <proxy>.CollocationOptimization have been deprecated and
1550 replaced by Ice.Default.CollocationOptimized and
1551 <proxy>.CollocationOptimized, respectively.
1553 - Most proxy factory methods now return a proxy of the same type as
1554 the original and no longer require the use of a checked or unchecked
1555 cast. For example, in C++ you can write
1557 HelloPrx hello = ...;
1558 hello = hello->ice_oneway();
1560 Previously you would have needed a cast, such as
1562 hello = HelloPrx::uncheckedCast(hello->ice_oneway());
1564 In Java and .NET, you must use a type cast:
1566 hello = (HelloPrx)hello.ice_oneway();
1568 - If a proxy contains a host that is multihomed, the client will now
1569 try all the available IP addresses. Previously, only the first in
1570 the address list returned by the DNS was used and others were
1573 - It's now possible to change the compression setting for a fixed
1574 proxy. In previous releases, calling ice_compress on a fixed proxy
1575 would raise Ice::FixedProxyException.
1577 - Added a new skipEncapsulation method to the Ice::InputStream
1578 interface. This method can be used to skip an encapsulation when
1579 reading from a stream.
1581 - The endEncapsulation method from the Ice::InputStream interface will
1582 now throw Ice::EncapsulationException if not all the data from the
1583 encapsulation has been read.
1585 - The marshaling code now throws an exception if an enumerator that is
1586 out of range for its enumeration is sent or received.
1588 - Network tracing now also includes failures to connect if
1589 the Ice.Trace.Network property is set to 2.
1591 - The property Ice.Trace.Location has been deprecated and replaced
1592 by Ice.Trace.Locator.
1594 - The Ice locator tracing (enabled with the `Ice.Trace.Locator'
1595 property) now traces calls to locator registry when an object
1596 adapter updates its endpoints or the server process proxy is
1599 - The new property Ice.TCP.Backlog allows you to specify the size of
1600 incoming connection backlog for TCP/IP sockets. This setting is
1601 also used for SSL. In C++ the default value is SOMAXCONN or 511 if
1602 that macro is not defined. In Java and .NET the default value is
1605 - Added support for IPv6. It is disabled by default but can be enabled
1606 using the configuration property Ice.IPv6. The property Ice.IPv4 can
1607 be used to disable IPv4 support.
1609 - Added support for UDP multicast.
1611 - A new object adapter property, <adapter>.ProxyOptions, lets you
1612 customize the proxies that the adapter creates.
1614 - Added a new operation to the ObjectAdapter interface named
1615 refreshPublishedEndpoints(). This operation allows you to update an
1616 adapter's published endpoints after a change in the available local
1617 interfaces or after a change to the PublishedEndpoints property.
1619 - The "-h *" endpoint option is now only valid for object adapter
1620 endpoints. It can no longer be used in proxy endpoints or object
1621 adapter published endpoints.
1623 - Ice now listens on INADDR_ANY for object adapter endpoints that do
1624 not contain a host name (or are set to use "-h *" or "-h 0.0.0.0").
1625 Previously, Ice would only listen on the local interfaces that were
1626 present when the adapter was created.
1628 - Accepting incoming connections can no longer block a thread from a
1629 server thread pool. This includes activities such as connection
1630 validation and SSL handshaking.
1632 - Changed servant locators so both locate() and finished() can throw
1635 - Improved Glacier2 to take advantage of the new non-blocking aspects
1636 of Ice. Glacier2 now uses the thread pool concurrency model and, in
1637 buffered mode, Glacier2 only uses a single thread to forward queued
1638 requests. As a result, Glacier2 now requires a fixed number of
1639 threads regardless of the number of connected clients.
1641 - Glacier2 filters are now disabled by default for IceGrid client
1642 and administrative sessions created with the IceGrid session
1643 managers. If you rely on these filters being enabled, you must now
1644 explicitly set the property IceGrid.Registry.SessionFilters or
1645 IceGrid.Registry.AdminSessionFilters.
1647 - The use of sequences (and structs containing sequences) as valid
1648 dictionary keys has been deprecated and will be removed in a future
1651 - slice2vb has been removed from the distribution and is no longer
1652 supported. To use Visual Basic .NET with Ice, use slice2cs to
1653 generate C# code from Slice definitions, and then use a C# compiler
1654 to create a DLL from the generated code. Then link against that DLL
1655 in your Visual Basic project.
1657 - Fixed a variety of bugs with slice2cpp where incorrect code
1658 would be generated when C++ reserved words are used as Slice
1661 - If a class, interface, or exception has a base, slice2html now
1662 generates a hyperlink to the base. (Previously, only the name of the
1663 base was shown, without a hyperlink.)
1665 - slice2html now generates documentation for Slice constant
1668 - slice2html now generates the scoped name for the <h1> element of
1669 each page instead of the unqualified name. For example, it now shows
1670 "Ice::DNSException" instead of "DNSException".
1672 - The ability to install a logger via the Ice.LoggerPlugin property
1673 has been removed. The new mechanism requires that you create an
1674 instance of the Ice::LoggerPlugin class in your plug-in factory.
1675 Please see the manual for more details.
1677 - It is no longer possible to provide input files on the command line
1678 for icestormadmin or icegridadmin.
1680 - Freeze evictor update:
1682 - the existing evictor was renamed BackgroundSaveEvictor
1683 - added new TransactionalEvictor
1685 - Fixed a bug in FreezeScript that caused a failure when a script
1686 attempted to access the 'length' member of a string value.
1688 - Added support for string concatenation in FreezeScript using the
1691 - dumpdb output now goes to stdout.
1697 - Fixed icepatch2server crash on exit bug.
1699 - Fixed race condition in IceUtil::Cache.
1701 - Changed the string methods in InputStream and OutputStream to accept
1702 an optional boolean argument. If true (the default), strings are
1703 processed by the string converter (if any) before marshaling or
1704 unmarshaling. If false, the string converter is bypassed. No source
1705 code changes are necessary for existing programs.
1707 - The new Ice::StringConverterPlugin class allows you to install a
1708 custom string converter and/or wstring converter during communicator
1711 - The Ice shared library now provides a string converter plug-in
1712 factory: createStringConverter. See the Ice manual for details.
1714 - IceUtil::stringToWstring and IceUtil::wstringToString now take
1715 a second argument of type ConversionFlags. It can be either
1716 strictConversion or lenientConversion. The default is
1717 lenientConversion for compatibility with previous releases. See
1718 the Ice manual for further details.
1720 - Added IceGrid secure demo to demonstrate how to setup a secure
1723 - Fixed a Glacier2 assert that would occur if the configuration
1724 defined only the SSL permissions verifier.
1726 - The IceUtil::Timer destroy method no longer joins with the timer
1727 execution thread if it's called from a timer task. Instead, the
1730 - The IceUtil::Timer schedule and scheduleRepeated methods now throw
1731 IceUtil::IllegalArgumentException if the timer is destroyed.
1733 - Fixed potential Slice parser assert.
1735 - Added an HA IceStorm template to config/templates.xml.
1737 - Removed the index parameter from the IceStorm template.
1739 - It is now possible to manually configure the node proxies when
1740 using HA IceStorm in conjunction with IceGrid.
1742 - iceca and associated ImportKey.class are now copied into bin and lib
1745 - iceca did not correctly support the --verbose flag with the import
1748 - iceca request has been simplified. The command now takes the name of
1749 the file to generate, the common name, and an optional email
1752 - The iceca ImportKey.class utility is now installed in
1753 /usr/share/Ice-3.3.0 for an RPM install or ${prefix}/lib otherwise.
1755 - The following APIs were deprecated in Ice 3.1 and have been removed:
1757 Application::main(int, char*[], const char*, const Ice::LoggerPtr&)
1758 initializeWithLogger
1759 initializeWithProperties
1760 initializeWithPropertiesAndLogger
1764 ObjectPrx::ice_communicator
1765 ObjectPrx::ice_newIdentity
1766 ObjectPrx::ice_newContext
1767 ObjectPrx::ice_newFacet
1768 ObjectPrx::ice_newAdapterId
1769 ObjectPrx::ice_newEndpoints
1770 ObjectPrx::ice_collocationOptimization
1771 ObjectPrx::ice_connection
1773 - Added "public" keyword to the definition of IceSSL::PublicKey.
1775 - Fixed a bug in slice2freeze in which it was not properly handling
1776 the "cpp:type:wstring" metadata, which would result in narrow
1777 strings being used in generated code when wstring should have been
1780 - IceInternal::GCShared now derives from IceUtil::Shared. This now
1781 makes it possible to have a servant class derived from
1782 IceUtil::Thread (which, previously, was impossible).
1784 - The thread stack size specified with the IceUtil::Thread::start()
1785 method parameter is now adjusted to PTHREAD_STACK_MIN if it's
1786 inferior to it. On Mac OS X, it's also adjusted to the next closest
1787 multiple of the page size (4KB).
1789 - Added a new overloading of the Ice::createInputStream method:
1791 Ice::InputStreamPtr createInputStream(
1792 const CommunicatorPtr&,
1793 const pair< const Byte*, const Byte*>&);
1795 - Fixed a bug in the encoding of user exceptions with a class
1796 attribute and returned by AMD-dispatched invocations. An extra byte
1797 was encoded at the end. This fix doesn't affect on the wire
1798 compatibility with old Ice clients.
1800 - Added what() member to IceUtil::Exception, so a single catch handler
1801 can be used for Ice exceptions:
1805 // Call something that may throw an Ice exception
1807 catch(const ::std::exception& ex)
1809 cerr << ex.what() << endl; // Works for any ::std::exception,
1810 // including Ice exceptions
1813 what() is implemented in terms of ice_print(), so overriding
1814 ice_print() also changes the string returned by what().
1820 - Fixed the slice2java ant task to redirect stderr output so that
1821 messages from the preprocessor are not interpreted as dependencies.
1823 - Fixed the slice2java ant task to recompile all of the files in the
1824 file list if at least one of the files has changed and checksums are
1827 - Deprecated the class IceUtil.Version.
1829 - Added the methods stringVersion and intVersion to Ice.Util for
1830 obtaining the Ice version.
1832 - Fixed a NullPointerException thrown when allocating an InputStream
1833 with an empty buffer.
1835 - Fixed a NullPointerException thrown when calling startEncapsulation
1838 - The following APIs were deprecated in Ice 3.1 and have been removed:
1840 Application.main(String, String[], String, Logger)
1841 Util.initializeWithLogger
1842 Util.initializeWithProperties
1843 Util.initializeWithPropertiesAndLogger
1845 ObjectPrx.ice_communicator
1846 ObjectPrx.ice_newIdentity
1847 ObjectPrx.ice_newContext
1848 ObjectPrx.ice_newFacet
1849 ObjectPrx.ice_newAdapterId
1850 ObjectPrx.ice_newEndpoints
1851 ObjectPrx.ice_collocationOptimization
1852 ObjectPrx.ice_connection
1854 - Ice for Java now supports the ICE_CONFIG environment variable.
1856 - The Java2 language mapping is now deprecated.
1858 - Added support for a password callback in IceSSL. Also added new
1859 properties for specifying the name of a password callback class or
1860 certificate verifier class.
1862 - LocalObject is now mapped to java.lang.Object; an out LocalObject
1863 parameter is still mapped to an Ice.LocalObjectHolder object.
1864 Ice.LocalObjectHolder now holds a java.lang.Object. The interface
1865 Ice.LocalObject and the abstract class Ice.LocalObjectImpl are now
1868 - Ice.LocalException and Ice.UserException now implement
1869 java.lang.Cloneable.
1871 - Fixed the generated hashCode method to prevent NullPointerException.
1877 - Added the methods stringVersion and intVersion to Ice.Util for
1878 obtaining the Ice version.
1880 - Fixed a NullReferenceException thrown when allocating an InputStream
1881 with an empty buffer.
1883 - Fixed a NullReferenceException thrown when calling
1884 startEncapsulation on an OutputStream.
1886 - Changed Ice.Exception to derive from System.Exception rather than
1887 System.ApplicationException in accordance with Microsoft's
1888 recommendations for writing custom exceptions.
1890 - The following APIs were deprecated in Ice 3.1 and have been removed:
1892 Application.main(string, string[], string, Logger)
1893 Util.initializeWithLogger
1894 Util.initializeWithProperties
1895 Util.initializeWithPropertiesAndLogger
1897 ObjectPrx.ice_communicator
1898 ObjectPrx.ice_newIdentity
1899 ObjectPrx.ice_newContext
1900 ObjectPrx.ice_newFacet
1901 ObjectPrx.ice_newAdapterId
1902 ObjectPrx.ice_newEndpoints
1903 ObjectPrx.ice_collocationOptimization
1904 ObjectPrx.ice_connection
1906 - The Ice.Application class now supports signal handling on Mono.
1908 - Added the build macro MANAGED, which can be enabled if you want to
1909 build a version of the Ice run time that uses only managed code.
1911 - Improved marshaling performance for Ice for .NET. This particularly
1912 affects programs running under Mono on big-endian machines, where
1913 marshaling performance of sequences improves by up to a factor of
1914 10. For little-endian machines (both Windows and Mono), marshaling
1915 performance is also improved.
1917 - Added ice_name() method to exceptions, in keeping with the C++
1918 and Java convention. The method returns the Slice type ID of
1919 exception, without a leading "::" qualifier.
1921 - Fixed a bug that caused a NullPointer exception for sequences
1922 of structs if the structs used the class mapping and the sequence
1923 contained null elements.
1925 - Fixed a bug that caused a NullPointer exception when marshaling
1926 a struct containing reference types if that was nested inside
1927 a data type, such as another exception or struct.
1929 - Added support for a password callback in IceSSL. Also added new
1930 properties for specifying the name of a password callback class or
1931 certificate verifier class. See manual for more details.
1933 - Fixed a bug in slice2cs that caused incorrect code to be generated
1934 for data members of classes and structures that used the
1935 ["clr:property"] metadata directive.
1937 - Fixed a bug in slice2cs that caused incorrect code to be generated
1938 for Slice exceptions with data members that had the same name as one
1939 of the data members of System.ApplicationException.
1941 - The metadata directive "cs:collection" is no longer valid.
1942 Use ["clr:collection"] instead.
1944 - Added a new mapping for Slice sequences to use C# 2.0
1948 ["clr:generic:List"] sequence<int> S;
1953 System.Collections.Generic.List<int> S;
1955 This also works for types other than List. Please see the manual for
1958 - Added a new mapping for Slice dictionaries to use C# 2.0
1962 dictionary<string, int> D;
1967 System.Collections.Generic.Dictionary<string, int> D;
1969 The previous mapping to the .NET 1.1 DictionaryBase class is still
1970 supported with the "clr:collection" metadata directive.
1972 - LocalObject is now mapped to System.Object. The interface
1973 Ice.LocalObject and the abstract class Ice.LocalObjectImpl are now
1976 - The Ice.Util.proxyIdentityCompare and proxyIdentityAndFacetCompare
1977 methods are now using string.CompareOrdinal to compare the identity
1978 category, name and the facet instead of string.Compare with the
1979 CultureInfo.InvariantCulture culture-specific information.
1981 - Ice.LocalException and Ice.UserException now implement
1984 - Ice for C# has been renamed Ice for .NET and the assemblies have
1985 been renamed as well. For example icecs.dll is now just Ice.dll.
1991 - Fixed a bug that occurred when converting an Ice.Identity object to
1992 a string via str(). In prior releases, this conversion used the
1993 global method Ice.identityToString, but that method is no longer
1994 supported. As a result, the output now resembles that of other
1997 - Added the methods Ice.stringVersion and Ice.intVersion.
1999 - Unicode objects are now accepted as arguments (or data members of
2000 arguments) to remote Slice operations. The local Ice API still uses
2003 - Added new Ice/converter demo to illustrate how to use the new Ice
2004 for C++ string converter plug-in. This demo is very similar to the
2007 - Fixed a deadlock bug that could occur when a multithreaded client
2008 executes Slice operations that return abstract objects by value.
2010 - Removed "#!/usr/bin/env python" where unnecessary.
2012 - Added ice_staticId() method to generated Slice classes.
2014 - The following APIs were deprecated in Ice 3.1 and have been removed:
2016 initializeWithLogger
2017 initializeWithProperties
2018 initializeWithPropertiesAndLogger
2021 ObjectPrx.ice_communicator
2022 ObjectPrx.ice_newIdentity
2023 ObjectPrx.ice_newContext
2024 ObjectPrx.ice_newFacet
2025 ObjectPrx.ice_newAdapterId
2026 ObjectPrx.ice_newEndpoints
2027 ObjectPrx.ice_connection
2029 - Fixed a bug where returning an AMD servant from a ServantLocator
2030 would cause a deadlock in the IcePy extension.
2032 - Added support for blobjects.
2034 - Fixed a code generation bug with slice2py where the proxy type
2035 for a Python reserved word would be incorrectly named. For example,
2036 interface def would generate a proxy class named _defPrx, not the
2037 correct class name defPrx.
2039 - LocalObject is now mapped to the Python base 'object' type. The
2040 class Ice.LocalObject is now deprecated.
2042 - Fixed a bug in Ice.initialize that would cause a crash if the
2043 configuration file specified by --Ice.Config was not found.
2049 - Added the methods Ice::stringVersion and Ice::intVersion.
2051 - Removed "#!/usr/bin/env ruby" where unnecessary.
2053 - Added ice_staticId() method to generated Slice classes.
2055 - Fixed a code generation bug with slice2rb where the reserved words
2056 BEGIN and END would generate classes, modules and constants named
2057 _BEGIN, and _END which is illegal. They now generate BEGIN_ and
2060 - Fixed a bug where marshaling a plain object proxy fails with an
2061 uninitialized constant exception.
2067 - Constructors are now generated for Slice structure, exception, and
2068 class types. Constructor parameters supply default values for each
2071 - A null value is now allowed where a sequence or dictionary value is
2074 - Added the methods Ice_stringVersion and Ice_intVersion.
2076 - Removed the undocumented PHP constants ICE_STRING_VERSION and
2079 - LocalObject is now mapped to PHP's base object type. The interface
2080 Ice.LocalObject and the abstract class Ice.LocalObjectImpl are now
2083 - Added support for an optional context argument to ice_checkedCast
2084 and ice_uncheckedCast.
2086 - Added the following proxy methods:
2088 ice_getRouter/ice_router
2089 ice_getLocator/ice_locator
2091 - Added the translator option "-w" to suppress warnings during Slice