Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Modern open source C++ FIX framework featuring complete schema customisation, high performance and fast development.

Merge pull request #78 from fix8/dev

Dev to Master, pre 1.1.0 v2
latest commit 273af5befc
David Dight dakka authored
Octocat-spinner-32 compiler FX-203, FX-195 April 06, 2014
Octocat-spinner-32 doc FX-195, updated doc for methods using doxygen March 31, 2014
Octocat-spinner-32 include Corrected doxygen typos April 06, 2014
Octocat-spinner-32 m4 Bug #FX-175: Completed build options for Pthread API January 12, 2014
Octocat-spinner-32 msvc added macro that defines what malloc system to use February 16, 2014
Octocat-spinner-32 runtime FX-203, FX-195 April 06, 2014
Octocat-spinner-32 schema FX-76, FX-93, FX-94, FX-95, FX-96, FX-97, FX-98, FX-99, FX-100, FX-101 October 13, 2013
Octocat-spinner-32 test FX-203, FX-195 April 06, 2014
Octocat-spinner-32 utests FX-204, FX-210, FX-211, FX-212, FX-213, FX-214, FX-180, FX-183, FX-18… February 22, 2014
Octocat-spinner-32 util added f8lib_prebuild project that copies 3rdparty libs to destination… February 11, 2014
Octocat-spinner-32 .autom4te.cfg FX-57,FX-58,FX-59,FX-60,FX-61,FX-62,FX-63 June 27, 2013
Octocat-spinner-32 .gitattributes added f8lib_prebuild project that copies 3rdparty libs to destination… February 11, 2014
Octocat-spinner-32 .gitignore updated gitignore December 05, 2013
Octocat-spinner-32 AUTHORS Fix8ified FX-140 November 28, 2013
Octocat-spinner-32 CNAME CNAME redirect April 22, 2012
Octocat-spinner-32 CONTRIBUTORS FX-204 February 12, 2014
Octocat-spinner-32 COPYING Fixed jira issues: FX-17, FX-19, FX-20, FX-21, FX-24, FX-26, FX-27; R… January 28, 2013
Octocat-spinner-32 ChangeLog FX-230 April 07, 2014
Octocat-spinner-32 INSTALL FX-195, updated doc for methods using doxygen March 31, 2014
Octocat-spinner-32 LICENSE FX-139 Make includes relative to project root December 01, 2013
Octocat-spinner-32 Makefile.am FX-191 March 21, 2014
Octocat-spinner-32 NEWS Updated more files for move to org. December 05, 2013
Octocat-spinner-32 README FX-203, FX-195 April 07, 2014
Octocat-spinner-32 README.md FX-203, FX-195 April 07, 2014
Octocat-spinner-32 bootstrap Added automake/autoconf October 31, 2010
Octocat-spinner-32 configure FX-203, FX-195 April 06, 2014
Octocat-spinner-32 configure.ac FX-203, FX-195 April 06, 2014
Octocat-spinner-32 fix8.spec.in Tidyups for 1.0.0 January 14, 2014
Octocat-spinner-32 version.sh FX-223, FX-222, FX-221, FX-216, FX-162 March 19, 2014
README.md

Fix8 Open Source C++ FIX Engine

A modern open source C++ FIX framework featuring complete schema driven customisation, high performance and fast application development.

The system is comprised of a compiler for generating C++ message and field encoders, decoders and instantiation tables; a runtime library to support the generated code and framework; and a set of complete client/server test applications.

Features

  • Fix8 helps you get your FIX protocol client or server up and running quickly. Using one of the standard FIX schemas you can have a FIX client or server up and running in next to no time.

  • Statically compile your FIX xml schema and quickly build your FIX application on top. If you need to add customised messages or fields, simply update the schema and recompile.

  • Fix8 is the fastest C++ Open Source FIX framework. Our testing shows that Fix8 is on average 68% faster encoding/decoding the same message than Quickfix. See Performance to see how we substantiate this shameless bragging.

  • Fix8 supports standard FIX4.X to FIX5.X and FIXT1.X. If you have a custom FIX variant Fix8 can use that too. New FIX versions will be supported.

  • Fix8 offers message recycling and a meta-data aware test harness. Incorporates lock free queues, atomics and many other modern techniques.

  • Fix8 contains a built-in unit test framework that's being continually revised and extended. Fix8 also has a metadata driven test harness that can be scripted to support captured or canned data playback.

  • Fix8 is a complete C++ FIX framework, with client/server session and connection classes (including SSL); support for the standard FIX field types; FIX printer, async logger, async message persister and XML configuration classes.

  • Leverage standard components. Fix8 optionally uses industry recognised components for many important functions, including Poco, TBB, Redis, Memcached, BerkeleyDB, Fastflow, Google Test, Google Performance Tools, Doxygen and more. We didn't reinvent the wheel.

  • Fix8 statically supports nested components and groups to any depth. The Fix8 compiler and runtime library takes the pain out of using repeating groups.

  • Fix8 applications are fast. On production level hardware, client NewOrderSingle encode latency is now 2.1us, and ExecutionReport decode 3.2us. Without the framework overhead, NewOrderSingle encode latency is 1.4us. This is being continually improved.

  • Fix8 has been designed to be extended, customised or enhanced. If you have special requirements, Fix8 provides a flexible platform to develop your application on.

  • Fix8 supports field and value domain validation, mandatory/optional field assertion, field ordering, well-formedness testing, retransmission and standard session semantics.

  • Fix8 runs under industry standard Linux on IA32, x86-64, Itanium, PowerPC and ARMv7. It also now runs on Windows and OSX. Other *NIX variants may work too.

Directory Layout

Directory Description
./ root directory with configure
m4/ additional m4 macros needed by configure
compiler/ the f8c compiler source
doc/ Fix8 documentation
doc/man manpages for Fix8 utilities
doc/html doxygen documentation (optionally generated when built)
include/ header files for the runtime library and compiler
include/ff/ header files for FastFlow
runtime/ runtime library source
util/ additional utilities source
msvc/ Microsoft Visual Studio project files
schema/ quickfix FIX xml schemas
test/ test applications client/server source
utests/ unit test applications

Documentation

See our Wiki for detailed help on using Fix8. Access to this documentation is free but a login is required. For our complete API Documentation see here. All the source code is self-documenting using doxygen.

External Dependencies (required)

Fix8 requires the following third-party software (header files and libraries) being installed to build properly:

Additional libraries are needed for building on Windows, see here.

Optional Dependencies

You can either choose the internally supplied Fastflow or use...

If you wish to use the built-in unit tests (recommended):

If you wish to use tcmalloc (recommended):

If you wish to build the html documentation, you will need:

If you wish to use Redis for message persistence:

If you wish to use libmemcached for message persistence:

If you wish to use BerkeleyDB for message persistence:

Building on Linux/UNIX

The build system is based on automake/autoconf/libtool. You must have libtool installed to build.

% tar xvzf 1.1.0.tar.gz
% cd fix8-1.1.0
% ./bootstrap
% ./configure
% make
% make install

If you have built the test cases, you can also run them as follows:

% make check

Building on OSX

You must have glibtool, autotools installed to build.

% tar xvzf 1.1.0.tar.gz
% cd fix8-1.1.0
% export LIBTOOLIZE=`which glibtoolize`
% ./bootstrap
% ./configure
% make
% make install

If you are using clang and it complains about no-var-tracking compiler switches, you may also need the following switch with configure:

% ./configure --enable-toggleassignmentvars=no

Building on Windows

Please see this document for detailed instructions for building on Windows.

Support

Please refer to the following pages for help:

Downloads

Please refer to the following page:

Getting help or reporting problems

  • Review the topics on the Fix8 support group and the Fix8 developer group. If you cannot find any help there create a new topic and ask the support group for advice.

  • Please refrain from emailing us directly. Any support question sent directly to us will be redirected to the support group.

  • If you believe you have found a problem that needs fixing, go to the Jira Issues page, register and create an issue. Provide as much detail as possible. If you have already implemented a fix, and wish to make a pull request on Github please create an issue in Jira first. This will help us track the problem and ensure that the solution is properly tested.

License

Fix8 is released under the GNU LESSER GENERAL PUBLIC LICENSE Version 3. See License for more information.

More Information

For more information, see the Fix8 website.

Something went wrong with that request. Please try again.