Skip to content

Releases: OpenDDS/OpenDDS

OpenDDS 2.2

15 Jan 17:59
Compare
Choose a tag to compare

Release notes for Version 2.2 of OpenDDS

  • Completed the implementation of the Content-Subscription Profile (which
    was begun in version 1.3 of OpenDDS). This includes:
    • QueryCondition (previously OpenDDS had a partial implementation)
    • ContentFilteredTopic
    • MultiTopic
      The content-subscription profile can be disabled at compile-time in order
      to reduce footprint: set the MPC feature "content_subscription" to 0.
  • The code generation tools for OpenDDS have changed in this release. The
    Perl script "dcps_ts.pl" is no longer used and instead the OpenDDS IDL
    Compiler "opendds_idl" takes its place. opendds_idl also includes the
    functionality which used to be in tao_idl and enabled with -Gdcps.
    Existing applications that use MPC do not need to make any changes unless
    they happen to depend on some rarely-used arguments to dcps_ts.pl. See the
    OpenDDS Developer's Guide for the list of arguments accepted by opendds_idl.
  • Renamed odds_repoctl command to repoctl. Add a decorator if needed when
    installing external to the OpenDDS directories.
  • Renamed odds_monitor command to monitor. Add a decorator if needed when
    installing external to the OpenDDS directories.
  • Renamed Wireshark dissector 'odds' library to 'OpenDDS_Dissector'.
    The source directory was renamed from $DDS_ROOT/tools/odds_dissector
    to $DDS_ROOT/tools/dissector.
  • Fixed transport so it now allows associations between datareaders and
    datawriters attached to the same transport to work.
  • Fixed a bug that causes samples larger than 64K to not work correctly with
    the SimpleTCP transport.
  • Added nak_delay_intervals and nak_max configuration options for reliable
    multicast to help reduce naks.
  • Added support for Ownership qos.
  • Added support for GROUP presentation.
  • Changed the default DataWriterQos reliability max_blocking_time from infinite
    to be 100ms to be consistent with spec 1.2.
  • A new "configure" script is available to assist with setting up prerequisites
    for OpenDDS compilation, including optionally downloading ACE+TAO. See the
    INSTALL file for details.

Using the GitHub "releases" page

Download OpenDDS-2.2.zip (Windows) or OpenDDS-2.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.1.3

15 Jan 18:01
Compare
Choose a tag to compare

Release notes for Version 2.1.3 of OpenDDS

  • Various fixes for memory management issue on transport framework.
  • Fixed duplicate message issue caused by a lost link.
  • Memory leak fixes.
  • Fixed deadlocks on reliable multicast transport during association
    and shutdown periods.
  • Improved reliable multicast transport and reduced nak overflow.
  • Extended the capabilities of the OpenDDS-Bench performance test
    framework. This consists mostly of expanded pre-configured tests as
    well as additional execution and plotting scripts. The user guide at
    performance-tests/Bench/doc/user_guide.html contains the details.
  • Masked interrupts in threads created by OpenDDS to avoid failures
    while in system calls.
    Example: ERROR: ACE::handle_write_ready return -1 while waiting
    to unclog. handle_write_ready: Interrupted system call
  • Added support to set the TTL for multicast transports.

Using the GitHub "releases" page

Download OpenDDS-2.1.3.zip (Windows) or OpenDDS-2.1.3.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.1.2

15 Jan 18:03
Compare
Choose a tag to compare

Release notes for Version 2.1.2 of OpenDDS

  • This is a bugfix release to account for issues introduced by the
    previous version.

New to this version are the following changes:

  • Various bugfixes for locking issues during sample removal.
  • Fixed a bug in obtain_buffer() that did not return the TIMEOUT error
    code when max_blocking_time is 0 or a very small period.
  • Fixed a deadlock in the new IP multicast transport caused when data
    is received while a reliable session is handshaking.
  • Fixed an issue which caused spurious synch threads to be created for
    connectionless transports (i.e. UDP/IP, IP multicast).
  • Enhanced the experimental UDP/IP transport to support multiplexing
    samples to unique endpoints rather than unique entities.

Using the GitHub "releases" page

Download OpenDDS-2.1.2.zip (Windows) or OpenDDS-2.1.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.1.1

15 Jan 18:05
Compare
Choose a tag to compare

Release notes for Version 2.1.1 of OpenDDS

  • This is a bugfix release to account for issues introduced by the
    previous version.

New to this version are the following changes:

  • Various bugfixes have been applied to the new IP multicast transport
    and the Extensible Transport Framework (ETF) to improve stability.
  • Added IDL for ContentFilteredTopic and MultiTopic, but they are not yet
    implemented (operations will return NULL or RETCODE_UNSUPPORTED).
  • A Wireshark 1.2.x compatible dissector is included in this release.
    See $DDS_ROOT/tools/odds_dissector/README for details.

Using the GitHub "releases" page

Download OpenDDS-2.1.1.zip (Windows) or OpenDDS-2.1.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.1

15 Jan 18:07
Compare
Choose a tag to compare

Release notes for Version 2.1 of OpenDDS

New to this version are the following changes:

  • The OpenDDS-Bench performance testing framework has been enhanced to
    include the following:
    • extended to allow fixed rate testing;
    • added predefined latency test configuration files;
    • added data reduction scripts to post process test results;
    • added data visualization scripts using gnuplot to create charts
      from reduced test data.
      Documentation is located at: $DDS_ROOT/performance-tests/Bench/doc.
  • The monitor library introduces a new instrumentation mechanism for
    reporting OpenDDS run-time information. This information is
    intended to supplement that provided by the standard-defined
    Built-In-Topics. See $DDS_ROOT/dds/monitor/README for further
    details.
  • A new instrumentation application is available to view executing
    OpenDDS service Entities. This is located at: $DDS_ROOT/tools/odds_monitor.
  • The opendds_repo_ctl tool has been moved from $DDS_ROOT/dds/tools to
    $DDS_ROOT/tools. The name has also been changed to odds_repoctl to
    reflect changes in naming conventions in this release.
  • A new multicast transport is available which replaces the older
    ReliableMulticast and SimpleMcast transports. For a detailed description
    of the design, configuration, known issues, and potential enhancements,
    see: $DDS_ROOT/docs/html/multicast/multicast.html.
  • A new udp transport is available which replaces the older SimpleUdp
    transport. Like SimpleUdp, udp provides best-effort reliablity only;
    its use should be considered experimental.
  • Numerous bugs in the Extensible Transport Framework (ETF) have been
    addressed to improve the stability of new and existing transports.
  • Formal ranges of DDS::DomainId_t values are now specified; users have
    full access to all DomainId values between 0x0 and 0x7fffffff. All other
    values are reserved for use by the implementation.

Using the GitHub "releases" page

Download OpenDDS-2.1.zip (Windows) or OpenDDS-2.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.0.1

15 Jan 18:09
Compare
Choose a tag to compare

Release notes for Version 2.0.1 of OpenDDS

  • This is a bugfix release to account for issues introduced by the 2.0
    integration process. No new features have been added in this release.

New to this version are the following changes:

  • Bugfixes for STLport support using Sun CC compilers.
  • Corrected default ReliablityQoS policy for DataWriter entities.
  • Bugfixes to Java language bindings including TAO_IDL interface changes
    introduced in DOC TAO 1.7.4 and incorrectly generated project files.

Using the GitHub "releases" page

Download OpenDDS-2.0.1.zip (Windows) or OpenDDS-2.0.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 2.0

15 Jan 18:11
Compare
Choose a tag to compare

Release notes for Version 2.0 of OpenDDS

  • This is the first release of OpenDDS that conforms to the minimum
    compliance profile as documented in formal/07-01-01 (version 1.2).
    Near-complete support for the persistence profile and initial support
    for the content-subscription profile is also provided in this release.

New to this version are the following changes:

  • Updated support for DataWriter::unregister() and DataWriter::dispose()
    to properly release resources after all samples in a marked instance
    are removed.
  • Implemented Publisher::wait_for_acknowledgments() as defined in
    formal/07-01-01.
  • Fixed an issue in QueryCondition where applying filters on non-valid
    data samples caused a SEGV; these samples are now implicitly filtered
    out.
  • Implemented PRESENTATION QoS policy as defined in formal/07-01-01.
    Currently, GROUP access is not supported.
  • Implemented MANUAL_BY_TOPIC and MANUAL_BY_PARTICIPANT LIVELINESS QoS
    policy kinds.
  • Implemented BY_SOURCE_TIMESTAMP DESTINATION_ORDER QoS policy kind.
    Samples may now be ordered based on reception or source times on a per
    instance basis.
  • Implemented ENTITY_FACTORY auto_enable support in formal/07-01-01.
    Entities may now be enabled manually by setting this value to false.
  • Implemented WRITER_DATA_LIFECYCLE as defined in formal/07-01-01.
    Instances will now be properly unregistered/disposed when a DataWriter
    is deleted.
  • Implemented READER_DATA_LIFECYCLE as defined in formal/07-01-01.
  • Implemented TIME_BASED_FILTER as defined in formal/07-01-01.
  • create_*() functions now take a StatusMask argument. A new constant
    named OpenDDS::DCPS::DEFAULT_STATUS_MASK has been introduced as a
    convenience to indicate interest in all status changes.
  • Implemented the following new methods on DomainParticipant as defined
    in formal/07-01-01:
    • get_discovered_participants()
    • get_discovered_participant_data()
    • get_discovered_topics()
    • get_discovered_topic_data()
  • Constant name changes:
    • PUBLICATION_MATCH_STATUS => PUBLICATION_MATCHED_STATUS
    • DURATION_INFINITY_SEC => DURATION_INFINITE_SEC
    • DURATION_INFINITY_NSEC => DURATION_INFINITE_NSEC
    • TIMESTAMP_INVALID_SEC => TIME_INVALID_SEC
    • TIMESTAMP_INVALID_NSEC => TIME_INVALID_NSEC
  • Removed constants:
    • TRANSPORTPRIORITY_QOS_POLICY_NAME
  • Type name changes:
    • StatusKindMask => StatusMask
    • SubscriptionMatchStatus => SubscriptionMatchedStatus
    • PublicationMatchStatus => PublicationMatchedStatus
  • Removed types:
    • SampleStateSeq
    • ViewStateSeq
    • OctetSeq
  • Other type changes:
    • BuiltinTopicKey_t is now a struct containing an array rather
      than a bare array type. This allows passing a BuiltinTopicKey_t
      by reference.
    • Ownership is now indicated in DataReaderQos and DataWriterQos as
      well as PublicationBuiltinTopicData and SubscriptionBuiltinTopicData.
    • Removed sevice_cleanup_delay from DurabilityQosPolicy.
  • Method name changes:
    • register()/_cxx_register() => register_instance()
    • register_w_timestamp() => register_instance_w_timestamp()
    • unregister() => unregister_instance()
    • unregister_w_timestamp() => unregister_instance_w_timestamp()
    • on_subscription_match() => on_subscription_matched()
    • on_publication_match() => on_publication_matched()
  • Other method changes:
    • set_qos(), get_qos(), get_*_status() and assert_liveliness() now
      return error codes as specified in formal/07-01-01.
    • Subscriber::get_datareaders() reader parameter has changed from out
      to inout.

Using the GitHub "releases" page

Download OpenDDS-2.0.zip (Windows) or OpenDDS-2.0.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 1.3

15 Jan 18:13
Compare
Choose a tag to compare

Release notes for Version 1.3 of OpenDDS

  • This will be the final release of OpenDDS that will build with the current
    patch level of TAO 1.4a. This release is compatible with (the current patch
    levels of) TAO 1.4a, 1.5a, and 1.6a, as well as the current DOC Group
    beta/micro release. Future releases will be compatible with TAO 1.5a, 1.6a
    and the DOC group -- see the README file for details on TAO versions.

New to this version are the following changes:

  • Implemented the Communication Status entity structures and behaviors to
    conform with the version 1.2 specification (formal/07-01-01). This
    includes member name changes and additions to LivelinessChangedStatus;
    modifying and extending the SampleRejectedStatusKind enumeration; and,
    adding new members to the PublicationMatchStatus and
    SubscriptionMatchStatus structures.
  • Implemented the TRANSPORT_PRIORITY Quality of service policy using the
    policy value to set thread priorities and DiffServ codepoint values.
    The current implementation does not honor the Changeable behavior of
    the policy. Only the intially established policy value is honored for
    any given DataWriter Entity. Thread priorities are not currently set
    on Windows systems.
  • Implemented the LATENCY_BUDGET Quality of service policy as a
    monitoring feature with an extended listener callback for exceeded
    budget values. Statistics for latency are made available via an
    OpenDDS-specific extended API as well.
  • Implemented the ReadCondition interface and associated operations
    on the DataReader (such as read_w_condition).
  • Implemented the QueryCondition interface, but only queries of the form
    "ORDER BY a[, b, c...]" have any effect. In other words, it's a mechanism
    that controls the order of the data-set received from any given read or
    take operation. The ORDER BY fields can be either primitive types
    (including strings) or primitive types in nested structs (using a.b).
  • Corrected a bug in the LIFESPAN QoS implementation where the Topic QoS
    was used. Now the DataWriter QoS takes effect.
  • The PARTITION QoS policy now accepts character class wildcards using [].
  • Corrected a bug in the PARTITION QoS implementation where the default
    QoS would not match against the '*' wildcard.
  • The DURABILITY QoS implementation was corrected so that readers requesting
    the VOLATLIE kind will not receive historic samples from writers. Since
    there were some use-cases for the old behavior, it is available through an
    OpenDDS-specific interface -- see $DDS_ROOT/dds/DdsDcpsSubscriptionExt.idl.
  • When the writer's DURABILITY QoS is PERSISTENT, the format of the
    data stored on the filesystem has changed. Instead of a single file in the
    current working directory, a directory is now used. This is configurable
    using the option -DCPSPersistentDataDir.
  • A Java Message Service 1.1 (JMS) provider built on top of OpenDDS is now
    available in $DDS_ROOT/java/jms. JMS Topics are supported (not queuing).
    See the README in that directory for more info.
  • The $DDS_ROOT/bin/federation utility has been renamed to opendds_repo_ctl
    and now supports shutting down a remote non-federated DCPSInfoRepo process.
  • Deleting a DataWriter from a Publisher now blocks until pending samples have
    been delivered by the underlying transport. By default, the DataWriter will
    block indefinitely. To change the default blocking behavior, you may
    specify a number of seconds to block with the -DCPSPendingTimeout option.
  • Instance handles are now compliant with version 1.2 of the DDS
    specification. Additionally, the contains_entity and get_instance_handle
    operations have been implemented.
  • Implemented DataWriter::wait_for_acknowledgments() from formal/07-01-01.
  • Added support for Windows Mobile 6 (WinCE) Standard SDK, and ACE_USES_WCHAR
    builds in general. See docs/design/wchar.txt.

Using the GitHub "releases" page

Download OpenDDS-1.3.zip (Windows) or OpenDDS-1.3.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 1.2

15 Jan 18:15
Compare
Choose a tag to compare

Release notes for Version 1.2 of OpenDDS

New to this version are the following changes:

  • Implemented the WaitSet, GuardCondition, and StatusCondition interfaces
    from the OMG DDS specification.

  • Implemented DomainParticipant::get_current_time() from formal/07-01-01.

  • Added the ability for using multiple repositories to provide redundant
    service metadata management.

    The ability to federate repositories and redirect applications to
    attach to a new repository in the event a repository fails or becomes
    unreachable. This is an experimental feature.

  • Removed requirement for repository domain specification files.

    Repositories will manage DomainParticipants and their contained
    Entities in any domain without requiring the domain to be prespecified
    in a configuration file. This removes the '-d' command line argument
    from the repositories as well.

  • Internal service Entity identifiers have been expanded to 128 bits.

    These internal identifiers were previously 32 bits. The 128 format
    follows the format of OMG Specification formal/08-04-09 (The Real-time
    Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol
    Specification, Version 2.0) GUID_t unique identifier type.

    OpenDDS places the identifier value for the DataWriter Entity of a
    publication on the wire to identify the source of data samples. This
    means that this version of OpenDDS WILL NOT INTEROPERATE with previous
    versions since the 128 values are not compatible with the previous 32
    bit values.

  • Java Bindings for OpenDDS

    See $DDS_ROOT/java/README, $DDS_ROOT/java/INSTALL, $DDS_ROOT/java/FAQ

  • dcps_ts.pl changes

    Modified this script to create a single idl, header, and source file
    no matter how many types are contained within the input idl file. This
    allows the output file names to be based upon the input file name (instead
    of the types found in the idl file). Users of prior OpenDDS versions can
    use the script $DDS_ROOT/bin/update_dcps.pl to assist with this transition.

    Added a command line argument to allow an output directory to be
    specified. All output files will be placed into this directory if
    present. They will continue to be placed in the current directory if
    this argument is not present.

  • DCPSInfoRepo changes

    A new library has been introduced (libDCPSInfoRepoServ) which provides
    the neccessary hooks for running the DCPSInfoRepo within another process.
    For example usage, see: $DDS_ROOT/dds/InfoRepo/DCPSInfoRepo.cpp.

  • Fixed bug in DCPSInfoRepo that did not re-evaluate the compatibility and
    associations when QoS change is made.

  • Fixed bugs that affected connection establishment.

    Fixed DataWriterImpl to handle the case that remove_association is called
    before fully_associated is called.

    Fixed a race condition that connection delay deletion removes new assocaitions.

    Corrected fully association ack verification to fix issues when multiple
    associations of a datalink are added simultaneously.

  • Added datalink_release_delay and removed keep_link configuration.

    The datalink_release_delay is the delay for datalink release after no
    associations. It defaults to 10 seconds. This is to fix disconnect
    problem happened when removing and adding association related to
    same datalink during short period.

    Removed keep_link which can be replaced with a big value of
    datalink_release_delay.

  • Fixed a potential deadlock in reliable multicast transport.

Using the GitHub "releases" page

Download OpenDDS-1.2.zip (Windows) or OpenDDS-1.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.

OpenDDS 1.1

15 Jan 18:17
Compare
Choose a tag to compare

Release notes for Version 1.1 of OpenDDS

New to this version are the following changes:

  • Added support for PARTITION QoS policy.

    This QoS policy allows publishers and subscribers to belong to one
    or more logical partitions. Partition names may contain wildcards.
    However, only wildcards containing "*" or "?" are currently
    supported.

  • Added support for DEADLINE QoS policy.

    The DEADLINE QoS policy allows the application to detect when data
    is not written or read within a specified amount of time. The
    {Offered,Requested}DeadlineMissesStatus::last_instance_handle is
    currently not updated.

  • Added support for LIFESPAN QoS policy.

    This policy allows the application to specify when data expires,
    meaning invalid. Expired data will not be delivered to
    subscribers.

  • Added support for the TRANSIENT kind of DURABILITY QoS policy.

    Data will outlive DataWriters when TRANSIENT DURABILITY is
    configured, and will be sent once a new DataWriter is created within
    the same domain for the same topic and type. The cached data will
    only last as long as the process.

  • Added support for the PERSISTENT kind of DURABILITY QoS policy.

    PERSISTENT DURABILITY provides basically the same functionality as
    TRANSIENT DURABILITY, except that cached data will survive process
    destruction.

  • Added support for the DURABILITY_SERVICE QoS policy.

    This QoS policy provides a way to specify resource limits for
    domain/topic/type-specific data in a TRANSIENT or PERSISTENT
    DURABILITY cache. The resource limits in question are analogous to,
    although independent of, those found in the HISTORY and
    RESOURCE_LIMITS policies.

  • Added a new command-line option, "-DCPSTransportDebugLevel".

    This can be used to specify a debug level for the OpenDDS
    transport layer at run-time. OpenDDS debug statements range
    from 0 to 5 in increasing order of verbosity.

  • Added the ability to attach to multiple DCPSInfoRepo processes.

    Applications which communicate using DDS are no longer restricted to
    communicating using domains controlled by a single DCPSInfoRepo
    process. Individual domain publications and subscriptions within a
    process can be attached to a designated repository. Each domain is
    controlled by a single repository and this association may not be
    changed for the lifetime of the repository or the application.

  • Added QoS propagation.

    The client applications can change the qos of DCPS entity via
    set_qos() call. The qos updates are propagated to DCPSInfoRepo which
    publishes the updated qos to corresponding BIT datawriter and also
    save it to persistent repository.

  • Fixed a few bugs in persistent DCPSInfoRepo support.

    Fixed incorrect actor type and qos type for subscriber/datareader
    problem in UpdateManager::add(const UA& actor). This bug causes the
    reloading from persistent file maps the subscriber/datareader as
    publisher/datawriter.

    Fixed a bug in qos serialization. The TAO_OutputCDR stream was not
    fully copied to buffer when the qos contains sequence data. The
    TAO_OutputCDR stream needs be consolidated before memcpy.

  • Fixed compliance with qos RxO.

    Fixed compliance with the DDS specification that qos parameters that
    Durability kind and Deadline.period be compatible between the
    subscriber and the publisher (RxO - Received x Offered)

  • Improved Memory Mangament.

    Fixed issues with reference counting for classes derived from
    LocalObject. If a user defined application is crashing on exit or
    cleanup, see the OpenDDS FAQ.

  • Added support for IPv6.

    The requirement for using IPv6 is the fully qualified domain name (FQDN)
    needs be resolved as IPv6 address as it is used by default configuration
    to support BuiltInTopic.

    The local_address in the configuration file should use IPv6 decimal
    address or hostname that can be resolved as IPv6 address.

  • Used the address string instead of 4-byte IP address and port number
    for pub/sub endpoint address advertisement.

    The address string in the configuration can use decimal IPv4/IPv6 address
    or hostname that can be resolved on both pub and sub sides.

    The default address string is "host:port". The "host" is the fully qualified
    domain name and the "port" is picked randomly by OS.

  • Fixed a problem that the default local_address does not work when hostname
    is resolved as the loopback ip address.

    With the default local_address, the acceptor now is listening on IPv4/IPv6
    ANY, but use the fully qualified hostname for address advertisement.

  • Added default configuration for the reliable multicast transport type.

    The multicast_group_address defaults to the ACE default multicast address
    (224.9.9.2:20001 for IPv4 and ff05:0::ff01:1:20001 for IPv6) and the
    local_address defaults to ANY with a random port picked by the OS.

  • Fixed a bug in DataReaderImpl::remove_associations() and
    DataWriterImpl::remove_associations() that should not attempt to remove
    the already removed writer/reader.

  • Fixed a bug in SimpleTCP that an active disconnect due to the peer
    graceful disconnect does not terminate send. This bug made the re-established
    connection fail on send strategy state check.

  • Added dispose() and unregister() notifications. When dispose()
    is explicitly called on the DataWriter side, the DataReader listener
    on_data_available() callback should receive a sample with the valid_data
    flag == 0 and the instance state == NOT_ALIVE_DISPOSED_INSTANCE_STATE.

    When unregister() is explicitly called on the DataWriter side,
    the DataReader listener on_data_available() callback should receive a
    sample with the valid_data flag == 0 and the instance state ==
    NOT_ALIVE_NO_WRITERS_INSTANCE_STATE.

  • Moved TRANSPORTTYPE_QOS_POLICY_NAME and TRANSPORTTYPE_QOS_POLICY_ID
    from DDS namespace to OpenDDS namespace since they are specific to
    OpenDDS.

Using the GitHub "releases" page

Download OpenDDS-1.1.zip (Windows) or OpenDDS-1.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.