- Upgrade jaq to 2.0 (#902)
- Flags are ordered alphabetically in
--help --filter-progis no longer experimental (won't warn on use)--only-emit-eventsnow implies--emit-events-to=json-stdio- Zero-value unitless time spans are no longer deprecated (#909)
- Linux build machines for the pre-built binaries now use Ubuntu 24.04; if you require an older glibc you'll need to build from source
New feature: --socket (#905)
This implements the systemd socket-passing protocol, like a lightweight systemfd: sockets are opened from the watchexec process, and then passed to the commands it runs. This lets you keep sockets open and avoid address reuse issues or dropping packets.
The value can be either of PORT (opens a TCP listening socket at that port), HOST:PORT (specify a host IP address; IPv6 addresses can be specified [bracketed]), TYPE::PORT or TYPE::HOST:PORT (specify a socket type, tcp / udp). This syntax and the behaviour of this option is compatible with systemfd's.
This integration only provides basic support, if you want more control you should use the systemfd tool from @mitsuhiko directly. To make use of the sockets in Rust code, you can use the listenfd crate, also by Armin.
I've also written a document that describes the minimal protocol, if you want to see how to use it in your projects or how to implement it yourself, both for Unix (systemd's invention) and for Windows (systemfd's invention): https://github.com/watchexec/watchexec/blob/main/doc/socket.md