FIX Antenna C/C++/.NET Release Notes
FIX Antenna ANSI C is discontinued starting version 2.18.1.
FIX Antenna 2.33.0
Starting with the FIX Antenna 2.33.0 release, only Microsoft Visual C++ Redistributable version 14.40.33810.0 and later are supported.
Please note that FIX Antenna 2.33.0 is the final release to support CentOS 7. Starting with version 2.34.0, we will transit to supporting Rocky Linux 9.
FIX Antenna 2.33.0 is released on .
New Features and Improvements
- Added FIXMessage::getReceiveTimestamp() and a new configuration parameter, ReceiveTimestamps.Enable, for precise message reception tracking.
- CPU thread affinity settings now support up to 256 CPUs on Linux OSes, optimizing performance on high-end hardware.
- FIX Antenna Python Enhancements:
- Added to_json and from_json methods for FixMessage objects, facilitating easy JSON conversion.
- Introduced the ability to set up custom SSL configurations, offering enhanced security customization.
Changed the UDP auxiliary Port to a number greater than 10,000.
- Eliminated the need in the deprecated libnsl library, simplifying installations and reducing potential compatibility issues.
- Enhanced the initialization process to allow FIX Antenna to start without an immediate network connection, increasing robustness and flexibility.
- Improved CSRefCounterPtr class by modifying the dereference operator (operator*) to return T& instead of T const& for const auto-pointers.
- Removed B2BITS_StringUtils.h, B2BITS_MethodsPtr.h, and B2BITS_Bind.h from the FIX Antenna API.
Fixed Bugs
Improved the handling of cron expressions, fixing issues with the last day of the month and expanding support for various formats.
- Resolved an issue where messages containing custom tags would incorrectly convert without raising an error. With this fix, any message with an unknown custom tag will now be properly rejected, preventing erroneous data processing.
- Fixed the issue when the AggressiveAsyncSpinWaitTimeUs property was defined using the system time when the SocketOpPriority was set to the 'AGGRESSIVE_SEND_ASYNC' value.
FIX Antenna 2.32.1
FIX Antenna 2.32.1 is released on .
New Features and Improvements
- FIX Antenna C++ now supports custom values in the Tag 8-BeginString field. This feature allows customers to utilize specific, non-standard values for BeginString, catering to their unique needs, e.g., integrate with trading partners who use custom BeginString values or comply with exchange requirements. Please refer to the How to Use a Custom Value for Tag 8-BeginString in FIX Antenna C++ user guide for more details.
FIX Antenna 2.32.0
FIX Antenna 2.32.0 is released on .
New Features and Improvements
- FIX Antenna C++ now enables clients to securely access their Username and Password credentials stored in trusted third-party systems such as vaults, databases, and more. Clients can retrieve these credentials using customized scripts according to their needs and incorporate additional actions related to the login process within the same script.
- The new session parameter is added: InvalidLogonStrategy which defines how Acceptor and Initiator respond to invalid Logon messages.
- Added a thread-safe version of the FIXMessage::toRaw() method that uses an external buffer for serialization.
Fixed Bugs
- Fixed bug when FIX Antenna C++ can handle incorrectly messages with XML field length bigger than actual data size.
- Fixed the issue when events from the old schedule could occur unexpectedly after the Scheduler replacement.
- Send logout in case a message with the wrong BeginString is received during the session.
- Fixed bug when there was no heartbeat interval reset on an invalid message.
- Fixed the issue when the engine didn't populate session level messages with all required tags specified by the dictionary.
- Fixed random affinity assignment of FIX timer and DBL threads if no explicit affinity was defined.
FIX Antenna 2.31.0
FIX Antenna 2.31.0 is released on .
New Features and Improvements
API Changes
The new FixEngine::cancelScheduledSessionRestart() API function to cancel the session restart scheduled using the onSessionTerminated() callback.
- The new FixEngine::getLicenseExpirationDate() API function to get the license expiration date.
- The new API functions were added to FixDictionary2::Protocol class to get the tag by name and name by tag.
Documentation Changes
- The description of the Log.Device property was improved.
- The information on the How to configure FIX messages validation page was updated:
- The description of the AllowZeroNumInGroup property was added to the Engine Level properties section.
- The description of the Session.<SenderId>/<TargetId>.Validation.AllowZeroNumInGroup property was added to the Session Level properties section.
- The How to configure Monitoring WebUI for FIX Antenna-based applications page was added.
- The description of the new IncludeProperties parameter was added.
- The Configure throttling of incoming messages section was added to the How to configure FIX messages throttling in FIX Antenna C++ page.
Other Changes
- FIX Antenna C++ is built with OpenSSL 3.0.5.
- FIXAntenna C++ API is C++17 compliant.
Fixed Bugs
- Fixed the issue when the value of the TargetLocationID was not applied for the session.
- Fixed the issue when FIX Antenna C++ generated Reject with incorrect SessionRejectReason for FIX messages containing tag value(s) with <SOH> symbol.
- Fixed the issue when FIX Antenna C++ generated Reject with incorrect SessionRejectReason for FIX messages containing undefined tag(s).
- Fixed the issue when FIX Antenna C++ generated Reject with incorrect SessionRejectReason for FIX messages containing out-of-boundaries tag value(s).
- Fixed the issue when FIX Antenna C++ generated Reject with an unclear description in 58 tag for FIX messages containing repeating group(s) with incorrect NumInGroup count.
- Fixed the issue when FIX Antenna C++ could not be started when the LogDirectory property was specified with the Directory Junction link.
- Fixed issue when the createSession() API function ignored the value of the ParserVersion property set in the engine.properties file for the session and default session.
- Fixed the issue when the Session::disconnectSync() API function call caused the application's admin thread to stop responding to any further admin commands.
FIX Antenna 2.30.1
FIX Antenna 2.30.1 is released on .
FIX Antenna 2.30.1 is a customer-demanded release providing backward compatible repeating groups parser.
FIX Antenna 2.30.0
FIX Antenna 2.30.0 is released on .
New Features and Improvements
Logging Improvements
FIX Protocol Changes
API Changes
- FIX message API is extended with traversal capabilities that allow fast iteration over the message.
Other Changes
- MOEX ASTS Market Data Adapter was decommissioned.
- The obsolete DefaultApplicationProtocol property was removed.
- Documentation in the FIX Antenna Python package was improved.
- The CyclicSwitchBackupConnection parameter was renamed to EnableCyclicSwitchBackupConnection.
- Removed deprecated property Monitoring.ListenPort from the FIX Antenna C++ headers.
- The new MaximumParsersAllowed property was added.
Fixed Bugs
- Fixed the issue with replacing the standard FIXT parser with a custom FIXT parser.
- Fixed the issue with the unexpected SequenceReset(4) message when the 789 tag was present in the Logon message.
- Fixed the issue when CRON expressions parser could not accept numbers starting from '0' such as '08' or '09'.
- Fixed the issue when the Admin session was started with logs persistence enabled by default.
FIX Antenna 2.29.0
FIX Antenna 2.29.0 is released on .
New features and improvements
Logging improvements
API changes
- The old spelling is removed from the API: The validation option 'verifyReperatingGroupBounds' is no longer available via API, the verifyRepeatingGroupBounds should be used instead. The getVerifyReperatingGroupBounds method is no longer available via API, the getVerifyRepeatingGroupBounds'should be used instead.
Fixed bugs
Fixed the compatibility issue with scheduling the session events in FIXEdge and running the child process.
Fixed the bug due to which a session couldn't send a message during the Wait For Confirm Logout statement even when enableMessageRejecting = **false.
Fixed issue when FIX Antenna stops receiving messages after receiving a message with a seq number lower than expected.
Fixed the issue when FIX Antenna C++ and FIXEdge crashed on user-modified dictionaries.
- Fixed the application crash when the tag 1128 is not set for SMH in the dictionary but the tag was present in a FIX message.
Fixed the possible infinite loop while handling the incorrect ResendRequest message.
- Fixed the issue when FIXEdge didn't indicate the bound port for the session (Win specific). Removed usage of SO_REUSEADDR socket option on Windows to make behavior the same on Windows and Linux in case if listening port is already in use.
Fixed the issue when the VerifyReperatingGroupBounds parameter was ignored in some cases. The alias 'VerifyRepeatingGroupBounds' for the parameter 'VerifyReperatingGroupBounds'(spelling fix) was added.
Fixed the issue when FIXEdge C++ wrote incorrect tag 8 in storage if the FIX protocol version is FIX5.0.
- Fixed the issue when validation of repeating groups could not be disabled.
- Fixed the issue when there was an incorrect SessionRejectReason when the tag position was not correct: 373=2 instead of 373=14.
- Fixed the issue when the default engine properties file contained incorrect ForceReconnect property.
FIX Antenna 2.28.0
FIX Antenna 2.28.0 is released on .
The most important features of this release are the dedicated listen ports for acceptor sessions and the ability to use QuickFIX formatted dictionaries.
Dedicated listen ports allow the user to restrict an incoming connection to one dedicated port (regardless of whether it is secured or not) for a session via the engine properties file, and to a number of secured or unsecured ports within the API.
QuickFIX formatted dictionaries can now be used the same way as FixAntenna formatted dictionaries.
Starting with this release, build configurations are reduced to Visual Studio 2015 x64, RedHat/Centos 7 gcc4.8, Redhat/Centos 7 gcc5.2, Ubuntu gcc6.1
Features and Improvements
API improvements
Logging improvements
Fixed bugs
FIX Protocol specifications updates
Documentation
FIX Antenna 2.27.1
FIX Antenna 2.27.1 is released on .
The major features of this release are the Scheduler component and flexible affinity mask setup, see below. The scheduler component allows users to build and execute flexibly defined schedules and override actions execution if required, see the documentation
This is the last release that supports RHEL / Centos 6 and Visual Studio compilers prior to Visual Studio 2015. So, please be informed that RHEL 6 configurations along with Visual Studio prior to 2015 will be discontinued starting the next release. Windows configurations will be reduced to only one - Visual studio 2015 in particular since starting 2015 studio ABI compatibility is maintained across compilers versions, So the library built with 2015 studio can be used with 2015/2017/2019. Linux configurations will be reduced to only three: RHEL 7 gcc4.8, RHEL 7 gcc5.2, Ubuntu gcc6.1
Breaking changes
(SD4906754) Port accepted the connection is passed to the public API method:
virtual bool onIncomingConnection( const FIXMessage& logonMsg, const IPAddr& remoteAddr, int remotePort, int localPort )
B2BITS_Events.h:
The following methods signatures have been changed:
B2BITS_Events.hNewIncomingConnection( const std::string& address, int port ); NewIncomingConnectionError( const std::string& address, int port, const std::string& msg ); SessionLogonError( const SessionId& sessionId, const std::string& address, int port, const std::string& aReason ); SessionLogonWarning(const SessionId& sessionId, const std::string& address, int port, const std::string& aReason); SessionWasRejected( const SessionId& sessionId, const std::string& address, int port, const std::string& aReason );
with
B2BITS_Events.hNewIncomingConnection( const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort ); NewIncomingConnectionError( const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& msg ); SessionLogonError( const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason ); SessionLogonWarning(const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason); SessionWasRejected( const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason );
Since the methods signatures were changed, user's application modificat