Skip to content

v3.1.1

Choose a tag to compare

@andfoy andfoy released this 27 Oct 21:42
· 7 commits to main since this release
  • Pin the ConPTY NuGet package to 1.25.260930003 rather than resolving
    latest at build time, so an upstream ConPTY release can no longer change
    what the wheels contain without a pywinpty release.
  • Require winpty-rs 1.0.7, which fixes three user-facing bugs: a teardown
    deadlock against ConPTY 1.25 that made closing a PTY hang and left the child
    process orphaned, the loss of the first argument on the WinPTY backend, and
    PTY.write() returning 0 for payloads the child received in full.
  • Correction, 2026/10/28. These notes originally claimed that large ConPTY
    output was no longer truncated after the child exits, and that such output
    now reaches EOF. Both halves were wrong and nothing in 3.1.1 changed either.
    The truncation reported in
    #565 is
    cpython#86210, where an
    unbuffered _textiowrapper_writeflush ignores a partial write and silently
    drops the remainder - a producer-side CPython bug, not a pywinpty one. The
    measurement behind the original claim used a buffered producer writing
    line-sized chunks, so it never exercised the reported condition. EOF
    detection was also still broken on the ConPTY backend in 3.1.1:
    PTY.iseof() could never return True. That half is fixed in 3.1.2 by
    winpty-rs 1.0.8; the CPython bug remains upstream.
  • Stop publishing the vendored NuGet CPython inside the source distribution.
    The 3.0.5 and 3.1.0 sdists were ~16.2 MB because the pythonarm64 NuGet
    install landed in the same checkout that maturin sdist archives, and
    twine check never inspects archive contents. The sdist is back to ~30 KB
    and a content check now gates the upload.

Issues Closed

In this release 1 issue was closed.

Pull Requests Merged

In this release 2 pull requests were closed.