1 NOTE: This file is no longer being updated. See the CHANGES.txt file
2 in the top-level directory.
5 Changes since version 3.1.1
6 ---------------------------
8 - slice2vb is no longer supported. To use Visual Basic .NET with Ice,
9 use slice2cs to generate the stubs and skeletons in C#, and use
10 a C# compiler to compile these into a DLL. Then reference that DLL
11 from the Visual Basic project.
13 See the manual and the demo directory for more details.
15 - createObjectAdapter() and propertyToProxy() print warnings if
16 unknown properties are found during creation of the adapter or
17 proxy. These warnings can be disabled by setting the property
18 Ice.Warn.UnknownProperties=0.
20 - Added the property Ice.Default.EndpointSelection. If not defined,
21 the default value is "Random".
23 - Proxies and object adapters can now be configured to use
24 thread-per-connection.
26 - IceBox services no longer inherit the properties of the container
27 by default. If this is the desired behavior set the property
28 IceBox.InheritProperties to 1.
30 - The exception mapping now provides "one-shot" constructors that
31 permit the data members of an exception to be initialized during
32 construction (similar to the way class members can be initialized
35 With this new mapping, the "Message" property of the base class
36 System.ApplicationException can no longer be set; the property is
37 initialized to the empty string. See the Ice Manual for more
40 - Ice run-time threads are now created with the IsBackground property
41 set to true. This prevents Ice processes from hanging if an
42 application calls Environment.Exit() without first shutting down the
45 - Modified the IceSSL configuration to allow the demos to run without
46 administrator privileges.
48 - Added Communicator::isShutdown() and ObjectAdapter::isDeactivated()
49 to allow applications to determine whether a communicator has been
50 shutdown or an object adapter has been deactivated, respectively.
52 - Added destroy() operation to the ObjectAdapter interface. This
53 operation must be called in order to reclaim the adapter's resources
54 and be able to recreate a new adapter with the same name. Destroying
55 a communicator automatically calls destroy on all of its adapters.
57 - Added a per-process logger and two methods to get/set the logger,
58 Ice.Util.getProcessLogger() and Ice.Util.setProcessLogger(). Calling
59 getProcessLogger() creates a default logger if setProcessLogger()
60 has not been called. The process logger is also used as the default
61 logger for all communicators that do not have a logger explicitly
64 - Fixed a bug in the plug-in property parsing code: if the file name of
65 a plug-in included a drive letter, the plug-in did not load.
67 - Added support for a user-defined signal handler in Ice.Application.
68 A subclass must override the interruptCallback method and invoke
69 callbackOnInterrupt to activate it.
71 - Message batches are now automatically flushed when the total size of
72 the batch reaches the message size maximum. This feature can be
73 controlled using the Ice.BatchAutoFlush property, which is on by
76 - During the creation of an object adapter, the communicator now
77 raises InitializationException if the adapter has no configuration.
78 It is possible to create an adapter with no configuration, which
79 is useful for bidirectional connections, by passing an empty string
80 as the argument to createObjectAdapter.
82 - Fixed a bug that could cause the marshaling code to assert
83 if Ice.MessageSizeMax was exceeded during marshaling of a string.
85 - It is now possible to start and stop individual IceBox services
86 using the IceBox admin utility.
88 - Added Communicator::propertyToProxy() which creates a proxy from
89 a set of properties. This operation allows you to set various local
90 proxy settings, such as the locator cache timeout, which cannot be
91 set using stringToProxy().
93 - The Ice.Logger.Timestamp property has been removed. Timestamps are
96 - Added the property Ice.Default.PreferSecure, which if set to 1
97 causes secure endpoints to be preferred over non-secure endpoints.
98 By default this property is set to 0. Also added functions to
99 control this behavior on a per-proxy rather than global basis:
100 ice_isPreferSecure() and ice_preferSecure().
102 - Added a demo to illustrate use of AMI/AMD.
104 - IceBox services are now stopped in the reverse order from which they
107 - If a proxy does not specify a hostname (via -h HOST), the client
108 only attempts to connect to the loopback interface (127.0.0.1).
110 - Attempts to change the attributes of a fixed proxy now result in a
111 FixedProxyException rather than just ignoring the change request and
112 returning the same proxy. Also, attempts to marshal a fixed proxy
113 now result in a FixedProxyException rather than a MarshalException.
115 - Added support for implicit request contexts. When you invoke an
116 operation on a proxy and don't pass an explicit context, Ice uses
117 the "implicit context" combined with the per-proxy context (if any).
118 You can obtain the implicit context using the new communicator
119 operation getImplicitContext(). Three implementations of implicit
120 context are available; you select one by setting the property
121 Ice.ImplicitContext to one of the following values:
123 * None: No implicit context at all (default).
124 * PerThread: The implementation maintains a context per thread.
125 * Shared: The implementation maintains a single thread-safe context
126 that is shared by all threads.
128 - Removed defaultContext from InitializationData.
130 - Communicator::setDefaultContext(), Communicator::getDefaultContext()
131 and Proxy::ice_defaultContext() have been deprecated.
133 - For object adapters without endpoints, Ice.Trace.Network >= 2 now
134 prints a trace message.
136 - Added Ice.Override.Secure which forces a client to only use
139 - Added more tracing to the IceSSL plug-in to aid in using the
140 TrustOnly properties.
142 - Removed support for the IceBox.ServiceManager.Identity property,
143 which was deprecated in Ice 3.0. The IceBox service supports an
144 InstanceName property that should be used instead.
146 - Added UnexpectedObjectException. This exception is raised if you
147 use Slice classes and client and server are compiled with mismatched
148 Slice definitions. Alternatively, this exception is raised if you
149 use dynamic invocation and pass a class of the wrong type as an
152 - Passing null for a sequence parameter mapped as a collection (i.e.,
153 using "clr:collection" metadata) no longer results in a
154 NullReferenceException but instead causes an empty sequence to be
157 - Fixed a bug where loading an Ice plug-in or an IceBox service could
158 result in a System.NullReferenceException if no constructors are
159 available to create the plug-in or service instance.
161 - New Slice metadata for operations:
163 - ["nonmutating"] provides backward compatibility for idempotent
164 operations that were previously declared using the deprecated
165 'nonmutating' keyword. You can replace the 'nonmutating' keyword
166 with '["nonmutating"] idempotent' to maintain compatibility with
167 objects implemented using Ice 3.0 or 3.1.
169 - Added support for building with NMAKE.
172 Changes since version 3.1.0
173 ---------------------------
175 - Restored Communicator::setDefaultContext.
177 - Fixed a bug with the IceGrid allocate and sessionAllocation demos
178 where the session would not be destroyed in the event of an
181 Changes since version 3.0.1
182 ---------------------------
184 - Removed removeObjectFactory() from the communicator interface.
186 - Generating new streaming functions for a Slice structure. The
187 ice_write and ice_read member functions replace their internal
188 equivalents (__write and __read).
190 - Added the "clr:property" directive for classes and structures.
191 If used, the property causes Slice data members to be mapped
192 to properties instead.
194 - For more information on changes in this release, see the CHANGES
197 Changes since version 3.0.0
198 ---------------------------
200 - Fixed a bug in the treatment of default contexts: proxies were
201 created with an empty context instead of the default context on the
202 communicator in some cases.
204 - Fixed a bug in the code generator that caused Clone() on sequences
205 and dictionaries to behave incorrectly.
207 - Fixed a bug in the code generator that could cause Equals()
208 comparisons to fail for containers that contained null references.
210 - Added ProxyIdentityKey and ProxyIdentityFacetKey helper classes to
211 allow proxies to be inserted into collections and use only the
212 identity, or the identity and facet name as the key. (See section
215 - Fixed a bug in endpoint comparisons that would cause new connections
216 to be created needlessly. This would occur when the representation
217 of the host differed between the proxy and endpoint configuration,
218 with one containing the hostname and the other the numeric host
221 - Fixed a bug in the marshaling code that caused an exception if a
222 null reference for a Slice class was passed as a parameter.
224 - Fixed a bug in the Slice parser that caused problems if an included
225 file contained white space in the file name.
227 - Fixed a bug in slice2cs that prevented the generated code from being
228 marked as CLS-compliant if the --checksum option was used.
230 - Added IceBox, IceGrid and IceStorm demos.
232 Changes since version 2.1.2
233 ---------------------------
235 - Changed the mapping for Slice structures: if a Slice
236 structure (recursively) contains a member that is of
237 reference type, the Slice structure automatically maps
240 A Slice structure now maps to a VB structure only if
241 the Slice structure (recursively) consists only of
242 value type (and if the "clr:class" metadata directive
243 does not apply to the structure).
245 - The run time was obscuring the true origin (source file and
246 line number) of some exceptions when rethrowing them. It
247 now correctly shows the source of such exceptions
250 - Added a new object adapter property, <adapter>.ReplicaGroupId, which
251 allows adapters to be replicated. See the IceGrid chapter in the
252 manual for more information.
254 - Added the proxy method ice_connectionId, which allows an application
255 to control connection reuse.
257 - Added the new methods Ice.Util.initializeWithLogger() and
258 Ice.Util.initializeWithPropertiesAndLogger(), which ensure that a
259 custom logger is used to record any errors during communicator
262 - Ice will now listen on all local interfaces if no -h parameter
263 is present in the endpoint configuration and no default host has
264 been set. It will also listen to all interfaces if the -h parameter
265 is set to 0.0.0.0. In such configurations the endpoints published
266 in proxies will not contain the loopback interface (127.0.0.1)
267 unless it is the only local interface present.
269 - The Equals method for Slice structures that are mapped
270 to classes now returns false if the two structures being
271 compared are not of the same type.
273 Previously, a comparison such as
277 returned true if the base of part of derived was
278 the same as base; with the new slice2vb compiler, this
279 comparison returns false.
281 - The Slice mapping for sequences has been improved. The
282 generated sequence class now contains the following additional
283 properties and methods:
297 These have the same semantics as the corresponding methods
298 on System.Collections.ArrayList, with one exception: GetRange
299 returns a true copy of the requested range instead of returning
300 a view of a sub-section of the collection.
302 - The Ice run-time libraries are now marked as CLS-compliant
303 assemblies. In addition, the generated code is now also
306 This involves one change to the VB language mapping:
308 The skeleton class used be called _<interface-name>Disp but
309 is now called <interface-name>Disp_.
311 For example, if you previously had:
318 you now have to write:
325 Similarly, for the Tie mapping, the location of the underscore
328 _MyIntfTie -> MyIntfTie_
330 - Added support for the thread-per-connection concurrency model.
332 - Changed the way servant locators work if a server has a servant
333 locator registered for a specific category, in addition to a default
334 servant locator. Previously, if the locator for the specific category
335 failed to locate the servant, the run time would then call the default
336 locator. With the new behavior, if the locator for the specific category
337 does not return a servant, the default locator is not called.
339 - slice2vb now supports a new metadata directive: ["vb:attribute"].
340 This directive allows you to inject VB attribute definitions into the
341 generated code. See the VB mapping chapter in the Ice manual for
344 - The "vb:" metadata prefix has been replaced by the "clr:" prefix,
345 so you now need to use "clr:collection" and "clr:class".
346 The "vb:" prefix is still recognized and acted upon; slice2vb
347 emits a warning for the old prefix. Two releases from now, the
348 warning will become a hard error and "vb:" will no longer work.
350 - Fixed a bug in the slice2vb code generator: for sequences of
351 Slice structs that used the class mapping, the generated code
352 caused a run-time error.
354 - Fixed a bug in the slice2vb code generator: if an operation
355 had a parameter named ix or spx, incorrect code was generated
358 - Added ice_communicator() to proxies. This function returns
359 the communicator that was used to create the proxy.
361 - Added ice_toString() to proxies. This function returns
362 the stringified proxy. This function can be more convenient
363 to use than communicator.stringToProxy() because you do
364 not need the communicator to stringify a proxy that way.
366 - Ice.ObjectImpl is now an abstract class that cannot be instantiated.
367 This change should be transparent to application code.
369 - Added new features to the Visual Basic mapping:
371 - Structures, classes, and exceptions now have one-shot
372 constructors. For example, for a class
379 the following constructors are generated:
381 Public Class Example Inherits Ice.ObjectImpl
383 Public Sub New(ByVal i as Integer, ByVal s As String) ...
385 This allows you to construct a structure, class, or exception and
386 supply values for the data members in a single statement, instead
387 of having to assign to the members of a default-constructed
390 For derived exceptions and classes, the constructor expects values
391 for all data members, including those of base exceptions or
392 classes, in base-to-derived order of declaration.
394 Changes since version 2.1.1
395 ---------------------------
397 - Fixed a bug in the code generator: incorrect code was generated
398 if an operation used an exception from an unrelated module in
399 its exception specification.
401 Changes since version 2.1.0
402 ---------------------------
404 - Added sequences of fixed-length elements to throughput demo.
406 - Added -E option to the various Slice compilers to print preprocessor
409 - Fixed a bug in the option parsing for Ice tools such as slice2cpp,
410 slice2java, slice2cs, etc. The option parser used to incorrectly
411 complain about repeated options when in fact no option was
412 repeated. Also changed the parser to permit options to follow an
423 Changes since version 2.0.0
424 ---------------------------
426 - Fixed bug in the code generators for C# and VB: for sequences
427 of structs and sequences of Object*, incorrect code was generated
428 if a ["cs:collection"] or ["vb:collection"] metadata directive
431 - Added setDefaultContext() and getDefaultContext() to the
432 Ice::Communicator interface. This allows a default context to be
433 established on a communicator-wide basis. See section 29.8.3 in the
436 Added ice_defaultContext to Ice::ObjectProxy. This creates a new
437 proxy that uses the default context established on the communicator.
439 - Overloaded the checkedCast member function of the generated PrxHelper
440 classes to allow a trailing argument of type Ice::Context. This makes
441 it possible to do stateful things that require a context in a
442 servant locator's activate() method.
444 - Fixed a bug in slice2vb: incorrect code was generated if an interface
445 was derived from a base interface in a different module if the base
446 interface contained a AMD operation.