ICE 3.4.2
[php5-ice-freebsdport.git] / vb / CHANGES
blobfae75dc8a66578d6fdc380976975521cb6f6b72e
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
33   during construction).
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
38   details.
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
43   Ice run time.
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
62   set.
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
74   default.
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
94   now always printed.
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 
105   were started.
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
137   secure connections.
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
150   operation parameter.
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
155   sent.
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 
179   allocation failure.
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
195   file for C#.
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
213   14.11.3 in the doc.)
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
219   address.
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
238   to a VB class.
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
248   in the stack trace.
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
260   initialization.
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
275       derived.Equals(base)
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:
285   - Capacity
286   - TrimToSize
287   - Sort
288   - Reverse
289   - BinarySearch
290   - InsertRange
291   - RemoveRange
292   - GetRange
293   - SetRange
294   - LastIndexOf
295   - Repeat
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
304   CLS-compliant.
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:
313       Public Class MyIntfI
314           Inherits _MyIntfDisp
315           ' ...
316       End Class
318   you now have to write:
320       Public Class MyIntfI
321           Inherits MyIntfDisp_
322           ' ...
323       End Class
325   Similarly, for the Tie mapping, the location of the underscore
326   has changed:
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
342   more information.
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
356   in some cases.
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
374       class Example {
375           int i;
376           string s;
377       };
379     the following constructors are generated:
381       Public Class Example Inherits Ice.ObjectImpl
382           Public Sub New() ...
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
388     instance.
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
407   output on stdout.
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
413   argument, so
415       slice2cpp -I. x.ice
417   and
419       slice2cpp x.ice -I.
421   are now equivalent.
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
429   was used.
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
434   doc.
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.