Release Notes for OCI's Distribution of TAO 1.6a
Copyright 2009 by Object Computing, Inc.

NOTE:   These release notes can be found in the distribution at ACE_wrappers/OCIReleaseNotes.html.

Table of Contents

  1. General Notes

  2. New Features Since TAO 1.5a

  3. Porting Applications from TAO 1.5a to TAO 1.6a

  4. Platforms that this release was tested on:

General Notes

  1. Heritage -- Relationship to DOC Releases

    TAO 1.6a derives from the DOC TAO 1.6.7 beta kit with bugfix-related patches selectively applied to enhance stability. A record of applied patches can be found in OCIChangeLog files installed with the distribution.

  2. Platforms

    As the initial release of this stable series, the platform set was limited to those described below. Support for additional platforms will be added in subsequent patch levels.

  3. Tests

    The great majority of ACE/TAO tests are passing on the current set of platforms. We will report more detailed test results for the individual platforms in subsequent patch releases.

  4. Make Project Creator

    All of ACE/TAO was built using MakeProjectCreator (MPC). This tool is included with this distribution and may be used for your own projects as well. MPC will generate GNU make files, Windows project files for VC++ 7.1/8/9, Borland make files, and others. It can be extended to other make systems as well. MPC documentation is available in the distribution at MPC/docs/README or online at

  5. GNU Make on Unix

    With the exception of Windows operating systems, ACE and TAO were built with GNU Make. While one can use other tools to build applications using ACE & TAO, using GNU Make permits the leveraging of the existing build system distributed with ACE & TAO. Use gmake version 3.80 (or better), as previous versions have caused build problems on Mac OS and AIX.

  6. Compiler restrictions

    Specific compilers that TAO supports are listed in the platform sections below. In general, TAO 1.6a requires C++ compilers that support namespaces, exceptions, and some basic capabilities of the standard library.


New Features

Many important new features and bug fixes have been introduced in TAO 1.6a. They are described briefly here. These and many other features of TAO 1.6a are detailed in OCI's TAO Developer's Guide, Version 1.6a, which will be available separately.

For a detailed description of the motivation for and implementation of a particular change, see the appropriate OCIChangeLog or ChangeLog file in the TAO 1.6a source code distribution, such as ACE_wrappers/OCIChangeLog, ACE_wrappers/TAO/OCIChangeLog, and ACE_wrappers/TAO/CIAO/OCIChangeLog. Some ChangeLog entries may include a "ticket" number (e.g., [RT 1234]), to help customers track specific changes they have sponsored.

  1. Features added and bugs/fixes in TAO 1.6a_p2

    • Various fixes to HP-UX platforms.
    • Various updates to MPC including enhanced gnuace support.
    • Updated support for the Sun Studio 12 Update 1 compiler.
    • Updates to the catior utility including new library support.
    • Allow assignment of an object reference _var to the corresponding _out type. This is allowed by the C++ mapping, but previously disallowed by TAO.
    • Corrected TAO_IDL wchar code generation behavior.
  2. Features added and bugs/fixes in TAO 1.6a_p1

    • Added a set of ORB initialization options that cause the ORB to do a single location forward after certain system exceptions. The new options are -ORBForwardOnceOnObjectNotExist, -ORBForwardOnceOnCommFailure, -ORBForwardOnceOnTransient, and -ORBForwardOnceOnInvObjref. Each takes a single value of 0/1. These options can be useful when using the Implementation Repository.
    • Fixed bug #3704 [RT 13148] which could cause a thread to loop with high CPU usage when the Blocking flusing strategy is used with a server-side ORB.
    • Added support for Windows Mobile 6 (WinCE) using the Standard SDK with vc8. This includes improved support for ACE_USES_WCHAR builds.
    • Fixed bug #3688 in the Notification Service, which caused user-defined constraint expressions to be ignored.
  3. Features added to TAO 1.6a since TAO 1.6.7

    • Added support for filter persistence to the Notification Service.
    • Added a client validation (and cleanup) feature to the Notification Service. A number of related options to control this feature were introduced.
    • Changed default linking behavior on Sun OS platforms to avoid setting an RPATH (distrib=1).
  4. Features added since TAO 1.5a as part of TAO 1.6.7

    • Removed exception specifications from many member functions.
    • New diffserv library to specify diffserv priorities independent of RTCORBA.
    • Added support for using AMI with DII and AMH with DSI.
    • Improved wide character compilation support.
    • Added support for IPv6 to RT Event Service federations
    • The TAO_IORManip library now has a filter that allows users to create new references by filtering profiles from multi-profile object refences.
    • Added support for IPv6 to MIOP and DIOP.
    • Added support for forward declared unions and structs to the Interface Repository Loader.
    • A new security option was added that allows mixed security levels in servers, where some objects grant unrestricted access and others require secure connections.
    • Added -Gos option to the IDL compiler to generate ostream operators for IDL declarations.
    • Various footprint improvements (mainly moving code to optional libraries).
    • Added the -RTORBDynamicThreadRunTime option to control the lifetime of dynamic RTCORBA threads.
    • TAO now conforms to the OMG's C++ Language Mapping V1.2. Among other changes, CORBA::LocalObject is now reference counted by default.
    • Added wildcard support for pools and lanes in the -ORBLaneListenEndpoints option.
    • TAO now supports ZIOP which compresses ORB messages.
    • Added the -m option to the Implementation Repository's Activator. This option allows the user to override the value for the number of environment variables passes to child processes. The current default is 512.
    • New ORB_init() options (see $TAO_ROOT/docs/Options.html)
      • -ORBAMICollocation: disables collocation for AMI calls.
      • -ORBAcceptErrorDelay: Controls the amount of time to wait before attempting to accept new connections when a possibly transient error occurs during accepting a new connection.
      • -ORBIPHopLimit: Controls the number of hops an IPv4/IPv6 packet can outlive.
      • -ORBIPMulticastLoop: MIOP-specific option that controls whether multicast packets are looped to the originating host.
    • Notification Service changes:
      • New monitoring capabilities were added.
      • The Monitor and Control interface can now be used to remove consumer and supplier proxies and admins.
      • Added a -Timeout option to specify a roundtrip timeout for client communication.
      • Add -DefaultConsumerAdminFilterOp and -DefaultSupplierAdminFilterOp to allow setting of the default filter operators.
  5. Important bug fixes since TAO 1.5a

    Many bugs have been fixed or work-arounds provided since TAO 1.5a. For more details, see the release announcements for the intervening DOC group beta kits (from 1.5.7 to 1.6.7), the ChangeLogs, and the DOC group Bugzilla bug database found at A summary and selection of the more important fixes are listed below.

    • Several problems with AMI support and collocated AMI support have been fixed.
    • Some problems with Location Forward were corrected.
    • Round trip timeouts are now honored consistently.
    • A number of IDL compiler defects have been fixed, many in areas related to valuetypes and typedefs.


Porting Applications from TAO 1.5a to TAO 1.6a


  • No major porting issues.


  • No major porting issues.


  • CORBA::LocalObject is now reference counted by default. This means your local interface implementations no longer need to inherit from TAO_Local_RefCounted_Object to get reference counting, but existing code should work. It is possible that some applications that don't now include reference counting and don't properly manage the reference counts of local objects may experience crashes.
  • The IDL compiler no longer generates throw specifications via the ACE_THROW_SPEC macro. If your servant code consistently uses the ACE_THROW_SPEC macros in member function declarations and definitions your code should compile without change. If your servants mix use of the throw keyword with the ACE_THROW_SPEC macro, your compiler may report errors during compilation.
  • TAO 1.6a supports the CORBA 3.0.3 AMI specification. The main change is that TAO no longer generates interface-specific Exception Holders, but uses a single Messaging::ExceptionHolder type. Existing AMI-based applications will need to convert to using this type to build with TAO 1.6a.
  • The TAO IDL compiler no longer generates the tie template classes by default. Applications that use the tie templates to implement their servants will need to use the -GT IDL compiler option to force their creation.


The AIX builds use the platform_macros.GNU and config.h files already set up for the AIX platform and compiler.

When using GNU Make that is part of AIX toolbox for Linux applications, it may be necessary to modify the file access permissions of the make executable to ensure the LIBPATH environment variable is propagated to make system properly. This can be done as follows:

chmod 755 /opt/freeware/bin/make

See this message for further information. Use version 3.80, or newer.

Files Used for AIX Builds
AIX 5.3 with VA C++ 8platform_aix_ibm.GNU with templates=manualconfig-aix-5.x.h



The HP-UX builds use the platform_macros.GNU and config.h files already set up for the HP-UX platform and compiler.

Files Used for HP-UX Builds

HP-UX 11.11 with aCC 3.70platform_hpux_aCC.GNUconfig-hpux-11.00.h
HP-UX 11.23 with aCC 3.80platform_hpux_aCC.GNUconfig-hpux-11.00.h
HP-UX 11.31 with aCC 6.20 for ia64 (itanium)platform_hpux_aCC.GNUconfig-hpux-11.00.h



The Linux builds use the platform_macros.GNU and config.h files already set up for the Linux platform and compiler.

Files Used for Linux Builds
Fedora Core 6 with g++ 4.1.1 (Red Hat 4.1.1-30)platform_linux.GNUconfig-linux.h
Red Hat Enterprise Server 5 with g++ 4.1.1 (Red Hat 4.1.1-52) for x86_64platform_linux.GNUconfig-linux.h


Mac OS X

The Mac OS X builds use the platform_macros.GNU and config.h files developed for the Mac OS X platform and compiler.

Files Used for Mac OS X Builds
OS X Leopard with g++ 4.0.1 (Apple Inc. build 5465)platform_macosx_leopard.GNUconfig-macosx-leopard.h

Real Time OS's

The Real Time OS builds use the platform_macros.GNU and config.h files developed for the specific platform and compiler.

Files Used for Real Time OS Builds
QNX 6.3.2 with g++ 3.3.5 (qnx-nto)platform_qnx_rtp_gcc.GNUconfig-qnx-rtp.h
LynxOS 5.0.0 with g++ 3.4.3platform_lynxos.GNUconfig-lynxos.h
VxWorks 6.5 with g++ 3.4.4platform_vxworks.GNUconfig-vxworks.h
VxWorks 6.6 with g++ 4.1.2platform_vxworks.GNUconfig-vxworks.h
VxWorks 6.7 with g++ 4.1.2platform_vxworks.GNUconfig-vxworks.h


The Solaris builds use the platform_macros.GNU and config.h files already set up for the SunOS platform and compiler.

Files Used for SunOS Builds
Solaris 9 with Sun C++ 5.9 Patch 124863-01 for sparcplatform_sunos5_sunc++.GNUconfig-sunos5.9.h
Solaris 10 with Sun C++ 5.8 Patch 121018-16 for x86platform_sunos5_sunc++.GNUconfig-sunos5.10.h

Sun C++ Notes

Due to the way that static construction works, it may be necessary to set the LD_BIND_NOW environment variable to a non-null value. If you are getting strange results during process startup, try setting this environment variable and running the process again.

Use the fast=1 instead of optimize=1 for optimizing with Sun compilers because it selects a combination of compilation options for optimum execution speed. Other optimization levels may reduce the footprint, but do not have a corresponding flag in ACE/TAO.

When using a Sun compiler greater than SunCC 5.5, that is, Sun Studio 9 or greater, on Sun OS 5.8, then certain OS patches are required. The patches and levels used at OCI are 109147-37 (-21 is probably adequate), 108434-18 and 108435-18 (earlier versions are not adequate).



The Windows builds use the config.h file as shown below.

Files Used for Windows Builds
Windows XP x64 with Visual C++ 2008 SP1 (VC9 from the Windows SDK v6.1)config-win32.h
Windows XP with Visual C++ 2008 SP1 (VC8) Express Editionconfig-win32.h
Windows XP with Visual C++ 2005 SP1 (VC8)config-win32.h
Windows Server 2003 with Visual C++ 2005 SP1 (VC8)config-win32.h
Windows Server 2003 with Visual C++ 2003 (VC7.1)config-win32.h

The following config.h file is used for all Windows nightly builds.

// contents of config.h
#include "config-win32.h"

The first line disables the popup of error windows when running the automated tests. It is not normally needed for ordinary user programs. It would only be used if an automated build was being done.

The platform_macros.GNU file is not used for Windows platforms.

Windows Compile Notes

  • There are some warnings when compiling using Visual Studio 2005 - 2008 (VC8 - VC9).

  • If using MPC to generate build files, then by default qos and ssl, and any projects that depend on these libraries will not be generated. To enable these features, simply create a text file called ACE_wrappers\bin\MakeProjectCreator\config\default.features with the following contents.

    ssl = 1
    qos = 1
  • (VC 7.1 / .NET 2003 only) When building static libraries you may have to build twice. The first time will compile the IDL, and compile everything that didn't rely on IDL-generated files that don't exist. The second time will finish building files now that the IDL-generated files exist.