[The following is on behalf of the PrismTech build-czars!]
We are pleased to announce a new beta of ACE-5.4.8, TAO-1.4.8, and
CIAO-0.4.8. We are currently working hard on the long-awaited x.5
release, which is slated to appear in early 2006. We therefore wanted
to get this new beta out to fix several important bugs reported by our
users, which we greatly appreciate as always. We've added a number of
sub-setting improvements that reduce the static/dynamic footprint of
ACE+TAO significantly (www.dre.vanderbilt.edu/Stats has all the
details). We've also finally added support for Real-time CCM to CIAO
This beta is contains the results of our major footprint reduction
effort that started in the summer of 2004. Between August 1st 2004
and October 14th 2005 the footprint reduction for the ORB_Init
application has been 20%. Dependent on the parts of TAO you use the
reduction can even be more. This reduction is inclusive all the
extensions that have been made to TAO the last year. Interested users
should check out
for more details. Note that the footprint has increased slightly
again due to emulated exceptions having been disabled in favour of
native C++ exceptions in all stats builds. We have deprecated support
for emulated exceptions since there are no sponsors for this
configuration. If you require emulated exceptions please contact one
of the companies listed in
for commercial support.
As usual the latest release is available at:
The doxygen documentation for the beta is also available.
We encourage you to download the new beta, use it with your
applications, and let us know if you encounter any problems. Please
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 success rates for the test results gathered from all our
daily builds is 97% for the ACE tests and 94% for the TAO tests.
for a summary of these tests. Our goal is to get these tests close to
100% for the x.5 release.
The following is a list of key changes since the last beta. Please
refer to the corresponding ChangeLog files for more details on the
problem and the nature of fixes applied.
Changes to ACE
.. Added support for an ACE "versioned" namespace. When enabled, ACE
library sources will be placed within a namespace of the user's
choice or a namespace of the form ACE_5_4_8 by default, where
"5_4_8" is the ACE major, minor and beta versions. The default may
be overridden by defining the ACE_VERSIONED_NAMESPACE_NAME
pre-processor symbol. Enable overall versioned namespace support by
adding "versioned_namespace=1" to your MPC default.features
file. This enables multiple versions of ACE to run in the same
.. Added an optimization to CDR stream to ignores alignment when
marshalling data. Use this new ACE_LACKS_CDR_ALIGNMENT compile-time
option only when the ACE_DISABLE_SWAP_ON_READ macro is enabled.
This new option requires ACE CDR engine to do both marshalling and
de-marshalling, and when this option is enabled the encoded streams
are no longer compliant with the CORBA CDR specification.
.. Improved IPv6 support.
.. Improved 64bit portability.
.. TTY_IO overhaul
- Improved documentation.
- It is now possible to request infinite timeout in portable manner.
This can be achieved by setting negative value to readtimeoutmsec.
- Various bugs fixed and portability issues resolved.
.. Subset ACE for TAO and TAO services, which greatly reduces the size of
.. Support for Intel C++ 9.0 on Windows and Linux.
.. Support for Microsoft Visual Studio 2005 (aka VC8) for Win32 as well
as the Windows CE platforms Pocket PC 2003 and Windows Mobile 5.
Solution/project files are generated with an appended "_vc8" for
Win32 and "_WinCE" for the CE platforms. See
ACE_wrappers/docs/CE-status.txt for more information.
.. Completed implementation of ACE_Dev_Poll_Reactor using the Linux epoll
facility; tested on Red Hat Enterprise Linux 4.
.. The in-memory size of an ACE_RB_Tree will be smaller due to rearranged
placement of pointers.
.. Developed Feature Oriented Customizer (FOCUS) tool to enable
specialization of middleware frameworks such as Reactor and Protocol
framework. FOCUS provides an XML based transformation engine, where
the transformations to specialize the components are captured in XML
file and a weaver specializes the code.
.. Added support for unrolling ACE_OS::memcpy() copy loop where
applicable to improve performance. Autoconf tests empirically
determine whether loop unrolling is at least 10% better than default
Changes to TAO
.. Added support for an TAO "versioned" namespace, which enables multiple
versions of TAO to run in the same process. When enabled, TAO
library sources will be placed within a namespace of the user's
choice or a namespace of the form TAO_1_4_8 by default, where
"1_4_8" is the TAO major, minor and beta versions. The default may
be overridden by defining the TAO_VERSIONED_NAMESPACE_NAME
pre-processor symbol. Enable overall versioned namespace support by
adding "versioned_namespace=1" to your MPC default.features file.
See the service configurator file in
orbsvcs/tests/Notify/XML_Persistence for an example.
.. Subset Anys and TypeCodes to a separate library. If you use
Any/TypeCode or one of the core TAO libs uses it you should link the
AnyTypeCode library with your application (POC is Johnny Willemsen
.. PICurrent is moved to the PI library, thereby helping reduce footprint
if PI is not used.
.. POACurrent has been moved back from PI_Server to PortableServer where
.. Added IPv6 support for IIOP.
.. When making AMI invocation and the send blocks we buffer the message
and send it out when the transport is available again, thereby
.. Support the latest AMI mapping, the old mapping will be kept working
until 1.5.1 has been released. If you need the old mapping add the
define TAO_HAS_DEPRECATED_EXCEPTION_HOLDER to your config.h file
before you build TAO and the TAO_IDL compiler.
.. Added CodecFactory::create_codec_with_codesets to create a codec with
a specific codeset. See OMG issue 6050 for the background.
.. PortableInterceptor::IORInterceptor has been split into IORInterceptor
and IORInterceptor_3_0. If you use IORInterceptors read the ChangeLog
for the details, you may need have to update your code!
.. Smart Proxy reference counting and lifecycle management Fixes: Fixed
the problem that the smart proxy's destruction process didn't function
correctly. Fixed Bug 2245. This also fixed the crash of
_non_existent() function call.
.. Added new IIOP & SSLIOP option 'reuse_addr' to unset socket level
option SO_REUSEADDR. On *some* platforms this has the side-effect of
disallowing two servers from listening on different interfaces of the
same port. This option *should NEVER be normally used* and when used
the user should be careful of any platform specific side-effects.
.. Merging of many Notification Service changes/fixes from OCITAO to the
DOC version. These generally addressed stability issues such as
memory leaks, thread leaks, etc.
.. Added support for the new Custom Servant Dispatching (CSD)
feature. The CSD feature provides user applications with the ability
to implement and "plug-in" custom strategies to handle the dispatching
of requests to servants. This new feature is not currently tested for
A concrete CSD Strategy implementation has also been added to serve
as a "reference implementation". This is being called the CSD
Thread Pool Strategy (TP_Strategy). The TP_Strategy provides a
means to decouple the threads (ORB threads) that receive requests
from the underlying transport from the thread that will ultimately
dispatch the request to the target servant object. The TP_Strategy
implements a "request queue" as the integral part of the mechanism
that allows an ORB thread to "hand-off" a request to one of the
TP_Strategy object's worker threads. The TP_Strategy reference
implementation is provided as an example of how concrete CSD
Strategy could be implemented.
Two approaches are supported for applying CSD strategy to an application.
1) Explicitly calling CSD interfaces.
Here is an example application code showing how a TP_Strategy object
can be created and applied to a POA:
PortableServer::POA_var poa = ...; // create the poa.
// Create a new TP_Strategy object and save it into a "smart pointer"
TAO::CSD::TP_Strategy_Handle csd_strategy= new TAO::CSD::TP_Strategy();
// Set the number of threads before calling apply_to()
// i.e. csd_strategy->set_num_threads(2);
// Set the servant serialization flag before calling apply_to().
// Tell the strategy to apply itself to the poa.
if (csd_strategy->apply_to(poa.in()) == false)
ACE_ERROR((LM_ERROR, "Failed to apply CSD strategy to the poa.\n"));
2) Service Configurator
The format of the CSD specific parameters for creating the TP_Strategy
service object is:
The last portion of the parameter is the servant serialization
flag. It's only needed when the servant serialization needs be
turned off, otherwise the servant serialization is always on. When
servant serialization is on (the default), the TP_Strategy will
serialize requests to any particular servant. Requests to
different servant objects can occur in parallel, but requests to
any particular servant will be dispatched serially (i.e., one at a
Here is an example of the svc.conf file.
dynamic TAO_CSD_TP_Strategy_Factory Service_Object *
The CSD feature is not currently tested for VxWorks.
Changes to TAO's IDL compiler
.. Added default include paths $TAO_ROOT, $TAO_ROOT/tao,
$TAO_ROOT/orbsvcs, and $CIAO_ROOT/ciao to IDL compiler execution,
eliminating the need to add them explicitly to the command line.
.. Added immediate exits to IDL compiler when some name clash errors are
encountered, avoiding a crash if parsing is continued. Closes Bugzilla
.. Fixed bug in IDL compiler when handling a native exception in an
operation declared in Messaging::ExceptionHolder.
.. Although not presently supported by CIAO, added error checking to the
IDL compiler's parsing of IDL home primary keys, which constrain the
basic valuetype syntax in several ways.
.. Many changes related to refactoring of Anys and Typecodes into a
separate library (POC is Johnny Willemsen <firstname.lastname@example.org>).
.. Changed generated signatures of some valuetype member accessor/mutator
pairs to be consistent with IN parameter semantics.
.. Changed the behaviour of the _default() method (generated for IDL
unions that have an explicit or implicit default case label) to
clean up memory used by the freed member, if necessary.
.. Fixed the order of generated base class stub constructor calls when
the IDL interface has both concrete and abstract parents.
.. Fixed a bug in the handling of forward declared interfaces that have
both concrete and abstract parents.
.. Fixed the command line parsing to preserve the literal quotes if they
are used in an include path that has a space. Closes Bugzilla #2219.
.. Added spec-required generation of member-initializing constructor for
valuetypes. See C++ mapping (03-06-03) section 1.17.2. Closes Bugzilla
.. When Any and TypeCode generation is suppressed when compiling IDL no
typecodes are generated anymore for user exceptions, they are not
needed for the operation of the ORB
Changes to CIAO & DAnCE
.. Added documentation on using Rational Purify with CIAO and DAnCE.
.. Added tests and documentation for the IDL3-to-IDL2 converter tool.
.. The deprecated RepositoryManager implementation, under
DAnCE/RepositoryManager, has been removed from this release. Please
use the Plan_Launcher and flattened deployment plans to deploy
- enhanced the implementation to use various optimization techniques
- added HTTP support
- added PackageConfiguration visitor to update the locations of the
implementation artefacts with relevant HTTP URLs
- refactored some of the code and added a number of helpers functions
.. The XSC based config handlers have been heavily optimized, resulting
in GREATLY reduced parsing overhead for large deployments.
.. The DAnCE toolchain now supports initializing attributes which have
enumerated types. Support for other complex types is planned for the
future. Please see examples/Hello/descriptors/
flattened_deploymentplan_without_ns.cdp for an example of how to
populate enumerated attributes.
.. Integrated Real-time QoS support to CIAO based on OMG's new Deployment
and Configuration (D&C) specification. Such effort allows
application developers to use real-time CORBA 1.0 features within
their CCM application through meta-programming (via XML metadata
through DAnCE toolchain). Particularly, we added support for
server-side RT policies, including extension for schema, container,
.. Added functionality in XML parsing code to resolve schema in
$CIAO_ROOT/docs/schema instead of the local directory only. All
DeploymentPlans should use Deployment.xsd instead of
Modified_Deployment.xsd, which has been removed.
.. The obsolete Packaging and Deployment (P&D) tools have been completely
removed from this release. DAnCE and the standard Deployment and
Configuration (D&C) tools are now the only supported method of
.. The CIAO directory structure has changed in support of the previous
item. The following important directory moves have been made:
* $CIAO_ROOT/DAnCE/ciao => $CIAO_ROOT/ciao
* $CIAO_ROOT/DAnCE/examples => $CIAO_ROOT/examples
* $CIAO_ROOT/DAnCE/Config_Handlers => $CIAO_ROOT/tools/Config_Handlers
* Various obsolete examples/tutorials/tests have been removed.
.. Error reporting during component deployment has been greatly improved.
While debugging using CIAO_DEBUG_LEVEL is still available, detailed
error messages are now generated and propagated to the Plan_Launcher
.. generate_component_mpc.pl has been updated to generate MPC files
useful by the modern CIAO infrastructure. This script now also
automatically generates export files.
.. DAnCE has been enhanced to support deploying multiple assemblies with
the same set of ExecutionManager and NodeMangers.
.. Integrated Real-time QoS support to into the new DAnCE-based runtime
and deployment tools based on OMG Deployment and Configuration (D&C)
specification. The old run-time and deployment tools based on
original Packaging and Deployment section of the CCM specification
have been completely removed. This work includes extensions to D&C
schema, schema parsers, and container and NodeApplication.
Changes to CIAO's CIDL Compiler
.. Added capability to pass a base class event consumer to a subscribe()
operation generated for a derived event type.
.. Added support for .cdl file extension, which was belatedly
standardized by the OMG.
.. Fixed bug in CIDL code generation for some types of component and
.. The CIDL compiler front-end now supports constants, const expressions,
bounded strings, bounded sequences, and arrays.
.. The CIDL compiler front-end now supports automatic indentation of
function arguments (both "new line" and "same line" styles are
.. Added backend CIDL compiler support for constants, arrays, bounded
strings, bounded sequences, and attribute exceptions, corresponding
to front-end support added by Boris Kolpackov <email@example.com>.
.. Updated documentation to include instructions for building
the CIDL compiler using MakeProjectCreator (MPC).
.. Fixed a bug in the CIDL compiler's determination if an IDL type is of
fixed or variable size type, when it is declared in the scope of an
interface, valuetype or home.
.. Changes to generated servant code to support component
.. 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
.. Support for Microsoft Visual Studio 2005 (aka VC8) for Win32 in TAO
is proving problematic. The pre-release beta compiler works better
than the final release candidate. We are investigating this issue.
.. Emulated C++ exceptions are not being maintained anymore. We are
keeping the macros in the TAO code until x.5.1 is out, if nobody
sponsors maintenance at that moment the macros will be removed from
TAO at that point. See also
.. TAO is not currently compatible with ACE_USES_WCHAR being set. This
will be addressed in the x.4.9 beta. If you'd like to beta-test this
for us before that beta comes out please let us know.
.. Support for using CIAO with VxWorks as target is not yet finished. It
should be completed before the x.5 release.
.. The autoconf build method has improved but some problems remain, so
such builds should be treated as experimental. If you want the easiest
route, use the traditional build method until ACE 5.5.
Bugzilla Bug Fixes
23 ACE bugs fixed:
1209, 1249, 1352, 1770, 1805, 1991, 2143, 2208, 2216, 2218, 2226, 2232,
2257, 2258, 2259, 2260, 2261, 2263, 2266, 2276, 2279, 2284, and 2290.
43 TAO bugs fixed:
786, 1271, 1812, 1813, 1896, 1917, 1957, 1997, 2043, 2074, 2090, 2175,
2201, 2209, 2210, 2211, 2219, 2221, 2222, 2225, 2227, 2233, 2234, 2235,
2244, 2245, 2247, 2248, 2262, 2264, 2267, 2269, 2270, 2271, 2281, 2285,
2287, 2294, 2304, 2311, 2316, 2318, and 2326.
1 CIAO Bug fixed:
2032. (many other CIAO bugs have been fixed - they just weren't in the