- 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/quickfixgo/quickfixTo update QuickFIX/Go to the latest version, use go get -u github.com/quickfixgo/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/quickfixgo/tag
- github.com/quickfixgo/field
- github.com/quickfixgo/enum
- github.com/quickfixgo/fix40
- github.com/quickfixgo/fix41
- github.com/quickfixgo/fix42
- github.com/quickfixgo/fix43
- github.com/quickfixgo/fix44
- github.com/quickfixgo/fix50
- github.com/quickfixgo/fix50sp1
- github.com/quickfixgo/fix50sp2
- github.com/quickfixgo/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 need Docker and VSCode on your machine.
- Clone the repo and open it with VSCode with Docker running
- This repo comes with vscode devcontainer configs in
./.devcontainer/ - Click the pop-up to re-open the project in the Dev Container
- This opens the project in a docker container pre-configured with everything you need
As of Go version 1.13, QuickFIX/Go uses modules to manage dependencies. You may require GO111MODULE=on. To install dependencies, run
go mod downloadNote: No vendored dependencies are included in the QuickFIX/Go source.
The default make target runs go vet and unit tests.
makeIf 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 generateIf 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, if you are using the dev container, it is already installed
To run acceptance tests,
# generate code locally
make generate
# build acceptance test rig
make build-test-srv
# run acceptance tests
make acceptIf you are developing QuickFIX/Go, there are a few tasks you might need to perform related to dependencies.
If you are adding or updating a dependency, you will need to update the go.mod and go.sum 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.
- Add or update the dependency like usual:
go get -u github.com/foo/bar- Update the module-related files:
go mod tidy- Review the changes in git and commit them.
Note that to specify a specific revision, you can manually edit the go.mod file and run go mod tidy
This software is available under the QuickFIX Software License. Please see the LICENSE.txt for the terms specified by the QuickFIX Software License.
