5.3. What’s New in 4.4.0

This section describes what’s new in Code Generator 4.4.0 (Connext 7.4.0) compared to release 4.3.0 (Connext 7.3.0).

Connext 7.4.0 is an early access release. See the Connext Versions and Lifecycle page for more information on RTI’s software release model.

For what’s new and fixed in other products in the Connext suite, see those products’ release notes on the RTI Community Portal or in your installation.

5.3.1. Faster code generation by processing multiple files concurrently

Code Generator can now generate code for multiple files simultaneously. Code Generator server can also handle multiple requests concurrently. This new functionality enhances overall performance when dealing with multiple files, resulting in faster code generation.

To generate code for multiple files at once, simply provide a folder or collection of input files to Code Generator. Include the -j flag along with the desired number of files you wish to process concurrently. The following example generates code for all files within folder-with-100-idls, four at a time:

rtiddsgen -language C++11 -inputIdl ./folder-with-100-idls/ -j 4

For further details on the new flag, see Command-Line Arguments for rtiddsgen in the RTI Code Generator User’s Manual.

5.3.2. Generate simpler Python and C++ example applications

rtiddsgen includes a new example template (-exampleTemplate minimal) that generates simpler example publisher and subscriber applications in Modern C++ and Python.

With this option, the subscriber application in Python uses the @app.subscribe() decorator, which is also new in this release, to subscribe to a Topic by directly associating a function with the Topic to receive updates. In Modern C++, the example subscriber uses the SampleProcessor. In both cases, the application no longer needs to handle a WaitSet and can subscribe to multiple topics very easily.

This new example template also eliminates all optional code, such as the creation of the Publisher and Subscriber entities, command-line argument parsing, and more.

To generate this example for your IDL type, use the following commands:

rtiddsgen -language python -example universal -exampleTemplate minimal MyTypes.idl

or

rtiddsgen -language c++11 -example <platform> -exampleTemplate minimal MyTypes.idl

For more information, see Minimal Example in the RTI Connext Code Generator User’s Manual.

5.3.3. Ability for Python code creation to suppress sys.path for “include” files

In Python, for each file included by another file, Code Generator generates an import statement preceded by sys.path.append() with the path of the included file. This allows preserving the directory structure of the input files in the Python output.

If you prefer to manage the structure of the Python output in a different way, you can now disable this behavior with the -noSysPathGeneration option. See Including Files in the RTI Code Generator User’s Manual for more details.

5.3.4. New -ignoreSpecWarnings option removes specification compliance warnings

A new command-line option, -ignoreSpecWarnings, has been added to Code Generator. The -ignoreSpecWarnings option suppresses warnings related to IDL/XML incompliance with the specification, for customers who do not need compliance. The new option cannot be used together with the -strict option.

The new option is documented in Command-Line Arguments for rtiddsgen in the RTI Code Generator User’s Manual.

5.3.5. Easily remedy communication issues with example configurations in USER_QOS_PROFILES.xml

The generated USER_QOS_PROFILES.xml file now includes commented-out example settings for <initial_peers> and <transport_builtin> <mask>. These settings are commonly used for proper DDS DomainParticipant configuration. Updating the initial peers is an easy way to allow communication if you are on a network that blocks multicast traffic (and your applications aren’t communicating). The transport_builtin example settings can also guide you in directing data more easily.

Find these settings in the <domain_participant_qos> section, right after the </participant_name> tag.