chore(deps): upgrade moonbitlang/async 0.19.1 → 0.19.4#32
Conversation
|
CI on this isolated bump reproduces the windows-latest regression — same failure as the earlier combined attempt: Marked DEP-1
This PR stays red intentionally as the tracking vehicle. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fcfea5e9ff
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Bump every workspace manifest (root, tests, tests/isatty, tests/resize, tests/open, examples) so the workspace resolves to a single async version. No source or public API change; .mbti files are unchanged. Stacked on the output write lock branch; the lock only needed Semaphore (already in 0.19.1), so the dependency bump is isolated here for review. A prior combined attempt timed out the windows pty Tty::open test on 0.19.4; this isolated bump lets CI judge whether that was a real regression or a flake. See docs/plans/2026-06-15-async-0.19.4-upgrade.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI on the isolated bump reproduces the windows-latest Tty::open timeout, confirming a real 0.19.4 regression rather than a flake. Mark DEP-1 blocked pending investigation of the async event-loop change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fcfea5e to
d3fe516
Compare
async 0.19.2 changed the Windows file-open worker to detect file kind via
GetFileInformationByHandle (for the new FileIdentity / fs.watch feature)
instead of GetFileType. That disk-file API fails on console (character)
devices, so @async/fs.open("CONIN$"/"CONOUT$") now errors and the whole
Windows Tty::open path broke under 0.19.4 (the tests/open pty test failed
on windows-latest).
Open CONIN$/CONOUT$ directly with CreateFileW (synchronous, non-overlapped)
and wrap them in @async/raw_fd.RawFdStream, which classifies them by
GetFileType (CharDevice) and never registers overlapped IO — exactly the
working 0.19.1 console read/write path.
Unify both platforms on RawFdStream: drop the hand-rolled ControllingTerminal
struct and its six manual trait impls, and move the Fd/Reader/Writer impls
for RawFdStream into the shared io.mbt/isatty.mbt next to the File/Pipe/stdio
impls. The unix path is exercised by the pty-backed Tty::open test.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Follow-up to #31 (now merged). Base is
main.What
Bumps
moonbitlang/async0.19.1→0.19.4across every workspace manifest (root,tests,tests/isatty,tests/resize,tests/open,examples) so the workspace resolves to a single async version. Dependency version only — no source change, and.mbtifiles are unchanged.Why separate from #31
The output write lock in #31 only needs
Semaphore, which already exists in0.19.1with an identical API, so #31 stayed on0.19.1. Isolating the dependency bump here keeps the lock feature and the upgrade independently reviewable and revertable.0.19.4reproducibly fails windows-latest: thetests/openTty::openpty test times out (TimeoutError, 176/177 passed). ubuntu-latest and macos-latest pass (and the full suite passes locally on macOS native: root 165 + pty module 133). This was confirmed on the isolated bump, so it is a real0.19.4regression on the Windows CONOUT$ write path, not a flake.DEP-1is markedblocked. Suspect: the async0.19.1..0.19.4event-loop diff, in particular the changedIoHandle::detach_from_event_loopsignature/behavior, against the CONOUT$ write+close path.Do not merge until Windows is resolved. Options: bisect 0.19.2/0.19.3 to pin the regressing release for an upstream report, investigate/work around the event-loop change, or hold until fixed upstream.
Plan:
docs/plans/2026-06-15-async-0.19.4-upgrade.md(DEP-1).🤖 Generated with Claude Code