[ts-gen] May release
Bill Pippin
pippin at owlriver.net
Fri May 29 21:46:00 EDT 2009
This post summarizes recent fixes and changes.
The most recent release of the shim has been run against the newest
release, 894.4, of the IB tws, and includes the following changes
and bug fixes.
Features/Changes:
(1) Reduced latency for both scripted command input and large messages:
Add loop to select'd read to continue select'ing, with zero
delay, if: for IB tws socket, buffer was exactly filled; or,
for stdin command input, a line was read in.
(2) Command language change:
Modify the wait command to accept floating point input, to
read that input with microsecond resolution, and to update
wait delays at each iteration of the main loop, which,
given the approximately 20 millisecond duration of those
iterations, means that the minimum non-zero wait delay is
now about 0.020 seconds rather than 1 second.
This feature is provided to allow users to delay otherwise
back to back orders, where such delay is evidently required
in order to avoid limitations of the IB tws, and yet to spend
less time than a full second, which was an unecessarily long
delay.
Uncomfirmed anecdotal evidence indicates that the appropriate
delay is on the order of a third or quarter of a second. This
value is surprisingly high, and warrants furthur investigation.
(3) Change to order semantics:
Add a simple state machine to the per-order RiskId object
to reject invalid transitions --- modify before create,
multiple creates, and multiple submits --- and change the
rules for computing the order transmit flag for modify so
that it reflects the current state, that is, transmit
flag off if not yet submitted, and transmit flag on if
already submitted, with the effect that modify may be
used both before and, given the order still working, after
submission.
Bug fixes:
(1) Set line buffering as program default for stdout when the cout
option is provided. For data mode, add bulk option to override
this default, instead allowing system default buffering to
prevail, and thereby recovering the original behavior of shim
prior to this change. The bulk option is ignored in risk mode.
Thanks to Mike Thornton.
(2) Only the first interface in the getaddrinfo() return list was
tried for socket connect; now each IF is tried until the first
success (thanks to Richard Pruss). Also add AI_ADDRCONFIG flag
to ai_flags attribute so that only IFs of the same type --- v4
or v6 --- as the external IF will be included in the list.
(3) Fix serious table component error whereby search loop could hang.
Again, thanks to Richard Pruss.
Note: he still seems to be observing problems for OSX. I mention
this here since the bug fixes already made are significant for
Linux users as well, and so other users should consider upgrading
in any case.
(4) Fix race whereby order variable binding was extracted from
event loop processing, which occurs after event input loop
and so possibly following successive order commands, so that
order variable binding instead occurs during command
parsing, as an attribute grammar action. This is the orders
problem that led to my warning for last Friday's release, and
for which the mailing list post by Paul C suggested the problem
(thanks, Paul). This release also includes changes to the
exs/risk.rb test script to make it easier to modify and reuse.
Thanks,
Bill
More information about the ts-general
mailing list