/
FIX Antenna C/C++/.NET Release Notes

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.hB2BITS_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

  •  Built-in WebUI for FIX Antenna-based applications.

    FIX Antenna C++ now provides WebUI for FIX session monitoring and runtime control. Monitoring WebUI is implemented as a separate shared library. FIX Antenna-based application must be linked to this library to use monitoring WebUI.

  •  The ability to configure a session or a group of settings in a separate property file.

    FIX Antenna C++ now provides the ability to configure each session or group of settings (e.g., validation) in separate properties files. The multiple-level nesting is supported.

    To use this feature the optional IncludeProperties parameter must be specified with the list of paths to the auxiliary properties files to be included in the configuration file.

  •  The ability to throttle incoming messages.

    FIX Antenna C++ now provides the ability to configure a throttler to control incoming messages' speed.

  •  Creation of the new log directory for the sessions logs at process start.

    FIX Antenna C++ now tries to create a new log directory for the session if the LogDirectory property was specified with the non-existent path.

API Changes

Documentation Changes

Other Changes

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

  •  Throttling of outgoing messages was added.

    FIX Antenna C++ now provides the ability to configure a throttler to control the outgoing messages rate per time window.

  •  The mechanism for handling insufficient disk space was added.

    FIX Antenna C++ now provides the ability to configure a mechanism for handling insufficient disk space. On session creation or switching to backup/primary connection, FIX Antenna C++ will automatically check free space on the disk and if its amount is less than the value of Persistents.MinDiskSpace property, then FIX Antenna C++ will not start a new session or will not switch to backup/primary connection. Also, FIX Antenna C++ will terminate the session if there is no free disk space left on the session's log device.

  •  The ability to configure log storage directory for each FIX session was added.

    FIX Antenna C++ now provides the ability to specify different log storage directories for each FIX session via the LogDirectory property.  LogDirectory can also be specified for the backup connection of a particular session.

  •  FIX Antenna doesn't create (reuses) new log files if there are no business messages in the logs.

    FIX Antenna C++ now reuses the log file if there are no business messages in it.

    Please refer to the LogDirectory page for more details.

  •   Improved PersistentMM storage load speed on FIX session start.

    The new method of maintaining the log files in the PersistentMM storage for FIX sessions was added. It can be configured via NewFeatures.EnableOptimizedPersistentMMIndex property.

    This property enables the method of maintaining the start-up of FIX sessions with log files in the PersistentMM storage marked with the 'correctly stored' flag. If this property is set to 'true' FIXEdge will skip the check of the 'stored correctly' log files in order to improve performance.

  •  The ability to load new FIX dictionaries in runtime was added.

    The FixEngine::loadProtocolFile method now returns a list of IDs and FIX versions of newly created dictionaries for later use in creating protocols and sessions.

    It is now possible to configure the maximum amount of parsers allowed in FIX Antenna C++ using the MaximumParsersAllowed parameter.

  •  The new AGGRESSIVE_SEND_ASYNC socket operation priority mode was added.

    In this modeFIX Antenna C++ uses a dedicated thread for a session and sends all outgoing messages to the queue without trying to send them to the socket first. This mode aims to reduce the time spent on executing the session:put method and reduce the impact of slow consumers on the application by parallelizing the socket operations by default.

    The new properties were added: 

  •  Filtering of zero-sized repeating groups in outgoing FIX messages was implemented.

    This behavior can be configured via Validation.AllowZeroNumInGroup property.

Logging Improvements

  •  Improved logging of applied version of the parser.

    The applied parser is logged as a general parameter on session start-up in the following format:

    applied ParserVersion = [UNIQUE_PARSER_NAME@][FIXT_PROTOCOL1:]APP_PROTOCOL1[,APP_PROTOCOL2...].

    Please refer to the ParserVersion page for more details.

  •  Improved logging on DEBUG and WARN levels.

    On the DEBUG level - The StorageCreationTime property was updated.

    On the WARN level - New log message storage was created.

FIX Protocol Changes

  •  The 'FIXLatest' application version of FIX protocol was supported.
    • New value 10 = FIXLatest for 1128 and 1137 tags was added.
    • A new dictionary fixdiclatest.xml was introduced.
    • FIXT11 standard dictionary was updated to support the FIXLatest version.
    • The FIX Client Simulator sample was updated to support the FIXLatest application version.
  •  Validation of 1137 and 1408 tags in incoming Logon messages was added.
    • Support of the CstmApplVerID (1129) tag when serializing/parsing FIX messages was implemented to identify the FIX message dialect when the custom protocol dialect in the parser is used.
    • Support of the DefaultCstmApplVerID(1408) tag when serializing/parsing Logon messages was implemented to identify the default FIX message dialect when the custom protocol dialect is used for the FIX session.

API Changes

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

  •  Introduced additional affinity properties

    Introduced additional affinity properties for some previously not covered by affinity mask threads, and improved thread naming.

    Please refer to The List of FIX Antenna spawned threads page for more details.

  •  Changed the strategy for handling validation and parsing errors
    • The strategy for handling validation errors as well as not fatal parsing errors is improved.
    • The fatal parsing errors that prevent the work from proceeding are reported immediately when occur.

    Please refer to the Explanation of log messages about validation and parsing errors page for more details.

  •  Improved configurable validation of tag numbers

    A range of user-defined fields now can be configured via the MaxTagNumberForValidation property of the engine.properties file.

  •  Implemented listen port configuration for administrative FIX session
    • Added the ability to set a specific port for the administrative session.
    • Supported SSL connection. 

    Please refer to Configure Administrative sessions with dedicated ports page for more details.

  •  New Callback OnOutgoingSessionLevelRejectEvent was implemented

    When the FIX Antenna C++ sent a session-level Reject message (MsgType=3) then the Engine:Application::onOutgoingSessionLevelRejectEvent method is called.

    Please refer to the Element OnOutgoingSessionLevelRejectEvent page for more details.

  •  Implemented support of multiple hosts by administrative session SourceIPAddress parameter
  •  .net wrapper version was moved to Framework 4.8
    • FIXAntenna .net was built against Framework 4.8
    • FIXAntenna_net4.0.dll and FIXAntenna_net4.0.xml in the package were renamed to FIXAntenna_net4.8.dll and FIXAntenna_net4.8.xml
  •  Updated the contact info in license error messages

    Only the email (sales@b2bits.com) is mentioned as the contact information in case of license issues (e.g. expired license, invalid license).

  •  FixAntenna uses OpenSSL v. 1.1.1h and supports TLS v. 1.3.

    The application uses OpenSSL v. 1.1.1h and supports TLS v. 1.3 (the SSLProtocols property).

Logging improvements

  •  Implemented logging of notification about parameter СonfirmingLogonStrategy=RejectLogout

    When the value of parameter ConfirmingLogonStrategy parameter is set to RejectLogout, there is a notification about this in the logs with INFO level: "Option ConfirmingLogonStrategy is set to RejectLogout. The Logout messages received in response to Logon will be treated as an unexpected behavior". 

    Please refer to the ConfirmingLogonStrategy page for more details.

  •  Improved logging of parameters of primary and backup connections of FIX session
    • If the value of the Debug.LogSessionExtraParameters property is false, then only general session parameters of primary and backup connections (Host, Port, HBI) are printed to the log.
    • If the value of the Debug.LogSessionExtraParameters property is true, then general and extra session parameters of primary and backup connections are printed to the log.
    • Backup session parameters are printed to the log when the function connect is called.
    • If the value of the Debug.LogSessionExtraParameters property is true and the primary and backup extra parameters are the same, then the "The backup session has the same parameters as the primary session" line is printed to the log.

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

  •  The ability to load FIX dictionaries in QuickFIX format.

    FixAntenna C++ now supports QuickFix dictionaries natively.

    Please refer to the How to manage a list of dictionaries in FIXAntenna-based applications page.

  •  Support of a custom symbol instead of SOH.

    Added the new tagsDelimiter session parameter.
    You can configure this parameter through SessionExtraParameters and through the engine.properties file. In order to set the parameter through the config file, you can use a symbol or a hex-code, for example:

    • |
    • ^
    • 0xAD
    • 0xF5

    Make sure you use an allowed value. Check the table. You can also call the static function FAProperties::checkTagsDelimiterValue.
    The default value for tagsDelimiter parameter is 0x01 (SOH).

  •  Dedicated listen port for FIX acceptor sessions

    The listening ports that can be defined per acceptor session. The port is opened for listening only when the session is ready to accept connection. It's possible to have several sessions on the same port as long as SSL configurations match.

  •  Add an option 'ResetSeqNumFromFirstLogon' to reset sequence numbers with values taken from the first logon message

    A new option ResetSeqNumFromFirstLogon was added that allows the engine to handle sequence numbers at logon without Resend Requests.

    It can be configured with its own cron-based schedule or using an existing session schedule.

  •  Add an option 'ResetSeqNumOnNonGracefulTermination' to reset sequence numbers upon non-graceful termination

    A new property, ResetSeqNumOnNonGracefulTermination, was added that allows the session to reset local sequences to 1/1 upon a connection error or a failed Logon/Logout time frame check.

  •  Add an option 'ConfirmingLogonStrategy' to control behavior when a logout is received instead of a logon
    Added the ConfirmingLogonStrategy session parameter. The list of strategies can be found here.
  •  Set the default value for DuplicateResendRequestLimit to 2
    Set the recommended value of DuplicateResendRequestLimit = 2 to default in engine.properties . This option allows the FIX Engine to ignore duplicate resend request and respond to multiple similar resend request messages only once. See DuplicateResendRequestLimit for details.
  •  ConnectToGateway sample now supports scheduling
    The ConnectToGateway sample was updated to support session scheduling with sequence reset and custom logons.
  •  FIX Client Simulator sample updated with new features from FIX Client Simulator release 2.28.0

    The details can be found there FIX Client Simulator v.2.28.0 release notes

  •  [.NET] Add the possibility to turn off sending back messages in EchoServer

    The echo server sample now has the ability to disable echo mode and just work as a FIX receiver.

    This can be configured using the EchoMode property in the engine.properties file.

    EchoMode is set to 'true' by default.

  •  Upgrade the FA .NET EchoServer sample
    The EnableAutoSessionCreation property was added to the .net EchoServer sample that enables starting pre-configured sessions automatically at start-up.
  •  Support schedule assignment in the EchoServer sample
    EchoServer now supports starting/stopping sessions by schedule. Initiator sessions are supported too.

API improvements

  •  Add a custom login message to SessionExtraParameters
    A new customLogonMessage_ parameter was added to the session configuration parameters. It is available through API only.
  •  Add an API to pass a session's SessionBackupParameters to FixEngineSessionsController
    The support of SessionBackupParameters has been added to FixEngineSessionsController.

Logging improvements

  •  Improve message reject reason for invalid repeating group size

    Detection of invalid group tags with the wrong group size was added.

  •  License system improvement. Use INFO severity if 30 days remain.
    Previous message[WARN] <timestamp> <thread> [Engine] - The license for the '<company>' expires in 38 days. Please call +44 20 369-58-166 or contact us at SupportFIXAntenna@epam.com for further assistance.
    Current message[INFO] <timestamp> <thread> [Engine] - The license for the '<company>' expires in 38 days. Please call +44 20 369-58-166 or contact us at SupportFIXAntenna@epam.com for further assistance.
    [WARN] <timestamp> <thread> [Version] - The license for the '<company>' expires in 8 days. Please call +44 20 369-58-166 or contact us at SupportFIXAntenna@epam.com for further assistance.

Fixed bugs

  •  Incorrect number of next expected SeqNum when using Queue Strategy in FA

    Fixed the incorrect number of next expected SeqNum in logs when using Queue Strategy.

  •  Timeline file is missing in the package

    Added missing date_time_zonespec.csv to the FixAntenna C++ package.

  •  FIXT11 session was not initialized due to last message parsing error

    When using the FIXT1.1 protocol, a correct version of the session protocol is now used to validate storage on startup. This prevents occasional failures upon session initialization if the last message in the *.out storage does not contain the ApplVerID(1128) tag.

  •  A session stops and restarts if it is trying to send a session-level reject while the 373 tag does not have all the values in the dictionary

    Fixed a rare case when a session tries to reconnect after attempting to send a Session Level Reject(3) message that uses one of the following tags: 371, 372, 373, 1130, 1406, 1131, or contains a value that is not presented in the dictionary, and validation is enabled.

  •  EchoServer: user can establish a session during a dayoff period

    EchoServer has been completely reworked to provide actual examples of API usage. EchoServer now has an option to disable automatic startup for sessions with configured schedules. If the property "StartSessionsWithSchedule" set to "true", configured sessions will be started on sample execution regardless of the configured schedule. If the property "StartSessionsWithSchedule" is set to "false" or not set at all, configured sessions will be started on sample execution only if a session has no configured schedule.

  •  FA does not close a session if tag 789 in an incoming logon is higher than expected

    Fixed the case when a FIX session does not react correctly when the NextExpectedSeqNum(789) tag in an incoming Logon message has a value higher than the sequence number that is next to be assigned. Now, a Logout message will be sent in a scenario like this, as described in the FIX specification.

  •  Incorrect count of the repeating group in the error message if the count of entry is zero

    Fixed the detection of the invalid number of entries in repeating groups. This occurs when there is no entry at all.

  •  The property AllowZeroNumInGroup doesn't work in FA
    Fixed the AllowZeroNumInGroup property. It allows zero-sized repeating groups in incoming messages when set to true.
  •  Rename "fix.crush.dmp" to "fix.crash.dmp"
    Renamed the crash dump file from fix.crush.dmp to fix.crash.dmp for the Win32 platform.

FIX Protocol specifications updates

  •  FIXTRADING: New Extension Pack 258
    The FIX 5.0 SP2 dictionary has been updated with 258 Extension Packs.

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.h
    NewIncomingConnection( 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.h
    NewIncomingConnection( 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