11.15.1
2------
3Support for python 3.
4
5Native SSL support.
6
7Support micro and nanosecond precision on timestamps.
8
9Use std::unique_ptr instead of auto_ptr when available.
10
11Use boost::shared_ptr if std::shared_ptr not available.
12
13Support for Visual Studio 15 (2017).
14
15Custom data fields can be decoded in header and trailer.
16
17Can decode data fields in message body that contain more than 16 fields.
18
19FieldNap iterators changed to non-const.
20
21Message generator works with recursive components.
22
23Preserve order of messages when resending.
24
25Can configure a source host and port to choose routes.
26
27Addressed several thread safety issues.
28
29Regenerated messages against latest repository.
30
31Faster sorting of fields.
32
33Faster double/string conversion with Florian's Loitsch "double-conversion."
34
35Replaceed std::multimap with std::vector for fields for improved performance.
36
37Detect and throw InvalidMessage when data field length contains junk.
38
39Fixed issues with integer_to_string()
40
41Bug fix for large messages.
42
43getField/setFields deprecated, use getTag/setTag.
44
45Fixes for SunOS/sparc/64 bit.
46
47Groups in headers.
48
491.14.3
50------
51Fixed buck in SocketConnection where recv result stored in signed value.
52
53Added ruby api to RubyGems.
54
55All Python and Ruby tests pass again.
56
571.14.2
58------
59Test for std::shared_ptr and std::tr1::shared_ptr.  Allows us to compile on
60gcc 4.1-4.2, and with anaconda python.
61
62Distribute FIX specs with pip package.
63
64Use all detected compiler flags when building ruby native library.
65
661.14.1
67------
68Replaced libxml2 and MSXML dependencies with embedded pugixml.
69
70Fixed all warnings from -Wshorten-64-to-32.
71
72Added python api to PyPi.  Can be installed with 'pip install quickfix'.
73
74Fixed memory leak in SessionFactory when creating DataDictionaries.
75shared_ptr is used to track the objects so we don't have to.
76
771.14.0
78------
79Major performance improvement sending/receiving messages.  Thanks to
80Viktor Pogrebnyak for a great patch.
81
82Added getFieldIfSet and getIfSet methods.  No longer need to check for a
83field and pull it out in two steps.
84
85UseLocalTime=Y works again.
86
87Improvement in how DataDictionaries are initialized makes starting up with
88a large number of sessions much faster.
89
90Generator will generate a message defined in the spec even if it has no fields.
91This was preventing the XMLnonFIX message from being generated in the various
92APIs.
93
94Added ValidateLengthAndChecksum. Allows you to ignore the length and checksum
95fields on incoming messages. Accept the message anyway. A wild free for all.
96
97Added FIX 5.0 sp1 and sp2 support to MessageCracker.
98
99SocketReuseAddress, SocketNoDelay, SocketSendBufferSize, and SocketReceiveBufferSize
100config settings can be overriden on a per session basis.
101
102Field containing number of groups will be removed if all instances of
103a group are removed from the message.
104
105SocketConnection would block other sessions if it was unable to connect
106immediately.  Brian Crowell submitted a patch that makes the connection
107call non-blocking.
108
109Initiator started before StartTime was doing an unecessary logout and
110disconnect.
111
112MessageCracker will not cast non-const messages to const.
113
114Polling was kind of broken.  Fixed.
115
116Fixed bug where LogonTime does not fall between StartTime and EndTime when
117days are used.
118
119Fixed bug where port was not being correctly scoped in the DEFAULT section
120of the config file.
121
122All data is read from the socket before the engine begins to parse messages.
123
124Socket will make a better attempt to determine if a full message is available
125on the socket before determining if a logon failed.  Before it could potentially
126fail on a partial message that was in the middle of transmission.
127
128Header and Trailer are now distinct objects, instead of typedefs to FieldMap.
129
130Ambigous and confusing name getValue on the Field class has been renamed to
131getFixString. This return a value such as 55=AAPL.
132
133Message groups can be parsed even if there is no delimiter present.  A new
134group is detected if the parser encounters any duplicate field.
135
136Fixed potential crash when stopping an initiator that has not yet started.
137
138When calling backup() on a .NET log, it was instead invoking clear() in the
139underlying C++ class. Fixed.
140
141Fallback ports were not being parsed correctly for fallback connections. Fixed.
142
143Not all constructors in the ThreadedSocketConnection were properly initializing
144the log object.  Fixed.
145
146Generate XML (and source) files from latest publicly available FIX repository.
147
148Alternate C++ allocators will no longer be automatically chose. They can be
149manually selected with configure --with-allocator.
150
151MySQL and PostgreSQL are detected using standard m4 when running configure.
152
153Environment variables RUBY and PYTHON are used to find which version of
154instance to use when running configure.
155
156Fixed/standardized various issues with python library deployment.
157
158If session is disabled, it will immediately disconnect without sending any
159messages.
160
161Added support for visual studio 11 and 12.
162
163Removed C# library.  Use QuickFIX/n.
164
165Ruby API works with ruby 1.9.x
166
1671.13.3
168------
169Added support for FIX 5.0 sp1 and sp2
170
171Fixed bug with ResetSeqNumFlag going out but not coming back.
172Logon will now be processed correctly even if field is absent
173if sequence number is set to 1.
174
175Fixed bug where data dictionary settings in the default section
176were being ignored. Mostly manifested itself by doing validation
177the user didn't want done, such as user defined field validation.
178
179Fixed initialization errors with OdbcConnection which caused some
180problems connecting to the database.
181
182Updated the generator.  Should be more consistent.  Deprecated fields
183are not longer necessary as they are now generated along with current
184fields.
185
1861.13.2
187------
188Fixed bug where messages containing repeating groups would
189not be properly resent under a FIXT.1.1 session
190
191Fixed bug where group fields would not be in the correct order
192after copying a group object.
193
194Fixed compilation error with OdbcStore
195
196Updated m_stop variable in initator and acceptor to true
197to better reflect initial state.
198
199Fixed issue with reconnect when acceptor not available and timeout
200interval is reached.
201
202Objects take in timestamps instead of generating them themselves
203to make them more testable.
204
205Generated python and ruby APIs no longer rely on pulling in
206FIX namespace so there are no clashes.
207
2081.13.1
209------
210Fixed install script under unix systems. The new FIX 5.0 and
211FIXT 1.1 headers were not being installed.
212
213Fixed compiler errors under windows due to typedefs conflicting
214with #defines.
215
216Fixed exception being thrown when no LogFactory is provided.
217
218User defined UTC timestamps will have milliseconds now.
219
220Fixed memory leaks and other bugs in odbc interfaces.
221
222Fixed exception caused by peername returning a null char*.
223
224Corrected installation problems when DESTDIR is provided.
225
226QuickFIX should build on netbsd, though it is not yet
227officially supported.
228
229Perfomance optimization for .NET messagecrackers.
230
231
2321.13.0
233------
234Support for FIX 5.0 and FIXT 1.1 session transport.
235
236Added solution files for Visual Studio 2008 and 2010.
237
238Compiles under newer versions of gcc.
239
240JNI API is no longer.  QuickFIX/J is recommended.  JAR file
241included with quickfix distribution for your convenience.
242
243Full support for 64 bit systems.
244
245Switched from proprietary unit testing framework to UnitTest++.
246
247Added settings for send and recieve buffer size on sockets.
248
249Header and Trailer generated instead of hardcoded.
250
251Groups can be queries against DataDictionary.
252
253ConfigError will be generated if session is defined twice. Several other
254improvements to recognizing bad configuration files.
255
256PersistMessages is true by default.
257
258identifyMessage exposed to .NET API.
259
260Fixed some potential deadlock scenarios with socket implementation.
261
262Added support for backing up logs.
263
264Added millisecond resolution to logs.
265
266Added NullMessageStore implementation.
267
268Sessions can be queried for data dictionary and configuration settings.
269
270Fixed problems with resent messages going out with repeating groups
271fields in the wrong order.
272
273Fixed some issues with database connection pools.
274
275Persistance is done before sending and will fail if message cannot be
276stored or sequence number cannot be incremented.
277
278Builds against STLPORT 5.
279
280Log messages can be redirected to different database tables.
281
282Added memory pressure to .NET messages to give a hint to the
283GC that memory should be reclaimed.
284
285When polling you can pass in a timeout value.
286
287Many other minor bug fixes.
288
2891.12.4
290------
291ODBC escape values for times used in time values so they work with any database.
292
293Session will not throw an exception when sending a message without a MsgType.
294
295Added NetworkStatusReport and NetworkStatusRequest messages fix FIX 4.4.
296
297.NET SessionID object can be constructed with field objects.
298
299getSessions implemented in SessionSettings object in .NET.
300
301SessionSettings can be output in the same format as the input stream.
302
303Fixed repeating groups in ruby which where incorrectly instantiating arrays
304indicating sorting order.
305
306Fixed crashes in .NET due to logger being called after going out of scope.
307
308Fixed crashes in gcc due to different allocators being used in user application
309vs QuickFIX library by the FieldMap.
310
311Disposing an initiator or acceptor in .NET will also call stop.
312
3131.12.3
314------
315A logon will now be sent immediately after initiator establishes a connection.
316Previously we were waiting up to 1 second before sending a logon.
317
318PersistMessages configuration setting will not store any messages when sent to Y.
319This is useful for sessions where you never want to do a resend request. Mostly for
320high bandwidth sessions.
321
322.NET field objects have static members for each of their enumeration values.
323This is equivalent to the Java implementation. (i.e., OrderSide.BUY).
324
325Fixed bugs in python and ruby APIs where objects passed into Initiator or
326Acceptor were being garbage collected to early causing random crashed.
327This was due to Swig not creating placeholders for these objects to live.
328
329Additional global logging indicated when an initiator/acceptor is created/destroyed,
330and started/stopped.  Global log also with log messages that do not belong to any
331loaded sessions.
332
333Configuration settings are now case insensitive (the keys, not the values).
334
335Underlying socket exception is provided if acceptor cannot be created.
336
337ODBC escape sequences are used for time columns so correct format is always
338sent to the underlying database.
339
340Fixed problem where file descriptors were not being released in ThreadedSocketInitiator
341due to uninitialized variable.
342
343Fixed some incorrect parsting of HTTP messages. Never manifested itself
344as any problem, but fixed none the less.
345
346Various copilation fixes for SunPRO compiler.
347
3481.12.2
349------
350Fixed bug in SocketConnector in Windows where failed connections were not
351being detected. Fixes bad behavior in SocketInitiator where it will attempt
352to connect once, but never try to reconnect.
353
354HttpAcceptPort setting added. When set, QuickFIX will accept HTTP requests
355to the given port.  Pointing a browser to this port will bring up a control
356panel that allows you to view/update certain session states.
357
358Fixed bugs in Python api generation.
359
360Fixed Equals method for Field in .NET.  Added Equals and GetHashCode
361implementations for SessionID.
362
363Log will display ip address instead of hostname of incoming connections
364in log.  Fixes problem where hostname is not always available.
365
366Many performance optimizations.  Performance is considerably better.
367
368Fixed bugs when checking for required fields.
369
3701.12.1
371------
372Fixed bugs with non-blocking sockets where select statement would go into an
373infinite loop due to a bad file descriptor which was not properly removed.
374
375Fixed bug in SocketInitiator where initator would crash if the socket
376was pending a connection when disconnecting.
377
378MemoryStore in .NET api uses proper access specifier so compiler does not
379complain that it is abstract.
380
381Added SendRedundantResendRequests for certifications that require you to
382send a resend request even if it appears redundant.
383
384BusinessMessageReject includes field in text if applicable.
385
386Compiles under gcc 4.1
387
388Fixed UnsatisfiedLinkError when creating FileLogFactory in java.
389
390Fixed various bugs with ResetOnLogon functionality.
391
392Fixed bug where MySQLLog was writing bad strings to table.
393
394Fixed some error messages in MySQL store.
395
396Added support for reconnect in MySQL 5.
397
398Display file name when FileStore or File Log cannot open a file.
399
400Rejects are delivered to fromAdmin even if sequence number is too high.
401
402Initiator stores and instance of the global log.
403
4041.12.0
405------
406SocketAcceptor and ThreadedSocketAcceptor can listen for connections on
407multiple ports.  SocketAcceptPort no longer needs to be in the DEFAULT
408section and can be assigned to sessions.  Sessions can share accepting
409ports like before.
410
411SocketAcceptor/Initiator now implemented using non-blocking sockets.  There
412is no longer a danger of dead-locking when using these objects.
413
414Support for ODBC log and message store.  QuickFIX can now be used with any
415database with an ODBC driver on windows.  Direct MSSQL implementation is
416no longer supported.
417
418Global log exists for logging that does not pertain to an existing session.
419Things like incoming connections where the session is not yet identified
420go in here.  The message store factory has a new create() method for creating
421a global log without a session id.
422
423MessageStore interface now supports refresh which will load in settings
424from the persisted store.  RefreshOnLogon configuration setting will
425refresh the store whenever the session logs on.  Useful for creating
426backup systems.
427
428Added funtionally complete Ruby API.
429
430Python API now supports repeating groups and start() method.
431
432Message::replaceGroup can be used to replace a specific instance of a
433repeating group.
434
435Message::isEmpty can be used to determine if there are any fields in a
436message.  Message::clear can clear all fields from a message.
437
438New configuration parameter LogoutTimeout allows you to adjust amount of
439time before session forces a disconnect when there is no logout response.
440
441CheckCompID configuration parameter can be set to N to disable validation
442of message comp ids.  This is for systems that send incorrect compids by
443design.
444
445DataDictionary can now be parsed from a stream.  This allows you to
446store the DataDictionary however you like as long as you can produce
447a stream in the QuickFIX xml format.
448
449Database IOExceptions now contain reasons for the IO failure which is logged
450if possible.
451
452clear() method on database log implementation take the session qualifier into
453account if applicable.
454
455MySQL and PostgreSQL implementations properly escape strings so any message
456can be recorded no matter what it contains.
457
458Double fields now have a constructor allowing you to pass in the padding
459length of the decimal value.
460
461ScreenLog can read setting from configuration file.  No longer required to
462hardcode settings into constructor.
463
464The last received time is now only updated if a message passes validation.
465
466Fixed bug where connections weren't being properly decremented inside
467connection pool.  Caused a resource leak by not releasing connections.
468
469Fixed bug with session time when end time is less than the start time on
470the next day.
471
472Fixed bug with session time which spans different time zones.
473
474Fixed a bug so logouts will show logout reason.
475
476Fixed bugs pertaining to generating SQL to clear logs.
477
478Support for repeating groups in headers and trailers. DataDictionary validation
479will also process repeating groups within the message header and trailer.
480
481.NET Field objects now have ToString, Equals, and GetHashCode implementations.
482Added GetHashCode implementation to SessionID.
483
484Reject message will always be processed, even when the session isn't logged on.
485
486Fixed support for nested repeating groups in Java API.
487
488OrigSendingTime now always matches SendingTime when sending a SequenceReset.
489
490Dictionary has a setDay method symetrical to getDay.
491
492Fixed 64 bit compatibility errors in JNI layer.
493
494Added default constructor for SessionID in Java and .NET APIs.
495
496Fixed name of message_log table in mysql creation scripts.
497
498Fixed race condition when stopping/starting initiator/acceptors.
499
500ResetOnLogon will reset state before sending/receiving logon messages.
501
502.NET logs, message stores, initiators and acceptors are now disposable so
503resources can be immediately recovered.
504
505Fixed incorrect Socket Error log message when properly stopping a threaded
506connection.
507
5081.11.1
509------
510Added padding support for double fields.  Allows you to supply the
511minimum number of decimal places in a double.  When set to two, 9 will
512become 9.00, but 9.121 will remain the same.
513
514Fixed bug in MySQLLog where it tries to log to old incoming_log table
515instead of the newer messages_log table.
516
517FileLog clear() method did not work.  This has been fixed.
518
519clear() method for sql logs were clearing old incoming and outgoing
520tables instead of the newer messages table.
521
522When the clear() method on a log is called, only the logs
523pertaining to that session will be deleted.  Previously it was
524deleting logs from all sessions.
525
526Fixed problem when building from the IDE which would lock the .NET
527libraries causing the builds for some .NET projects to fail.
528
529Added Dictionary, MySQL and PostgreSQL source files to vs6 jni project.
530
531In .NET, settings can now be pulled from the SESSION section, and not
532just the DEFAULT section.
533
534Fixed port issues in example cvonfiguration files.
535
5361.11.0
537------
538Updated code so it will compile under gcc 4.0 and Visual Studio .NET 2005.
539For visual studio, all solution files are merged into a single file.  So
540the quickfix C++, .NET, JNI, test applications and example applications
541are all built in a single step.
542
543Added MessageStore and Log support for PostgreSQL and MS SQL Server.
544
545ConnectionPools are available for MySQL and PostgreSQL. Configuration settings
546MySQLStoreUseConnectionPool, MySQLLogUseConnectionPool,
547PostgreSQLStoreUseConnectionPool, and PostgreSQLLogUseConnectionPool have been
548added.  When connection pools are enabled, any sessions which share the same
549connection parameters (database, user, password, host and port) will share
550a connection.  This is particularly useful for PostgreSQL which has pretty
551low limitations on the number of connections it allows.
552
553JNI Wrapper has been made compatible with 64 bit systems.
554
555Session::logout can be passed a string which contains the reason for the
556logout.  The reason will be placed into the text field of the Logout message.
557
558FileLog no longer has separate files for incoming and outgoing messages.  All
559messages are placed into one messages file so the original order of the
560transactions can be reconstructed accurately.
561
562SessionSettings can be set programatically from .NET and Java.  You no longer
563have to use the hack where you create a stream in the format of a configuration
564file and parse it into a settings file.  Direct access to getters and setters
565are exposed.
566
567Removing a group will update the leading count field.
568
569Fixed various bugs with resetting sequence numbers using the ResetSeqNumFlag=Y,
570including issues with ResetOnDisconnect and ResetOnLogoff. Also if in a state where
571we are not logged on and the messages are going to be reset, no messages will be
572succesfully sent (there is no point).
573
574Log class has a clear() method which can be used to clear out the logs
575programatically.
576
577Various fixes to handling of resend requests.
578
579Session qualifier can be accessed from SessionID in .NET
580
581getFieldTag method on DataDictionary will use a tags name to return its number.
582
583Milliseconds can be specified by user in UtcTimeStamp and UtcTimeOnly fields.
584
585Deprecated Message::getString method has been removed, you must now use toString.
586
587Reject reasons are logged by the session even if they cannot be sent to the
588counterparty.
589
590Sequence reset will be processed even if the messages sequence number is too high.
591
592Second thread and buffer queue removed from ThreadedSocketConnection.  Each connection
593now only has one thread which interacts with the socket directly.
594
595When a session is reset(), a logout message will be sent to the counterparty.
596
597OrigSendingTime will contain milliseconds when applicable.
598
599Repeating groups can now be removed from messages/groups.
600
601Negative numbers will now be parsed correctly when received in double fields.
602Before these would get converted into 0.
603
604If a null value is set into a character field, the field will be set as empty
605instead of putting a null character into the field.
606
607MySQLLog will use the correct log settings instead of getting its settings
608from the MySQLStore.
609
610Fixed bug where getWeekDay would sometimes return a negative number.
611
612Fixed various issues with FIX data dictionary files.
613
614Added many methods missing from the .NET and Java wrappers of the Session class.
615
616Event object can be passed a value to indicate how long to wait for the event
617instead of being hardcoded to 100 milliseconds.
618
619Fixed out of range error when pulling UtcTimeOnly fields out of groups.
620
621.NET Message wrapper can parse a message with validation turned off.
622setString method also exposed.  fromString method exposed to SessionID.
623
624fromString method exposed to SessionID in java API.
625
626DataDictionary will throw a .NET ConfigError exception instead of letting
627the uncaught unmanaged exception propogate, causing a crash.
628
629Time objects are no longer implemented using tm structure.
630
6311.10.2
632------
633Reset functionality will work if the user appends ResetSeqNumFlag=Y into the
634logon message from the toAdmin callback.  Allows for manual reset support.
635
6361.10.1
637------
638Fixed bugs regarding sequence reset functionality.  QuickFIX was not correctly
639respoding with a logon message when receiving a sequence reset.
640
6411.10.0
642------
643ResetSeqNumFlag is always set when expected sender and target message sequence
644numbers are 1.  QuickFIX will also reset it's sequence numbers when it
645received a ResetSeqNumFlag set to 'Y'.
646
647ValidateUserDefinedFields configuration parameter available.  Defaults to Y
648which provides functionality of older releases.  When set to N, user defined
649fields will not be validated on incoming messages.
650
651Initiators and Acceptors can be reliably stopped and restarted as many times
652as you like.  Previously they could only be started and stopped once.
653
654Presence of required fields will be validated inside of required repeating
655groups.  Required fields will also be validated in the header and trailer.
656
657getSessions on acceptor and initiator will return a collection of managed
658sessions.
659
660Correctly handle scenario where a SocketConnection receives a first message
661that is not a logon.  Previously it would cause the session to be registered
662without ever unregistering and thus not allowing any new connections.
663
664Hearbeat monitor is reset when receiving a message with incorrect MsgSeqNum.
665
666Much more thorough logging inside of Session class.
667
668QuickFIX will add the text from a RejectLogon exception into the Text field
669of the Logout message.
670
671BusinessMessageReject, instead of Reject, will be send with a conditionally
672required field is not found.
673
674Double fields will no longer encode values less than 0.0001 in scientific
675notation.
676
677Initiator will no longer initiate socket connections outside of the session
678time.  Previously it would connect and immediately close connection during
679every retry interval.
680
681Receipt of a message without an empty MsgType field is now handled gracefully.
682
683Fixed bug where FileStore would not correctly persist numbers if set to a
684lower sequence number that contained less characters than the current
685sequence number.
686
687An exception thrown from Session::generateReject will no longer result in
688a system crash.
689
690SessionID strings can now be correctly parsed if the SenderCompID contains a
691dash.
692
693Very large resend request processing will not longer result in a stack overflow.
694
695If no length is found in the parser buffer, it will now be cleared out
696instead of reused.
697
698SessionSettings adds extra sanity checks for configuration files, such as
699ensuring initiator or acceptor are present and spelled correctly.
700
701Removed dependence of socket code on FIONREAD/NREAD.  The value of the recv
702call is now used to determine dropped connections. All socket code has been
703pulled out of the parser class.
704
705Logout message will be processed even if no Logon was received.
706
707C++ MessageCracker contains non-const onMessage methods for use with toAdmin
708and toApp callbacks.
709
710Added block, poll, and isLoggedOn to initiator/acceptor for java and .NET APIs.
711
712isAdmin, isApp, and GetEnumerator available on Message class in .NET.
713GetEnumerator also available on Header and Trailer.
714
715force flag can be passed into initiator and acceptor stop methods in
716java and .NET
717
718Java will only be compiled under unix when using the -with-java configure
719directive.
720
721CheckSum will not become negative field is set with negative character.
722
723RuntimeErrors regarding port numbers no longer display large numbers as negative.
724
725Directories created by quickfix use more 0777 instead of 0700.
726
727Bug when copying SessionIDs with SessionQualifiers has been fixed.
728
729SessionSettings can be set at runtime using setter calls from java.
730
731Apple standards used when installing java libraries under MAC OS/X.
732
7331.9.4
734-----
735Fixed compilation and linking errors in .NET library.
736
737ThreadedSocketInitiator will reconnect when roaming into a sessions start time.
738
739Instead of the shell/bat scripts allocated extra memory for the JVM to build
740the java API, the memory is allocated in the ant script.
741
742Added mutex locker to Session::unregisterSession
743
744Added strptime implementation from PowerDog for Visual Studio. MySQL code will
745build under windows now.
746
7471.9.3
748-----
749.NET crashes do to random NullPointerExceptions has been fixed.  The
750.NET library seems to be completely stable now even under heavy load.
751
752When supplying a DataDictionary to Message::setString, the fields in
753repeating groups will now be placed in the correct order.
754
755Session will no longer send additional logout messages when one is pending.
756
757SocketAcceptor will no longer allow two connections to log on to the same
758session.
759
760When receiving a resend request for a larger than expected sequence number,
761QF will treat this like an INFINITE request.  This alleviates problems from
762receiving requests for extremely large numbers which cause a lot of lookups.
763
764When receiving a SequenceReset and GapFill flag set to N, the message will
765be processed even if the MsgSeqNum field is completely absent.
766
767Included message stores will now load up start times with the correct day
768of the year so week long sessions can safely be taken down and brought back
769up.
770
771Message and Parser can now handle messages with null characters.
772
773Session::sendToTarget is now able to route orders using a session qualifier.
774
775Message will be invalid in setString if it has trailing characters extra
776trailing characters that do not belong to a field.
777
778Messages with repeating groups can now have a properly implemented
779copy constructor.  It is safe to copy all messages.
780
781Added wrappers in .NET for some missing methods in DataDictionary and
782Session classes.
783
784process_sleep has proper support for millisecond precision under windows.
785
786Some messages in FIX44.xml were identified with the wrong MsgType string.
787
788Added missing DKReason enumerations to FIX40.xml, FIX41.xml, and FIX42.xml
789
790Fixed problem where FieldMap::calculateString did not properly reset the
791output string under VC6.  This caused problems with resend requests.
792
793JNI library will check input parameters for nulls and throw a
794NullPointerException if the method cannot handle a null value.
795
796Python library will be installed to the site module path.
797
798get method for retrieving a single message has been removed from MessageStore.
799Only the get methods for retreiving a range needs to be implemented now.
800
801Added missing UserRequest and UserResponse messages for FIX.4.4
802
803Session differentiates between dropping a connection and disconnecting
804normally in the event logs.
805
8061.9.2
807-----
808Fixed incorrect versioning of libraries under unix systems
809
8101.9.1
811-----
812Multi-character Currencies will no longer be rejected
813
814Fixed problems with MySQLStore loading in the wrong fields on startup.
815
816MySQLStore queries will retry once if connection to the daemon got dropped.
817
818Fixed link errors when building with some versions of Visual Studio.
819
820Fixed compilation errors when using STLPort
821
822Applied patches for SUNPro support
823
824Message::toXML() will place field values in a CDATA section in the text
825element so it can handle special XML characters. Placing XML strings that
826contain CDATA sections into a xmldata field will still cause
827problems but I'm not sure much can be done about that.
828
829More updates to FIX40 and FIX41 data dictionaries.
830
8311.9.0
832-----
833Session time logic pulled out into new SessionTime class.  Now supports
834weeklong sessions!  CME conterparties, start your engines!  Use the
835StartDay and EndDay configuration settings.
836
837Massive performance improvements.  Receiving and Sending message rates are
838dramatically improved.
839
840SessionQualifier added which allows you to uniquely identify a session with
841otherwise identical characteristics. You can now have multiple sessions
842which share the same BeginString, SenderCompID, and TargetCompID. Use the
843SessionQualifier configuration setting. *NOTE* this necessitated a change in
844the MySQL schema.  Regenerate your databases.
845
846Fixed some compilation problems which manifested themselves under VB.NET
847
848Administrative processing will be done after receiving a message if necessary.
849This prevents dropping of heartbeats when a session is pegged with
850traffic, causing the session to terminate.
851
852Some improvement in compilation times.  I'd like to see more work done to
853bring them down.
854
855Made several updates and corrections to the data dictionary.
856
857Made compatible with SubPRO compiler. We do not own this compiler so users
858who do will need to keep us up to date on compatability issues.
859
860Fixed some potential memory leaks in the python API.
861
862If a message store cannot be created under java, a proper java exception will
863be thrown.
864
865SessionSettings will throw ConfigError as java exception.
866
867JavaLogFactory throw ConfigError if log cannot be created.
868
869Connection classes correctly propogate RecvFailed exception.
870
871getFieldType exposed in java DataDictionary, although the enumerations are not
872yet exposed.  You need to test against their integer values.
873
8741.8.0
875-----
876Completed python API. Now QuickFIX can be used to FIX enable python scripts.
877This is currently only tested on linux.  It will probably work on solaris, and
878FreeBSD. To enable the python interface, run configure with
879--with-python=<dir containing Python.h>. Most of the python API is generated
880with SWIG (www.swig.org), thanks to them for updating their software to
881accomodate our requirements. If you wish to regenerate the API off of the
882SWIG interface definition file, you must get the latest SWIG from cvs.
883
884VB.NET API works again.
885
886Logout message with message indicated expected and received MsgSeqNum is sent
887if a too low sequence number is received.
888
889Initiator and Acceptor poll() commands now work under Windows.
890
891MySQL log and store will use proper escape sequences if any double quotes
892appear in the message.  Previously, these resulted in I/O errors.
893
894UtcDate becomes UtcDateOnly as per FIX.4.4
895
896Executor example application implemented in VB.NET and python. Documentation now
897includes VB.NET and python code snippets.
898
899Fixed a couple bugs with the MySQL message store. Some of the sequence numbers
900were being stored/retrieved in reverse. (thanks to Pasqale d'Aloise)
901
902Correct useful error is logged if a message is received with a sequence number
903too low without a PossDup flag.  The previous error "Field Not Found" was
904incorrect.
905
906The default behavior in the MessageCracker for admin messages is to ignore the
907messages.  Application messages will continue to throw UnsupportedMessageType.
908
909Unit tests are always built without optimizations to speed up compilation.
910
911MySQL scripts, log, and message store explicitly set the user to root by
912default to reflect requirements of new versions of MySQL.
913
914JNI workspace now points to the project in the correct directory, so the JNI
915library will build normally without having to modify the workspace.
916
917The first message received within the sessions time frame should always be
918processed. There were some circumstances where it would not correctly identify
919itself as being in the session time until the second message.
920
921Fixed some minor issues with the libxml based parse to make it more generally
922useful.
923
924process_sleep can sleep for sub-second timespans again.
925
926Added constructor which takes in SessionSettings to .NET FileLogFactory
927
9281.7.1
929-----
930License moved over to quickfixengine.org. Otherwise it is identical.
931
932logon() and logoff() methods provided for the Session class, allowing you to
933programatically.  Session times still work normally, but anytime during the
934session time you can logoff and then re-logon.
935
936When stopping an initiator or acceptor, all sessions will go through a proper
937logoff sequence instead of just disconnecting.  A session will be killed if it
938does not receive a logoff response within 5 seconds.
939
940Sequence numbers will be incremented correctly when rejected a resent message.
941This fixes an infinite resend request problem.
942
943Reject messages will no longer reverse routing fields if they
944were sent as blanks, fixing an inifinite resend request problem.
945
946A Session's MessageStore can now be accessed with getStore() method. Both
947getLog() and getStore() are available in Java and .NET APIs.
948
949Improved logging for disconnect scenarios.
950
951Message class now as isAdmin and isApp member functions.
952
953Message exposes iterators under Java which return fields as
954StringFields. Now you can iterate through all fields to dynamically
955discover what is available in a message.
956
957removeField added to Java Message.
958
959More Session methods are exposed in Java and .NET.
960
961Methods to retrieve information about what is in a DataDictionary now exposed
962through Java interface.
963
964In Java, constructor that takes in a DataDictionary but turns off validation
965is exposed.
966
967getGroup under Java will throw a proper exception instead of aborting.
968
969In the data dictionary file, omments can be added between values under
970enumerations without QuickFIX complaining about the format.
971
972Windows version whould now build with millisecond support.
973
974In FIX 4.0, Time type is treated like a UtcTimeStamp instead of a String.
975
976Example applications are part of the main build under *nix.
977
978stop on the initiator and acceptor will now work with the block() call.
979
980SecurityIDSource changed from CHAR to STRING in FIX44.xml
981
982Fixed warning when building .NET library.
983
9841.7.0
985-----
986FIX 4.4 support added to .NET! The .NET API had to be segmented into two
987assemblies: quickfix_net and quickfix_net_messages.  Why?  Well, the Managed
988C++ compiler has a bug that causes it to choke on any class with more than 17
989nested classes.  FIX 4.4 being the monster that it is, has several messages
990with more than 17 repeating groups (yikes!), so the generated code choked.
991This caused me some pain but eventually I came up with the less than ideal
992but workable solution of generating the message code as C#, which does not
993suffer from this problem.  So part of the .NET API is implemented in Managed
994C++ and part of it in C#.
995
996Java package changed from org.quickfix to just quickfix.  I know this is a
997horrible thing to do to you but the fact is we just don't have the domain
998name.  In the meantime I have registered quickfixengine.org (nothing is there yet)
999
1000Session mutex is locked during a resend request.  This will prevent new messages
1001from being sent in the middle of a resend request, which could cause all sorts
1002of havoc.
1003
1004Support added for Mac OS X and FreeBSD. Mac OS X doesn't currently support
1005sending milliseconds in UtcTimeStamps.  Some of the documentation for these
1006two systems isn't complete, so you should follow the linux documentation.
1007
1008Session more gracefully handles sending of messages during the logon process.
1009
1010Session will disconnect instead of sending a reject message on a bad logon.
1011In the future we may want to provide and option to send a logout with an
1012error message, although this is not generally recommended.
1013
1014reverseRoute added to message which will fill in inversed routing information
1015based on another message, allowing you to conveniently send a response.  The
1016Session class uses this for reject messages in order to ensure optional routing
1017tags are included in rejects.
1018
1019Acceptance test runner ported to ruby 1.8.
1020
1021For windows, debug libraries are placed into a separate debug directory instead
1022of being named things like quickfix_debug.lib.  The reason is that .NET projects
1023don't seem to support the notion of different versions of a build having different
1024file names, just different directories.  So in order to standardize I had to
1025change everything to follow this format.
1026
1027DataDictionary class has been wrapped for Java and .NET.  This allows you to
1028pass a DD into a message constructor along with a string.  This will allow you
1029to parse messages with repeating groups.
1030
1031Fixed problems with Session states not automatically resetting to prepare for
1032the start of a new session.  Sessions should now reset their state at the
1033correct times.
1034
1035Added toString() call to SessionID
1036
1037SessionID's can now be streamed in from a string. Useful if you want to stream out
1038a list of sessions to a file and recreate the objects from that file.
1039
1040Values in the settings file are read by a more inclusive regexp so many more
1041special characters can be used.
1042
1043UtcTimeStamps now support milliseconds.  SendingTimes for FIX versions
10444.2 and higher will be sent with millisecond resolution.  A new session level
1045setting MillisecondsInTimestamp is provided.  The default value is Y.
1046
1047Messages will be correctly parsed if it receives a partial BodyLength field.
1048The parser will make sure the complete field has been received before parsing
1049the rest of the message.
1050
1051The blockingStart call has been renamed to simply block, and a new poll call
1052has been added to Initiator and Acceptor.  So options for running quickfix are
1053through the start(), block(), and poll(), commands.
1054
1055getYearDay added to UtcTimeStamp and UtcTimeDate which returns the current day
1056of the year. (e.g. January 31 = 31, Febuary 1 = 32 )
1057
1058Floating point fields will be accepted with multiple leading 0's.
1059
1060.NET now has wrappers for the low-level C++ accessors for Message and Group.
1061
1062Added support for isSetField to java.
1063
1064Corrected some threading issues in windows by switching from _beginthread to
1065beginthreadex and from GetCurrentThread to GetCurrentThreadId
1066
10671.6.0
1068-----
1069FIX 4.4 support for C++ and Java APIs, with .NET on the way.  You can
1070technically use 4.4 with .NET now, but the generated message classes
1071are not yet available.
1072
1073Messages with repeating groups will no longer be silenty ignored when
1074no data dictionary is available.  QuickFIX will accept the message and
1075send a proper reject message at validation.  Reject message will be
1076supplied for unspecified repeating tags, and count mismatches for
1077repeating groups.
1078
1079ResendRequests are now done to INFINITY to reduce race condition
1080scenarios.
1081
1082Out of sequence ResendRequest don't alter sequence numbers which
1083would cause race conditions during simultaneous ResendRequests.
1084
1085Each C++ message is placed in its own file. This separation repairs
1086issues with Visual Studio running out of heap space.  This does mean,
1087however, that you will need to include the header for each individual
1088you intend on using instead of just including Messages.h
1089
1090Fields of type MultipleValueString that have enumerations will check
1091each individual value instead of checking the string as a whole. For
1092instance if you are sent a MVS containing "A C 5", the validator will
1093verify that A C and 5 are all valid enumerations.
1094
1095More descriptive error messages when reading invalid DataDictionary
1096files.  QuickFIX will no longer crash when givin a badly formatted
1097XML document, instead a ConfigError is thrown.
1098
1099Repeating groups within Component are now read correctly from the
1100DataDictionary file.
1101
1102DataDictionary will enforce that field names are unique.  This
1103prevents accidentally assigning two different field names to the
1104same tag number.
1105
1106Fixed a bug where messages sent while logged off were not stored in
1107the MessageStore, causing them to never be resent.
1108
1109By popular demand, the .NET API now exposes the isSetField call. This
1110allows .NET users to check for the presence of a field in a message.
1111
1112Fixed bug where re-used Field classes would not recalculate their
1113length and checksum when their values changes, causing messages to
1114be sent out with incorrect lenths or checksums.
1115
1116Fixed bug that cause the sendToTarget( Message, String, String )
1117signature would always fail from the Java API.
1118
1119Fixed incomplete copy operator for DataDictionary.
1120
1121ScreenLog now displays proper timestamps.
1122
1123libxml2 can be linked into windows build as an alternative to MSXML.
1124
1125Added accessor to Session class for the DataDictionary.
1126
1127Banzai should load correctly with the supplied configuration file.
1128
1129socket_t will be defined as int if not defined by the system. This
1130allows QF to be compiled on older systems such as Solaris 2.6
1131
11321.5.0
1133-----
1134Support for DATA fields. This will allow to safely send encrypted and
1135compressed fields.  Out of necessity, FIX parser uses the length field
1136instead of just looking for 10=SOH. This means behavior will be slightly
1137different when receiving messages with an incorrect length.
1138
1139Acceptor and Initiator start() method is a non-blocking call. onRun
1140is no longer called in your application.  Instead you must call stop on
1141your initiator or acceptor when you want it to shut down.
1142
1143Fixed several problems with parsing nested repeating groups and groups
1144with components.
1145
1146Added UseDataDictionary field which defaults to Y. You must explicitly
1147set this field to N if you DONT want to use a DataDictionary.
1148
1149New include structure for C++. Includes are now in the form of
1150quickfix/[file].h instead of the old quickfix/include/[file].h
1151
1152Several optimizations added to increase the speed of creating, parsing,
1153and sending messages.  Overall performance of the engine should be
1154considerably better.  Messages with repeating groups should show dramatic
1155performance increase.
1156
1157All libraries are now build as shared libraries. This also doubles the speed
1158of the build under gcc because object files only need to be compiled once
1159instead of twice as before.
1160
1161Header file dependencies have been reduced to speed up build. This may means
1162headers that were previously pulled in automatically via other header files,
1163may no longer do so.  You will now need to explicitly include these files where
1164needed.
1165
1166Fixed some resource leaks when shutting down threads.
1167
1168Added java acceptance tests. All FIX test scripts can now be run with
1169the runat_java and runat_java.bat commands in the test directory. FIX 4.3
1170tests now run with runat_threaded
1171
1172Queued logon messages (logons messages received with sequence number to
1173high), are skipped when processing queue.
1174
1175Build will pull CFLAGS, CXXFLAGS, and LDFLAGS in from the environment.
1176Default compiler flags are now -O2 -g. This may cause problems with some
1177older versions of gcc. Set CXXFLAGS to -O or blank if you have problems
1178compiling
1179
1180Added new 'void toString( std::string& )' and 'void toXML( std::string& )'
1181method calls. These are more efficient than 'string toString()' and
1182'string toXML' calls.  The new versions should be used if these methods
1183are called in a loop for better performance.
1184
1185FileLog forcefully flushes writes so the state of the storage file is
1186always up to date.
1187
11881.4.1
1189-----
1190Fixed compilation errors when building under gcc 3.x (matching throw
1191specifiers, JNI patch).  Also got rid of warnings caused by generated
1192source files not ending with newlines.
1193
1194getValue call in Java and .NET message class will throw and IncorrectDataFormat
1195exception instead of just crashing.  In C++, method also throws
1196IncorrectDataFormat instead of FieldConvertError.
1197
1198QuickFIX C++ call stack is available by running configure with the
1199--enable-callstack option, or defining USING_CALLSTACK in windows_config.h
1200
1201Engine will no longer crash when specifying an invalid hostname
1202
1203Added ConfigError throw specifier to Initiator/Acceptor start method.
1204
1205Removed ^M characters from install-sh which caused compile problems on
1206some systems.
1207
1208Fixed code generation so groups withing components within groups are
1209show up in message classes.
1210
1211Added missing SEQNUM type to DataDictionary.
1212
1213Increased heap size for Visual Studio so heap allocation errors are
1214less likely when compiling.
1215
1216In Java, renamed Session class to SessionSettings to match the C++ API
1217
1218Fixed bug where session times would not ever reset when the start time
1219is greater than the end time.
1220
1221Reentrant system calls are used when they are available. Fixed
1222unsynchronized resource bug on multi-processor machines.
1223
1224Initiator and Acceptor use correct result after spawning thread,
1225instead of assigning the boolean result as the threadid.
1226
1227Fixed deadlock in ThreadedSocketAcceptor and ThreadedSocketInitiator
1228when shutting down.
1229
1230UtcDate now calls the correct constructor so it is initialized
1231properly.
1232
1233Java MessageCracker now supports FIX 4.3 messages.
1234
12351.4.0
1236-----
1237Support for FIX 4.3
1238
1239New less redundant DataDictionary format, with support for component blocks
1240
1241reset method on Session now available in JAVA and .NET API's
1242
1243setNextSenderMsgSeqNum and setNextTargetMsgSeqNum available on session in all API's
1244
1245Changes made to messages in toAdmin and toApp in JAVA are correctly applied when sending
1246
1247new throw specifiers on fromAdmin and fromApp message. Prevents
1248crashes from occuring when no data dictionary is used.
1249
1250isSetField method added to JAVA API. Methods in version specific
1251messages also have methods to check if fields are set.
1252
1253sendToTarget throws SessionNotFound exception instead of just crashing
1254under .NET
1255
1256Fixed memory leaks in JNI interface
1257
1258Fixed race condition between sending application and admin messages
1259
1260Processing of Queue in ThreadedSocketConnection modified so it can
1261better handle large sustained throughput
1262
1263.NET namespace changed from Fix to QuickFix. Resolves conflict with
1264unmanaged FIX namespace allowing library to be used from VB.NET
1265
1266Messages with repeating groups no longer take in the number of
1267repeating groups in the constructor.  This value was always
1268overwritten when adding groups anyway.
1269
1270The start method in Initiator and Acceptor can throw an exception if a
1271serious error occurs.
1272
1273SocketAcceptor and ThreadedSocketAcceptor will no longer allow you to
1274silently takeover a used port.  An exception will be thrown instead.
1275
1276New constructor for SessionID takes strings.
1277
1278New setting ValidateFieldsHaveValue can be set to N to prevent
1279rejecting messages with empty fields.
1280
1281MySQL MessageStore will properly reset sequence numbers
1282
1283Java field classes have final integers which identify the tag number
1284of the field.
1285
1286Java and .NET will no longer crash when a incorrectly formatted field
1287is read from a session without a data dictionary.
1288
12891.3.2
1290-----
1291More portable file copies during build process on unix
1292
12931.3.1
1294-----
1295Fixed memory leak in repeating groups caused by FieldMap not calling
1296clear() in destructor.
1297
1298Corrected some minor errors building sample applications on some systems.
1299
13001.3.0
1301-----
1302Support for java on linux and solaris! Note some compilers/linux distributions
1303dont seem to do as well with this as others.
1304
1305Added support for repeating groups in .NET and java APIs.
1306
1307Event and message logging now available through the Log interface. This is
1308separate from the MessageStore which is now more acurately refered to as
1309a state mechanism.
1310
1311MySQLFileStore added.  Now QuickFIX can maintain state in a production quality
1312open source database right out of the box.
1313
1314--with-stlport configure option added for building with STLport.  This
1315fixes stability problems that users have been experiencing on
1316multi-processor machines with 2.95.x compilers.
1317
1318Message decoding has been optimized. Decoding FIX messages is now 3
1319times faster than before.
1320
1321Message class can now output FIX messages as XML.
1322
1323Fixed copy operator for FieldMaps that contain repeating groups.
1324
1325Fixed resource leaks in .NET API.  Message class should now be garbage
1326collected correctly. Also implemented IDisposable interface for
1327Message. Be sure you know what you are doing before using this!
1328
1329DataDictionary parser works much better.  In particular it is able to
1330generate the FIX40.xml and FIX41.xml files much more accurately.
1331
1332Test Requests are now sent properly during times of high activity.
1333
1334Test Request time span shortened for a timed out connection.
1335
1336MessageStore sets and gets strings instead of messages. This allows
1337the session to properly parse stored messages using its data
1338dictionary. The old way was causing problems with resends with
1339repeating groups.
1340
1341All MessageStore functions can now throw an IOException. If a session traps
1342an IOException it will consider it a serious problem and disconnect.
1343
1344The get method in MessageStore that asks for a range is now a void method
1345instead of a boolean. If there is a problem retrieving a message, throw an
1346IOException.  If you are asked for a message you do not have, just send back
1347whatever is available within the range.
1348
1349Faster load times for sessions that share a data dictionary. Each
1350DataDictionary file is now only parsed once on startup.
1351
1352In JAVA booleans are properly represented as booleans instead of Strings
1353
1354Currency types are properly represented as Strings
1355
1356Rejecting a resent message will no longer increment the expected
1357sequence number.
1358
1359Can now properly accept a message with repeating group where the
1360counter is set to zero.
1361
1362Continuous builds now being run on windows-vc6, windows-vc7, and
1363linux-pgcc-2-95-2, and solaris-gcc-2-95-3-stlport
1364
1365Message::getString() deprecated in favor of Message::toString()
1366
13671.2.1
1368-----
1369config.h no longer included from Utility.h.  This was causing problems
1370when people wanted to build quickfix application without autotools.
1371
1372More robust detection of dropped/bad sockets. One of our users ran
1373into a problem with this during certification with the CME. He has
1374confirmed that it works correctly now.
1375
1376Closing acceptors now works in all situations.
1377
1378Mutex locking in session is a little smarter, making it easier to
1379syncrhonize applications.
1380
1381code is now auto formatted with astyle. This makes it easier for
1382people to contribute code without having to worry as much about
1383conforming to coding standards.
1384
13851.2.0
1386-----
1387First release of .NET API for QuickFIX. The API is mostly a direct
1388port of the JAVA API, future versions well attempt to refine this API
1389to use more .NET specific constructs. QuickFIX applications can now be
1390written in C# or VB.NET or any other CLR language.
1391
1392Documentation covers all API's, C++, Java, and .NET
1393
1394New example application executor. Executor example is implemented in
1395C++, Java and C# for side by side comparison.
1396
1397Fixed bug where the session time range was not calculated correctly
1398when minutes or seconds were involved. (.i.e., is that start time was
1399set to 12:30:00, the 30 would cause problems, wheras 12:00:00 would be fine).
1400
1401Resend requests with EndSeqNo set to 0 (>=FIX 4.2) or 999999 (<=FIX
14024.1) are now supported.
1403
1404Possible duplicate messages with a sequence number that is too low
1405will no longer be forwarded to the application callback.
1406
1407FIX Specification parser modified so it will now capture some fields
1408that it was missing. The FIX42.xml file in particular is more complete.
1409
1410Made Java API more consistant with C++ API.
1411
14121.1.1
1413-----
1414Fixed memory leak caused by copying repeating groups.
1415
1416Added acceptance tests for FIX 4.0 and 4.1
1417
1418When new fields are added to the header or trailer portion of the XML
1419data dictionary, QuickFIX will now handle them appropriately.
1420
1421Header fields, not just body fields, can now be added to messages
1422passing through toApp and toAdmin callbacks
1423
1424New setting CheckLatency and MaxLatency are available for session
1425configuration. CheckLatency defaults to Y and determines if a session
1426will check if a message looks too old to process. MaxLatency defaults
1427to 120 and is the maximum number of seconds a message can be out of
1428date and still be considered good.
1429
1430New setting ValidateFieldsOutOfOrder is available for session
1431configuration. Sets whether or not header and body fields can be out
1432of order. Useful for connecting to systems that don't properly sort their
1433fields.
1434
1435New setting LogonTimeout is availbale for session configuration.
1436Number of seconds QuickFIX will wait to receive a logon response.
1437Defaults to 10.
1438
1439Another fix put in to allow string based enumeration to be properly validated.
1440
1441RefMsgType field no longer added to reject messages in versions
1442earlier than 4.2
1443
1444SequenceReset messages are now appropriately send with OrigSendingTime field.
1445
1446RejectLogon, DoNotSend and UnsupportedMessageType exceptions added to
1447JAVA interface.
1448
1449New settings ResetOnLogout and ResetOnDisconnect will reset sequence
1450numbers when a session is respectively normally or abnormally terminated.
1451
1452<string> is included from Exceptions.h, which makes QF compilable with STLPort.
1453
14541.1.0
1455-----
1456Added support for messages with repeating groups.
1457
1458Added ThreadedSocketInitiator and ThreadedSocketAcceptor. Each session
1459has its own thread for listening on a socket and one for processing messages.
1460
1461The signature for toApp and toAdmin have changed from
1462   ( const Message&, const SessionID& )
1463to ( Message&, const SessionID& ).
1464This allows applications to add fields to messages before they are sent out.
1465Particularly useful for administrative messages that need fields that arn't
1466added by default.
1467
1468Filestore is much more memory efficient. Only file offsets are stored in memory
1469and messages are retreived on in as needed basis. This keeps memory use way
1470down and also is a little faster for normal operations.
1471
1472On Linux and Solaris upgraded from libxml to libxml2. It is recomended by
1473the libxml guys that all new applications use libxml2. configure will verify
1474that libxml is installed on a system and automatically add the necessary
1475command line parameters.
1476
1477Possible duplicate messages are now passed to the fromAdmin and
1478fromApp application callbacks. Applications must now check for this
1479field and determine how possible duplicate messages should be handled.
1480
1481Values.h correctly generated enumerations for fields of type INT.
1482
1483Validation works with STRING enumerations, not just CHAR and INT.
1484
1485Sockets are now properly closed if a connection fails. This fixes a
1486leak in socket resources that appeared after a large number of
1487reconnect attempts.
1488
1489RefTagID, RefMsgType are no longer added to reject message in versions
1490of FIX 4.1 and earlier. BusinessMessageReject no longer used in FIX
1491versions 4.1 and earlier.
1492
1493Improved DataDictionary generation. More enumerations are listed.
1494
14951.0.4
1496-----
1497Fixed bug in FileStore where .session file was overwritten on reload.
1498
1499SocketInitiator now supports multiple alternate host and ports which allows
1500QuickFIX to take advantage of systems with failover servers.
1501
1502Custom build step under windows is now compatible with Visual Studio 7.
1503
1504Changed fields from template instantiated classes to standard classes in
1505order to stop Visual Studio 6 from crashing while in auto-complete mode.
1506
1507Changed char pointer comparison operators for StringField to friend functions
1508so left hand side comparisons can be done such as "value" == senderCompID.
1509
1510Began implementation of repeating groups.
1511
15121.0.3
1513-----
1514Added unit testing framework to ordermatch
1515
1516Fixed bug in ordermatch where executing a partailly filled order resulted in
1517the order being left open with a negative ammount.
1518
1519Added commands to standard input for ordermatch to list available symbols and
1520for displaying a book.
1521
1522Began implementation of C API.
1523
1524Added target field to order table in banzai.
1525
1526Banzai can now properly handle receiving executions from multiple targets
1527
15281.0.2
1529-----
1530Fixed an incorrect number 84600 in FieldTypes.h with the
1531constant UTC_DAY which is the correct 86400
1532
15331.0.1
1534-----
1535Several classes deriving from FIX::Application had different throw specifiers
1536than the base class.  This caused compilation errors with some compilers.
1537This has been corrected.
1538
1539FAQ has been updated.
1540