Skip to content

chore(deps): upgrade moonbitlang/async 0.19.1 → 0.19.4#32

Merged
tonyfettes merged 3 commits into
mainfrom
chore/async-0.19.4
Jun 15, 2026
Merged

chore(deps): upgrade moonbitlang/async 0.19.1 → 0.19.4#32
tonyfettes merged 3 commits into
mainfrom
chore/async-0.19.4

Conversation

@tonyfettes

@tonyfettes tonyfettes commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #31 (now merged). Base is main.

What

Bumps moonbitlang/async 0.19.10.19.4 across 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 .mbti files are unchanged.

Why separate from #31

The output write lock in #31 only needs Semaphore, which already exists in 0.19.1 with an identical API, so #31 stayed on 0.19.1. Isolating the dependency bump here keeps the lock feature and the upgrade independently reviewable and revertable.

⚠️ Known Windows regression — this PR is currently red on purpose

0.19.4 reproducibly fails windows-latest: the tests/open Tty::open pty 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 real 0.19.4 regression on the Windows CONOUT$ write path, not a flake.

DEP-1 is marked blocked. Suspect: the async 0.19.1..0.19.4 event-loop diff, in particular the changed IoHandle::detach_from_event_loop signature/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

@tonyfettes

Copy link
Copy Markdown
Contributor Author

CI on this isolated bump reproduces the windows-latest regression — same failure as the earlier combined attempt: tests/open Tty::open times out (TimeoutError, 176/177 passed). ubuntu-latest and macos-latest pass. So 0.19.4 has a real Windows CONOUT$ write-path regression, not a flake.

Marked DEP-1 blocked. Options before landing:

  1. Bisect 0.19.2 / 0.19.3 on Windows CI to pin which release introduced it (good for an upstream bug report).
  2. Investigate the async 0.19.1..0.19.4 event-loop diff — prime suspect is the IoHandle::detach_from_event_loop signature/behavior change — against the CONOUT$ write+close path.
  3. Hold this PR until async fixes it upstream.

This PR stays red intentionally as the tracking vehicle.

Base automatically changed from feat/output-write-lock to main June 15, 2026 03:19

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread moon.mod
tonyfettes and others added 2 commits June 15, 2026 11:20
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>
@tonyfettes tonyfettes force-pushed the chore/async-0.19.4 branch from fcfea5e to d3fe516 Compare June 15, 2026 03:21
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>
@tonyfettes tonyfettes merged commit b6127ae into main Jun 15, 2026
3 checks passed
@tonyfettes tonyfettes deleted the chore/async-0.19.4 branch June 15, 2026 05:04
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.

1 participant