Version 1.0 of OpenDDS.

New to this version are the following changes:

- This product has been renamed to OpenDDS from "TAO DDS"

  Namespace and module names have been changed accordingly, except for a few
  cases where we are counting on certain names being generated by the TAO_IDL
  compiler.


- The default participant setting for BITs is now "on"

  This change was actually part of 0.12 but the release notes were not updated
  to include it.  Please see the entry with the same title under the "Version
  0.12" section below for more details.


- Simplified .mpc and .mpb files

  Projects that use DDS no longer need to explicitly list "portableserver" as a
  base project.  It will be included by the "dcps*" base projects such as
  "dcpsexe" and "dcpsexe_with_tcp".  Also, an .mpb file is provided for each of
  the transport libraries (dcps_tcp.mpb, dcps_unreliable_dgram.mpb,
  dcps_reliable_multicast.mpb).


- Supported built-in sequences (the CORBA::*Seq sequences).

  Implementation details:

    DDS keeps copies of the $TAO_ROOT/tao/*Seq.pidl in
    $DDS_ROOT/dds/CorbaSeq directory and renamed to *.idl files.
    These idl files are compiled with a new IDL option -Gdcpsonly to
    just generate the DDS specific code for built in sequences. The
    DDS CORBA::*Seq generated code will include the TAO CORBA::*Seq
    generated code so both TAO and DDS functions will be available.

    When a DDS application contains an idl file that includes
    $TAO_ROOT/tao/*Seq*.pidl, the generated code will include the DDS
    specific built in sequences code(under $DDS_ROOT/dds/ directory)
    instead of TAO specific built in sequences code(under
    $TAO_ROOT/tao/ directory).

  Notes:

    - The idl files in $DDS_ROOT/dds/CorbaSeq directory are internally
      used by DDS and CAN NOT be included in your idl files.

    - Currently the CORBA::AnySeq is not supported since DDS does not
      support serialization of Any type data.


- The DDS entities (e.g. DomainParticipant, FooDataReader) have changed from
  *remote* IDL types to *local* IDL types and the data sequence and info
  sequence types have changed from normal IDL sequences to types with extra
  functionality required to support zero-copy reads.

   *** This change requires changes to DDS user code. ***

   --- impacts on user code ---
   1) The ZCSeq and ::TAO::DCPS::SampleInfoZCSeq no longer exist.
        The Seq and DDS::SampleInfoSeq have been changed
        to support both single-copy reads (as before) and zero-copy reads
        (like ZCSeq should have).

        Change ::TAO::DCPS::SampleInfoZCSeq to ::DDS::SampleInfoSeq.
        Change ZCSeq to [Module::]Seq.

        The default constructor for Seq enables zero-copy reads.
        Constructing a Seq(num) with num > 0 enables single-copy reads.

   2) Listeners will now inherit from DDS::Listener instead of
        POA_DDS:: or POA_TAO::DCPS::DataReader/WriterListener and
        should inherit as a local object (not a servant).  DDS provides a
        helper template that adds reference counting.  Use of this template
        (as shown below) is highly recommended.

        for example:

                class DataReaderListenerImpl
                : public virtual POA_DDS::DataReaderListener,
                        public virtual PortableServer::RefCountServantBase
                {...};

        will become:

                class DataReaderListenerImpl
                : public virtual TAO::DCPS::LocalObject
                {...};

        but the header and implementation should require no other changes.

        NOTE: if you are implementing the TAO specific reconnection callbacks,
        on*disconnected, on_*_reconnected, on_*_lost, on_connection_deleted
        then you should change inheritance from
                POA_TAO::DCPS::DataReaderListener
                       to
                TAO::DCPS::LocalObject
        and remove inheritance from PortableServer::RefCountServantBase

   3) Implementation reference counting cleanup code is no longer used

       For example:
                SimpleTypeSupportImpl sts_servant = new SimpleTypeSupportImpl;
                PortableServer::ServantBase_var safe_servant = sts_servant;

                SimpleTypeSupport_var fts =
                        TAO::DCPS::servant_to_reference (sts_servant);

                if (::DDS::RETCODE_OK != fts->register_type(dp.in (), MY_TYPE))

       becomes:

                SimpleTypeSupport_var fts = new SimpleTypeSupportImpl;

                if (::DDS::RETCODE_OK != fts->register_type(dp.in (), MY_TYPE))

       although the old style is discouraged it will still work.


    4) Since the DCPS interfaces are now local, there is very little
       performance gain to convert from _var to a servant pointer (using
       reference_to_servant).

       For example:
           ::DDS::DataWriter_var dw =
                 pub->create_datawriter(topic.in (),
                                        dw_qos,
                                        ::DDS::DataWriterListener::_nil());

                        Test::SimpleDataWriter_var foo_dw
                                = Test::SimpleDataWriter::_narrow(dw.in ());

                        // This is unnecessary but will still work.
                        // Previously fast_dw was used to increase the
                        // performance of writing samples.
                        Test::SimpleDataWriterImpl* fast_dw =
                            TAO::DCPS::reference_to_servant
                            (foo_dw.in ());

                Also, a pointer to the servant is no longer needed for making
                calls on zero-copy read supporting overloaded methods.

   5) If the user defined DDS type is in a module then the generated types will
      also be in that same module.

                        Given a "Foo" DDS type defined in the module "Test":
                                  old           new
                                  --------      ------------
                        type      Test::Foo     Test::Foo
                        sequence  FooSeq        Test::FooSeq
                        reader    FooDataReader Test::FooDataReader
                        writer    FooDataWriter Test::FooDataWriter

   6) The --module option to dcps_ts.pl is no longer supported.
           The module is set as described in point #5 above.

   7) What did not change.
        You may use the following:
        _var, _ptr
        ::_narrow()    // might use this for a listener
        ::_duplicate()
        TAO::DCPS::servant_to_reference()
        TAO::DCPS::reference_to_servant()
        TAO::DCPS::deactivate() // now a no-op

        Note: if you used
                                        TAO::DCPS::servant_to_reference(),
                                        TAO::DCPS::reference_to_servant(), or
                                        TAO::DCPS::deactivate_object
                for non-DDS interfaces then you may change to:
                                        remote_reference_to_servant
                                        servant_to_remote_reference
                                        deactivate_remote_object

        --- end of local interface impact to users ---


  - Made the sub/pub repo id generated by DCPSInfoRepo to be unique 
    per DCPSInfoRepo instance instead of being unique per domain. 
    This would allow multiple domains in the same process(connect 
    to the same DCPSInfoRepo instance) share the same transport.

Release Notes from previous versions are in the DDS_ROOT/DDS_release_notes.txt file included with OpenDDS.