Philadelphia v1.3.0 Release Notes

Release Date: 2021-05-21 // about 1 year ago
    • ๐Ÿ‘Œ Improve FIXValueTest (Jussi Virtanen)

    Make test cases that rely on the side effect of an attempt to read an incomplete value from a buffer partially populating the value container to actually read a complete value.

    Improve test coverage for all FIXValue methods.

    • โšก๏ธ Optimize FIXValue (Jussi Virtanen)

    Decrease the bytecode size of the FIXValue#setDigits method from 44 to 31 bytes, which is within HotSpot's default maximum inline size of 35 bytes. This makes the following methods faster:

    • FIXValue#setCheckSum
    • FIXValue#setDate
    • FIXValue#setTimeOnly
    • FIXValue#setTimestamp

    Decrease the bytecode size of the FIXValue#setInt method from 102 to 79 bytes, making it faster.

    Decrease the bytecode size of the FIXValue#setFloat method from 177 to 161 bytes, making it faster.

    • โž• Add FIXMessage(FIXConfig) (Jussi Virtanen)

    • โž• Add FIXValue#toString (Jussi Virtanen)

    • โž• Add FIXMessage#valueOf(int,int) and FIXMessage#indexOf(int,int) (Kasimir Torri)

    Make it possible to get the index or the value container of the first instance of a field with a specific tag, starting from a specific index.

    • โšก๏ธ Optimize FIXTimestamps (Jussi Virtanen)

    Decrease the bytecode size of the FIXTimestamps.setDigits method from 36 to 28 bytes, which is within HotSpot's default maximum inline size of 35 bytes. This makes the FIXTimestamps.append method faster.

    • โž• Add FIXValue#asString(Appendable) (Jussi Virtanen)

    • โž• Add FIXValue#contentEquals (Jussi Virtanen)

    • โž• Add FIX Orchestra support to Philadelphia Code Generator (Jussi Virtanen)

    • โž• Add FIX Latest support (Jussi Virtanen)

    • ๐Ÿ‘Œ Improve FIXMessageParser (Jussi Virtanen)

    Optimize parsing of the BeginString(8), BodyLength(9), and CheckSum(10) values, making message parsing faster.

    • ๐Ÿ›  Fix EndSeqNo(16) handling (Marcus Harte, Jussi Virtanen)

    Handle the value 0 for the EndSeqNo(16) field in a ResendRequest(2) message correctly. This value represents infinity and corresponds to all subsequent messages after the message referred to by the BeginSeqNo(7) field.

    • ๐Ÿ‘Œ Improve BeginSeqNo(7) handling (Marcus Harte, Jussi Virtanen)

    Respond with a Reject(3) message if the BeginSeqNo(7) value in a ResendRequest(2) message exceeds the current MsgSeqNum(34) value.

    • ๐Ÿ‘Œ Improve NewSeqNo(36) handling (Marcus Harte, Jussi Virtanen)

    Limit the NewSeqNo(36) value in a subsequent SequenceReset(4) message to the current MsgSeqNum(34) if the EndSeqNo(16) value in the preceding ResendRequest(2) message exceeds it.

Previous changes from v1.2.0

  • ๐Ÿš€ Release Notes

    โฌ†๏ธ See the upgrade instructions.

    ๐Ÿ‘Œ Improve MsgType(35) handling (Jonathan Heusser, Jussi Virtanen)

    When checking for SequenceReset(4), check the first byte of the MsgType(35) value before checking its length. This avoids one conditional check for most messages.

    โœ‚ Remove a dead branch from the MsgType(35) switch statement following the MsgSeqNum(34) handling.

    ๐Ÿ›  Fix send command in Philadelphia Terminal Client (Jussi Virtanen)

    ๐Ÿ‘‰ Make it possible to send a message containing a field with whitespace characters.

    ๐Ÿ‘Œ Improve FIXValue#asFloat and FIXValue#setFloat (Jussi Virtanen)

    ๐Ÿ‘Œ Improve FIXValueTest (Jussi Virtanen)

    ๐Ÿ‘Œ Improve FIXConfigTest (Jan Nielsen)

    โž• Add example script for Philadelphia Terminal Client (Jussi Virtanen)

    ๐Ÿ—„ Mark FIXValue#asCheckSum() as deprecated (Jussi Virtanen)

    ๐Ÿ‘Œ Improve Philadelphia Terminal Client documentation (Jussi Virtanen)

    ๐Ÿ‘Œ Improve FIXMessageParserBenchmark (Jussi Virtanen)

    โž• Add a benchmark for when the incoming CheckSum(10) check is disabled.

    ๐Ÿ‘Œ Improve FIXMessageParser (Jussi Virtanen)

    ๐ŸŽ Having the incoming CheckSum(10) check in a separate method makes message parsing 9.6% faster in the performance test when the incoming CheckSum(10) check is disabled and 3.7% faster when it is enabled.

    ๐ŸŽ Inlining parsing of BeginString(8), BodyLength(9), and CheckSum(10) tags makes message parsing further 5.9% faster in the performance test when the incoming CheckSum(10) check is disabled and 6.1% faster when it is enabled.

    ๐Ÿ›  Fix wait command in Philadelphia Terminal Client (Jussi Virtanen)

    The wait command looked at received messages at an interval, stopping if the last received message had a matching MsgType(35) value. If two or more messages were received within one interval, the wait command might have missed a matching MsgType(35) value and erroneously continued waiting.

    โœ‚ Remove transitive Joda-Time dependency (Jussi Virtanen)

    Replace the transitive Joda-Time 2.10.5 dependency with a Joda-Time 2.x dependency. This makes it possible for applications to manage their Joda-Time 2.x and Philadelphia Core dependencies independently.

    ๐Ÿ‘Œ Improve FIXValue#asTimeOnly (Jussi Virtanen)

    Set the fields all at once rather than one by one. This makes the method 33% faster.


    The following artifacts are available in the Central Repository:

    Name Artifact ID Version
    Philadelphia Core philadelphia-core 1.2.0
    Philadelphia FIX 4.2 philadelphia-fix42 1.2.0
    Philadelphia FIX 4.3 philadelphia-fix43 1.2.0
    Philadelphia FIX 4.4 philadelphia-fix44 1.2.0
    Philadelphia FIX 5.0 philadelphia-fix50 1.2.0
    Philadelphia FIX 5.0 SP1 philadelphia-fix50sp1 1.2.0
    Philadelphia FIX 5.0 SP2 philadelphia-fix50s2p 1.2.0
    Philadelphia FIXT 1.1 philadelphia-fixt11 1.2.0

    The Group ID for all artifacts is com.paritytrading.philadelphia.