Download Latest Version 8.7.1 -- Pipe Whisperer source code.tar.gz (491.2 kB)
Email in envelope

Get an email when there's a new version of zx

Home / 8.7.0
Name Modified Size InfoDownloads / Week
Parent folder
8.7.0 -- Solder Savior source code.tar.gz 2025-07-11 490.9 kB
8.7.0 -- Solder Savior source code.zip 2025-07-11 559.0 kB
README.md 2025-07-11 1.4 kB
Totals: 3 Items   1.1 MB 0

Important fixes for annoying flaky bugs

kill() 🐞

We've found an interesting case #1262

:::js
const p = $`sleep 1000`
const {pid} = p // 12345
await p.kill()

If we kill the process again, the result might be unexpected:

:::js
await ps({pid}) // {pid: 12345, ppid: 67890, command: 'another command', ...}
p.kill()

This happens because the pid may be reused by the system for another process, so we've added extra assertions to prevent indeterminacy:

:::js
p.kill()  // Error: Too late to kill the process.
p.abort() // Error: Too late to abort the process.

ps() 🐛

  • ps() uses wmic internally on Windows, it relies on fragile heuristics to parse the output. We have improved this logic to handle more format variants, but over time (in v9 maybe) we're planning to change the approach.

#1256 #1263 [webpod/ps#12](https://github.com/webpod/ps/issues/12) [webpod/ingrid#6](https://github.com/webpod/ingrid/issues/6)

:::js
const [root] = await ps.lookup({ pid: process.pid })
assert.equal(root.pid, process.pid)
Source: README.md, updated 2025-07-11