← Back to Opinions

Concerns with Uutils despite Rust performance

1. Incomplete POSIX Compatibility

Many Uutils commands implement only a subset of GNU coreutils flags. Scripts relying on extended flags (e.g., ls --classify, sed -z, or advanced stat syntax) will fail or produce incorrect output.

2. Binary Size & Runtime Dependencies

Rust-built binaries are often tens of megabytes larger than their C counterparts and require libssl and other shared libraries. On minimal containers or embedded devices, this bloat increases attack surface and complicates secure deployments.

3. Inconsistent Output Formatting

Output differences—such as missing locale-aware sorting in sort or altered timestamp formats in ls -l—break downstream tooling and parsers that assume GNU-style output, causing subtle automation failures.

4. Lack of Streaming & Pipeline Robustness

Some utilities buffer entire input before processing (e.g., head and tail variants), undermining Unix pipeline principles. This can lead to high memory usage and pipeline stalls on large data streams.

5. Test Coverage Gaps

The test suite often omits corner cases—failure exit codes on partial writes, handling of unusual file permissions, or non-UTF8 byte sequences. Deployments on diverse international systems risk silent data corruption.

Sources