Add method FieldMap::getFieldIfSet(). No need to use isSetField() + getField() methods to query fields with optional presence. Small refactoring
More accurate calculation of the size needed to hold message string representation + small speedup
Refactor integer_to_string_padded() method. Small cleanup
Throw InvalidMessage exception when unable to convert data field length in Message::extractField() method
Speedup field type checking during field extraction for FIX5.0+ message formats
Update performance tests to reflect real-world message parsing scenarios
Improve field tag parsing performance and error reporting when tag contains invalid format
Re-engineer the way how field metrics ( total length and checksum ) are calculated. Improves message decoding and initial validation speed by up to 20%.

Unfortunately, degrades message encoding results by up to 36% - we do not cache the encoded FIX field representation anymore.
IntConvertor class should use <int> data type instead of <long>. Prevents possible issues with different data sizes between LP64 and LLP64 data models
Small improvement to message length and checksum error reporting