Skip to content

v0.20.3

Choose a tag to compare

@github-actions github-actions released this 22 Jun 12:46
v0.20.3
7543167

What's Changed

Bug Fixes

  • exec_command: bound drain in non-timeout path (#1164, closes #1162): A drain_task spawned in the non-timeout branch was never awaited, causing exec_command calls to hang indefinitely when a background subprocess held the output pipes open after exit. The drain future is now stored and explicitly awaited so the handler always returns.

  • exec_command: remove -l login shell on macOS, invert wait/drain order, add rx.close() (#1166): Removed the -l (login-shell) flag on macOS that added 100-200 ms of profile-sourcing latency per call. The wait/drain order is now correct: the child process is awaited before the drain task, preventing a race where drain completed before the process had fully flushed. rx.close() is called after drain to signal the output channel, eliminating another class of hangs.

Features

  • exec_command: drain_timeout_secs parameter (#1167, closes #1165): Accepts an integer >= 0 controlling how long the post-exit drain waits for a background subprocess holding pipes open before returning with output_truncated: true. 0 or omitted uses the 500 ms default; negative values return INVALID_PARAMS. README and tool description updated to document the new parameter alongside timeout_secs.

Documentation

  • exec_command: sync README and tool description with v0.20.2 changes (#1168): Documents timeout_secs, timed_out, and heredoc validation behaviour introduced in v0.20.2.

Maintenance

  • Dependency update: Cargo.lock refresh (#1169).

Full Changelog

v0.20.2...v0.20.3