PLANNED MAJOR CHANGES "SOMETIME IN THE FUTURE" (i.e., exact beta not known)
===========================================================================

. (JTC) provide example Telecom Log Service Persistance Strategies that
  use BerkeleyDB, ODBC, etc.  Refine Strategy interface as required.

. (JTC) autoconf support for tests and examples subdirectories.

. (Remedy) Add ZIOP support

PLANNED CHANGES FOR "TAO-1.5.7"
===============================

USER VISIBLE CHANGES BETWEEN TAO-1.5.6 and TAO-1.5.7
====================================================

. Removed ACE_THROW_RETURN.

. Fixed a memory crash problem when using ETCL IN operator with
  Notify Service filter.

. Remove exception specifications from ORB mediated operations (C++
  mapping requirement)

. New diffserv library to specify diffserv priorities
  independent of RTCORBA

. Addressed Coverity errors in core TAO libraries, TAO_IDL compiler,
  stubs and skeletons generated by TAO_IDL and the TAO Notification
  Service.

. Extended current DynamicInterface to allow DII+AMI+DSI+AMH.
  (Thanks to OMC <www.omesc.com> for the sponsorship.)

. Fixed bug in IDL compiler code generation for a comma-separated list of
  sequence typedefs.

. TAO no longer sets the unexpected exception handler.

USER VISIBLE CHANGES BETWEEN TAO-1.5.5 and TAO-1.5.6
====================================================

. Removed all exception environment macros except ACE_THROW_RETURN
  and ACE_THROW_SPEC

USER VISIBLE CHANGES BETWEEN TAO-1.5.4 and TAO-1.5.5
====================================================

. Added an IDL compiler option to generate an explicit instantiation
  and export of template base classes generated for IDL sequences,
  sometimes necessary as a workaround for a Visual Studio compiler bug
  (Bugzilla 2703).

. Beefed up error checking in the IDL compiler when processing
  #pragma version directives.

. Modified IDL compiler's handling of a syntax error to eliminate
  the chance of a crash (Bugzilla 2688).

. Fixed a bug in code generation for a valuetype when it inherits
  an anonymous sequence member from a valuetype in another IDL file.

. Extended tests in tests/IDL_Test to cover generated code for
  tie classes.

. Modified tao_idl to emit code to set the exception data in the
  Messaging::ExceptionHolder in the AMI _excep operation.  This has the
  effect of allowing user defined exceptions to be recognized when
  raising an exception without collocation.  This fixes Bug 2350.

. Added hooks to enable custom Object to IOR conversion or allowing local
  objects (such as Smart Proxies) to be converted to an IOR string.

. Removed warning issued when using corbaloc with a default object key.

. Added implementation of Dynamic Any methods insert_*_seq() and
  get_*_seq() (spec-defined for sequences of IDL basic types),
  as well as implementation of insert and get methods for abstract
  interfaces.

. Added support for CORBA/e compact

. Added support for CORBA/e micro

. Fixed issues relating to the CosTrading Server library.  The constraint
  language lexer now allow negative floating point values, 64-bit signed and
  unsigned integers (which can currently be represented as octal or decimal).
  Also, fixed a bug where negative integers were being stored and compared as
  unsigned integers which resulted in -3 > 0 evaluating to true.

. Added Compression module that delivers the infrastructure
  classes with which data can be compressed. This can be used
  by regular applications but then also by the ORB in the future.

. Removed support for -Ge 0 and -Ge 1 from the IDL compiler. In practice
  this means that the IDL compiler doesn't generate any environment macros
  anymore.

. Fixed a problem where TAO mistakenly considered ALL messages
  with zero-length payload to be errors and was thus not properly
  parsing and handling the GIOP CloseConnection message.  This is
  tested via Bug_2702_Regression.

. Added an optimization to servant activation to eliminate calls to
  check_bounds() on the object key sequence.  This has been observed
  to yield a 30% decrease in activation time for debug builds on VC71
  and linux gcc.

. Merged in changes from OCI's distribution which originate from
  OCI request tickets [RT 8449] and [RT 8881]. In their totality,
  these changes add a feature whereby the notification service
  implementation can utilize a separate ORB for dispatching events to
  consumers.

. Contributed the Transport::Current support - a TAO-specific
  feature providing IDL interfaces which enables users to obtain
  information about the Transports used to send or receive a
  message.  The basic intent is to provide (typically) a
  read-only interface to obtaining data like the number of bytes
  transferred or the number of messages sent and received.
  Since specific Transports may have very different
  characteristics, a simple generic implementation for
  Transport::Current is insufficient.  This implementation also
  provides support for specific Transport implementations. See
  the TC_IIOP implementation, which is an IIOP-specific
  Transport::Current. It extends the generic interface with
  operations providing information about IIOP endpoints, like
  host and port.  By default, TAO builds with support for this feature.
  Define "transport_current=0" in your default.features file to disable
  it. For more details of how the feature is intended
  to be used, see docs/transport_current/index.html

USER VISIBLE CHANGES BETWEEN TAO-1.5.3 and TAO-1.5.4
====================================================

. Added support for ACE_Dev_Poll_Reactor to Advanced_Resource_Factory.

. Improved tao_idl performance, particularly over networked
  filesystems.

. Added new option for the RTEC, -ECDispatchingThreadsFlags, that
  allows the user to pass in a list of thread creation flags and
  priority for dispatching threads.  These can be used for either the
  MT dispatching strategy or the TPC dispatching strategy.  See
  docs/ec_options.html for usage information.

  Also added -ECDebug option to enable debugging output from the RTEC.
  Only the option and variable was added, but no messages.  Therefore,
  at the moment, this does not generate much output.

. Resolved Bugzilla #2651 to eliminate incompatibility with the new
  mechanism, allowing per-ORB configurations.

. Fixed Bugzilla #2686, which involved correctly managing memory during
  exceptional situations.  Throwing an exception during the creation of the
  Root POA would cause a leak of a TAO_Adapter and POA manager related
  objects.

. Fixed Bugzilla #2699, by uninlining generated code for the
  TIE template classes. Inlining of virtual functions in this
  code was causing problems with RTTI on some compilers. As a side
  result, the idl compiler doesn't generate a S_T.inl file anymore.

. Fixed a bug where calling _set_policy_overrides() on a collocated servant
  would return an unusable object reference.

. Addressed a number of Coverity errors (CHECKED_RETURN, DEADCODE, LOCK,
  USE_AFTER_FREE, RESOURCE_LEAK, FORWARD_NULL).  In particular, missing
  return value checks and unreachable code in the ACE CDR stream
  implementation were addressed.  Memory and resource management in the ACE
  Configuration classes was corrected.  A potential deadlock upon error was
  fixed in ACE_OS::rw_unlock().  Missing return value checks were addressed
  in ACE_OS::open() on Windows and ACE_Thread_Manager::wait().  A potential
  dereference of a null pointer in ACE_OS::scandir_emulation() was
  corrected.  Lastly, the ACE_UUID::lock() accessor interface and
  implementation was cleaned up so that it would not return a lock whose
  memory had been freed.

USER VISIBLE CHANGES BETWEEN TAO-1.5.2 and TAO-1.5.3
====================================================

. Added new options, -CECConsumerOperationTimeout and
  -CECSupplierOperationTimeout, to the CosEvent service.  See Bugzilla #2594
  and $TAO_ROOT/docs/cec_options.html for details.  The purpose of these
  options is to use the relative round-trip timeout feature from the TAO
  Messaging library to detect clients that are "hung" in push() or pull()
  operations but would otherwise not be detetcted as "bad" by the
  -CECReactive*Control options (since they have a thread available in
  orb->run()).

. The Tk/Fl/Qt/Xt resource factories have been moved to subdirectories
  to make maintenance easier. If you are using these you have to update
  your include paths.

. Fixed a compatibility problem between TAO and ORBs using Valuetype ID
  indirection, such as JacORB. This problem was inadvertently introduced
  in 1.5.2.

. Oneway requests when using SYNC_NONE, SYNC_DELAYED_BUFFERING, or
  SYNC_EAGER_BUFFERING will be queued until the connection is completed.
  Connection completion occurs when one of the following occurs:
   a) A one-way request that does NOT use one of the sync-scopes mentioned
        above is sent via the same transport
   b) A two-way request is sent via the same transport
   c) orb->run() is called
  Applications that do not currently do one of the above will no longer
  establish a connection and therefore no data will be sent.

. Fixed a problem with location forward objects being raised by colocal
  ServerInterceptors. This problem did not occure interacting with remote
  servers.  Now the raised object-reference will take effect on the object
  reference being held by client.

. Fixed a problem with properly shutting down socket connections by
  explicitly calling release_os_resources from the destructor of protocol
  specific connection handlers. Maintainers of third-party (non-DOC)
  pluggable protocols must verify they are releasing any resources they
  acquired. The base Connection_Handler destructor can't do it for them.

. Added COIOP as pluggable protocol. This stands for Collocated Only IOP
  and it only allows collocated calls. Can be used for embedded systems that
  do use corba but don't make any remote calls.

. Notication service works with Microsoft Visual C++ 8.

. Fixed Bugzilla #2582, related to IDL compiler generation of arg traits
  template specialization for typedefs.

. Fixed Bugzilla #2583, a bug in the recursive check for local type
  containment that controls CDR operator generation in the IDL compiler.

. Addressed Bugzilla #2603, which called for a -oS option for the IDL
  compiler to set the output directory for skeleton files.

. Fixed Bugzilla #2634, which reported a bug in code generation for some
  escaped IDL identifiers.

. Eliminated the dependency of the TAO Interface Repository IDL3 test on
  CIAO libraries.

. Added output message to the IDL compiler, containing the name of the IDL
  file being processed.

. Fixed IDL compiler to recognize CORBA::AbstractBase as a pseudo object.

. Fixed a regression on Bugzilla #2074 caused by a reference
  counting problem on the Connection Handler.  This change
  affects all pluggable transport protocol implementations.
  Maintainers of third-party (non-DOC) pluggable protocols will
  need to make similar changes to their *_Connection_Handler
  implementations.

. Fixed parsing of explicitly wildcarded IIOP endpoints.
  These might be iiop://[::]:, iiop://[]: or iiop://0.0.0.0:
  The first two examples are useful only when IPv6 is supported.
  The last example forces only IPv4 endpoints even when IPv6 is
  supported. Use iiop://: to get both IPv4 and IPv6 endpoints.

. Fixed Bugzilla #2651 to properly handle order of destruction
  of Codeset Manager instances owned by the Default Resource
  Factory.  The ORB_Core is now responsible for managing the
  lifecycle of the Codeset Manager instance instead of the
  Resource Factory.  The Resource Factory now gives up ownership
  of the objects it creates.

. Fixed Bugzilla #2545 so collocated DII oneway requests do not
  crash in get_in_arg().

. Added a new "-b" option to the IDL compiler to control whether
  or not arguments on oneway invocations are "cloneable".  If the
  arguments are cloneable, and Custom Servant Dispatching (CSD)
  strategy is in use, the arguments for collocated oneways can be
  cloned during the copy of the TAO_Server_Request, which gives a
  performance improvement over the old method of copying the
  arguments using marshaling.

. Fixed Bugzilla #2604 so the Implementation Repository can
  properly keep track of servers it launched in PER_CLIENT
  activation mode.

. Fixed build warnings from some 64-bit compilers in code in which
  unsigned long and ACE_CDR::ULong were mixed.

. Added various performance enhancements.  Many thread mutex/integer
  reference counts were replaced with ACE_Atomic_Op<unsigned long>.  Some
  buffers are allocated on the stack instead of the heap where possible.

USER VISIBLE CHANGES BETWEEN TAO-1.5.1 and TAO-1.5.2
====================================================

. To be able to support CORBA/e the pidl files within the core libs are
  now compiled during the building of the core libs. This means that gperf
  and TAO_IDL must be build before you can build the core libs!

. Changed NT_Naming_Service project to require new MPC feature variable
  "winnt".  Avoids building and installing this on non-Windows systems.
  Fixes bugzilla bug #2412.

. Changed NT_Notify_Service project to require new MPC feature variable
  "winnt".  Avoids building and installing this on non-Windows systems.
  Fixes bugzilla bug #2411.

. Changed Telecom Log Service plug-in Strategy Interface.

  Added get_record_attribute(), set_record_attribute(), and
  set_records_attribute(); removed remove(), retrieve(), and update().
  This will allow plug-in Strategies to handle these high-level
  operations more efficiently.

  Added get_gauge() and reset_gauge(), to maintain "gauge" used for
  capacity threshold alarms when log channel's LogFullActionType is
  DsLogAdmin::wrap.  This resolves bugzilla 2420.

. Allow different ORB instances to use a different sets of Service
  Objects in their own Service Repository instances. This resolves
  bugzilla #2486.

. Integrate new sequence implementation made by Carlos O'Ryan. This
  also includes a rework of the TAO_String_Managers and CORBA::(W)String
  implementations.

. Store Value Factories per orb instead of per process and made the
  storage thread safe.

. Add on demand write functionality that writes out GIOP fragments to
  reduce the memory usage

. The TIE files (_S.*) are not generated by default anymore by the
  IDL compiler. If you need these for your project, add -GT to the
  idl compiler flags.

. Added optional support for implicitly typed values. When the Valuetype
  library is compiled with TAO_HAS_OPTIMIZED_VALUETYPE_MARSHALING defined
  TAO will skip the marshaling of the value's type when it is allowed to
  do so. It is allowed by the spec to do so when the value's actual type
  matches the formal type for the parameter through which the value is
  passed. As older versions of TAO did not correctly unmarshal implicitly
  typed values, the default behavior is for TAO to always marshal the
  type id for values.

. Added support for CORBA specified truncatable valuetypes.

. Added support for CORBA specified POAManagerFactory.

. Added TAO-proprietary EndpointPolicy. This is used as a filter to limit
  which of an ORBs endpoints are inserted into an object reference. The
  endpoint policy is applied to POAManagers created via the POAManagerFactory
  and affect all POAs associated with that POAManager.

. Added a client-side connection optimization, the Parallel Connect Strategy
  This strategy makes the client evaluate all endpoints in profile at the same
  time when trying to connect to the server. For this to work the server must
  be run with -ORBUseSharedProfile 1 and the client must be run with
  -ORBUseParallelConnect 1.

. Fixed several bugs related to asynchronous connection establishment. These
  are represented by the AMI_Buffering tests and bug 2417's regression test.

. Refactored PICurrent, removing PICurrent_Copy_Callback classes, subsuming
  this functionality inside PICurrent_Impl where it can be controlled
  correctly. The copying of PICurrent objects still performs lazy/deferred
  copying where possible, only taking a real physical copy when modifications
  are attempted. Interest in PICurrent objects where lazy copies have been
  taken can now be correctly reversed when the lazy copy is destroyed fixing
  a range of call-back bugs that were performed on already destroyed objects.
  (For detail see bugzilla 2552.)

. Updated/Enhanced TAO/utils/nslist utilities nslist,nsadd and nsdel.
  These tools now allow for full ID.Kind processing (the separating character
  is user controlled, defaulting to .) and sub-context path processing (the
  separating character is also user controlled, defaulting to /).
  nsadd allows for (re)binding naming contexts in addition to final objects
  nsdel allows for destroying naming contexts when unbinding.
  nslist output has been prittyfide with user controlled character drawing
  of the naming context tree or sub-tree of full or limited depth.
  For full usage details execute these utilities with a ? parameter.

. Add the ability to use the sendfile API to send out data
  on the transport


USER VISIBLE CHANGES BETWEEN TAO-1.5 and TAO-1.5.1
====================================================

. Fixed LOCATION_FORWARD_PERM handling. See bugzilla #1777 for full details.

. Fixed bug in detecting name clashes between existing identifiers and
  extra code generated for AMI and AMH.

. Fixed bug in connection closure. See bugzilla # 2391

. Added support for the --enable-fl-reactor configure option to the
  autoconf build infrastructure to build the TAO_FlResource library.

. Added support for the --enable-qt-reactor configure option to the
  autoconf build infrastructure to build the TAO_QtResource library.

. Added support for the --enable-xt-reactor configure option to the
  autoconf build infrastructure to build the TAO_XtResource library.

. Fixed a race condition involving two threads active in the same
  connection handler at the same time. See bug# 1647 for details.

. Changed #include "..." preprocessor directives to use fully
  qualified (from $(ACE_ROOT), $(TAO_ROOT), or $(TAO_ROOT)/orbsvcs)
  paths.  We had been depending on non-standard behavior where files
  #included with "..." are first looked for in the current directory
  and then in the same directories used by #include <...>.  See bug
  #2448 for details.

USER VISIBLE CHANGES BETWEEN TAO-1.4.10 and TAO-1.5.0
====================================================

. Fixed Transport to handle incoming fragmented messages propperly, abstract
  interfaces TAO_Pluggable_Messaging and TAO_Transport have been
  modified. Custom transport/messaging implementations require
  interface modification.

. Fix collocation optimisation when a location forward is received directing a
  client to a collocated object.

. Prevent an OBJ_ADAPTER exception when using an object reference containing
  an ObjectID that corresponds to a collocated IORTable entry.

. Reverted solution that allowed POA-level control over access to
  security-enabled objects due to conflicts with the specification,
  i.e. the  Security::SecQoP* are not server-side policies.

. When suppressing any and typecodes during IDL compilation this will not
  trigger compile errors due to missing any insert operations

. Bug fix in IFR when creating typecodes for nested structs and unions.

. Added support for the --enable-tk-reactor configure option to the
  autoconf build infrastructure to build the TAO_TkResource library.

IDL COMPILER
------------

. Fix problem with missing includes in the skeleton files for imported arg
  trait declarations.

USER VISIBLE CHANGES BETWEEN TAO-1.4.9 and TAO-1.4.10
====================================================

. Fixed a bug, which allowed security unaware clients to make
  invocations on secure objects, when the ORB was configured with
  support for Security::SecQoPNoProtection.

. Fixed Bugzilla #2145, which was preventing the building of
  the IDL compiler on HPUX.

. Added boxed valuetype support to the Interface Repository
  loader.

. Fixed several bugs in the PICurrent implementation

. Fixed GOA factory name

. Fixed -ORBConnectionHandlerCleanup arguments to accept 0 and 1.

. Improved Portable Interceptor implementation.

. Autoconfig improvements.

. Improved Real-time CORBA support for dynamic threads.

IDL COMPILER:
-------------

. Some bug fixes. See bug #2375 and #2390.

USER VISIBLE CHANGES BETWEEN TAO-1.4.8 and TAO-1.4.9
====================================================

. Added new endpoint selector implementation - Optimized
  Connection Endpoint Selector. A member of the tao/Strategies library,
  use svc.conf file to load the OC_Endpoint_Factory object. See
  tests/AlternateIIOP/svc.conf for an example.

. Continued splitting ORB Services into stub, skeleton, and
  implementation libraries.  Changes to the Concurrency Service,
  Property Service, and RTEventLog Admin Service (TAO's RTEvent
  varient of the OMG Telecom Log Service) have been committed.

. Added a new ORB run-time option "-ORBUseLocalMemoryPool [0|1]" which
  controls an individual application's use of TAO's Local Memory Pool.
  TAO can use a local memory pool to satisfy some of its needs for
  heap storage, as it is often more efficient than using the
  platform's default memory allocator. The pool will always grow as
  large as necessary to satisfy memory allocations, but it will never
  shrink. This means that sometimes a process can retain memory that
  it no longer needs. If the default allocator is used then TAO gives
  memory back as soon as it is not needed.
  The UseLocalMemoryPool option selects between using the local memory
  pool or using the default allocator, where 0 means don't use the pool,
  1 means use the pool. The default is still controlled by the original
  compile-time option controlled by the #define TAO_USE_LOCAL_MEMORY_POOL
  which defaults to 1 if not specified.

. Add a property -ORBKeepalive to allow a user to specify that
  SO_KEEPALIVE is set on IIOP connections. See docs/Options.html
  and Bugzilla #2374.

. Add support for RTCORBA::TCPPrototocolProperties::keep_alive, when
  RTCORBA is used, and the application is using a Server or Client
  ProtocolPolicy.

. Refined the Telecom Log Service Strategy Interface.  Added methods
  to fetch/store capacity alarm thresholds, log QoS, and "week mask".
  Rework locking to avoid race conditions and to improve performance.

IDL COMPILER:
-------------

. Fixed bug in computation of repository ids for predefined types.

. Fixed bug in the handling of TAO_IDL_INCLUDE_DIR.

Interface Repository:
---------------------

. Fixed bug in the lookup of a valuetype member's type using its
  repository id.

. Fixed bug in IFR loader in checking for pre-existence before
  creating an entry corresponding to an IDL typedef.

. Fixed bug in lookup when checking for a local name clash.

. Fixed bug in the describe_interface() operation when the IDL
  interface being described has multiple parents.

USER VISIBLE CHANGES BETWEEN TAO-1.4.7 and TAO-1.4.8
====================================================

. Fixed bugs in code generation for interfaces that inherit from both
  concrete and abstract interfaces.

. 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

. PICurrent is moved to the PI library

. POACurrent has been moved back from PI_Server to PortableServer

. Added IPv6 support for IIOP

. 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

. When making AMI invocation and the send blocks we buffer the message
  and send it out when the transport is available again

. Emulated C++ exceptions are not 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.
  See also http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=2256

. 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 splitted in IORInterceptor
  and IORInterceptor_3_0. If you use IORInterceptors read the ChangeLog for
  the details, maybe you have to update your code!

. Added the new Custom Servant Dispatching (CSD) feature to provide 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 VxWorks. See TAO release notes for more information.

. Added support for an TAO "versioned" namespace.  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_7 by default, where
  "1_4_7" is the TAO major, minor and beta versions.  The default may
  be overridden by defining the TAO_VERSIONED_NAMESPACE_NAME
  preprocessor symbol.  Enable overall versioned namespace support by
  adding "versioned_namespace=1" to your MPC default.features file.

. Changed generated signatures of some valuetype member
  accessor/mutator pairs to be consistent with IN
  parameter semantics.

. Added spec-required generation of member-initializing
  constructor for valuetypes. See C++ mapping (03-06-03)
  section 1.17.2. Closes Bugzilla #2270.

. 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 #2281.

. Changed the behavior 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 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.

. Fixed 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.

. Many changes related to refactoring of Anys and Typecodes
  into a separate library (POC is Johnny Willemsen
  <jwillemsen@remedy.nl>).

. 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.

. Introduction of the versioned namespaces changed the name of the
  factory function used for dynamically loading the Notification
  Service persistence mechanisms.  See the service configurator file
  in orbsvcs/tests/Notify/XML_Persistence for an example.

USER VISIBLE CHANGES BETWEEN TAO-1.4.6 and TAO-1.4.7
====================================================

. The Telecom Logging Service now supports dynamically loaded Strategies
  which can be used to implement a persistent log record store.  If none
  are specified, a default in-memory hash table implementation is used.

. The CodecFactory is moved to its own library. If you use this in your
  application include tao/CodecFactory/CodecFactory.h and link the
  TAO_CodecFactory with your app

. The ORBInitializer registry, PolicyFactory registry and ORBInitInfo
  are moved to the new PI library. If you use these clases include
  tao/PI/PI.h in your application code and link the new TAO_PI
  library with your application.

. All server side PortableInterceptor support is moved to the new
  TAO_PI_Server library. If you use this, include tao/PI_Server/PI_Server.h
  in your application code and link the new TAO_PI_Server lib

. A new set of examples and support code that show how to set up a
  multicast-based federation of  Notification Services is now available
  in $TAO_ROOT/orbsvcs/examples/Notify/Federation.

. Hard coded loading of services with Service Configurator now uses the
  ACE_DYNAMIC_SERVICE_DIRECTIVE macro which also works when the xml
  version of service config is enabled.

. The Codeset negotiation support is in its own library. The hooks are
  still present in the ORB Core to dynamically load the codeset support
  if needed. This behavior is overridden by the new ORB_init option
  -ORBNegotiateCodesets 0.

. The Boxed Value Type as specified by the OMG is now accepted by the
  TAO_IDL compiler.

. TAO clients now parse the OMG specified TAG_ALTERNATE_IIOP_ADDRESS
  profile component. To generate IORs using that component, add the
  new ORB_init option, -ORBUseSharedProfiles 1.

. Refactored TAO's codeset negotiation feature to be optionally loadable.
  The implementation is now in a separate library, TAO_Codeset. Applications
  not wishing to use codeset support may pass -ORBNegotiateCodesets 0 to
  ORB_init() to avoid loading the library. When building dynamic applications
  codeset negotiation is available by default. For static applications, the
  default is to *not* include codeset negotiation. Staticly linked apps
  needing codeset negotiation support must do two things:
  - Define the new MPC feature "negotiate_codesets=1" in default.features
    and regenerate makefiles
  - Add "#include <tao/Codeset/Codeset.h>" somewhere in their application
    source. Placing this in the source file that includes calling ORB_init()
    is probably the best place.

. Added CORBA::Object::_repository_id() and CORBA::Object::_get_orb()
  as described by the spec.

USER VISIBLE CHANGES BETWEEN TAO-1.4.5 and TAO-1.4.6
====================================================

. The RTOldEvent library has been removed. The RTEvent library has been
  split in a stub/skel and serv library.

. Support for bi-directional communication over SSLIOP.

. Servants are now always reference counted, in accordance with changes
  to the CORBA specification.

. Added a -x option to catior that works like -f except that it reads
  the IOR from standard input rather than from a file. This makes catior
  much more like the unix "cat" command, and enables it to be used in a
  pipeline.

. Changed the precedence rules for the -ORBListenEndpoints (aka
  -ORBEndpoint) so that the host identifier (either hostname or IP
  address) that appears in IIOP profiles is determined thus:

    1. value from hostname_in_ior (if specified);
    2. setting of -ORBDottedDecimalAddresses option;
    3. value for hostname in -ORBListenEndpoints specification;
    4. whatever TAO magically comes up with based on system
       configuration

  A new test (TAO/tests/IOR_Endpoint_Hostnames) verifies the
  operation of this feature.

. Changed the way that Bidirectional endpoint processing happens when
  -ORBDottedDecimalAddresses 1 is in effect. The previous behavior
  always used the setting of the receiver, but that caused problems when
  the sender and receiver were not using the same dotted decimal
  addresses setting.  Bidirectional endpoint processing now uses
  whatever the sender provides as the hostname since that's also what
  will be in that sender's IORs.

. Added a configuration property -ORBIMREndpointsInIOR [0|1] that
  controls whether ImR endpoints are written into persistent IORs. See
  $(TAO_ROOT)/docs/Options.html and bugzilla #2123 for usage.

. Increment the refcount on the servant in the id_to_servant and
  reference_to_servant methods of the POA.

. Improved g++ 4.0 support.  A number of RTTI related problems have been
  fixed, in addition to removal of duplicate internal ORB related
  singleton instances.

. Fixed assertion that occured in some thru-POA collocated calls.

. Fixed CORBA::UnknownUserException Any insertion problem.

. Fixed TypeCode equivalence failure when comparing aliased and
  unaliased TypeCodes of the same type.

USER VISIBLE CHANGES BETWEEN TAO-1.4.4 and TAO-1.4.5
====================================================

. The POA is rewritten so that it uses strategies for its implementation.

. 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 ImR_Client
  library

. The MIOP part of the POA is moved to the 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 RootPOA.

. Implemented several missing parts of POA functionality as described
  by the latest corba specification. Missing functionality, incorrect
  exceptions, incorrect minor codes and much more.

. Splitted 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.

. The POA has been split in Root_POA and Regular_POA, on this we will more
  in the future so that the Root_POA just pulls in the minimal set of things
  needed.

. 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., "".

. Added support for GNU G++ 4.0.  Additional details in ACE `NEWS' file.

. Explicit template support has been dropped for TAO and it is not possible
  to use it anymore.

. 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

  http://www.dre.vanderbilt.edu/Stats/

  for metrics that illustrate the magnitude of the reduction.

. New TypeCode implementation that reduces the size of TypeCodes in
  memory at run-time.

USER VISIBLE CHANGES BETWEEN TAO-1.4.3 and TAO-1.4.4
====================================================

. Reimplemented the way that TAO_Transport deals with GIOP headers.  In
  some cases partial GIOP message headers were read and used as if a full
  GIOP header were received. [Bug 1681]

. GIOP fragment handling has changed where a single large allocation and
  copy occurs at the end of a fragment chain instead of an allocation and
  copy for every fragment received.

. The tao-config script has been replaced by pkg-config metadata files
  which are installed in ${prefix}/lib/pkgconfig by the automake build.

. SHMIOP respects now the dotted decimal addresses setting. When this is
  set it uses ip addresses instead of hostnames.

. Removed the usage of the ACE_x_cast macros, we are using the C++ casts
  from now on.  The TAO core libraries will be updated before the x.4.5
  release.

. Removed MPC code that creates unused and unnecessary subfolders in
  Visual Studio projects and makefiles.

. Fixed unclosed temporary file created by the IDL compiler on platforms that
  lack mkstemp. [BUGID:2026]

. Fixed IDL compiler bug related to handling null object references in a
  sequence. [BUGID:2027]

. Made behavior when marshaling null value of an abstract interface similar
  to the behavior of CORBA::Object.

. Made use of 'true' and 'false' with CORBA::Boolean more consistent in TAO
  source code and generated code.

. Fixed bug in code generation for typedefs of IDL arrays that are not declared
  at global scope or in a module (i.e., in an interface, valuetype, eventtype
  or home).

. Fixed bug in code generation of parent operations in AMI ReplyHandler
  interfaces.

. Changed remaining instances of C-style casts in generated code to the
  appropriate C++-style cast.

. Fixed typo in code generation of bounded sequences of CORBA::Object.

. Fixed bug in code generation for attributes which are unaliased bounded
  (w)strings.

. Changed implementation of TAO::Unknown_IDL_Type (a subclass of TAO::Any_Impl
  used when an Any is first decoded from the wire or created from a Dynamic
  Any) to contain its value in a TAO_InputCDR stream rather than an
  ACE_Message_Block*, thus cleaning up alignment and memory management code
  related to this type.

USER VISIBLE CHANGES BETWEEN TAO-1.4.2 and TAO-1.4.3
====================================================

. New pluggable protocol for GIOP over HTBP, known as HTIOP.  Source in
  orbsvcs/orbsvcs/HTIOP.

. All TAO-specific vendor IDs are now found in the "TAO" namespace.
  Documentation for these constants has also been improved in a number
  of cases.

. Further reduced inter-header dependencies, which should improve
  compilation times for TAO and TAO applications.

. Fixed memory leak in CDR encapsulation Codec's encode_value() method.

. Modified PerlACE scripts for Tests/test environment to allow
  per-platform customization of process startup delay.  Used the changes
  in various run_test scripts.

. SyncScope::NONE blocks during connects [Bug 1476].

. Improved compatibility with JDK orb.

. Added Wait on LF No Upcalls (MT_NOUPCALLS) wait strategy.  However,
  recent experiences with it indicate there may be problems in scenarios
  other than its original motivating case (see ChangeLog).  This feature
  should be considered EXPERIMENTAL, and use it at your own risk.

. New CORBALOC parsing is available. This feature allows TAO clients to
  use any third-party pluggable protocol in corbaloc strings.

. Fixed bug that caused memory fault when incoming object reference
  contains an unknown profile.

. Fixed problem in some modules when platform lacks unsigned long long
  support.

. Modified catior to allow decoding of additional protocols.

. The PortableServer library isn't depended anymore on the
  ObjRefTemplate and IORInterceptor libraries.  ObjRefTemplate and
  IORInterceptor are loaded on demand and depend on PortableServer.

. IDL compiler can be built for environments that lack unsigned long
  long.

. Reduced the amount of code generated by the TAO_IDL compiler when
  using forward declarations.

. Naming Service implementation memory leak fixes.

. Split ORB Services into stub, skeleton, and implementation libraries.
  Changes to the Naming, Trading, Event, Notification, and Logging
  Services have been committed.

. Common utilities (tao_imr, tao_ifr, nslist, nsadd, nsdel,
  NamingViewer) now installed in $ACE_ROOT/bin.

. Changed #includes of orbsvcs header files to be consistent.  The
  pathname now always contains a "orbsvcs/" prefix.

. Notification Service EventReliability and ConnectionReliability QoS
  have been added to bring the DOC version of Notification Service
  into feature parity (in this area) with OCITAO's 1.3a version of the
  Notification Service.  Note that due to changes between 1.3a's
  source base and DOC's 1.4.3 source base, this is a re-implementation
  of the changes and not a simple port.

  In addition to the changes made directly to the Notification Service
  a number of test and example programs have been created for the
  reliable notification service. These programs may be found in
  subdirectories of $TAO_ROOT/orbsvcs/tests/Notify. A README file
  in each directory provides more detailed information, and a run_test.pl
  script is included to run the example or test.

. A change has been made to the Notification Service IDL to improve build
  times and reduce the Notification Service footprint. The change suppresses
  the generation proxy and stub code for the many interfaces that are
  specified by the OMG, but are not implemented in TAO.

. Implementation Repository refactored to allow the locator and
  activator to be used as services in the ACE Service Configurator
  framework.  The locator and activator services have been split into
  separate libraries and executables.  There have also been
  miscellaneous bugs fixed and performance enhancements made.

. Fixed Load Balancer binary generation problem.  Libraries were being
  created rather than executables.

. Work around MSVC++ 6 namespace brain damage in new Security/SSLIOP
  code.

. Fixed memory management problem in SecurityLevel3 code.


USER VISIBLE CHANGES BETWEEN TAO-1.4.1 and TAO-1.4.2
====================================================

. Overall
  - Support for g++ 3.4.1.
  - Support added for latest HP aCC compiler.
  - Improved Doxygen documentation.
  - Reduced header file dependencies, which should speedup compilation
    and help minimize static footprint.

. ORB
  - Fixed memory leak in DII exception handling.
  - Fixed insertion of label values when creating a union type code
    with create_union_tc().
  - Support for retrieving AMI and AMH reply handlers from a local
    memory pool.
  - Fixed location forwarding to collocated objects.

. POA
   It is now possible to pass user-defined policies unknown to the
    POA with corresponding registered policy factories to the
    POA::create_POA() method via its policy list parameter, as
    required by the CORBA specification.

. TAO_IDL
  - Closed security hole on platforms that support mkstemp() function.
  - Fixed potential buffer overrun problem.
  - A number of scoped name bugs have been fixed, including some
    workarounds for MSVC++ 6 scope resolution problems.
  - Fixed mixing of *Implicit and *Explicit inheritance lines when the
    there is a chain of inheritance in component homes.
  - Improved error checking of component and home declarations.
  - Code generation for valuetypes that support one or more abstract
    interfaces.
  - Added new "-GA" option that causes CORBA::Any operators and
    TypeCode bodies to be generated in a separate "fooA.cpp" file.
    Helps reduce footprint for applications that do not use Anys or
    TypeCodes.
  - Added required _downcast() method to generated value factories.
  - Disabled generation of implementation class for abstract
    interfaces.
  - Removed support for reading an IDL file from stdin.  This feature
    is legacy code used for debugging the IDL compiler in the early
    days of its implementation, and is not useful in application
    situations.
  - Generated stub/skeleton inline files now end in ".inl" instead of
    ".i".  The latter is generally used as the extension for
    pre-processed C sources.
  - Process multiple IDL files in a single execution by iteration
    in a single process, rather than spawning a process for each
    file as before.
  - Added the remaining spec-defined sequences of predefined types
    to the CORBA namespace in TAO.

. Added CPU utilization load monitor to TAO's Cygnus load balancer.

. Added basic CSIv2 support, which is the latest CORBA Security
  architecture specification.

USER VISIBLE CHANGES BETWEEN TAO-1.4 and TAO-1.4.1
==================================================

ORB
---
.  Changed the name of a parameter to the TAO type code
   internal method to avoid a name clash with STL.

. Added the spec-required ostream insertion operator for
  CORBA::Exception* to go with the existing ostream
  insertion operator for CORBA::Exception&.

. Moved the above ostream insertion operators into the
  CORBA namespace, so they cannot be accidentally hidden by an
  application.

. Moved the declaration of Any operators for some ORB
  types so that the corresponding definitions may
  remain unlinked if the Any operators are not used in
  an application.

. Fixed typo in type code factory code that is compiled
  only when ACE_SWAP_ON_WRITE is defined.

. Several fixes to MakeProjectCreator (MPC) files, which
  generate GNU makefiles, Borland makefiles, and Microsoft
  Visual Studio project files.

. Fixed Any insertion and extraction operators for bounded
  strings and wstrings to prevent an error if they are
  inserted as bounded with bound 0 and extracted as
  unbounded, or vice versa.

. Deprecated the TAO-specific _type() method for exceptions.
  which is no longer used anywhere in TAO, and is retained
  solely for backward compatibility.

. Fixed bug in TAO_SSLIOP pluggable protocol that prevented large
  requests from being sent.  [Bug 1429]

. Cleaned up interceptor memory leaks that occurred when
  CORBA::ORB::destroy() was called.

. Fixed problem where a ServerRequestInterceptor could be called after
  the ORB was shutdown.  [Bug 1642]

. Overhauled PICurrent support to fix several problems. [Bug 1215, 1738]

. SSLIOP documentation is now available.

. Fixed memory leaks in servers when the ORB is operating in a
  thread-per-connection  mode. This problem showed up when clients
  keep connecting and disconnecting from the servers.

. Fixed memory leaks in AMI clients that connect to a servers over
  unreliable connections that keeps getting dropped.

. Fixed a race connection in Any_Impl implementation.

. Fixed a byte order problem with DSI gateways

. Added support for OVATION to work with this BFO of TAO.

IDL COMPILER
-------------

. Changed the names of some local variables in generated
  operation code, to reduce that chance of a name clash.

. Fixed bug where a #pragma version directive is sometimes
  not reflected in the generated repository id.

. Disambiguated generated template instantiations for array
  _var, _out and _forany classes, when two or more arrays
  have the same element type and bound.

. Added check for a name clash between a valuetype member
  and the first segment of a scoped name referenced in
  the valuetype.

. Fixed incorrect code generation for the CDR operator of a
  struct/union/exception with an undefined forward declared
  interface member.

. Fixed incorrect code generation for operation arguments
  that are typedefs of char, octet and boolean.

. Fixed bug in handling complex recursive types.

. Added -GId command line option to generate line and
  file debug info in *I.* files, similar to what is
  already generated in *C.* and *S.* files. This debug
  info generation is now off by default in *I.* files.

. Fixed the handling of included orb.idl file to generate
  corresponding C++ includes for the files orb.idl
  itself includes, which contain spec-required declarations
  of sequences of basic CORBA types.

. Fixed generation of ORB file includes triggered by the
  presence of one or more abstract interfaces in an IDL file.

. Added check to the generation of _setup_collocation()
  method for abstract interfaces, to make it more robust.

. Added a version of the realpath() system function that
  can be used with LynxOS, which does not have a native
  version.

. Fixed code generation for bounded strings and wstrings
  when they appear anonymously (without a typedef) as operation
  parameters.

. Fixed code generation of flat names for AMI-related types.

. Fixed errors in code generation of sequences of components
  and eventtypes.

. Fixed code generation of CDR operators for aggregate types
  that contain one or more abstract interfaces.

. Fixed bogus errors produced when there are repeated forward
  declarations of an interface.

. Fixed errors in some use cases of the propagation of a #pragma
  prefix directive to nested scopes in generated repository ids.

. Fixed errors in code generation for attributes in Asynchronous
  Method Handler (AMH) classes.

. Fixed a bug that caused the IDL compiler to crash when it sees
  certain kinds of illegal IDL.

. Fixed problems in the interaction of checks for local interface
  and for null object reference when marshaling an interface
  member of an aggregate type.

. Fixed generation of operations inherited by a local interface
  from a non-local one - these operations must be regenerated
  as pure virtual.

. Added a space between some generated template parameter
  opening brackets and a leading double colon of a fully
  scoped name, since some compilers would read "<:" as
  the digraph character for ']'.

. Fixed bug in code generation for an array of typedef of
  string and wstring.

. Fixed a bug in the generation of repository ids for
  explicit, implicit and equivalent interfaces for component
  homes.

. Fixed bugs in the generation of marshaling and demarshaling
  code for aggregate types with component or eventtype members.

ORB SERVICES:
-------------

IFR:
---

. Fixed bug in creating entries for attributes, which in CORBA 3.x may
  have separate get- and set- exceptions lists.

. Added some method overrides to disambiguate multiple inheritance
  problems some compilers would have in classes added to support CORBA
  3.0 extensions.

. Fixed bugs in entering attributes of abstract and local interfaces,
  and in querying for attributes of components.

. Added a "-m" option to IFR_Service to enable multicast discovery of
  the service.

LOAD BALANCING
--------------

. Added two new strategies, namely LoadAverage and LoadMinimum.

NOTIFICATION SERVICE:
---------------------
. Corrected the implementation to add the caller's <subscribed_types>
  to the Admin Object's types. This solves the problem that if a
  proxy's connect_structured_push_consumer() is called *AFTER* the
  proxy's subscription_change(), then the subscriptions do not work.

. Added the -NoUpdates option to the Notification svc.conf
  options. If this option is specified, the
  subscription_change/offer_change messages are NOT sent to proxy
  objects.  This option is useful to turn off entire updates for
  applications that do not reply on subscription_change/offer_change
  messages.


USER VISIBLE CHANGES BETWEEN TAO-1.3.6 and TAO-1.4
==================================================

IDL COMPILER:
-------------
. Fixed bug related to the order of #pragma prefix and #include
  directives

. Fixed bug in generation of copy constructor for AMH interface
  classes.

. Fixed incorrect handling of a parameter name in an AMI sendc_xxx
  operation that clashes with a C++ keyword.

. Readded the generation of _unchecked_narrow () back into the stub
  code since it is required by the latest OMG CORBA specification.

CORE ORB
-------

. SCIOP endpoints are not created by default. They need explicit
  specification of -ORBEndpoint sciop:// at startup.

. Fixed a bug that caused the ORB to dump a core when server side
  interceptors returns an exception and if the operation parameters
  contains a sequence an out parameter.

. Fixed a bug that caused extraction of basic data types that are
  aliased from an Any.

. Added a couple of regressions tests for some of AMH features.

. Lots of other bug fixes (see the bottom of this message for a
  complete list of bugzilla bugids fixed in this beta).

. Fixed a problem with dynamic loading of the ORB. This was introduced
  by "magic" static constructors in the TAO PortableServer headers
  where dynamic loading/unloading of the ORB failed.

. Added an option, -ORBDisableRTCollocation which allows users to
  disable the RT collocation technique used by TAO and fall back on the
  default collocation technique used for the vanilla ORB.

. Prevent the TP_Reactor used within TAO from exiting when it receives
  a EINTR during select ().

ORB SERVICES
------------

. Added new security variable so that libTAO_Security could be built
  independently of libTAO_SSLIOP, and set the default to true.

. An initial implementation of the FTCORBA spec has been added to
  TAO. This release features an initial cut of ReplicationManager,
  FaultNotifier, and a FaultDetector. Please see

  $TAO_ROOT/orbsvcs/tests/FT_App/README

  for a simple example that uses the different FTCORBA features that
  have been implemented in TAO.

. Fixed a bug, in PG_ObjectGroupManager::remove_member () methods
  which caused the group entry to be available in the location_map
  when a member of the object group is removed.
