forked from ome/zeroc-ice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
2523 lines (1774 loc) · 89.1 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
======================================================================
CHANGES for Ice 3.5
======================================================================
The entries below contain brief descriptions of the changes in a
release, in no particular order. Some of the entries reflect
significant new additions, while others represent minor corrections.
Although this list is not a comprehensive report of every change we
made in a release, it does provide details on the changes we feel
Ice users might need to be aware of.
We recommend that you use the release notes included in your Ice
distribution as a guide for migrating your applications to this
release, and the Ice manual for complete details on a particular
aspect of Ice.
Note that this file only includes changes since Ice 3.2.1. For the
change history of prior releases, refer to the CHANGES file in the
subdirectory of each language mapping (e.g., cpp/CHANGES).
======================================================================
Changes since version 3.5b
======================================================================
General Changes
===============
- Fixed a bug where the CtrlCHandler destruction would cause a
segfault on some recent Linux distributions with GCC 4.7.
- IPv6 is now enabled by default. A server listening on an endpoint
with the wildcard address will therefore now accept connections from
both IPv4 and IPv6 clients. It will also publish endpoints with IPv6
addresses if some network interfaces are configured with IPv6
addresses.
Ice will still prefer IPv4 addresses when resolving hostnames from
endpoints and the result includes both types of addresses. This
behavior can be changed by setting Ice.PreferIPv6Address to 1. In
this case, Ice prefers the IPv6 address over the IPv4 address if the
hostname resolves to both IPv4 and IPv6 addresses.
IPv6 can be disabled by setting Ice.IPv6 to 0.
- Fixed a bug where an erroneous connection warning could be printed
on the server side if the client closed the connection before
receiving the connection validation message.
- Fixed a Freeze map issue where the clear method could throw an
exception if active cursors were still opened.
- Added support for wrapInputStream function. Unlike the
createInputStream function, the returned input stream wraps the
provided encoded data rather than copying it. While it avoids
copying the data, care must be taken to not modify the data while
the input stream is being used.
- The IceBox server no longer configures a service's logger if the
service defines Ice.LogFile or Ice.UseSyslog.
- IceGrid should now interoperate with IceGrid node versions >= 3.2.
- Fixed issue where defining an IceUtil::Handle for a specialization
of a generated Slice class would fail to compile because the Slice
class privately inherited from IceInternal::GCShared.
- Fixed client side checks for encoding version. An invocation on a
proxy with a compatible encoding (same major version) will now
succeed even if the encoding minor version is not supported. In this
case, the Ice run time uses the greatest supported encoding.
- Fixed bug where the retry of an AMI invocation could trigger an
assertion.
- Improved the dispatch and remote invocation metrics classes to
support additional size and replySize data members.
- Improved the 1.1 encoding to further reduce the size of encoded
objects. Objects are no longer encoded at the end of the
encapsulation. Instead, an object is encoded as soon as it's written
and it has not already been encoded within the encapsulation.
IMPORTANT: This change implies that the 1.1 class encoding from Ice
3.5.0 is incompatible with the encoding from the 3.5 beta version.
- Added support for Slice class compact IDs. A compact ID is defined
as a numeric value in the Slice class definition. For example:
// Slice
class Compact(1)
{
string v;
};
When using the 1.1 encoding, Ice will marshal this numeric value
instead of the string type ID of the class.
- Fixed bugs in the Slice parser related to optional values:
* The parser was too strict when validating tags of optional data
members. It is legal to reuse the tag of an inherited data member
but the parser treated it as an error.
* The parser did not detect duplicate tags among the optional
parameters in an operation.
- The properties IcePatch2.ChunkSize, IcePatch2.Directory,
IcePatch2.Remove and IcePatch2.Thorough have been deprecated for
IcePatch2 clients. The replacements are IcePatch2Client.ChunkSize,
IcePatch2Client.Directory, IcePatch2Client.Remove and
IcePatch2Client.Thorough, respectively.
C++ Changes
===========
- operator== and operator< are now only generated by default for Slice
structures that can be used as dictionary keys. For other structures
you will need to add the metadata ["cpp:comparable"] if you need
these operators. For example:
["cpp:comparable"]
struct MyStruct {
Ice::StringSeq ids;
};
- Added support for a zero-copy Ice::OutputStream::finished() method.
If supported by the stream implementation, the memory returned by
this method points to the output stream's internal buffer. Special
care must be taken to ensure the memory is not accessed after the
de-allocation of the output stream object.
- Added support for zero-copy on x86_64 processors when using the
sequence C++ array mapping.
Java Changes
============
- Added support for the Ice.UseApplicationClassLoader configuration
property. When set to 1, the Ice core will set the thread context
class loader to the class loader of the servant or AMI callback
before dispatching the call.
Python Changes
==============
- Fixed a bug in the Glacier2.Application class where the code was
using the old asynchronous API.
- Added "self" to the Slice compiler's list of Python keywords.
PHP Changes
===========
- SLES 11 RPMs now require PHP 5.3.
======================================================================
Changes since version 3.4.2
======================================================================
General Changes
===============
- The Ice::ConnectionInfo class supports an additional connectionId
field. This ID matches the connection ID set on a proxy with the
ice_connectionId proxy method.
- The Ice::UDPEndpointInfo class no longer supports encoding and
protocol version members. These members have been deprecated with
the 1.1 encoding.
- Added support for TLS 1.1 and TLS 1.2 in IceSSL for C++ and Java.
- IceGrid now supports a new proxy-options attribute on the <adapter>
<replica-group>, <object> and <allocatable> XML descriptor
elements. This attribute allows to specify the proxy options to use
for well-known objects or allocatable objects. For adapters, it also
generates the object adapter ProxyOptions property in the server or
service configuration file. This change requires a IceGrid database
upgrade.
- Improved Glacier2 permission verifiers to permit throwing
Glacier2::PermissionDeniedException exceptions. Glacier2 now
forwards permission denied exceptions to the client.
- The Slice compilers now define the ICE_VERSION preprocessor macro
so that you can use the Ice version to conditionally compile your
Slice definitions.
- Fixed bug where the UDP client endpoint --interface option would be
ignored on some platforms (Windows and OS X).
- IceGrid now enables active connection management for its object
adapters to allow client connections to be closed automatically when
inactive.
- Improved Ice.Trace.Network tracing for transport acceptors. The
tracing now shows when the object adapter starts listening for
incoming connections and when it starts accepting them.
- Improved IceStorm batch subscriber sending to wait for the batch to
be sent before sending another batch.
- Added a new "compact" encoding for Slice classes and exceptions.
This format significantly reduces the "on-the-wire" size of class
and exception instances, but sacrifices the ability for the receiver
to "slice" an unknown derived type to a known type. The compact
format is now the default encoding. Applications can selectively
enable the traditional "sliced" format using metadata and the
property Ice.Default.SlicedFormat.
- When using the "sliced" format for Slice classes and exceptions,
Ice now has the ability to preserve the slices of unknown derived
types and forward the original value intact. This allows an
intermediary without knowledge of all derived types to forward a
value while retaining the slices of unknown types. Types must be
annotated with the "preserve-slice" metadata to support this
feature.
- Added support for optional data members in classes and exceptions,
and optional parameters in operations.
- The changes necessary to support the compact encoding, preserved
slices, and optional members and parameters required a revision
to the Ice encoding. The default encoding version is now 1.1. Ice
remains fully backward-compatible with existing applications that
use version 1.0 of the Ice encoding, however these new features
cannot be used in mixed environments.
- Slice enumerators can now be assigned arbitrary values:
// Slice
enum Color
{
red = 1,
green, // Value is 2
blue = 9
};
- IceGrid and the IceGrid administrative clients have been enhanced to
support updating server configuration properties at run time without
requiring the servers to be restarted.
- Added support for updating Ice properties at run time using the Ice
administrative "Properties" facet. The facet also allows user code
to register a callback to be notified of the updates.
- Fixed a bug where batched requests could cause invalid
Ice::UnmarshalOutOfBoundsException exceptions if a request from the
batch failed because no servants could be found to dispatch the
request.
- Fixed issue where IceGrid round-robin load balancing policy returned
the same adapter endpoints multiple times if some IceGrid nodes were
down.
- Fixed a bug where, under certain circumstances, Ice could assert
when a connection was being closed.
- Improved server disable to prevent the IceGrid locator from
returning endpoints of disabled servers.
- Fixed a per-session memory leak in Glacier2 that occurred when
request buffering was enabled.
- Fixed IceStorm bug that could cause a crash when using the Freeze
database backend and multiple threads were trying to write to the
database.
- Fixed minor performance issue with bi-directional proxies.
- Added support for replica and node name verification when securing
the IceGrid node and registries. The names are matched against the
certificate common name. The connection is rejected if the
certificate CN does not match the replica or node name. The
properties IceGrid.Registry.RequireNodeCertCN and
IceGrid.Registry.RequireReplicaCertCN must be set to 1 to enable
this verification.
- Fixed IceGrid bug where the server deactivation timeout would be
ignored if the server was not deactivated using the IceGrid
administrative facility.
- Fixed IceSSL bug in all language mappings that could cause a server
to crash if a failure occurred during connection establishment and
network tracing was enabled.
C++ Changes
===========
- Added support for WinRT.
- Added new AMI mapping with support for C++11 lambda functions. This
mapping is only available on platforms supporting the new C++11
features.
- Fixed a Windows bug where a connection failure would be reported
with Ice::SocketException instead of Ice:ConnectFailedException.
- Added the property IceSSL.InitOpenSSL, which allows an application
to disable the OpenSSL startup and shutdown activities in the IceSSL
plug-in.
- Fixed a bug that could cause an assertion failure when flushing
batch requests.
- Added support for clang compiler on OS X.
- Fixed issue where a connection to a remote address would always fail
with an assertion on Windows 8.
- Declaring ice_print for local exceptions is now optional. This
method is not declared by default, but you can use the metadata tag
"cpp:ice_print" to enable the method declaration.
- The slice2cpp --depend option now includes the generated header file
in Makefile dependencies.
- Deprecated ice_getHash. Users should create their own hash
implementations when needed.
Visual Studio Add-in Changes
============================
- Fixed a bug with C++ projects that build static libraries.
- Fixed a bug that could cause Visual Studio to hang while opening or
building solutions containing a large number of projects.
- Fixed a bug during project cleaning in which an exception was thrown
when trying to remove generated files and the user is not authorized
to remove the files.
- Fixed a bug with solutions that contain unloaded projects.
C# Changes
==========
- Fixed potential leak which could eventually result in an
OutOfMemoryException for applications creating proxies on a regular
basis.
- Added the properties IceSSL.KeySet and IceSSL.PersistKeySet to
control how and where to import private keys of X.509 certificates.
- Changed the marshaling code for sequences of user-defined types that
are mapped to System.Collections.Generic.Stack<T>. In previous
releases the elements were marshaled in bottom-to-top order; now
they are marshaled in top-to-bottom order. Stacks of primitive types
have always been marshaled in top-to-bottom order.
- Fixed a bug that could cause an infinite loop while visiting all
referenced assemblies of an executable.
- The generated constructors for an abstract Slice class now use
protected visibility instead of public visibility.
- Fixed a bug in Ice.Application for Mono that could cause the VM to
crash when a signal occurred.
- Minor marshaling/un-marshaling performance improvement (removed
virtual specifier from streaming class).
- Added missing throwLocalException method to Ice.AsyncResult
interface.
- Struct types that contains default values are mapped to a class.
Java Changes
============
- Fixed a Freeze map index marshaling bug. The encoding of the key
would write an additional byte if the map value used classes. This
bug fix requires that you recreate your indices if your Freeze map
value uses classes.
- Fixed a bug in IceSSL that could cause delays due to DNS lookups.
- Fixed a bug in the generated code for a Slice exception with no
data members: constructors are now generated correctly.
- Fixed an IceSSL bug in which the IceSSL.Alias property was not
working correctly.
- The mapping for Slice classes, exceptions and structures now defines a
serialVersionUID member. You can override the default UID using the
metadata [java:serialVersionUID:<value>].
- Ice services are now built in separate JAR files.
Python Changes
==============
- Added support for Python 3.
- Fixed a bug in the checkedCast operation when using a non-existent
facet. In previous releases this operation raised a
FacetNotExistException; now it returns a nil proxy as in other
language mappings.
- Fixed a bug that caused IceGrid activation of a Python server to
hang when tracing was enabled for the server.
PHP Changes
===========
- Added compatibility with PHP 5.4.
- Fixed a bug in the checkedCast operation when using a non-existent
facet. In previous releases this operation raised a
FacetNotExistException; now it returns a nil proxy as in other
language mappings.
- Fixed a bug in Ice_initialize: if an array was passed representing
the command-line arguments, the function was not updating that array
to remove Ice-specific options.
- It is no longer necessary to use call-time reference arguments when
passing the command-line argument array to Ice_initialize and
Ice_createProperties, as these functions now force their arguments
to be passed by reference. For example, where you used to call a
function like this:
$communicator = Ice_initialize(&$argv);
you can now use this:
$communicator = Ice_initialize($argv);
Ruby Changes
============
- Fixed a bug in the checkedCast operation when using a non-existent
facet. In previous releases this operation raised a
FacetNotExistException; now it returns a nil proxy as in other
language mappings.
======================================================================
Changes since version 3.4.1
======================================================================
General Changes
===============
- The operation mode sent over the wire for the Object operations
ice_ping, ice_isA, ice_ids, and ice_id should be Nonmutating, but
the language mappings were inconsistent in this respect. All
language mappings now send the correct mode.
- Fixed a bug where under certain circumstances, Ice would
indefinitely re-try to add a proxy to the Glacier2 routing table.
- Improved queuing of Glacier2 requests to the client to not invoke
requests if the client connection already has requests pending for
send. Instead, Glacier2 waits for the pending requests to be
sent. This allow request overriding to occur more often when the
client connection is slow.
- Fixed bug where an IceGrid node or registry could hang for a long
time on startup if some IceGrid registry replicas weren't reachable.
- Added throwLocalException method to the Ice AsyncResult class. If
the request fails with a local exception, this method throws the
local exception.
- Fixed a bug that caused a crash if a timeout occurs while sending
an AMI request and if automatic retry is enabled (the default).
- It is now possible to use a constant as the default value for a data
member. For example:
// Slice
const int MIN = 1;
struct Info
{
int size = MIN;
};
It is also possible for a constant to refer to another constant:
// Slice
const int MAXIMUM_SIZE = 100;
const int DEFAULT_SIZE = MAXIMUM_SIZE;
C++ Changes
===========
- Fixed a bug in the Linux epoll selector implementation that could
cause hangs when using the thread pool serialization mode.
- Fixed a memory leak in IceSSL on Windows.
- Fixed a bug in the generated code for a Slice structure containing
at least one data member that declares a default value. The
constructors were not being exported correctly in this case.
- Fixed a bug where the IceUtil::Timer thread could die in case very
large delays were specified.
- Removed extra include/IceGrid/Perf.h file.
Java Changes
============
- Added support for Android.
- Added overloaded constructors for user and system exceptions that
accept a Throwable argument.
- Added an ice_staticId method to generated PrxHelper classes.
- Fixed a bug in slice2java in which a floating point default value
could cause a compile error.
- Fixed a bug where Ice.ServerIdleTime wouldn't consistently shutdown
servers after the given period of inactivity.
C# Changes
==========
- Added support for the .NET Compact Framework.
- Added demo/Ice/compact, which is a simple graphical client that uses
Ice for .NET Compact Framework.
- Fixed bugs in the generated code that caused naming conflicts when
using a Slice module named 'System'.
- Added an ice_staticId method to generated PrxHelper classes.
- Fixed a bug in the generated code when a Slice class uses the
property mapping and declares default values for its members.
Python Changes
==============
- Fixed bug where None was not recognized as a keyword.
Ruby Changes
============
- Fixed a bug in the Ice extension that would cause an ArgumentError
to be raised when attempting to print a byte sequence whose value is
a string that contains null bytes.
PHP Changes
===========
- Fixed a bug that caused 'undefined symbol IcePHP__t_XXX' errors when
Ice.php or a generated file is included from a non-global scope.
- slice2php now generates 'require_once' statements corresponding to
Slice #include directives, replacing the 'require' statements used
in previous releases.
- Fixed a bug in the Ice extension that caused Ice-related INI
settings to be ignored.
Visual Studio Add-in Changes
============================
- Fixed a bug that prevented the Add-in from automatically compiling
Slice files when using a non-English version of Visual Studio.
- Improved the layout and wording of the Ice Configuration dialogs.
- Added $(IceHome) macro to VS 2008 project configurations.
- Changed C++ project configurations to use $(IceHome) macro in
configuration settings.
- Removed Ice Home field from "Ice Configuration" dialog. Projects
now always use the Ice installation corresponding to the location
of the add-in DLL.
- Fixed issues that prevented the use of solution folders in Ice
projects.
- Fixed an issue that caused the add-in to not work when using
Visual Studio 2010 and "Solution Navigator".
- Added a check to prevent incorrect Runtime library usage in C++
projects.
- Added support for .NET Smart Device project types used by the .NET
Compact Framework.
- Improved add-in output messages.
- Fixed an issue that produced a deadlock in Visual Studio when
Slice compiler output was large enough to fill the output buffer.
- Fixed support for parallel builds. The Slice compiler was run
several times, once for each parallel build. Now the Slice
compiler is run only once, before all parallel builds begin.
- Fixed an issue that could cause errors with Visual Studio if a
Slice file was saved while the project was building.
- Fixed the add-in to work properly when --header-ext and
--source-ext are present in Extra Compiler Options.
- Fixed the add-in to support building Freeze demos without the need
to set environment variables.
- Fixed the add-in to always open generated files as read only;
previously the generated files were not opened read only until the
first project build.
- Added support for setting the output directory for generated files,
making the add-in more VCS friendly.
- Added support for .NET DEVPATH.
- Added support for canceling changes in configuration dialogs. All
the configuration dialogs now have OK, Cancel, Apply buttons with
the standard semantics.
- Added warnings to prevent incorrect options from being entered in
Extra Compiler Options.
- Added a timestamp to Slice build output, which is only printed when
the trace level is Debug.
- The add-in now supports command-line builds.
- The add-in now avoids making extraneous changes to projects that
could result in merge issues when projects are in a shared
development.
- The add-in no longer overrides the debug environment setting for
PATH, but rather appends appropriately.
- On the loss of focus when adding an include directory in the Slice
Include Path, the addition is now saved rather than lost.
- Fixed an issue where moving a Slice-generated file to a filter so
that it would be ignored by source control did not always work
because the generated files could be moved back into the regular
Source Files list by a build.
- Improved the tracing output generated by the add-in and changed
the tracing options.
======================================================================
Changes since version 3.4.0
======================================================================
General Changes
===============
- Added the new property Freeze.DbEnv.<db>.LockFile and changed the
dumpdb and transformdb utilities so that they can be run safely on
a database environment that is currently open in another process.
- Changed the Glacier2 helper classes to cache the client category.
- Added the ability to use underscores in Slice identifiers. See the
release notes for important information on this change.
- Added the setConnectContext method to Glacier2.SessionFactoryHelper,
which allows an application to provide a request context to be used
when creating a Glacier2 session. (Java and C#)
- Fixed IceGrid bug where node observers would not be notified when a
server is re-enabled after it has been updated and if the server was
disabled following an activation failure.
- Fixed a bug in the Glacier2.SessionFactoryHelper class (Java/C#) in
which the getPort() method would return an incorrect default port if
no port was configured.
C++ Changes
===========
- Fixed a bug in slice2cpp in which streaming code was not generated
properly for types in nested modules.
- slice2cpp now generates a "one-shot" constructor for a Slice
structure if at least one of its members has a default value.
- Fixed a bug in slice2cpp so that asynchronous "end_op" methods are
now exported properly.
- Fixed a bug in slice2cpp that would generate invalid code for a
Slice exception when the --stream option was not used.
- Fixed compatibility issues with OpenSSL 1.0.
- Fixed a bug in slice2cpp that would cause invalid code to be
generated for a nested Slice definition when the --stream option was
used.
- Fixed a bug in Freeze that disabled automatic log deletion.
Java Changes
============
- Fixed an issue in which intensive use of Freeze or the stream API
could cause an OutOfMemoryError. Note that Freeze maps must be
regenerated with slice2freezej to incorporate this fix.
- Fixed a bug in the Slice2Java ant task in which duplicate Slice
files could be passed to slice2java. Also fixed a bug in slice2java
that caused the translator to fail if a duplicate file was passed
on the command line.
- Fixed race condition which could cause the thread pool selector
thread to go away (causing the thread pool to not dispatch further
incoming messages).
- Deprecated Ice.AsyncCallback. To use the generic asynchronous
callback facility, applications should derive their classes from
Ice.Callback.
- The size method on a Freeze.Map and on the value of an indexed
submap now use the current transaction associated with the
connection, if any.
C# Changes
==========
- Fixed a bug in the generated code that prevented sequences from
being marshaled using the stream API if the sequences used generic
collection types.
- Fixed a bug in the IceSSL plug-in that could incorrectly report a
certificate verification failure when the IceSSL.CheckCertName
property is enabled.
Python Changes
==============
- Fixed a bug in which destroyed Communicator instances were not being
garbage collected.
- Fixed a bug in Ice.Application in which the exit status was not
properly returned from main().
======================================================================
Changes since version 3.4b
======================================================================
General Changes
===============
- Added ability to define default values for Slice data members. For
example, you can write:
// Slice
class C
{
int i = 2;
string name = "John";
};
- Fixed IceGrid bug where the IceGrid node would disconnect from the
registry if the clock was moved backward.
- Fixed hang in slice2cs and slice2py that would occur if a comment
contained a '<' with no closing '>'.
- Fixed a bug in the Java and C# stream classes where readString() and
readBlob() were not checking the size before allocating memory.
- Fixed source files to have consistent end of line terminators.
- Fixed the Ice.initialize(), Ice.initialize(Ice.InitializationData)
and Ice.createProperties() overloads in Python, Ruby and PHP to
match the C++, .NET and Java behavior. These overloads no longer
read the ICE_CONFIG environment variable.
- Fixed IceGrid bug where updating an application could cause a
temporary hang if a server deactivation hanged during the update.
C++ Changes
===========
- Renamed the createIceStringConverter function back to
createStringConverter for compatibility with previous releases.
Python Changes
==============
- Fixed a code generation bug that could lead to undefined Slice
types, depending on the order in which the generated code was
imported.
- Changed the Python mapping for long integer constants so that 64-bit
values are no longer generated as strings.
Ruby Changes
============
- Fixed a compilation error when using Ruby 1.8.7 (patch level >=
248).
======================================================================
Changes since version 3.3.1
======================================================================
General Changes
===============
These entries apply to all relevant language mappings unless otherwise
noted.
- Added a new asynchronous method invocation (AMI) facility for C++,
C#, Java, and Python. The previous API is now deprecated.
- Added the ability to invoke flushBatchRequests asynchronously on a
communicator or connection.
- The Ice extension for Visual Studio is now included in the Ice
distribution. The source code for the extension can be found in the
vsplugin subdirectory of the source distribution. Note that the
extension no longer supports Visual Studio 2005.
- Added a cloneWithPrefix operation to the Logger interface.
- Added a removeServantLocator operation to the ObjectAdapter
interface.
- The translators now include a comment at the beginning of each
generated file to indicate that the file is machine-generated.
This is particularly useful for tools such as StyleCop.
- The IceGrid graphical administration tool now allows you to filter
the live deployment for a particular application.
- Added the ability to query an IceGrid node to determine the number
of CPU sockets on its host machine. Currently this only works for
Windows Vista (or later) and native (non-VM) Linux. You can also
manually configure the number of CPU sockets.
- Freeze now uses file locks to prevent multiple processes from
opening the same database environment.
- Added new utility classes to simplify the use of Glacier2. The
Glacier2::Application class extends Ice::Application to add support
for keeping a Glacier2 session alive and automatically restarting it
when necessary. For Java and C#, helper classes are also provided
for use in graphical programs. See the Ice manual for more
information.
- Added new InputStream::readAndCheckSeqSize method to read and check
the size of a sequence. The check ensures the sequence size is
consistent with the stream buffer size. This is useful to prevent
over-allocating memory for the sequence if the input stream data
cannot be trusted.
- When using the system logger (enabled when Ice.UseSyslog is set), it
is now possible to set the facility via the Ice.SyslogFacility
property. The default value is LOG_USER.
- It is now legal to pass an empty name to createObjectAdapterWithRouter
and createObjectAdapterWithEndpoints. If so, a UUID will be used for
the object adapter's name.
- Added support for dispatching servant invocations and AMI callbacks
in application-specific threads (e.g., in a GUI-safe thread). The
application needs to implement the Ice::Dispatcher interface and
initialize the communicator appropriately to use this dispatcher
implementation. See the Ice manual for more information.
- icegridadmin now clears the user-supplied password after use.
- icegridadmin now correctly handles EOF when reading username and
password.
- The Connection::createProxy method will now create a secure
proxy if the connection is secure and a datagram proxy if the
connection is a datagram connection.
- Added Communicator::proxyToProperty which converts a proxy to a
property set.
- Calling Glacier2::Router::destroySession() no longer raises an
Ice::ConnectionLostException exception. Glacier2 no longer
forcefully closes the connection of a destroyed session but instead
allows active connection management (ACM) for client connections to
close it (see below).
- Glacier2 has been changed to support the use of active connection
management. Active connection management is enabled by default for
Glacier2 client connections if Glacier2.SessionTimeout is set.
The ACM timeout is set to twice the value of the session timeout. If
the session timeout is disabled, ACM is also disabled for client
connections.
- Added support for a per-object adapter ACM timeout configured via
the <adapter>.ACM property. If not set, the property defaults to
value of Ice.ACM.Server set for the adapter's communicator.
- Improved the Ice run time's invocation retry facility to always
retry at least once on Ice::CloseConnectionException failures even
if the retry limit has been reached. If retries are disabled, this
ensures that an invocation is retried if it fails with an
Ice::CloseConnectionException.
- Added Glacier2.AddConnectionContext property to enable forwarding
connection information into the context of routed invocations. See
the manual for more information. Glacier2.AddSSLContext has been
deprecated, this new property should be used instead.
- Added Ice.Override.CloseTimeout property. This property overrides
timeout settings used to close connections.
- Ice connections are now forcefully closed after sending a close
connection message and once the connection timeout
expires. Previously, the connection would only be closed when the
object adapter or communicator was destroyed.
- The new Ice::ThreadHookPlugin class allows you to install thread
notification hooks during communicator initialization via plug-ins.
- Added Glacier2::Router::refreshSession, which keeps the client's
Glacier2 session alive. This is useful in the case that the
application architecture does not use a Glacier2 session
manager. Modified demo/Glacier2/callback to demonstrate the use of
this method.
- Fixed bug in icegridadmin where invalid XML could cause a crash.
- Fixed a bug where calling the object adapter waitForHold() method
would cause other calls on the object adapter to hang until the
waitForHold() method returned.
- Improved connection establishment scalability. Creating or accepting
a new connection should now be done in constant time regardless of
the number of connections already established or accepted.
- Fixed Glacier2 router bug which would cause the getCategoryForClient
method to throw Ice::NullHandleException if the server endpoints
were not set; instead it now returns an empty string.
- Ice.NegativeSizeException has been removed. The run time now throws
MarshalException or UnmarshalOutOfBoundsException instead.
- The Ice thread pool now supports receiving and sending data over Ice
connections using multiple threads. Allowing multiple connections to
concurrently send and receive data improves CPU usage on machines
with multiple cores. The maximum number of threads allowed to
concurrently send/receive data is capped by the number of available
cores.
- The Ice run time now uses Windows completion ports and overlapped IO
to accept, connect, and receive and send data over connections. This
improves scalability of server applications handling many
connections on Windows.
- Ice connections now support read timeouts. A connection will now
eventually timeout once the connection timeout is reached if no more
data is available for reading after the message header was received.
ACM no longer closes a connection for which a message is being
received.
- The IceSSL.TrustOnly properties support a new syntax that allows you
to reject a peer whose distinguished name matches certain criteria.
- IceSSL now compares the host name or IP address in a proxy endpoint
(if any) against the common name of the server's certificate when
the property IceSSL.CheckCertName is enabled. This is in addition to