diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..ff4eb62a --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/.gitignore b/.gitignore index 6bbb392d..f984a204 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ docs/_build/ # node.js dependencies node_modules/ +# VSCode +.vscode/ + diff --git a/LICENSE.pdf b/LICENSE.pdf index 78a5534b..686a51ad 100644 Binary files a/LICENSE.pdf and b/LICENSE.pdf differ diff --git a/README.md b/README.md index eca0fc63..480d0c9b 100644 --- a/README.md +++ b/README.md @@ -48,9 +48,9 @@ The dependency [ref](https://www.npmjs.com/package/ref) is shipped as source cod ## License -RTI Connector for JavaScript and RTI Connector for Python are part of the Connext -DDS Professional Package. If you have a valid license for the RTI Connext DDS -Professional Package, such license shall govern your use of RTI Connector for -Python and RTI Connector for JavaScript. All other use of this software shall +RTI Connector for JavaScript is part of the Connext +Professional Package. If you have a valid license for the RTI Connext +Professional Package, such license shall govern your use of +RTI Connector for JavaScript. All other use of this software shall be governed solely by the terms of RTI’s Software License for Non-Commercial -Use #4040, included at the top level of the `Connector for Python repository +Use #4040. diff --git a/README.rst b/README.rst index 43d599e5..43a5957c 100644 --- a/README.rst +++ b/README.rst @@ -70,10 +70,9 @@ source code and requires a C++11 compiler. License ------- -RTI Connector for JavaScript and RTI Connector for Python are part of -the Connext DDS Professional Package. If you have a valid license for -the RTI Connext DDS Professional Package, such license shall govern your -use of RTI Connector for Python and RTI Connector for JavaScript. All +RTI Connector for JavaScript is part of +the Connext Professional Package. If you have a valid license for +the RTI Connext Professional Package, such license shall govern your +use of RTI Connector for JavaScript. All other use of this software shall be governed solely by the terms of -RTI’s Software License for Non-Commercial Use #4040, included at the top -level of the \`Connector for Python repository +RTI’s Software License for Non-Commercial Use #4040. diff --git a/ci_config.yaml b/ci_config.yaml new file mode 100644 index 00000000..af69567a --- /dev/null +++ b/ci_config.yaml @@ -0,0 +1,5 @@ +node_versions: + - "18.19" + - "19.9.0" + - "20.11" +publish_version: "20" diff --git a/docs/conf.py b/docs/conf.py index 516ac8be..0472d911 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,12 +17,12 @@ # -- Project information ----------------------------------------------------- project = 'RTI Connector for JavaScript' -copyright = '2022, Real-Time Innovations, Inc.' +copyright = '2024, Real-Time Innovations, Inc.' author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -release = '1.2.2' -version = '1.2.2' +release = '1.3.0' +version = '1.3.0' master_doc = 'index' primary_domain = 'js' @@ -145,7 +145,7 @@ def setup(app): master_doc, 'rticonnectorforjavascript.tex', 'RTI Connector for Javascript', - '2022, Real-Time Innovations, Inc.', + '2024, Real-Time Innovations, Inc.', 'manual' ), ] diff --git a/docs/configuration.rst b/docs/configuration.rst index d520a312..56ef40ce 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -12,7 +12,7 @@ and *DataWriters*, data types and quality of service. :align: center *Connector* uses the XML schema defined by RTI's -`XML-Based Application Creation feature `__. +`XML-Based Application Creation feature `__. .. hint:: The *Connext DDS* C, C++, Java and .NET APIs can also load the same XML files @@ -50,7 +50,7 @@ how they are exposed in the *Connector* API: .. hint:: - For an example configuration file, see `ShapeExample.xml `__. + For an example configuration file, see `ShapeExample.xml `__. Data types ~~~~~~~~~~ @@ -75,11 +75,11 @@ and ``shapesize``: Types are associated with *Topics*, as explained in the next section, :ref:`Domain Library`. .. hint:: - You can define your types in IDL and convert them to XML with `rtiddsgen `__. + You can define your types in IDL and convert them to XML with `rtiddsgen `__. For example: ``rtiddsgen -convertToXml MyTypes.idl`` For more information about defining types, see -`Creating User Data Types with XML `__ +`Creating User Data Types with XML `__ in the *Connext DDS Core Libraries User's Manual*. For more information about accessing the data samples, see :ref:`Accessing the data`. @@ -89,10 +89,10 @@ Domain library A domain library is a collection of domains. A domain specifies: - * A `domain id `__. + * A `domain id `__. * A set of registered types (from a subset of the types in ````). A registered type can have a local name. - * A set of `topics `__, + * A set of `topics `__, which are used by *DataReaders* and *DataWriters*. .. code-block:: xml @@ -106,7 +106,7 @@ A domain library is a collection of domains. A domain specifies: For more information about the format of a domain library, see -`XML-Based Application Creation: Domain Library `__. +`XML-Based Application Creation: Domain Library `__. Participant library ~~~~~~~~~~~~~~~~~~~ @@ -139,12 +139,12 @@ as described in :ref:`Reading data (Input)`. For more information about the format of a participant library, see -`XML-Based Application Creation: Participant Library `__. +`XML-Based Application Creation: Participant Library `__. Quality of service ~~~~~~~~~~~~~~~~~~ -All DDS entities have an associated `quality of service (QoS) `__. +All DDS entities have an associated `quality of service (QoS) `__. There are several ways to configure it. You can define a QoS profile and make it the default. The following example @@ -230,12 +230,12 @@ profile is equivalent to *MyQosProfile* above: You can read more in the *RTI Connext DDS Core Libraries User's Manual*, -`Configuring QoS with XML `__. +`Configuring QoS with XML `__. Logging ^^^^^^^ -Logging can be configured as explained in `Configuring Logging via XML `__. +Logging can be configured as explained in `Configuring Logging via XML `__. For example, to increase the logging verbosity from the default (ERROR) to WARNING, define a ``qos_profile`` with the attribute @@ -249,4 +249,4 @@ WARNING, define a ``qos_profile`` with the attribute WARNING - \ No newline at end of file + diff --git a/docs/connector.rst b/docs/connector.rst index dc577429..47b44035 100644 --- a/docs/connector.rst +++ b/docs/connector.rst @@ -22,7 +22,7 @@ To create a new :class:`Connector`, pass an XML file and a configuration name to const connector = new rti.Connector('MyParticipantLibrary::MyParticipant', 'ShapeExample.xml') The XML file defines your types, QoS profiles, and DDS Entities. *Connector* -uses the XML schema of `RTI's XML-Based Application Creation `__. +uses the XML schema of `RTI's XML-Based Application Creation `__. The previous code loads the ```` named *MyParticipant* in the ```` named *MyParticipantLibrary*, which is defined in the @@ -42,7 +42,7 @@ When you create a :class:`Connector`, the DDS *DomainParticipant* that you selec and all of its contained entities (*Topics*, *Subscribers*, *DataReaders*, *Publishers*, *DataWriters*) are created. -For more information about the DDS entities, see `Core Concepts `__ +For more information about the DDS entities, see `Core Concepts `__ in the *RTI Connext DDS Core Libraries User's Manual*. .. note:: diff --git a/docs/copyright_license.rst b/docs/copyright_license.rst index 145d33e3..4b68e7e9 100644 --- a/docs/copyright_license.rst +++ b/docs/copyright_license.rst @@ -6,17 +6,17 @@ Copyrights and License ********************** -© 2022 Real-Time Innovations, Inc. |br| +© 2024 Real-Time Innovations, Inc. |br| All rights reserved. |br| Printed in U.S.A. First printing. |br| -February 2022. |br| +March 2024. |br| .. rubric:: License -RTI Connector for JavaScript and RTI Connector for Python are part of the Connext -DDS Professional Package. If you have a valid license for the RTI Connext DDS -Professional Package, such license shall govern your use of RTI Connector for -Python and RTI Connector for JavaScript. All other use of this software shall +RTI Connector for JavaScript is part of the Connext +Professional Package. If you have a valid license for the RTI Connext +Professional Package, such license shall govern your use of +RTI Connector for JavaScript. All other use of this software shall be governed solely by the terms of RTI’s Software License for Non-Commercial Use #4040, included at the top level of the `Connector for JavaScript repository `__. @@ -90,9 +90,11 @@ Website: https://support.rti.com/ |br| * The source code of this software (from https://github.com/udp/json-parser) is used to build the native libraries provided by *RTI Connector*. + * Version 1.1.0 + * License: - Copyright (C) 2012, 2013, 2014 James McLaughlin et al. All rights reserved. + Copyright (C) 2012-2021 the json-parser authors All rights reserved. https://github.com/udp/json-parser Redistribution and use in source and binary forms, with or without diff --git a/docs/data.rst b/docs/data.rst index b920c67a..eed82287 100644 --- a/docs/data.rst +++ b/docs/data.rst @@ -8,7 +8,7 @@ and arrays of primitive types or structs, etc. These types are defined in XML following the format of `RTI's XML-Based Application Creation feature -`__. +`__. To access the data, :class:`Instance` and :class:`SampleIterator` provide setters and getters that expect a ``fieldName`` string, used to identify @@ -239,6 +239,13 @@ then you must take the following into account. The :meth:`Instance.setNumber()` operation can safely handle ``abs(value) < 2^53``, whereas the :meth:`SampleIterator.getNumber()` operation can safely handle ``abs(value) <= 2^53``. +.. note:: + + The use of "Infinity", "-Infinity" and "-0" has some potential pitfalls and is + not recommended. If your application must use these values, refer to + `this knowledge base article `__ + for more information. + Accessing structs ^^^^^^^^^^^^^^^^^ @@ -465,7 +472,7 @@ To clear a member, set it to ``null`` explicitly:: For more information about optional members in DDS, see `Optional Members -`__ +`__ in the *Extensible Types Guide*. Accessing unions @@ -539,4 +546,55 @@ The key fields can be accessed as follows: .. warning:: When the sample has an instance state of ``'NOT_ALIVE_DISPOSED'`` only the - key fields should be accessed. \ No newline at end of file + key fields should be accessed. + +Accessing key values of disposed samples +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Using :meth:`Output.write`, an :class:`Output` can write data, or dispose or +unregister an instance. +Depending on which of these operations is performed, the ``instance_state`` of the +received sample will be ``'ALIVE'``, ``'NOT_ALIVE_NO_WRITERS'`` or ``'NOT_ALIVE_DISPOSED'``. +If the instance was disposed, this ``instance_state`` will be ``'NOT_ALIVE_DISPOSED'``. +In this state, it is possible to access the key fields of the instance that was disposed. + +.. note:: + :attr:`SampleInfo.valid_data` will be false when the :attr:`SampleInfo.instance_state` + is ``'NOT_ALIVE_DISPOSED'``. In this situation it's possible to access the + key fields in the received sample. + +The key fields can be accessed as follows: + +.. code-block:: + + // The output and input are using the following type: + // struct ShapeType { + // @key string<128> color; + // long x; + // long y; + // long shapesize; + // } + + output.instance.set('x', 4) + output.instance.set('color', 'Green') + // Assume that some data associated with this instance has already been sent + output.write({ action: 'dispose' }) + await input.wait() + input.take() + let sample = input.samples.get(0) + + if (sample.info.get('instance_state') === 'NOT_ALIVE_DISPOSED') { + // sample.info.get('valid_data') will be false in this situation + // Only the key-fields should be accessed + let color = sample.get('color') // 'Green' + // The fields 'x','y' and 'shapesize' cannot be retrieved because they're + // not part of the key + // You can also call getJson() to get all of the key fields in a JSON object. + // Again, only the key fields returned within the JSON object should + // be used. + let keyValues = sample.getJson() // { color: 'Green', x: 0, y: 0, shapesize: 0 } + } + +.. warning:: + When the sample has an instance state of ``'NOT_ALIVE_DISPOSED'`` only the + key fields should be accessed. diff --git a/docs/features.rst b/docs/features.rst index 1dc66a14..0732ac65 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -1,7 +1,7 @@ Connext DDS Features ==================== -Because *RTI Connector* is a simplified API, it provides access to a subset of +Because *RTI Connector* is a simplified API, it provides access to a subset of the features in *RTI Connext DDS*. In addition to the functionality described in the rest of this documentation, this @@ -18,7 +18,7 @@ General features * - Feature - Level of support - Notes - * - `Quality of Service (QoS) `__ + * - `Quality of Service (QoS) `__ - Partial - Most QoS policies are supported because they can be configured in XML, but those that are designed to be mutable can't be changed in *Connector*. QoS policies that require @@ -48,19 +48,19 @@ General features order to enable an `Input` only when :meth:`Connector.getInput` is called. * Property - Properties can be set in XML, but they can't be looked up in *Connector*. - `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. - * - `Entity Statuses `__ + `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. + * - `Entity Statuses `__ - Partial - Only :meth:`Input.wait` (data available), :meth:`Input.waitForPublications`, :meth:`Output.waitForSubscriptions` are supported - * - `Managing Data Instances `__ + * - `Managing Data Instances `__ - Partial - On an ``Output``, it is possible to dispose or unregister an instance (see :meth:`Output.write`). Instances are automatically registered when first written. On an ``Input`` the instance state can be obtained, alongside the key fields of a disposed instance (see :ref:`Accessing key values of disposed samples`). Instance handles are not exposed. - * - `Application Acknowledgment `__ + * - `Application Acknowledgment `__ - Partial - *DDS_APPLICATION_AUTO_ACKNOWLEDGMENT_MODE* is supported. If enabled, when a call to :meth:`Input.take` or :meth:`Input.read` is followed by another call, the second one automatically acknowledges the samples read in the first one. *DDS_APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE* is not supported. - * - `Request-Reply `__ + * - `Request-Reply `__ - Partial - The correlation between two samples can be established at the application level: @@ -68,20 +68,20 @@ General features * The *Replier* application receives the *request* sample, obtains the ``identity`` (A) from :attr:`SampleIterator.info`, and writes a new sample with ``related_sample_identity=A`` (the *reply* sample). * The *Requester* application receives the *reply* sample and correlates the ``related_sample_identity`` from :attr:`SampleIterator.info` with the ``identity`` it used in the first step. - * - `Topic Queries `__ + * - `Topic Queries `__ - Partial - ``Input`` doesn't have the API to create a *TopicQuery*, but in the configuration file a *data_writer* can enable support for *TopicQuery* so other *RTI Connext DDS Subscribers* can query the *Connector Publisher*. - * - `Zero Copy Transfer Over Shared Memory `__ + * - `Zero Copy Transfer Over Shared Memory `__ - Not supported - Only available in C and C++. - * - `Built-in Topics `__ + * - `Built-in Topics `__ - Not supported - API not available. - * - `Transport Plugins `__ + * - `Transport Plugins `__ - Partial - The built-in transports can be configured in XML. - * - Add-on Libraries (`Monitoring `__, - `Security Plugins `__ ...) + * - Add-on Libraries (`Monitoring `__, + `Security Plugins `__ ...) - Supported - See :ref:`Loading Connext DDS Add-On Libraries`. @@ -95,19 +95,19 @@ Features related to sending data * - Feature - Level of support - Notes - * - `Waiting for Acknowledgments `__ + * - `Waiting for Acknowledgments `__ - Supported - See :meth:`Output.wait`. - * - `Coherent Sets `__ + * - `Coherent Sets `__ - Not supported - API not available. - * - `Flow Controllers `__ + * - `Flow Controllers `__ - Partial - Most functionality is available via XML QoS configuration. - * - `Asserting Liveliness Manually `__ + * - `Asserting Liveliness Manually `__ - Not supported - API not available. - * - `Collaborative DataWriters `__ + * - `Collaborative DataWriters `__ - Limited - The virtual GUID can be set per writer in XML, but not per sample. @@ -121,19 +121,19 @@ Features related to receiving data * - Feature - Level of support - Notes - * - `Content-Filtered Topics `__ + * - `Content-Filtered Topics `__ - Partial - - `Configurable in XML `__ but it can't be modified after creation - * - `Sample Info `__ + - `Configurable in XML `__ but it can't be modified after creation + * - `Sample Info `__ - Partial - See :attr:`SampleIterator.info` - * - `Query Conditions `__ + * - `Query Conditions `__ - Not supported - API not available - * - `Group-Ordered Access `__ + * - `Group-Ordered Access `__ - Not supported - API not available - * - `Waiting for Historical Data `__ + * - `Waiting for Historical Data `__ - Not supported - API not available @@ -147,16 +147,16 @@ Features related to the type system * - Feature - Level of support - Notes - * - `DDS type system `__ + * - `DDS type system `__ - Supported - *Connector* can use any DDS type. Types are defined in XML. - * - `Type extensibility `__ + * - `Type extensibility `__ - Supported - *Connector* supports type extensibility, including mutable types in the XML definition of types. It also supports type-consistency enforcement, sample-assignability enforcement; these checks are performed by the *RTI Connext DDS* Core. - * - `Optional members `__ + * - `Optional members `__ - Supported - See :ref:`Accessing optional members` - * - `Default values `__ + * - `Default values `__ - Supported - For example, to declare a default value for a member:: @@ -170,7 +170,7 @@ Features related to the type system ``Input`` from a *Publisher* whose type is compatible but doesn't have the field ``my_int``, the value you receive is 20. - * - `Unbounded data `__ + * - `Unbounded data `__ - Supported - To declare an unbounded sequence or string, set its max length to *-1*:: @@ -217,7 +217,7 @@ Features related to the type system - * - `FlatData Language Binding `__ + * - `FlatData Language Binding `__ - Not supported - However, an ``Input`` can receive data published by other *RTI Connext DDS* applications that use FlatData. @@ -226,8 +226,8 @@ Loading Connext DDS Add-On Libraries *Connector* supports features that require the loading of additional *Connext DDS* libraries, such as -`Monitoring `__ -and `Security Plugins `__. +`Monitoring `__ +and `Security Plugins `__. The Monitoring and Security plugins are configured in XML, as described in the previous links. @@ -251,4 +251,4 @@ configure your environment so that *Connector* can load these additional librari Each version of *Connector* can only load add-on libraries from its corresponding Connext DDS release. You can see this correspondence in the :ref:`release notes`. For example, *Connector* 1.1.0 can only - load Connext DDS 6.1.0 add-on libraries. \ No newline at end of file + load Connext DDS 6.1.0 add-on libraries. diff --git a/docs/index.rst b/docs/index.rst index 68f50375..e2beab31 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -39,5 +39,5 @@ or function in the :ref:`genindex`. * :ref:`search` To learn more about *RTI Connext DDS*, see the -`RTI Connext DDS Getting Started Guide `__. +`RTI Connext DDS Getting Started Guide `__. More documentation is available in the `RTI Community Portal `__. diff --git a/docs/input.rst b/docs/input.rst index ba7d81dd..3f667b4b 100644 --- a/docs/input.rst +++ b/docs/input.rst @@ -193,7 +193,7 @@ See :attr:`SampleIterator.info` for the list of available meta-data fields. *Connext DDS* can produce samples with invalid data, which contain meta-data only. For more information about this, see `Valid Data Flag -`__ +`__ in the *RTI Connext DDS Core Libraries User's Manual*. These samples indicate a change in the instance state. Samples with invalid data still provide the following information: @@ -259,4 +259,4 @@ SampleInfo class ^^^^^^^^^^^^^^^^ .. autoclass:: SampleInfo - :members: \ No newline at end of file + :members: diff --git a/docs/intro.rst b/docs/intro.rst index 8108ea1e..30b5b820 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -10,7 +10,7 @@ data distribution efficient and robust. At its core is the world's leading ultra-high performance, distributed networking databus. *RTI Connector* is a family of simplified APIs for publishing and subscribing -to the *Connext DDS* Databus in programming languages such as Python and JavaScript. +to the *Connext* Databus in programming languages such as JavaScript. .. note:: diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 41b339b6..14a8b222 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -1,46 +1,78 @@ Release Notes -============= +************* Supported Platforms -------------------- +=================== + +*Connector* has been validated to run with the following Node.js versions: + * v18 + * v19 + * v20 -*Connector* works with Node.js v17.0.0-v18.7.0. It can also be used with -Node.js versions 10.20.x through 13.x.x, except for versions -11.x.x and 12.19.x [#f1]_. +.. warning:: + Due to an upstream change in Node.js, **some versions will fail when building + Connector dependencies**. This issue affects, at the very least, + Node.js versions 18.20, 20.12 and 21.6. + For more information, see `Github Issue #198 `_. + +Other versions may also work, but have not been validated internally. +If you run into an issue, make sure that the issue can be reproduced +in any of the versions listed above. *Connector* uses a native C library that works on most Windows®, Linux® and macOS® platforms. It has been tested on the following systems: **Linux** * CentOS™ 7.0 (x64) - * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8 (x64) - * SUSE® Linux Enterprise Server 12 SP2 (x64) - * Ubuntu® 18.04 (x64, Arm v7, Arm v8) - * Ubuntu 20.04, 22.04 LTS (x64) + * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8, 9 (x64) + * Ubuntu® 18.04 LTS (x64, Arm v7, Arm v8), 20.04 LTS (x64), 22.04 LTS (x64, Arm v8) **macOS** - * macOS 10.13-10.15, 12 (x64) - * macOS 11 (x64 and Arm v8 tested via x64 libraries) + * macOS 11, 12, 13 (x64) **Windows** * Windows 10, 11 (x64) - * Windows Server 2016 (x64) + * Windows Server 2016, 2022 (x64) *Connector* is supported in other languages in addition to JavaScript, see `the main Connector repository `__. -.. rubric:: Footnotes -.. [#f1] Versions of Node.js prior to v10.20.x and version v11.x.x do not support n-api, - which is used by some of *Connector's* dependencies. Node.js v12.19.0 is not - compatible with *Connector* because of a regression introduced in - that version of Node.js. - Node.js v14 and Node.js v16 do not work with *Connector* because one of *Connector's* - dependencies is not compatible with those versions. - Node.js versions greater than v18.7.0 are not currently supported. + +Version 1.3.0 +============= + +What's New in 1.3.0 +------------------- + +*RTI Connector* 1.3.0 is built on +`RTI Connext DDS 7.3.0 `__. + + +Failed to create a Connector in certain Node versions (18.8 or greater) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. CON-299 + +Due to an incompatibility in some *Connector* dependencies, it was not +possible to create a *Connector* when using certain Node.js versions. Trying +to create a *Connector* showed the following backtrace: + +.. code:: + + rticonnextdds-connector-js/node_modules/ffi-napi/lib/dynamic_library.js:67 + if (match = err.match(/^(([^ \t()])+\.so([^ \t:()])*):([ \t])*/)) { + ^ + TypeError: Cannot read properties of null (reading 'match') +.. + +This issue is known to have affected Node.js versions 18.8 and 20; other +versions may also have been affected. + +Previous Releases +================= Version 1.2.2 ------------------ +------------- What's New in 1.2.2 ^^^^^^^^^^^^^^^^^^^ @@ -57,33 +89,33 @@ Studio 2013 (and accompanied by Microsoft's mscvr120 redistributable). These libraries are now built using Visual Studio 2015. The redistributable that is shipped has been updated accordingly. -Previous Releases ------------------ - Version 1.2.1 -^^^^^^^^^^^^^ +------------- + +What's New in 1.2.1 +^^^^^^^^^^^^^^^^^^^ *Connector* 1.2.1 updates some third party dependencies that were found to contain vulnerabilities. *Connector* was not affected by these vulnerabilities. Version 1.2.0 -^^^^^^^^^^^^^ +------------- What's New in 1.2.0 -""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^ *RTI Connector* 1.2.0 is built on `RTI Connext DDS 6.1.1 `__. New Platforms -+++++++++++++ +""""""""""""" *Connector* has been validated on macOS 11 (Big Sur) systems on x64 and Arm v8 CPUs (via x64 libraries). New API makes it easier to query what version of Connector is being used -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. CON-92 A new API, :meth:`Connector.getVersion`, has been added that provides the @@ -92,10 +124,10 @@ libraries being used. What's Fixed in 1.2.0 -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ Error logged when accessing string longer than 128 bytes -++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""" Previously, on an input, when accessing a string longer than 128 bytes, the following error was printed: @@ -111,7 +143,7 @@ the string. The message is no longer printed. Support added for handling large 64-bit integers -++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""" Support has been improved for both getting and setting large (greater than 2^53) 64-bit values. See :ref:`section-access-64-bit-integers-js` for more information. @@ -120,7 +152,7 @@ Support has been improved for both getting and setting large (greater than 2^53) Promise returned by Output.wait did not resolve/reject -++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""" The Promise being returned by the Output.wait method (used to wait for acknowledgements on an output) was not being resolved or rejected. This @@ -131,9 +163,8 @@ supplied timeout has elapsed. [RTI Issue ID CON-227] - Version 1.1.1 -^^^^^^^^^^^^^ +------------- *Connector* 1.1.1 is built on *RTI Connext DDS* 6.1.0.3, which fixes several bugs in the Core Libraries. If you want more details on the bugs fixed in 6.1.0.3, @@ -142,15 +173,15 @@ contact support@rti.com. These bugs are also fixed in upon which *RTI Connector* 1.2.0 is built. Version 1.1.0 -^^^^^^^^^^^^^ +------------- What's New in 1.1.0 -"""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^ *RTI Connector* 1.1.0 is built on `RTI Connext DDS 6.1.0 `__. Support added for ARMv8 architectures -+++++++++++++++++++++++++++++++++++++ +""""""""""""""""""""""""""""""""""""" .. CON-174 Connector for JavaScript now runs on ARMv8 architectures. Native libraries @@ -158,7 +189,7 @@ built for ARMv8 Ubuntu 16.04 are now shipped alongside Connector. These librarie have been tested on ARMv8 Ubuntu 16.04 and ARMv8 Ubuntu 18.04. Support added for Node.js version 12 -++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""" .. CON-173 Previously, Node.js version 12 was not supported in *Connector* for JavaScript. @@ -170,7 +201,7 @@ Connector for JavaScript. Sample state, instance state and view state can now be obtained in Connector -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. CON-177 The :class:`SampleInfo` class in *Connector* has been extended to provide access to the @@ -182,7 +213,7 @@ new feature. Support for accessing the key values of disposed instances -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. CON-188 Support for disposing instances was added in *Connector* 1.0.0. @@ -197,7 +228,7 @@ See :ref:`Accessing key values of disposed samples` for more information on this new feature. Connector for Javascript dependencies now locked to specific versions -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. CON-220 ``package-lock.json`` has been committed, fixing the versions of *Connector for @@ -205,7 +236,7 @@ Javascript's* dependencies. Support for Security, Monitoring and other Connext DDS add-on libraries -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. CON-221 @@ -214,10 +245,19 @@ that Connext DDS features such as Monitoring and Security Plugins are now suppor Refer to :ref:`Loading Connext DDS Add-On Libraries` for more information. What's Fixed in 1.1.0 -"""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ + +1.0.0 is the first official release of *RTI Connector for JavaScript* as well as +`RTI Connector for Python `__. + +If you had access to previous experimental releases, this release makes the product +more robust, modifies many APIs and adds new functionality. However the old +APIs have been preserved for backward compatibility as much as possible. + +*RTI Connector* 1.0.0 is built on `RTI Connext DDS 6.0.1 `__. Creating two instances of Connector resulted in a license error -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Under some circumstances, it was not possible to create two *Connector* objects. The creation of the second *Connector* object failed due to a license error. @@ -228,7 +268,7 @@ This issue has been fixed. Some larger integer values may have been corrupted by Connector's internal JSON parser -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" The internal JSON parser used in *Connector* failed to identify integer numbers from double-precision floating-point numbers for certain values. @@ -240,7 +280,7 @@ become corrupted. This problem has been resolved. Support for loading multiple configuration files -++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""" A *Connector* object now supports loading multiple files. This allows separating the definition of types, QoS profiles, and *DomainParticipants* into different @@ -254,7 +294,7 @@ files: Creating a Connector instance with a participant_qos tag in the XML may have resulted in a license error -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" In some cases, if the XML configuration file of *Connector* contained a `` tag within the definition of the *DomainParticipant*, @@ -265,7 +305,7 @@ This problem has been resolved. Websocket example may have failed to run -++++++++++++++++++++++++++++++++++++++++ +"""""""""""""""""""""""""""""""""""""""" The websocket example (available only in *Connector for Javascript*) may have failed to run due to one of its dependencies, socket.io, removing a public API. @@ -274,21 +314,8 @@ This problem has been resolved. [RTI Issue ID CON-217] -Version 1.0.0 -~~~~~~~~~~~~~ - -1.0.0 is the first official release of *RTI Connector for JavaScript* as well as -`RTI Connector for Python `__. - -If you had access to previous experimental releases, this release makes the product -more robust, modifies many APIs and adds new functionality. However the old -APIs have been preserved for backward compatibility as much as possible. - -*RTI Connector* 1.0.0 is built on `RTI Connext DDS 6.0.1 `__. - - Vulnerability Assessments -------------------------- +========================= Internally, *Connector* relies on Lua. RTI has assessed the current version of Lua used by *Connector*, version 5.2, and found that *Connector* is not currently -affected by any of the publicly disclosed vulnerabilities in Lua 5.2. \ No newline at end of file +affected by any of the publicly disclosed vulnerabilities in Lua 5.2. diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..44a35ab0 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,4 @@ +docutils==0.18.1 +sphinx==5.3.0 +sphinx-js==3.2.1 +sphinx-rtd-theme==1.2.0 diff --git a/examples/nodejs/simple/writer.js b/examples/nodejs/simple/writer.js index 77516521..956606dd 100644 --- a/examples/nodejs/simple/writer.js +++ b/examples/nodejs/simple/writer.js @@ -6,7 +6,7 @@ * This code contains trade secrets of Real-Time Innovations, Inc. * ******************************************************************************/ -const sleep = require('sleep') +const msleep = require('util').promisify(setTimeout) const path = require('path') const rti = require('rticonnextdds-connector') const configFile = path.join(__dirname, '/../ShapeExample.xml') @@ -26,7 +26,7 @@ const run = async () => { output.instance.setString('color', 'BLUE') output.write() - sleep.msleep(500) + await msleep(500) } console.log('Exiting...') diff --git a/examples/nodejs/web_socket/indexMaps.html b/examples/nodejs/web_socket/indexMaps.html index 5dca76ac..a3ce002e 100644 --- a/examples/nodejs/web_socket/indexMaps.html +++ b/examples/nodejs/web_socket/indexMaps.html @@ -13,7 +13,7 @@ - +