Skip to content

Commit

Permalink
Merge pull request #41 from donmendelson/master
Browse files Browse the repository at this point in the history
Add baseline for Version 2.0 RC1
  • Loading branch information
donmendelson authored Jan 17, 2017
2 parents b8bd5e7 + f5b0c1f commit f179283
Show file tree
Hide file tree
Showing 14 changed files with 3,851 additions and 5 deletions.
19 changes: 14 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,29 @@ SBE is part of a family of protocols created by the High Performance Working Gro

## Versions

### Planned Lifecycle

The planned lifecycle of this project is to roll out new features in a series of release candidates. After each release candidate is approved, it will be exposed to public review. Issues may be entered here in GitHub or in a discussion forum on the FIX Trading Community site. When a version is considered complete, the last release candidate will be promoted to Draft Standard. Following further public review, a Draft Standard may be promoted to the final specification for that version. Only minor errata are permitted. To reach the final stage, the Draft Standard must be reviewed for no less than 6 months, and at least two interoperable implementations must be certified. That version is henceforth immutable.

### Current approved version: 1.0 Draft Standard
Version 1.0 RC4 was promoted to SBE version 1.0 Draft Standard by the Global Technical Committee in June 2016.
Version 1.0 RC4 was promoted to SBE version 1.0 Draft Standard by the Global Technical Committee in June 2016. The next steps are certification of at least two interopable implementations and final approval by the GTC.

The Draft Standard specification is available on the [FIX Trading Community site](http://www.fixtradingcommunity.org/pg/structure/tech-specs/simple-binary-encoding).

The RC4 specification is included here for reference only. Pull requests for that
version will no longer be accepted. However, issues may be entered for corrections
or enhancements to be considered for future releases.
### Working version: 2.0 Release Candidate 1

The working group will consider issues and pull requests for the next release candidate. The planned themes for Version 2.0 Release Candidate 1 are:
* Further enhancements to the schema extension mechanism
* Improvement of the XML schema

### Conformance test suite
The [SBE Conformance project](https://github.com/FIXTradingCommunity/fix-sbe-conformance) provides a conformance test suite to verify interoperability of SBE implementations. All implementors are invited to demonstrate their conformance to the standard.

### XML namespace
The XML namespace for SBE version 1.0 message schemas is [http://fixprotocol.io/2016/sbe](http://fixprotocol.io/2016/sbe).

## License
FIX Simple Binary Encoding specifications are © Copyright 2014-2016 FIX Protocol Ltd.
FIX Simple Binary Encoding specifications are © Copyright 2014-2017 FIX Protocol Ltd.

<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nd/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">FIX Simple Binary Encoding</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.fixtradingcommunity.org/" property="cc:attributionName" rel="cc:attributionURL">FIX Protocol Ltd.</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/FIXTradingCommunity/fix-simple-binary-encoding" rel="dct:source">https://github.com/FIXTradingCommunity/fix-simple-binary-encoding</a>

Expand Down
20 changes: 20 additions & 0 deletions v2-0-RC1/doc/00Contents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Contents
========

[Title](00Title.md)

[1. Introduction](01Introduction.md)

[2. Field Encoding](02FieldEncoding.md)

[3. Message Structure](03MessageStructure.md)

[4. Message Schema](04MessageSchema.md)

[5. Schema Extension Mechanism](05SchemaExtensionMechanism.md)

[6. Usage Guidelines](06UsageGuidelines.md)

[7. Examples](07Examples.md)

[8. Release Notes](08ReleaseNotes.md)
20 changes: 20 additions & 0 deletions v2-0-RC1/doc/00Title.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
![](./media/image1.jpeg)

FIX Simple Binary Encoding
==========================

Technical Specification

Working Draft for potential Version 2.0 Release Candidate 1

**THIS DOCUMENT IS A RELEASE CANDIDATE FOR A PROPOSED FIX TECHNICAL
STANDARD. A RELEASE CANDIDATE HAS BEEN APPROVED BY THE GLOBAL TECHNICAL
COMMITTEE AS AN INITIAL STEP IN CREATING A NEW FIX TECHNICAL STANDARD.
POTENTIAL ADOPTERS ARE STRONGLY ENCOURAGED TO BEGIN WORKING WITH THE
RELEASE CANDIDATE AND TO PROVIDE FEEDBACK TO THE GLOBAL TECHNICAL
COMMITTEE AND THE WORKING GROUP THAT SUBMITTED THE PROPOSAL. THE
FEEDBACK TO THE RELEASE CANDIDATE WILL DETERMINE IF ANOTHER REVISION AND
RELEASE CANDIDATE IS NECESSARY OR IF THE RELEASE CANDIDATE CAN BE
PROMOTED TO BECOME A FIX TECHNICAL STANDARD DRAFT.**

**©Copyright 2015-2017 FIX Protocol Limited**
188 changes: 188 additions & 0 deletions v2-0-RC1/doc/01Introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
Introduction
=========================================================================================================================================================

FIX Simple Binary Encoding (SBE) targets high performance trading
systems. It is optimized for low latency of encoding and decoding while
keeping bandwidth utilization reasonably small. For compatibility, it is
intended to represent all FIX semantics.

This encoding specification describes the wire protocol for messages.
Thus, it provides a standard for interoperability between communicating
parties. Users are free to implement the standard in a way that best
suits their needs.

The encoding standard is complimentary to other FIX standards for
session protocol and application level behavior.

Binary type system
----------------------------------------------------------------------------------------------------------------

In order to support traditional FIX semantics, all the documented field
types are supported. However, instead of printable character
representations of tag-value encoding, the type system binds to native
binary data types, and defines derived types as needed.

The binary type system has been enhanced in these ways:

- Provides a means to specify precision of decimal numbers and
timestamps, as well as valid ranges of numbers.

- Differentiates fixed-length character arrays from variable-length
strings. Allows a way to specify the minimum and maximum length of
strings that an application can accept.

- Provides a consistent system of enumerations, Boolean switches and
multiple-choice fields.

Design principles
---------------------------------------------------------------------------------------------------------------

The message design strives for direct data access without complex
transformations or conditional logic. This is achieved by:

- Usage of native binary data types and simple types derived from
native binaries, such as prices and timestamps.

- Preference for fixed positions and fixed length fields, supporting
direct access to data and avoiding the need for management of heaps
of variable-length elements which must be sequentially processed.

Message schema
------------------------------------------------------------------------------------------------------------

This standard describes how fields are encoded and the general structure
of messages. The content of a message type is specified by a message
schema. A message schema tells which fields belong to a message and
their location within a message. Additionally, the metadata describes
valid value ranges and information that need not be sent on the wire,
such as constant values.

Message schemas may be based on standard FIX message specifications, or
may be customized as needed by agreement between counterparties.

Glossary
------------------------------------------------------------------------------------------------------

**Data type** - A field type with its associated encoding attributes,
including backing primitive types and valid values or range. Some types
have additional attributes, e.g. epoch of a date.

**Encoding** - a message format for interchange. The term is commonly used
to mean the conversion of one data format to another, such as text to
binary. However, Simple Binary Encoding strives to use native binary
data types in order to make conversion unnecessary, or at least trivial.
Encoding also refers to the act of formatting a message, as opposed to
decoding.

**Message schema** - metadata that specifies messages and their data
types and identifiers. Message schemas may be disseminated out of band.
For Simple Binary Encoding, message schemas are expressed as an XML
document that conforms to an XML schema that is published as part of
this standard.

**Message template** - metadata that specifies the fields that belong to
one particular message type. A message template is contained by a
message schema.

**Session protocol** - a protocol concerned with the reliable delivery of
messages over a transport. FIX protocol makes a distinction between
session protocol and the encoding of a message payload, as described by
this document. See the specifications section of FIX protocol web site
for supported protocols. The original FIX session protocol is known as
FIXT.

**XML schema** - defines the elements and attributes that may appear in an
XML document. The SBE message schema is defined in W3C (XSD) schema
language since it is the most widely adopted format for XML schemas.

Documentation
-----------------------------------------------------------------------------------------------------------

This document explains:

- The binary type system for field encoding

- Message structure, including field arrangement, repeating groups,
and relationship to a message header that may be provided by a
session protocol.

- The Simple Binary Encoding message schema.

### Specification terms

These key words in this document are to be interpreted as described in
[Internet Engineering Task Force RFC2119](http://www.apps.ietf.org/rfc/rfc2119.html). These terms indicate
an absolute requirement for implementations of the standard: "**must**",
or "**required**".

This term indicates an absolute prohibition: "**must not**".

These terms indicate that a feature is allowed by the standard but not
required: "**may**", "**optional**". An implementation that does not
provide an optional feature must be prepared to interoperate with one
that does.

These terms give guidance, recommendation or best practices:
"**should**" or "**recommended**". A recommended choice among
alternatives is described as "**preferred**".

These terms give guidance that a practice is not recommended: "**should not**"
or "**not recommended**".

### Document format

In this document, these formats are used for technical specifications
and data examples.

This is a sample encoding specification

```xml
<type name="short" primitiveType="int16" semanticType="int" />
```

This is sample data as it would be transmitted on the wire

`10270000`

References
-------------------------------------------------------------------------------------------------------------------------------------------------------

### Related FIX Standards

*Simple Open Framing Header*, FIX Protocol, Limited. Release Candidate 1
specification has been published at
<http://www.fixtradingcommunity.org/>

For FIX semantics, see the current FIX message specification, which is
currently [FIX 5.0 Service Pack 2](http://www.fixtradingcommunity.org/pg/structure/tech-specs/fix-version/50-service-pack-2)
with Extension Packs.

### Dependencies on other standards

SBE is dependent on several industry standards. Implementations must
conform to these standards to interoperate. Therefore, they are
normative for SBE.

[IEEE 754-2008](http://ieeexplore.ieee.org/servlet/opac?punumber=4610933) A
Standard for Binary Floating-Point Arithmetic

[ISO 639-1:2002](http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=22109)
Codes for the representation of names of languages - Part 1: Alpha-2
code

[ISO 3166-1:2013](http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=63545)
Codes for the representation of names of countries and their
subdivisions - Part 1: Country codes

[ISO 4217:2008](http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=46121)
Codes for the representation of currencies and funds

[ISO 8601:2004](http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=40874)
Data elements and interchange formats - Information interchange -
Representation of dates and times

[ISO 10383:2012](http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=61067)
Securities and related financial instruments - Codes for exchanges and
market identification (MIC)

XML 1.1 schema standards are located here [W3C XML Schema](http://www.w3.org/XML/Schema.html#dev)
Loading

0 comments on commit f179283

Please sign in to comment.