Skip to content

Release 5.7.0 - #1192

Merged
wboayue merged 6 commits into
release/5.xfrom
release-5.7.0
Nov 6, 2026
Merged

wboayue merged 6 commits into
release/5.xfrom
release-5.7.0

Conversation

@wboayue

@wboayue wboayue commented Nov 6, 2026

Copy link
Copy Markdown
Owner

5.7.0 from the release/5.x maintenance branch (cut from v5.6.0); main is 6.0-dev.

Cherry-picks (-x) of the non-breaking commits since 5.6.0:

Plus Release 5.7.0: version, dated changelog, compare links, install snippets "5.6" → "5.7".

Semver notes: new TickType variants (exhaustive enum, precedent 3.3.0) and new Execution field (precedent 4.1.0), both called out in the changelog.

Skipped: all 6.0: commits, #1180 (depends on 6.0 enums), docs/rules commits.

Checks: fmt, clippy + rustdoc -D warnings on all three CI legs, just test, cargo publish --dry-run.

Merge: rebase-merge, not squash, to keep one commit per cherry-pick with its (cherry picked from ...) trailer.

wboayue and others added 6 commits November 5, 2026 16:00
Port upstream TWS API combo implied bid/ask: TickType::ComboImpliedBid (112)
and ComboImpliedAsk (113), generic tick COMBO_IMPLIED_BID_ASK ("760") for
BAG contracts, and advertise server version 227.

(cherry picked from commit 7a961a2)
Add OptionExerciseType (C# COptionExerciseType table, Unknown(i32) catch-all, default None) and decode proto Execution.opt_exercise_or_lapse_type onto Execution; absent -> None.

Closes #1175

(cherry picked from commit 3f499dd)
* fix: bound one-shot reconnect wait by its deadline

The retry between one-shot attempts waited for the reconnect with no
timeout, so a call made while the connection was down blocked for the
whole reconnect (minutes), past one_shot_timeout. Thread the one-shot
deadline through ConnectionSignal, MessageBus, ReconnectWaiter and the
retry; the wait returns Error::Timeout once it passes. Sync and async.
Public Client::wait_connected stays unbounded.

Closes #1168

* docs: one_shot_timeout bounds the reconnect wait

(cherry picked from commit 1953a10)
* transport: close send race with reconnect handshake (#1171)

Previously a send checked the connection state in `ensure_connected` and
then wrote, with nothing to stop the reconnect from swapping the socket
between the two, so a send that raced the reconnect could be written to
the new socket before its handshake had finished.

`TcpMessageBus` and `AsyncTcpMessageBus` now hold a session `RwLock`:
the dispatcher takes the write lock across the reconnect and each send
takes the read lock across its state check and socket write, so a send
that overlaps the reconnect either completes on the old socket or is
refused (`ConnectionReset` while the reconnect can still succeed,
`ConnectionFailed` or `Shutdown` once it has ended).

The four local `wait_for` test helpers become `wait_for` and
`wait_for_async` in `test_utils::helpers`.

* test(transport): queued send stays off the reconnect handshake (#1171)

Covers the issue's path: a send already past its state check and queued on
the writer when the session breaks. Fails without the session gate.

* review: async queued-send test, CHANGELOG wording, test cross-refs (#1171)

---------

Co-authored-by: Wil Boayue <wil.boayue@gmail.com>
(cherry picked from commit 5400e59)
* transport: reconnect doesn't wait behind a stuck write

The session gate (#1172) waits out writes already past their check, and a
TCP write has no timeout: one stuck on a peer that stopped reading held the
reconnect until the peer read again or the client closed. The dispatcher now
severs the lost connection before taking the gate. Sync shuts the stream down
through the close handle; async marks the socket Broken. The stuck write fails
with ConnectionReset; reconnect clears the mark.

* changelog: cite #1179

* test(transport): share marker check; name wait bound for both test sockets

(cherry picked from commit cdfe278)
@wboayue
wboayue merged commit e33c5ce into release/5.x Nov 6, 2026
9 checks passed
@wboayue
wboayue deleted the release-5.7.0 branch November 6, 2026 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants