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

Friday, 23 May 2014

Fix8MT announces the release of the Fix8Pro C++ FIX Framework.

Sydney, 23 May, 2014 – Fix8 Market Technologies Pty Ltd (Fix8MT). today announced the release of the next generation in C++ FIX Frameworks, Fix8Pro. Fix8Pro is based on Fix8, the popular open source C++ FIX (Financial Information Exchange) Protocol Framework. Fix8Pro is designed to bridge the gap between the open source community supported project and a fully supported commercial product. With many corporations looking for commercial support, Fix8MT has responded with a product which we believe addresses this need. Fix8MT is also pleased to announce that our partners will be offering Fix8Pro in their respective regions.


David Dight, CEO of Fix8 Market Technologies, stated “Fix8 has had an impressive response from the industry. However many companies have asked about a commercially supported version. We are now very happy to finally offer Fix8Pro and are very excited about our product roadmap and plans to grow Fix8Pro. We want to position Fix8Pro as the premium, affordable and performant C++ FIX library”.


Commenting on this product launch, Irfan Syed, Principal at FIXNOX, a partner of FIX8MT, said: “The release of Fix8Pro is a major milestone as now organisations deploying mission-critical FIX infrastructure on Fix8 have assurance of a solid product with SLA driven global support. This addresses a major concern of brokers, investment banks, stock exchanges, and buy-sides who require peace of mind that they can rely on the experts when in need.”


Kotaro Kondo, CEO of MultiWave, commented “We believe FIX technology has entered a new era - the protocol itself has been commoditized enough to accelerate the usage of an open source product, yet open source is not going to cover the continued demand from mission critical business where strong a SLA commitment is mandatory.  We believe that Fix8Pro will further expand the horizon of FIX protocol usage with dual offering of open source and commercial offerings.”  




fix8_Logo_RGB_pro1.png
About Fix8Pro C++ FIX Framework
Fix8Pro is a commercially supported C++ FIX framework based on the popular Fix8 open source project. 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 Fix8Pro is backed by extensive product documentation, FAQ, issue reporting and tracking system (JIRA) and Wiki guides. Fix8Pro provides an SLA offering solid support and production assurance. Fix8MT is also actively developing new product features to specifically address important functional improvements and capabilities our clients are asking us for.


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 Fix8Pro and the Fix8 open source Framework. Fix8MT has developers in Australia, China, Canada and the Russian Federation as well as partners in Australia, Japan and India. 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 FIXNOX
FIXNOX designs and implements world-class FIX Protocol messaging systems, infrastructure, and operations for its clients around the globe. Founded in 2012 with a mission to support standards-compliant and low latency FIX implementations, FIXNOX is also involved in various projects to bring next-generation FIX products to marketplace.




About MultiWave
MultiWave develops and maintains sophisticated trading / market data solutions for Japanese retail & institutional customers and gets frequently involved in FIX Protocol implementations and consulting work. MultiWave also has operations in Papua New Guinea since 2011 via its subsidiary, MultiWave PNG, which provides IT solutions to government, educational and business customers in the local market.

Wednesday, 9 April 2014

Fix8 development stream now C++11

We have made the move to C++11. From version 1.2.0 we will only build with C++11 support.

For those who want to try this out now, grab a copy or fork and clone from the fix8:dev branch on github!

Sunday, 6 April 2014

Fix8 version 1.1.0 released

This the first minor release since our GA release of Fix8! This release adds to and improves stability, reliability as well as adding new features. Thanks to all who have helped get us across the line today.


1. Redis and Memcached persisters

In preparation for our full managed resiliency we have implemented two popular memory caches as Fix8 persisters. Redis, in particular, offers built-in resiliency, replication and reliability. Fix8 servers can be configured to take advantage of these features straight away.


2. Win64 Support

Fix8 now builds and runs on Windows 64 bit.


3. Hub 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. Issues fixed

Fixed Jira tickets  FX-223, FX-222, FX-221, FX-219, FX-216, FX-214, FX-213, FX-212, FX-211, FX-209, FX-206, FX-205, FX-204, FX-200, FX-198, FX-193, FX-192, FX-191FX-189FX-187FX-185, FX-183, FX-180, FX-178, FX-177, FX-175, FX-184, FX-224FX-225, FX-226FX-227, FX-203FX-230

Summary of changes

  • Fixed Win64 build failed with seqnum mismatch
  • Fixed f8c compiler crashes if schema file not found
  • Fixed Logfile creation should handle new paths
  • Fixed Won't reconnect if exchange log session out.
  • Fixed Deadlock in retransmission behaviour
  • Fixed Session silently ignores no logger, no plogger and no persister errors
  • Fixed Speedup Win build
  • Fixed Make auto linking fix8 lib optional
  • Fixed Remove public static vars from generated code
  • Fixed hftest works incompletely under win32/64
  • Fixed Test fix8 with onload/SFC 10G cards
  • Fixed Reliable session fails to re-connect on connection errors
  • Fixed UTs build fails when running via make
  • Fixed Hang in FIXReader::sockRead
  • Fixed gcc 4.2 and greater supports -fno-var-tracking -fno-var-tracking-assignments
  • Fixed Complete build options for Pthread API
  • Fixed Non-standard XML attribute comment problem
  • Fixed update Windows Wiki (confluence) page
  • Fixed f8print will not decode f8test runs properly
  • Added global logger needs optional file and line attributes when logging
  • Added provide redis persister
  • Added malloc configuration defines to f8config.h
  • Added support for Session based BusinessMessageReject ('j')
  • Added support for Session login and logout time
  • Added make socket read buffering optional
  • Added expose FIX8::Session scheduler to user session class
  • Added support for Session Start time and End Time
  • Added message handling: allow non-const operations
  • Added mechanism to support ad-hoc message recycling
  • Added permit alternate source/header extensions when generating code
  • Added session state change event callback
  • Added generic access to key/value pair put() and get() in Persister
  • Added precompiled header to f8c generated files