forked from ome/zeroc-ice
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCHANGES
2092 lines (1471 loc) · 74 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.4.2
======================================================================
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.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
the existing behavior that compared the host name or IP address
against the DNS names and IP addresses in the server certificate's
subject alternative name extension.
- slice2docbook is no longer supported and has been removed from
the distribution.
- slice2html comments now use a syntax that matches the javadoc
syntax. Instead of
module::interface::operation
slice2html now expects
module.interface#operation
Similarly, the link syntax now follows the javadoc syntax. Instead
of
[module::interface::operation]
slice2html now expects
{@link module.interface#operation}
The old syntax is still supported; slice2html prints a warning for
each source file in which it encounters the old syntax.
- A batch invocation now only throws if the connection associated
with the proxy failed and there were batch requests queued at the
time of the failure. If there were no batch requests queued, the
batch invocation does not throw but instead tries to obtain a new
connection.
- Added the ability to read properties from the Windows registry. This
is done by setting the Ice.Config property to a value such as the
following:
HKLM\Software\MyCompany\IceProperties
This will read all the string values from the specified key in
HKEY_LOCAL_MACHINE and set them as Ice properties.
- iceserviceinstall, the Windows service installation utility, now
supports reading its configuration settings from HKLM in the Windows
registry.
- Added ability to get information from endpoints such as host and
port without having to parse the stringified endpoint.
- Added ability to get addressing information from a connection.
- The IceSSL::ConnectionInfo type is now generated from a local Slice
definition. You can downcast this type to NativeConnectionInfo if
you require access to native certificates.
- Slice files are now allowed to be in UTF-8 format and include UTF-8
BOM at start of file and include UTF-8 characters in comments.
- Fixed bug in Slice compilers that would cause a crash if a Slice
file had double slashes in its path.
- The following properties were deprecated in Ice 3.2 and have been
removed:
Glacier2.AddUserToAllowCategories
Glacier2.AllowCategories
Ice.UseEventLog
- The following APIs were deprecated in Ice 3.2 and have been removed:
Communicator::setDefaultContext
Communicator::getDefaultContext
ObjectPrx:ice_defaultContext
- Support for the deprecated Slice keyword 'nonmutating' has been
removed. As a result the following property has also been removed:
Freeze.UseNonmutating
- HP-UX is no longer a supported platform for Ice.
- Added extra network tracing to show the list of local interfaces
currently available when an endpoint is using a wildcard host, as
well as the published endpoints for an object adapter. Both of these
traces will be shown when Ice.Trace.Network >= 1.
- Added new property, Ice.Trace.ThreadPool, that when set >= 1 enables
tracing of thread pool creation as dynamic thread pools grow and
shrink.
- Changed the format of the default logger output. Traces are now
prepended by '--', warnings by '-!' and errors by '!!'.
- The value of the thread pool SizeWarn property is now 0 by default
rather than 80% of Size. This means that by default warnings about
thread pool growth will now be disabled.
- Added example demo/Ice/plugin to show how to write a simple Ice
plug-in as well as a Logger plug-in.
- Added getPlugins method to PluginManager which returns a list of the
names of all installed plug-ins.
- The reason member of MemoryLimitException now contains the size of
the request that caused the exception as well as the value of the
maximum message size.
- The Ice::Application helper classes now use the process logger to
emit errors rather than just writing directly to stderr.
- A Slice class that implements an interface but does not define or
inherit any operations is now mapped to a concrete class. This
change affects the Java, C#, Python, and Ruby language mappings.
- It is now possible to use an UNC path as an include directive for
the Slice compilers.
- Fixed a bug in slice2html that caused incorrect hyperlinks to be
generated for the summary of the index sections of a module page.
- Added a new property, Ice.LogFile, which causes the default Ice
logger to write to a file rather than stderr. The file name is the
property's value.
- Added the following operations to the ObjectAdapter API:
- addDefaultServant
- removeDefaultServant
- findDefaultServant
These methods provide a simpler way of using default servants in
Ice. Please refer to the manual for more information.
- Using the --depend option with Slice compilers that support it no
longer outputs dependency info even if the Slice file itself
contains errors.
C++ Changes
============
- Added a new demo named "interleaved" that shows how to use
asynchronous invocation and dispatch to achieve maximum throughput
with Ice.
- Fixed a bug that prevented an application from using Unicode path
names for Freeze databases on Windows.
- Enhanced the portable streaming API to provide better support for
template programming.
- The C++ class generated for a derived Slice class no longer uses
virtual inheritance by default. The metadata "cpp:virtual" can be
defined for a Slice class to force the translator to use virtual
inheritance when necessary.
- The following functions have new overloaded versions on Windows that
accept a Unicode argument vector:
Ice::Application::main
Ice::Service::main
Ice::argsToStringSeq
- Added support for specifying the priority of threads in a thread
pool. See the Ice manual for more information.
- Added new demo book/map_filesystem.
- IceUtil:: Shared now uses the native atomic functions provided by gcc
4.1 and later on supported platforms. For details see
http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
- Fixed a bug in slice2cpp that could cause incorrect includes to be
generated if a Slice file was included that was a symbolic link.
- On Windows it is now possible to build the Ice DLLs with unique names
for each supported compiler. See UNIQUE_DLL_NAMES setting in
cpp/config/Make.rules.mak.
- The Ice DLLs no longer all use the default base load address.
- Changed the signature of the Ice::Service start method.
- Added new static methods to initialize an IceUtil::Time class from
a double:
IceUtil::Time::secondsDouble(double)
IceUtil::Time::milliSecondsDouble(double)
IceUtil::Time::microSecondsDouble(double)
- Added the ability to use alternative database storage for IceStorm
and IceGrid other than Freeze. The following SQL databases are
supported: SQLite and PostgreSQL. Please see the manual for more
information.
- Fixed a bug where globally-scoped garbage collected class pointers
could cause a crash on application termination.
- Fixed a bug where an SSL connection was rejected because of a
certificate validation failure even if IceSSL.VerifyPeer=0.
- Added ice_stackTrace() method to Exception classes, which returns
the exception stack trace on platforms/compilers that support it.
Currently this is only supported with the GCC compiler.
- Added new property, Ice.PrintStackTraces, which controls whether the
Ice logger utility classes (Ice::Trace, Ice::Warning, etc) print the
stack trace for Ice exceptions. By default it is enabled for debug
builds and disabled for release builds.
- Removed AMD_Array_Object_ice_invoke class and instead added an
ice_response method to AMD_Object_ice_invoke that uses the array
type.
- The system logger (enabled when Ice.UseSyslog is set) now uses the
value of Ice.ProgramName as the log identifier prefix.
- Fixed crash if Application::main() or Service::main() were called
with argc == 0.
Java Changes
============
- The Freeze map API now uses Java5 generic type conventions.
- Ice now tests for the presence of the Bzip2 classes only if an
application attempts to use compression.
- Added new demo book/map_filesystem.
- Changed IceSSL to use the keystore as the truststore if no
truststore is explicitly defined.
- Added new ice_dispatch method to Object that does not take a
DispatchInterceptorAsyncCallback parameter to be used for
synchronous dispatch only.
- Added support for using direct buffers in the transport layer to
minimize copying. The semantics of the Ice.CacheMessageBuffers
property have been extended as follows:
0 = no buffer caching
1 = buffer caching using non-direct buffers
2 = buffer caching using direct buffers
If this property is not defined, the new default value is 2.
- The Ice run time now re-throws exceptions using fillInStackTrace to
ensure the exception stack trace includes the calling point.
- Added the "classLoader" member to Ice.InitializationData, which
allows you to supply a custom class loader that Ice uses to load
plug-ins, user exceptions, concrete Slice classes, etc.
- Fixed a bug in the implementation of ice_invoke_async.
- The Freeze classes are now stored in a separate JAR file named
Freeze.jar.
- The translator no longer generates one-shot constructors for class,
struct and exception types if doing so would exceed Java's limit of
255 parameters for a method.
- Fixed a bug where an outgoing SSL connection was allowed even though
certificate validation failed.
- A holder class generated for a Slice class or interface now extends
the generic base class Ice.ObjectHolderBase and implements the
streaming interface Ice.ReadObjectCallback.
- slice2java no longer generates a <name>OperationsNC interface for
local interfaces and classes. This makes the code easier to browse
with IDEs.
- slice2java now preserves javadoc comments that appear in the Slice
source and writes them through to the corresponding APIs in the
generated code.
- Ice.jar and Freeze.jar now include source files. This allows IDEs
such as Eclipse to browse the Ice source code and to display javadoc
comments.
- Fixed a bug that caused UnmarshalOutOfBoundsException during an
attempt to unmarshal an exception or class if Ice.jar is installed
in the JVM's extension directory.
- The following APIs are deprecated and will be removed in a future
release.
Ice.Object.ice_hash()
Ice.ObjectPrx.ice_getHash()
Ice.ObjectPrx.ice_toString()
- The StackSize thread pool configuration property is now used.
- The generated classes for Slice structs are no longer declared final.
- Ice.Util.generateUUID has been deprecated. Use
java.util.UUID.randomUUID().toString() instead.
- Ice now supports the ability to load a configuration file as a class
path resource. For a path name specified in the ICE_CONFIG
environment variable, in the --Ice.Config command-line option, or
passed to Properties::load(), Ice first attempts to open the file as
a class path resource and, if that fails, tries to open it as a file
in the local file system. See the manual for more information.
- Removed the Java2 mapping. The release notes contain instructions
for migrating an application to the Java5 mapping.
- Changed the Slice compiler to emit @SuppressWarning annotations only
when necessary.
- Fixed a discrepancy between the documented behavior of the property
IceSSL.CheckCertName and its actual behavior. The documented
behavior states that IceSSL compares the host name as it appears in
the proxy's endpoint against the server certificate's alternative
subject names. The actual behavior in Ice 3.3 differed slightly in
that the host name may have undergone a translation that could
result in IceSSL using a different host name than that of the proxy.
For example, the proxy may have contained "127.0.0.1" but IceSSL
used "localhost". This could cause the SSL connection attempt to
fail if IceSSL.CheckCertName is enabled. IceSSL now uses the host
name from the proxy for this validation step.
C# Changes
==========
- The Ice DLLs no longer all use the default base load address.
- Both Ice Plugin and IceBox Service configuration now allow you to
enter a full path as the assembly DLL name.
- Added new ice_dispatch method to Object that does not take a
DispatchInterceptorAsyncCallback parameter to be used for
synchronous dispatch only.
- IceSSL's behavior with respect to the IceSSL.CheckCertName property
is now consistent with that of C++ and Java. Specifically, IceSSL
compares the host name or IP address in a proxy endpoint (if any)
against the common name and subject alternative names of the
server's certificate. In prior releases, IceSSL relied on .NET to
perform the validation of the common name but no comparison was made
with the subject alternative names.
- Fixed bug where random endpoint selection would only work for
proxies with more than two endpoints.
- Fixed thread safety issue in random endpoint selection.
- slice2cs no longer generates a <name>OperationsNC interface for
local interfaces and classes. This makes the code easier to browse
with IDEs.
- slice2cs now converts javadoc comments in Slice files into Visual C#
XML documentation comments. This allows you to generate
an <assembly>.xml file from the documentation comments by passing
the /doc option to Visual C#. The comments in the <assembly>.xml
file are shown as Visual C# tooltips if the <assembly>.xml file is
installed in the same directory as the <assembly>.dll file.
The build for Ice now generates the <assembly>.xml file for each
assembly and installs it, so Visual C# displays tooltips for Ice
APIs.
- The generated types for Slice classes, interfaces, structs and
exceptions are now declared as partial.
- The following APIs are deprecated and will be removed in a future
release.
Ice.Object.ice_hash()
Ice.ObjectPrx.ice_getHash()
Ice.ObjectPrx.ice_toString()
- The StackSize thread pool configuration property is now used.
- The default Ice logger now uses System.Diagnostics.Trace to
output messages. Please see manual and Trace documentation for
more information.
- Ice.Util.generateUUID has been deprecated. Use
System.Guid.NewGuid.ToString() instead.
Python Changes
==============
- The extension now restores the pre-existing dlopen flags.
- The __cmp__ method generated for slice structures and enumerations
has been replaced by the rich operators __lt__, __le__, __eq__,
__ne__, __gt__, __ge__.
- Slice comments are now converted into Python docstrings in the
generated code.
- Added the administrative facet API.
- Integer values are now accepted where floating point values are
expected.
- Objects that support the number protocol are now accepted as legal
values for Slice integer and floating-point types.
- 64-bit integers are now supported in buffer types.
Ruby Changes
============
- The following API as been deprecated and will be removed in a
future release.
Ice::ObjectPrx::ice_getHash()
PHP Changes
===========
- Enumerations are now supported as dictionary key types.
- Integer values are now accepted where floating point values are
expected.
- Added slice2php and removed dynamic Slice translation.
- Added support for PHP namespaces (requires PHP 5.3 or later).