[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