Sunday, 23 August 2015

Fix8 version 1.3.4 released!

It's been a while but here is the latest maintenance update for Fix8 Open Source. It addresses a number of important bugs. Thanks to all who have contributed to making the framework increasingly mature and stable

Download here.

For new features and enhancements, see Fix8Pro.

Summary of changes

  • Fixed Jira tickets - FX-511, FX-490, FX-491, FX-480, FX-470, FX-336, FX-525, FX-524, FX-523, FX-520, FX-516, FX-527
  • Client logout crashes FIX server
  • SessionWrapper needs to be cleaned up in the destructor
  • Fixed Seqedit reports corrupted persister index
  • Fixed compile errors on OSX
  • Fixed Provide hook in Session to modify header before sending
  • ReliableClientSession crash when connection failed
  • Fixed Crash on sending cloned message
  • Added Provide optional improved checksum calculation
  • Added Provide Consolemenu method to remove msg from list and return to application
  • Fixed Replace get_value<> with stoi, stoul, stof, etc
  • Added Provide non-const header and trailer accessors
  • Fixed With f8config installed in system includes, #defines causes namespace pollution
  • Fixed Test harness improvements, testing

Wednesday, 22 April 2015

Fix8 version 1.3.3 released!

This maintenance update for Fix8 Open Source addresses a number of important bugs. Download here.

For new features and enhancements, see Fix8Pro.

Summary of changes

  • Fixed Jira tickets - FX-321, FX-319, FX-336, FX-480
  • Fixed Provide capability to build stock FIX libraries
  • Fixed seqedit Poco linkage prolem
  • Added CMake find_package support
  • Fixed ssout_xxxx() macros can be used outside FIX8 namespace
  • Fixed Schedule::test bug fix for calculating "today" in local time zone
  • Fixed support application framework to manage all purmutations of process_model and mode
  • Fixed issue in MessageBase::clear
  • Fixed XML parser does not support CDATA values
  • Fixed ReliableClientSession crash when connection failed
  • Fixed Client logout crashes FIX server

Friday, 2 January 2015

Fix8 version 1.3.2 released!

This maintenance update for Fix8 Open Source is our first for the new year and addresses a number of important bugs. Download here.

For new features and enhancements, see Fix8Pro.


Summary of changes


  • Fixed Jira tickets - FX-394,FX-385,FX-379,FX-372,FX-371,FX-355,FX-353,FX-350, 
  • FX-321,FX-328, FX-326, FX-307, FX-332, FX-333, FX-369, FX-354, FX-323
  • Fixed schedule is_valid() returns true even schedule is invalid under win
  • Fixed Fix8 has empty timestamps under windows
  • Fixed client session reconnect failure after previous abnormal session disconnect
  • Fixed unhandled message and reject problems
  • Fixed invalid tag in test log of Win build
  • Fixed Tickval::todouble returning 0
  • Fixed provide capability to build stock FIX libraries
  • Fixed improve VS2013 build wth stock FIX schemas
  • Fixed replace time/date handling (Tickval) with C++11 std::chrono
  • Fixed ReliableClientSession crash when socket connection refused
  • Fixed Fix8 test harness (client) improvements
  • Fixed provide support for longname field lookup
  • Fixed add git revision & fix8 version reporting to log during fix8 start
  • Fixed crashing in hftest of Win build
  • Fixed on exit when using std::thread, logger reports "resource deadlock avoided"
  • Fixed copy_legal causes segfault on windows
  • Fixed f8test client and server core dumps on exit when compiled with stdthread

Sunday, 24 August 2014

Fix8 version 1.3.1 released!

This patch release fixes the windows build issues in 1.3.0.

Download here.

1. Windows build issue

Minor changes to fix build issues with Windows and 1.3.0


2. Issues fixed

Fixed Jira tickets FX-325


3. Summary of changes

  • 1.3 build bug under Win

Monday, 18 August 2014

Fix8 version 1.3.0 released

This minor release further extends and improves on our stable 1.2 version. Additional features and enhancements have been added in response to feedback from many users. Many thanks to those who have provided feedback and assistance. 

There have been some changes to the Fix8 API. Some users will need to make changes to their implementations to work with this release. The example applications supplied with Fix8 have been updated to reflect these changes.

Download here.


1. Pre-encoding support

Fix8 now supports pre-encoding messages on the application thread. This further reduces actual encode and transmission latency for applications that want to improve execution performance. For a typical NewOrderSingle message this will reduce encode latency by about %50. 


2. Permit unknown field pass-through with permissive mode

Many applications like message hubs and order routers need to pass unknown fields through unmolested. Fix8 now supports this as an extension of permissive mode. 


3. Major improvements to repeating groups

Changes to the way nested repeating group objects are constructed will significantly reduce encode and decode latencies. The Fix8 decoder will now only create repeating group objects for groups that are present. 


4. Long message and field name support

Fix8 now supports the ability to lookup compiler generated message and field data structures from their verbose/long name. These names are defined in the xml schema.


5. std::thread support

For C++11 compatibility, Fix8 now supports std::thread. This will also improve portability. 


6. Stream based log targets, XML logger

We've added support for a std::ostream style logger. This logger is available for the global log target, session and connection targets, as well as your own custom log target. This logger also now supports log levels which can be configured for your session. Log messages which are filtered from a level are taken off the execution path. Fix8 now also supports an XML log output format for applications that need XML downstream.


7. Bug fixes, XML improvements, C++11 improvements

We've made lots of improvements to the XML engine, C++11 optimisations and numerous bug fixes - many that were reported by our users. 


8. Issues fixed

Fixed Jira tickets FX-309,FX-308,FX-307,FX-306,FX-305,FX-304,FX-303,FX-302,FX-301,FX-300,FX-299,FX-298,FX-296,FX-295,FX-294,FX-293,FX-292,FX-291,FX-290,FX-289,FX-288,FX-287,FX-286,FX-236,FX-310,FX-311,FX-312,FX-314,FX-315,FX-316,FX-297,FX-254,FX-317,FX-318,FX-319,FX-41

Summary of changes

  • Provide XML logger
  • Overhaul logging system
    • allow user to specify field ordering as well as which fields to log
    • overhaul logging singleton
    • integrate stream based level specific logging targets
    • new targets - global, session and connection:
    • support logging levels
    • allow user to specify field delimiter inter field, e.g. a|b|c and field enclosing e.g. [a][b][c]
    • support no-op style expressions for not set logging levels
    • add additional fields: location, sstart (time since start in secs), mstart (time since start in msecs)
  • Facilitate "pass-through" fields which are not mentioned in the Dictionary
  • Fixed MAGIC_NUM expression can cause problems
  • Migrate Fix8 to C++11
  • Fixed XML parser does not support CDATA values
  • Support package and configuration string queries
  • Fixed Loggers should support log level
  • Allow shallow message construction
  • Provide Message::move_legal
  • Fixed gcc 4.7.2 linux build broken
  • Remove main Nuget package link dependency to gtest
  • Provide flag settings to control XML parser
  • Replace FIX8::dthread with std::thread
  • Fixed Compilation error on clean checkout 14/07/10
  • Fixed Protocol Logger Thread is not destroyed after deleting session
  • Fixed Wrong Timer implementation
  • RAII std::ostream Singleton log target
  • Fixed GlobalLogger::create_instance needs refactoring
  • Fixed Precision was altered unintentionally
  • Support flattened field query in messages
  • Allow SingleLogger to accept user defined LogFlags
  • Add mini-timestamp flag to logger
  • Fixed Update on 14-06-24 introduced build warnings on win
  • Fix variadic templates compile error under VS2013
  • Provide programmatic/generic method of loading and using Fix8 metadata
  • Permit lookup of fields and messages by their long name.
  • Xml improvements: find_child, GetLocString
  • Fixed Field equivalence operators missing
  • Option to compiler to generate router stubs without defaults
  • Fixed Session state does not changed when connection goes down.
  • Allow the option to the getters from a fix message those values that are fixed point values to be stored in float
  • Make dist, rpmbuild and pro build broken
  • Make nuget package generation files (*.autopkg) to be version independent

Monday, 21 July 2014

DIAMOND CIRCLE and Fix8MT join forces to develop digital currency exchange trading technology for Bitcoin

Sydney, Brisbane, 21 July, 2014 – Fix8 Market Technologies Pty Ltd (Fix8MT) and DIAMOND CIRCLE Pty Ltd today jointly announced the founding of a partnership to develop a digital currency trading platform around Fix8, the fastest open source C++ FIX (Financial Information Exchange) Protocol Framework.  This partnership aims to develop a robust high performance execution platform using the next generation open source FIX Framework as well as other new technologies to be announced.


David Dight, Sydney, CEO of Fix8 Market Technologies, stated “I am really thrilled to have a new partner in this exciting domain of digital currency service provision. Together with DIAMOND CIRCLE we will provide new opportunities for Bitcoin trading. We believe the time is right for a fully fledged FIX enabled execution platform for digital currencies and Fix8 is in our view the right choice for DIAMOND CIRCLE”   


Stephen Rowlison, Brisbane, CEO of DIAMOND CIRCLE said, ”Diamond Circle continues to be a first prime mover in the crypto-currency digital payments having adopted FIX offers further competitive advantage.  With FIX we can serve the needs of investment banks, brokers and major exchanges. We have had a relationship with the management of Fix8MT for over 30 years and of course it’s super cool to be working with David again on cutting edge advancements in the financial sector.








About Fix8 Open source FIX Framework
Fix8 is a community supported open source FIX framework. It is popular among low-latency FIX users.  According to the official benchmark result, Fix8’s average encoding/decoding speed is 2.1/3.2 μs/msg (microseconds/msg).  Fix8 supports all widely used FIX versions - 4.X to 5.X - as well as FIXT1.X. Custom FIX variants are also easily supported and multiple FIX variants can be used in the same application. Fix8 runs on Linux, OSX and Windows and supports IA32, x86-64, Itanium, PowerPC and ARMv7 architectures.
The Fix8 project is backed by extensive product documentation, FAQ, issue reporting and tracking system (JIRA) and Wiki guides. The project’s discussion forums provide a platform for community support and are actively monitored by the product developers and power users.


Fix8 is a member of FIX Trading Community, formerly FIX Protocol Limited (FPL). FTC is the non-profit industry association responsible for defining, managing and promoting increased usage of FIX as an enabler for electronic trading.






About Fix8 Market Technologies
Fix8 Market Technologies (Fix8MT) develops and maintains the Fix8 open source Framework, and has developers in Australia, China and the Russian Federation. Fix8MT is responsible for providing and managing additional support and consultancy services, and works closely with the Fix8 open source community to grow commercial support services through 3rd party ISVs.






About Diamond Circle
DIAMOND CIRCLE is a payment network for both fiat, crypto-currency storage and exchange. We facilitate instant payments in a safe and secure manner globally.  We provide products and services that encourage easy adoption for consumers and merchants, including integration with traditional currencies from many countries on one debit card we call it “OneWallet”, we are the new payments player incorporating a new generation of possibilities which allows the freedom, strength and community development that is innovative, compliant and independently sovereign.  DIAMOND CIRCLE empowers every individual to be responsible for their own money and revolutionises the Internet as a community.




Wednesday, 4 June 2014

Fix8 version 1.2.0 released

This release builds on our stable 1.1 version and adds some important improvements that many users have been asking for. This release also marks the fork of Fix8Pro, our commercially supported version.

Download here.


1. C++11

Fix8 now requires C++11 compiler support. Fix8 will refuse to build without it! It was time for us to make this move. Most modern compilers support the new language extensions.


2. Windows NuGet package Support

These packages are now available and will make building on windows with VS2013 much easier.


3. Multisession (client/server) support

Additional capability has been added to Fix8 to support operation in hub mode. This includes session and login scheduling. In our future release we will provide full FIX hub support which will leverage these features.


4. Default configuration settings

We've added a default configuration element which each session inherits by default. Individual sessions can then override these settings.


5. Issues fixed

Fixed Jira tickets  FX-278, FX-276, FX-275, FX-274, FX-273, FX-272, FX-271, FX-270, FX-269, FX-268, FX-267, FX-266, FX-265, FX-264, FX-263, FX-228, FX-261, FX-260, FX-259, FX-258, FX-257, FX-256, FX-253, FX-252, FX-251, FX-250, FX-249, FX-248, FX-247, FX-246, FX-245, FX-244, FX-243, FX-242, FX-241, FX-240, FX-239, FX-238, FX-237, FX-236, FX-235, FX-233, FX-232, FX-231, FX-230, FX-229, FX-282, FX-280, FX-279, FX-283FX-285, FX-176, FX-220, FX-195, FX-217

Summary of changes

  • Provide access to raw inbound and outbound FIX message text
  • Provide tabsize setting to customise fix printerUpdate wiki with instruction of building NuGet packages
  • Realm range not working as expected
  • Poco On Windows
  • Add a few helper methods to BaseEntry and BaseMsgEntry
  • Mandatory fields not propagating through compiler with FIXT
  • MarketDataRequest with certain fields throws exception invalid field
  • default_appl_ver_id (1137) applied if configured, regardless of FIX version
  • Example of how to subscribe to MarketData
  • Distinguish between invalid and unknown field exceptions in message
  • Replace StaticTable with std::map
  • Facilitate Fix8Pro and open source common build
  • Segfault in ~Session::Session/Session:stop
  • Create FIX8 NuGet package
  • Create a .net port of fix8
  • Upgrade bundled FastFlow from 2.0.2 to 2.0.4
  • Replace FIX8::f8_atomic with std::atomic
  • FX-242 Write Fix8 1.1 to 1.2 migration guide
  • Replace all the sizes from unsigned to size_t
  • OSX g++-4.2.1 on mac does not support -fno-var-tracking-assignments.
  • Invalid inbound acceptor SenderCompID ignored
  • Acceptor SenderCompID not configurable
  • Provide test example for multi-session support
  • Provide support for underlying FieldType introspection
  • Support optional CompID enforcement
  • Replace FIX8::scoped_ptr with std::unique_ptr
  • Client logs should be created with SessionID suffix
  • Restructure Session wrapper classes to support non-templated base classes
  • Allow user to set SO_KEEPALIVE option from config
  • Complete confluence documentation for 1.1.0 and 1.2.0 features
  • Provide support and management for multiple ServerInstances
  • Server support for predefined set of remote SenderCompIDs
  • Allow user to set SO_REUSEADDR option from config
  • Allow user to set SO_LINGER option from config
  • Support defaults section in Session xml configuration
  • FX-41 Replace FIX8::dthread with std::thread
  • Add option to FIX8::logger to suppress LF on logline
  • Windows build fails when configured w/o TBB
  • Linux End-of-Line Character not handled by Message::factory
  • hftest server exits when sending preloaded messages under windows
  • f8print will not decode f8test runs properly
  • Cmd line scripts do not like spaces in path when building fix8 under Windows
  • Move compilation to use precompiled header