We are pleased to announce a new beta of ACE-5.4.5, TAO-1.4.5 and
CIAO-0.4.5. This beta contains a number of time/space optimizations,
including POA/Skeleton refactoring and TypeCode reimplementation. It
also fixes a number of important bugs reported by our users, which we
greatly appreciate, as always.
As usual the latest release is available at:
The doxygen documentation for the beta will be updated in the next few
We encourage you to download the new beta, use it with your
applications, and let us know if you encounter any problems. As always,
please use the:
so that we have the version/platform/compiler/options you're using to
report problems. We also request that you take a look at
for the status of various ongoing projects at the DOC groups of WashU,
UCI, and Vanderbilt to move ACE+TAO+CIAO forward. Overviews of our
recent progress and upcoming plans are available at
The overall succeeded test results gathered from all our daily builds is
98% for the ACE tests and 93% for the TAO tests. Please see
for a summary of these tests. Our goal is to get these tests close to
100% for the next major release (i.e., ACE 6.0, TAO 2.0, and CIAO 1.0),
which is slated for some time later this summer or early fall.
The following is a list of key changes since the last beta. Please
refer to the ChangeLog for more details on the problem and the nature of
Changes common to ACE+TAO+CIAO
.. Added support for GNU G++ 4.0. This seems to work well on most
platforms, though there seem to be some issues on the latest Mac OSX
Tiger release that we'll fix soon.
Changes to ACE
.. Remove special handling in the Thread Specific Storage(TSS) code that
released the TSS key for ACE_TSS<TYPE>. ACE_TSS<TYPE> has been
changed to explicitly free the TSS key when necessary.
.. On Win32 systems: detect thread termination via a hook in DLLMain for
ACE.dll. This allows cleanup of TSS objects for non-ACE threads that
use ACE functions. The most common case was threads that used ACE
logging. Formerly any TSS objects created by these threads would be
.. Added support for GNU G++ 4.0. The x.4.5 beta takes advantage of g++
4.0's symbol visibility. This feature is conceptually similar to MS
Windows "__declspec(dllexport)" DLL functionality. Using this new g++
feature results in substantially improved ACE/TAO/CIAO shared library
binaries. A subset of the improvements include the following:
* The number of unnecessarily exported DSO/DLL symbols is greatly
reduced, resulting in faster program start times.
* Smaller footprint.
* Improved performance since run-time indirection of internal
symbols is no longer needed.
No changes to the ACE/TAO sources were necessary to support this
feature since the required visibility attributes were hidden behind
the various "*_Export" macros (formerly only useful for MS Windows
DLLs) used throughout ACE/TAO. Please see
for a summary of the improvements in footprint resulting from this
.. The ACE_Reactor destructor will now call close() on the referenced
reactor implementation. This assures that all handlers are notified
before the ACE_Reactor object that's most likely referenced in these
handlers is invalid. Although this should not be a user-visible
change, it did catch some ACE tests off guard destroying reactor
implementations and ACE_Reactor interfaces in the wrong order, so it
may come up in the field as well. When using dynamically allocated
reactor implementations, do not destroy the implementation object
before the ACE_Reactor interface object. Use of the ACE_Reactor
constructor's delete_implementation argument (with a value of 1) is
recommended when dynamically allocating reactor implementations.
.. Improved performance of HTBP by not requiring a lookup of peer
.. Added new ACE_SizeCDR stream, which allows one to calculate size of
the representation without writing anything.
.. Number of improvements in ACE_ROOT/protocols/ace/RMCast, which is the
new ACE reliable multicast implementation.
Changes to TAO
.. The POA is refactored so that it uses strategies for its
implementation, which helps minimize footprint for common use cases.
.. The ImR handling is moved to the new ImR_Client library. If your
server needs to register itself to the ImR you have to link the new
.. The MIOP part of the POA is moved to the Group Object Adapter (GOA).
See the latest version of the MIOP specification. You have to link
now with the PortableGroup library and retrieve a GOA instead of the
.. Implemented several missing parts of POA functionality as described by
the latest CORBA specification. Missing functionality, incorrect
exceptions, incorrect minor codes, and much more.
.. Refactored the huge PortableServer.pidl file in several smaller files
and regenerated all the generated files in the repository.
.. Move TAO_ORB_Manager from PortableServer to Utils library, this is a
helper class. If you use this class link with the TAO_Utils library
.. The POA has been split in Root_POA and Regular_POA class.
.. The RootPOA now has "RootPOA" as its adapter name, previously it had
an empty string. This is required by the CORBA specification, you can
overrule this by defining TAO_DEFAULT_ROOTPOA_NAME if you want to
reduce the "RootPOA" string to be shorter, e.g., "".
.. Explicit template instantiation support has been dropped from TAO. If
you need to use this please contact one of the companies listed at
for commercial support.
.. CORBALOC/CORBANAME patched a memory leak and fixed performance related
to the use of defaulted object keys.
.. Added support for Visual Age on AIX.
.. Made it possible to run most ORB core test with VxWorks in a cross
host scenario where one part of the test runs on the host and the
other part of the test runs on the VxWorks target.
.. The skeletons generated by the TAO_IDL compiler have been refactored
to significantly reduce the size of server applications. Please see
for metrics that illustrate the magnitude of the reduction.
.. New TypeCode implementation that reduces the size of TypeCodes in
memory at run-time.
Changes to CIAO
.. Split the previous NodeApplication interface into NodeApplication and
Container interfaces to allow multi-container NodeApplication support.
This is useful to provide an optimized CIAO container support for
.. Enhanced CIAO to handle dynamic updating of components at run-time.
Please see an example in $CIAO_ROOT/DAnCE/examples/Swapping. We're
also working on a paper that explains how this feature works, which
will be available soon.
.. The Config Handlers have been modified to use XML parsing code
generated by the XML Schema Compiler (XSC). Binary releases of XSC
can currently be found at (http://www.dre.vanderbilt.edu/~boris/xsc),
and a recent snapshot of the CVS repository can be found at
(http://www.dre.vanderbilt.edu/~wotte/xsc.tbz2). We plan to integrate
XSC into the CVS repo and release soon.
.. Supported initializing attribute values on Component through XML tags.
Please refer to the $CIAO_ROOT/DAnCE/examples/Hello for details,
particularly the Hello.cid descriptor file.
.. Supported parsing component instance names and using them to generate
unique component port references, so that multiple instances of the
same component can be deployed in a single container and the client
requests could be properly designated to the appropriate ports.
.. Enhance CIAO to support establishing connections between derived type
ports and base type ports. For example, application deployer could set
up event connections between base event sink port type and derived
event source port type.
.. Enhanced the existing set of DAnCE tools to support flattened
Deployment Plan based deployment, which reduces the time required for
deploying components by reducing XML parsing overhead. Please refer
an example in
$CIAO_ROOT/DAnCE/examples/BasicSP/flattened_deploymentplan.cdp to see
how the flattened deployment plan descriptor is used to deploy the
.. Develop regression/performance tests (similar to TAO
regression/performance tests) that will test/evaluate the performance
of various features of CIAO.
.. Added regression test script to the nightly build for DAnCE example,
which helps ensure DAnCE tools are ready to use out-of-the-box in
.. Improved documentation pages in various places.
.. Many bug fixes and improvements based on work with our sponsors.
.. LoadBalancing on Windows - the LoadManager is not using the correct
default reactor type on Windows. It tries to use the ACE_TP_Reactor,
which does not implement signal handling. It should use the
.. Notification Service - does not currently work on HPUX due to an issue
with starting the worker threads with priorities.
.. The Proactor tests fail on most non-Windows platforms. Rumor has it
that Redhat Enterprise 4 finally has a working implementation of
asynchronous I/O, so hopefully the Proactor tests will work better on
.. There's an ASSERT in TAO::PICurrent_Impl::get_slot() on Windows. We
plan to fix this soon.
.. With MinGW there is a linker error because of too many files in the
linker command for the TAO lib. We plan to fix this for soon.
.. The new recursive typecodes implementation has not been tested
extensively yet. If you run into problems please let us know.
Bugzilla Bug Fixes
285, 286, 451, 586, 845, 1089, 1369, 1390, 1467, 1496, 1525, 1542, 1592,
1637, 1693, 1795, 1889, 1917, 1951, 1961, 1986, 1988, 2038, 2039, 2044,
2050, 2053, 2055, 2057, 2058, 2073, 2074, 2076, 2078, 2080, 2084, 2091,
2092, 2094, 2095, 2096, 2097, 2099, 2102, 2104, 2113, 2116