Changes since version 3.1.0 --------------------------- - Fixed a bug with the IceGrid allocate and sessionAllocation demos where the session would not be destroyed in the event of an allocation failure. Changes since version 3.0.1 --------------------------- - Removed removeObjectFactory() from the communicator interface. - Generating new streaming functions for a Slice structure. The ice_write and ice_read member functions replace their internal equivalents (__write and __read). - Added the "clr:property" directive for classes and structures. If used, the property causes Slice data members to be mapped to properties instead. - For more information on changes in this release, see the CHANGES file for C#. Changes since version 3.0.0 --------------------------- - Fixed a bug in the treatment of default contexts: proxies were created with an empty context instead of the default context on the communicator in some cases. - Fixed a bug in the code generator that caused Clone() on sequences and dictionaries to behave incorrectly. - Fixed a bug in the code generator that could cause Equals() comparisons to fail for containers that contained null references. - Added ProxyIdentityKey and ProxyIdentityFacetKey helper classes to allow proxies to be inserted into collections and use only the identity, or the identity and facet name as the key. (See section 14.11.3 in the doc.) - Fixed a bug in endpoint comparisons that would cause new connections to be created needlessly. This would occur when the representation of the host differed between the proxy and endpoint configuration, with one containing the hostname and the other the numeric host address. - Fixed a bug in the marshaling code that caused an exception if a null reference for a Slice class was passed as a parameter. - Fixed a bug in the Slice parser that caused problems if an included file contained white space in the file name. - Fixed a bug in slice2cs that prevented the generated code from being marked as CLS-compliant if the --checksum option was used. - Added IceBox, IceGrid and IceStorm demos. Changes since version 2.1.2 --------------------------- - Changed the mapping for Slice structures: if a Slice structure (recursively) contains a member that is of reference type, the Slice structure automatically maps to a VB class. A Slice structure now maps to a VB structure only if the Slice structure (recursively) consists only of value type (and if the "clr:class" metadata directive does not apply to the structure). - The run time was obscuring the true origin (source file and line number) of some exceptions when rethrowing them. It now correctly shows the source of such exceptions in the stack trace. - Added a new object adapter property, .ReplicaGroupId, which allows adapters to be replicated. See the IceGrid chapter in the manual for more information. - Added the proxy method ice_connectionId, which allows an application to control connection reuse. - Added the new methods Ice.Util.initializeWithLogger() and Ice.Util.initializeWithPropertiesAndLogger(), which ensure that a custom logger is used to record any errors during communicator initialization. - Ice will now listen on all local interfaces if no -h parameter is present in the endpoint configuration and no default host has been set. It will also listen to all interfaces if the -h parameter is set to 0.0.0.0. In such configurations the endpoints published in proxies will not contain the loopback interface (127.0.0.1) unless it is the only local interface present. - The Equals method for Slice structures that are mapped to classes now returns false if the two structures being compared are not of the same type. Previously, a comparison such as derived.Equals(base) returned true if the base of part of derived was the same as base; with the new slice2vb compiler, this comparison returns false. - The Slice mapping for sequences has been improved. The generated sequence class now contains the following additional properties and methods: - Capacity - TrimToSize - Sort - Reverse - BinarySearch - InsertRange - RemoveRange - GetRange - SetRange - LastIndexOf - Repeat These have the same semantics as the corresponding methods on System.Collections.ArrayList, with one exception: GetRange returns a true copy of the requested range instead of returning a view of a sub-section of the collection. - The Ice run-time libraries are now marked as CLS-compliant assemblies. In addition, the generated code is now also CLS-compliant. This involves one change to the VB language mapping: The skeleton class used be called _Disp but is now called Disp_. For example, if you previously had: Public Class MyIntfI Inherits _MyIntfDisp ' ... End Class you now have to write: Public Class MyIntfI Inherits MyIntfDisp_ ' ... End Class Similarly, for the Tie mapping, the location of the underscore has changed: _MyIntfTie -> MyIntfTie_ - Added support for the thread-per-connection concurrency model. - Changed the way servant locators work if a server has a servant locator registered for a specific category, in addition to a default servant locator. Previously, if the locator for the specific category failed to locate the servant, the run time would then call the default locator. With the new behavior, if the locator for the specific category does not return a servant, the default locator is not called. - slice2vb now supports a new metadata directive: ["vb:attribute"]. This directive allows you to inject VB attribute definitions into the generated code. See the VB mapping chapter in the Ice manual for more information. - The "vb:" metadata prefix has been replaced by the "clr:" prefix, so you now need to use "clr:collection" and "clr:class". The "vb:" prefix is still recognized and acted upon; slice2vb emits a warning for the old prefix. Two releases from now, the warning will become a hard error and "vb:" will no longer work. - Fixed a bug in the slice2vb code generator: for sequences of Slice structs that used the class mapping, the generated code caused a run-time error. - Fixed a bug in the slice2vb code generator: if an operation had a parameter named ix or spx, incorrect code was generated in some cases. - Added ice_communicator() to proxies. This function returns the communicator that was used to create the proxy. - Added ice_toString() to proxies. This function returns the stringified proxy. This function can be more convenient to use than communicator.stringToProxy() because you do not need the communicator to stringify a proxy that way. - Ice.ObjectImpl is now an abstract class that cannot be instantiated. This change should be transparent to application code. - Added new features to the Visual Basic mapping: - Structures, classes, and exceptions now have one-shot constructors. For example, for a class class Example { int i; string s; }; the following constructors are generated: Public Class Example Inherits Ice.ObjectImpl Public Sub New() ... Public Sub New(ByVal i as Integer, ByVal s As String) ... This allows you to construct a structure, class, or exception and supply values for the data members in a single statement, instead of having to assign to the members of a default-constructed instance. For derived exceptions and classes, the constructor expects values for all data members, including those of base exceptions or classes, in base-to-derived order of declaration. Changes since version 2.1.1 --------------------------- - Fixed a bug in the code generator: incorrect code was generated if an operation used an exception from an unrelated module in its exception specification. Changes since version 2.1.0 --------------------------- - Added sequences of fixed-length elements to throughput demo. - Added -E option to the various Slice compilers to print preprocessor output on stdout. - Fixed a bug in the option parsing for Ice tools such as slice2cpp, slice2java, slice2cs, etc. The option parser used to incorrectly complain about repeated options when in fact no option was repeated. Also changed the parser to permit options to follow an argument, so slice2cpp -I. x.ice and slice2cpp x.ice -I. are now equivalent. Changes since version 2.0.0 --------------------------- - Fixed bug in the code generators for C# and VB: for sequences of structs and sequences of Object*, incorrect code was generated if a ["cs:collection"] or ["vb:collection"] metadata directive was used. - Added setDefaultContext() and getDefaultContext() to the Ice::Communicator interface. This allows a default context to be established on a communicator-wide basis. See section 29.8.3 in the doc. Added ice_defaultContext to Ice::ObjectProxy. This creates a new proxy that uses the default context established on the communicator. - Overloaded the checkedCast member function of the generated PrxHelper classes to allow a trailing argument of type Ice::Context. This makes it possible to do stateful things that require a context in a servant locator's activate() method. - Fixed a bug in slice2vb: incorrect code was generated if an interface was derived from a base interface in a different module if the base interface contained a AMD operation.