- Website: http://www.quickfixgo.org
- Mailing list: Google Groups
Open Source FIX Protocol library implemented in Go
To install QuickFIX/Go, use go get
:
$ go get github.com/alpacahq/quickfix
To update QuickFIX/Go to the latest version, use go get -u github.com/alpacahq/quickfix
.
See examples for some simple examples of using QuickFIX/Go.
QuickFIX/Go includes separate packages for tags, fields, enums, messages, and message components generated from the FIX 4.0 - FIX5.0SP2 specs. See:
- github.com/alpacahq/tag
- github.com/alpacahq/field
- github.com/alpacahq/enum
- github.com/alpacahq/fix40
- github.com/alpacahq/fix41
- github.com/alpacahq/fix42
- github.com/alpacahq/fix43
- github.com/alpacahq/fix44
- github.com/alpacahq/fix50
- github.com/alpacahq/fix50sp1
- github.com/alpacahq/fix50sp2
- github.com/alpacahq/fixt11
For most FIX applications, these generated resources are sufficient. Custom FIX applications may generate source specific to the FIX spec of that application using the generate-fix
tool included with QuickFIX/Go.
Following installation, generate-fix
is installed to $GOPATH/bin/generate-fix
. Run $GOPATH/bin/generate-fix --help
for usage instructions.
If you wish to work on QuickFIX/Go itself, you will first need Go installed on your machine (version 1.6+ is required).
For local dev first make sure Go is properly installed, including setting up a GOPATH.
Next, using Git, clone this repository into $GOPATH/src/github.com/alpacahq/quickfix
.
QuickFIX/Go uses dep to manage the vendored dependencies. Install dep with go get
:
$ go get -u github.com/golang/dep/cmd/dep
Run dep ensure
to install the correct versioned dependencies into vendor/
, which Go 1.6+ automatically recognizes and loads.
$ $GOPATH/bin/dep ensure
Note: No vendored dependencies are included in the QuickFIX/Go source.
The default make target runs go vet and unit tests.
$ make
If this exits with exit status 0, then everything is working!
Generated code from the FIX40-FIX50SP2 specs are available as separate repos under the QuickFIX/Go organization. The source specifications for this generated code is located in spec/
. Generated code can be identified by the .generated.go
suffix. Any changes to generated code must be captured by changes to source in cmd/generate-fix
. After making changes to the code generator source, run the following to re-generate the source
$ make generate-dist
If you are making changes to the generated code, please create Pull Requests for these changes for the affected repos.
QuickFIX/Go has a comprehensive acceptance test suite covering the FIX protocol. These are the same tests used across all QuickFIX implementations.
QuickFIX/Go acceptance tests depend on ruby in path.
To run acceptance tests,
# generate code locally
make generate
# build acceptance test rig
make build_accept
# run acceptance tests
make accept
If you are developing QuickFIX/Go, there are a few tasks you might need to perform related to dependencies.
If you are adding a dependency, you will need to update the dep manifest in the same Pull Request as the code that depends on it. You should do this in a separate commit from your code, as this makes PR review easier and Git history simpler to read in the future.
To add a dependency:
- Add the dependency using
dep
:
$ dep ensure -add github.com/foo/bar
- Review the changes in git and commit them.
To update a dependency to the latest version allowed by constraints in Gopkg.toml
:
- Run:
$ dep ensure -update github.com/foo/bar
- Review the changes in git and commit them.
To change the allowed version/branch/revision of a dependency:
- Manually edit
Gopkg.toml
- Run:
$ dep ensure
- Review the changes in git and commit them.
This software is available under the QuickFIX Software License. Please see the LICENSE.txt for the terms specified by the QuickFIX Software License.