5.5. What’s New in 4.0.0

5.5.1. New and Removed Platforms

See the Connext What’s New document for a list of new and removed platforms.

5.5.2. New Python Language Binding (Experimental)

Code Generator can now generate code and examples for Python from IDL, XML, and XSD. To use this new binding, use the command-line option -language Python.

For generating examples, the only available platform for Python is “universal”. See the Connext What’s New for more information.

5.5.3. Use -language C++98 Instead of -language C++ to Generate Traditional C++ code

This release introduces the C++98 language option for traditional C++ code generation. From now on, use -language C++98 to specify code generation for traditional C++. (Use -language C++11 for modern C++, as before.) Using Code Generator without specifying a language, or specifying -language C++, may cause confusion since it does not specify the language standard. The use of -language C++ or not using -language at all is not recommended and will generate a warning during code generation.

Note that C++98 and C++11 are the minimum C++ versions required for the traditional C++ and modern C++ APIs, respectively. Applications can use newer C++ standards.

5.5.4. Improve hashCode Function in Java Generated Code

Previously, the generated hashCode function was just the addition of all the members of the type, producing collisions. After this improvement, we have reduced the number of collisions, by using a prime number and multiplying it by each member before adding them all.

5.5.5. New Command-Line option, -obfuscateTypeCode, for Obfuscating Types and Fields in TypeCode

Code Generator has introduced a new command-line option, -obfuscateTypeCode, to obfuscate TypeCode names. When this option is used, the TypeCode name and the printing method for types and members will use an obfuscated name. This option affects the name used on the wire. The option does not change the name of the variables used for programming. When you use this option, no clear string with the types or member names will be generated.

5.5.6. Code Generator now Fails for Optional Sequences in C#

Previously, the optional annotation was silently ignored for sequences in C#. Now, Code Generator will fail if the IDL/XML/XSD file contains an optional sequence.

For example, this IDL will now fail for C#:

struct MyStruct {
    @optional
    sequence<short, 4> m1;
};

This problem is a known issue before 4.3.0. The workaround is to use an empty sequence to emulate an unset optional. Optional sequences are supported since 4.3.0.

5.5.7. Deprecations and Removals

This section describes features that are deprecated or removed starting in release 7.0.0.

Deprecated means that the item is still supported in this release, but will be removed in a future release. Removed means that the item is discontinued or no longer supported. By specifying that an item is deprecated in this release, RTI is hereby providing customer notice that RTI reserves the right after one year from the date of this release and, with or without further notice, to immediately terminate maintenance (including without limitation, providing updates and upgrades) for the item, and no longer support the item, in a future release.

This section serves as notice under the Real-Time Innovations, Inc. Maintenance Policy #4220 and/or any other agreements by and between RTI and customer regarding maintenance and support of RTI’s software.

5.5.7.1. Language C++03 option removed in this release

The rtiddsgen option -language C++03 was deprecated starting in release 6.1.0. Starting in 6.1.0, Code Generator produced a warning message during code generation that C++03 support would be removed in a future release. That removal has happened as of release 7.0.0.

For the Modern C++ API, you now must use -language C++11; for the Traditional C++ API, you should use -language C++98, although you can continue to using -language C++.

The Modern C++ API now requires a C++11 compiler (or newer). The Traditional C++ API continues to support C++98 compilers (or newer).

5.5.7.2. Legacy C# language binding removed in this release

This release removes support for code generation for the legacy C# API and C++/CLI. Likewise, the -dotnet parameter (used to specify the legacy C# code generation) has also been removed. From release 7.0.0 forward, the -language C# command-line option will produce C# code using the latest C# API that was introduced in 6.1.0 (rtiddsgen 3.1.0).