uutils/coreutils
72.8
Strong · 27 September 2026
131.5k
lines of production code
Rust
primary language
3
measurements over time
What this system is
This system is a Rust-based reimplementation of GNU coreutils, providing a comprehensive suite of standard command-line utilities for file manipulation, text processing, and system information. It focuses on high compatibility with GNU behavior, enhanced security through robust error handling and platform-specific optimizations, and improved performance via SIMD acceleration and efficient I/O. The project also emphasizes internationalization by supporting localized help and error messages, alongside rigorous testing through fuzzing and benchmarking to ensure stability and correctness.
How it got here
2013–2020 — Coreutils rewrite and modernization
103 changes.
This period focused on the comprehensive rewrite of the GNU coreutils suite in Rust, replacing legacy implementations with modern, clap-based architectures across nearly all utilities. The work emphasized strict GNU compatibility, robust error handling with localized diagnostics, and cross-platform support for Unix, Windows, and WASI. Additionally, the project established a unified development infrastructure, including a multi-call binary, embedded localization, and extensive test coverage to ensure reliability.
2021–2025 — new utilities and localization
96 changes.
This period focused on expanding the coreutils suite by implementing new commands such as dd, basenc, chcon, stty, and vdir, while significantly enhancing cross-platform support for existing tools like cp, tail, and rm. A major parallel effort involved migrating the entire project to a Fluent-based internationalization system, adding comprehensive French translations and locale-aware formatting for character encoding, collation, and dates. The work also established a robust testing and performance tracking infrastructure through centralized test harnesses, differential fuzzing, and extensive benchmarking suites.
2026 — Windows and WASI platform support
18 changes.
This period focused on extending core utilities to run on Windows and WASI by introducing platform-specific implementations for process handling, filesystem operations, and command semantics. The work also involved refactoring shared logic into common libraries and adding standalone binaries for checksum tools to improve modularity and cross-platform consistency.
Features
Add English and French localization for the id command
The id command now supports user-facing text in English (en-US) and French (fr-FR). This change introduces Fluent localization files that provide translations for the command's help text, usage instructions, error messages, and output labels, ensuring that users see the interface in their preferred language.
src/uu/cat/locales, src/uu/id/locales, src/uu/kill/locales · high confidence
Add Fluent localization files for chmod
Added English (en-US) and French (fr-FR) Fluent (.ftl) resource files for the chmod utility, providing translations for help text, usage instructions, error messages, and verbose output.
src/uu/chmod/locales · high confidence
Add Fluent localization files for nl help and error messages
The nl utility now includes Fluent (.ftl) localization files for English (en-US) and French (fr-FR), covering help text, usage instructions, and error messages. This enables the tool to display user-facing strings in these languages instead of hardcoded English.
src/uu/nl/locales · high confidence
Add Fluent localization files for the head command
The head utility now includes dedicated Fluent localization files (en-US.ftl and fr-FR.ftl) containing translations for its help messages, error strings, and output headers, enabling proper internationalization of the command's user-facing text.
src/uu/head/locales · high confidence
Add French localization for rmdir
The rmdir utility now supports French (fr-FR) translations for its user-facing messages, including help text, error messages, and verbose output. This change adds a new locale file alongside the existing English (en-US) base, allowing users with French language settings to see the tool's interface in their language.
src/uu/dirname/locales, src/uu/rmdir/locales · high confidence
Add French localization for the du command
The \du\ command now includes a French translation (fr-FR) for its help text, error messages, and status outputs, making the tool accessible to French-speaking users. This change introduces the \fr-FR.ftl\ locale file alongside the existing English (\en-US.ftl\) base, covering all user-facing strings such as option descriptions, usage instructions, and error details.
(repo-wide) · high confidence
Add French localization for the who utility
The who utility now supports French (fr-FR) translations, providing localized help text, command-line options, output messages, and error strings. This change introduces a new fr-FR.ftl locale file alongside the existing English (en-US) file, enabling users to see the interface in French.
src/uu/comm/locales, src/uu/who/locales · high confidence
Add chcon utility for changing SELinux security contexts
The chcon command is now available on Linux and Android, allowing users to modify the SELinux security context of files and directories. The implementation supports setting contexts via direct specification or by referencing another file, and includes options for recursive traversal, dereferencing symlinks, and verbose output. The utility is gated behind platform-specific compilation flags and provides a stub on unsupported platforms.
src/uu/chcon/src · high confidence
Add platform-specific implementations for \`who\` on OpenBSD and Unix
The \who\ utility now includes dedicated platform modules: on OpenBSD, it displays a localized message indicating the tool is unsupported because \utmpx\ is not available, while on other Unix systems, it provides the full implementation for reading utmpx records, handling various selection flags (such as boot, runlevel, and user sessions), and formatting output with localized strings.
src/uu/who/src/platform · high confidence
Add standalone sha384sum utility
A new standalone \sha384sum\ binary is now available, allowing users to print or check SHA384 checksums independently of the main coreutils suite. This change introduces the necessary entry points, localization strings for English and French, and a license symlink to support this dedicated tool.
src/uu/sha384sum · high confidence
Add vdir utility as an alias for ls
A new \vdir\ utility has been added to the coreutils package. It functions as an alias for \ls\, reusing the same command-line arguments and configuration logic to list directory contents in verbose format. This change ensures that users can invoke \vdir\ with the same options as \ls\, providing a familiar interface for those accustomed to GNU coreutils.
src/uu/dir, src/uu/vdir · high confidence
Added English and French localization files for the fmt utility
The fmt utility now includes dedicated Fluent localization files for English (en-US) and French (fr-FR). These files provide translations for the tool's help messages, usage instructions, and error strings, enabling users to see the interface in their preferred language. The French translation specifically addresses previous anglicisms to ensure more natural phrasing.
src/uu/fmt/locales · high confidence
Added English and French localization for cksum help text
The cksum utility now supports user-facing text in English (en-US) and French (fr-FR). This change introduces Fluent translation files that provide localized strings for the command's description, usage syntax, and the list of supported digest algorithms (such as CRC, MD5, SHA-2, SHA-3, and BLAKE2b) in the help output.
src/uu/cksum/locales · high confidence
Added French localization for base32, base64, and basenc help messages
Users can now see help and error messages for the base32, base64, and basenc commands in French. This change introduces a new French locale file (fr-FR.ftl) containing translations for usage instructions, encoding format descriptions, and shared error messages, complementing the existing English localization.
src/uu/base32/locales · high confidence
Added French localization for ptx help and error messages
The ptx utility now includes a French (fr-FR) translation file containing localized help text, usage instructions, and error messages, complementing the existing English (en-US) locale. Users with French language settings will now see the ptx interface translated into French.
src/uu/ptx/locales · high confidence
Added French localization for shuf
The shuf utility now includes a French translation (fr-FR) for its help messages, usage instructions, and error strings, alongside the existing English locale. This allows French-speaking users to see interface text in their language when running shuf commands.
(repo-wide) · high confidence
Added French localization for the seq utility
The seq utility now supports French (fr-FR) translations for its help messages, usage instructions, and error diagnostics. This change introduces a new locale file containing French equivalents for all user-facing strings, allowing French-speaking users to see the tool's interface in their language alongside the existing English defaults.
src/uu/paste/locales, src/uu/seq/locales, src/uu/sum/locales · high confidence
Added French localization for the sync command
The sync command now supports French (fr-FR) translations for its user-facing messages, including help text, error messages, and warnings. This change introduces the French locale file alongside the existing English (en-US) base, allowing French-speaking users to see localized output for operations such as synchronizing cached writes, handling file errors, and managing non-blocking flags.
(repo-wide) · high confidence
Added benchmarking documentation and scripts for rm
The rm utility now includes a BENCHMARKING.md guide and a benchmark.sh script to help users measure and compare performance. Users can utilize tools like hyperfine to benchmark recursive deletion against GNU rm or previous versions, and can generate flamegraphs using samply or Cargo Flamegraph to analyze system call counts and profiling data.
src/uu/rm · high confidence
Factor command adds Fluent localization for English and French
The factor utility now supports internationalization via Fluent localization files, introducing initial translations for English (en-US) and French (fr-FR). This change replaces hardcoded strings with localized messages for help text, usage instructions, and error reporting (such as invalid input or read/write errors), allowing users to see the tool's interface in their preferred language.
src/uu/factor/locales · high confidence
Implement comm utility with locale-aware collation and new options
The comm utility is now implemented in Rust, introducing locale-aware line comparison for correct sorting behavior, along with support for the --zero-terminated (-z) and --total flags. It also includes a --check-order option to validate input file ordering and handles non-UTF-8 filenames and I/O errors more robustly.
src/uu/comm/src · high confidence
Initial implementation of the \`join\` utility
The \join\ command is now available, allowing users to join lines of two files on a common field. This implementation supports various field separators (including whitespace, single-byte, and multi-byte characters), case-insensitive matching, and locale-aware collation. It also provides options to print unpaired lines, use auto-formatting, and handle empty output fields, bringing the utility's behavior in line with standard GNU coreutils expectations.
src/uu/dircolors/src, src/uu/join/src, src/uu/ln/src · high confidence
Initial repository scaffolding and development environment setup
The repository is initialized with essential configuration files and documentation to support development and contribution. This includes a GNU Make build system (GNUmakefile), Rust tooling configurations (clippy, rustfmt, cargo-deny), and pre-commit hooks (prek) to enforce code quality. Documentation files such as CONTRIBUTING.md, DEVELOPMENT.md, and AGENTS.md are added to guide contributors, alongside standard project files like CODE\_OF\_CONDUCT.md and .gitignore. A .busybox-config file is also introduced to configure the BusyBox test suite integration.
(repo-wide) · high confidence
Introduce \`cat\` utility implementation
The \cat\ utility is now available, implemented in \src/uu/cat/src/cat.rs\ with a CLI interface built using Clap. It supports standard options for displaying file contents, including line numbering (\-n\, \-b\), showing non-printing characters (\-v\, \-T\, \-E\), and squeezing repeated blank lines (\-s\). The implementation includes platform-specific handling for Unix file types and error management via \uucore\.
src/uu/cat/src · high confidence
Introduce \`cksum\` utility with GNU-compatible checksumming
Adds the \cksum\ command-line utility, providing file integrity verification and checksum generation. The implementation supports multiple algorithms (including CRC, SHA-2, SHA-3, Blake2b, Blake3, and SHAKE variants) and offers output formatting options such as tagged/untagged formats, binary/text modes, base64 encoding, and raw output. It includes hardware acceleration detection for x86 and ARM architectures, validates algorithm-specific parameters like bit lengths, and aims to match GNU coreutils behavior for compatibility.
src/uu/cksum/src · high confidence
Introduce \`du\` utility with GNU-compatible disk usage reporting
The \du\ command is now available, providing disk usage statistics for files and directories. It supports standard options such as human-readable output (\-h\), apparent size (\-a\), inode counting (\--inodes\), and threshold filtering (\--threshold\). The implementation includes cross-platform support for Windows and Unix, handles symbolic links via \--dereference\ and \--no-dereference\, and respects file system boundaries with \--one-file-system\. It also supports reading file lists from standard input or files via \--files0-from\ and allows excluding patterns with \--exclude\.
src/uu/du/src · high confidence
Introduce \`factor\` utility with exponent output and multi-precision support
The \factor\ command is now available in Rust, replacing the previous implementation. It supports factoring integers up to 128-bit and arbitrary-precision via \num\_bigint\, utilizing the \num\_prime\ crate for efficient factorization. A new \--exponents\ flag allows users to display prime factors with their exponents (e.g., \2^3\), and the tool handles stdin input with GNU-compatible parsing, including null-byte delimiters.
src/uu/factor/src · high confidence
Introduce basenc utility for unified base encoding
Adds the new \basenc\ command, which provides a single interface for multiple base encoding formats (base64, base64url, base32, base32hex, base16, base2lsbf, base2msbf, z85, and base58). Users can now select a specific encoding via mutually exclusive flags (e.g., \--base64\, \--base58\) instead of relying on a priority list, with the last specified encoding taking precedence.
src/uu/basenc/src · high confidence
Introduce chmod utility with symlink and recursive traversal fixes
The chmod utility is now available, implementing core permission-changing behavior including support for symbolic modes, recursive directory traversal, and reference-file mode copying. This release addresses several critical edge cases: it correctly handles dangling symlinks (previously failing), fixes reporting when no changes are made with --reference, and improves safe traversal to prevent race conditions and handle symlink cycles during recursive operations.
src/uu/chmod/src · high confidence
Introduce embedded, utility-specific localization bundles
The uucore library now embeds locale files directly into the binary at compile time, replacing the previous runtime file-loading mechanism. This change ensures that translated error messages, help text, and diagnostic labels (including English and French) are always available, even when installed via crates.io or in environments where system locale directories are missing. The build system (\build.rs\) automatically detects whether it is building a standalone utility or a multicall binary, embedding only the relevant locale strings for the specific command to minimize binary size and improve startup performance.
src/uucore · high confidence
Introduce kill utility with GNU-compatible signal handling and listing
The \kill\ command is now available, allowing users to send signals to processes and list signal information. It supports standard options like \-l\ (list signals) and \-t\ (table view), with signal names and values handled via the \uucore\ signal library. The implementation ensures GNU compatibility by rejecting invalid obsolete signal specifications (e.g., lowercase signal names with \-\) and handling signal values correctly. It also supports bash-compatible \-n\ short alias for \-s\ and provides localized help text.
src/uu/kill/src · high confidence
Introduce multi-call coreutils binary and uudoc documentation generator
The repository now includes a new multi-call binary \coreutils\ (src/bin/coreutils.rs) that dispatches to individual utility implementations based on the executable name or the \--list\ flag, and supports \--version\/\-V\ to display the package version. A new documentation tool \uudoc\ (src/bin/uudoc.rs) has been added to generate manpages and shell completions for utilities, featuring post-processing to fix mandoc lint warnings and integration with localization. These binaries rely on a generated utility map and a new validation module (src/lib.rs) to handle argument parsing, error reporting, and utility resolution.
src/bin · high confidence
Introduce new Rust implementation of the basename utility
The basename command is now implemented in Rust within the src/uu/basename module, replacing the previous implementation. This new version uses clap for argument parsing and uucore for core utilities, supporting standard options like -a (multiple), -s (suffix), and -z (zero-terminated output). The implementation handles path processing and suffix stripping using OsString for better compatibility with non-UTF8 filenames.
src/uu/basename/src · high confidence
Introduce standalone md5sum binary
The md5sum utility is now available as a standalone binary, allowing users to run it independently rather than only through the coreutils umbrella. This change includes the necessary entry points (main.rs), the core implementation logic (md5sum.rs), localization files for English and French, and a license symlink, enabling direct invocation of md5sum for printing or checking MD5 checksums.
(repo-wide) · high confidence
Introduce stty utility for terminal line discipline configuration
Adds the \stty\ utility, allowing users to change and print terminal line discipline settings. This new feature supports reading and writing control, input, output, and local flags, configuring special characters (such as interrupt and quit keys), setting baud rates (input/output), and adjusting terminal size (rows/columns). It also includes support for saving and restoring terminal states, applying 'sane' defaults, and operating on specific device files via the \--file\ option.
src/uu/stty/src · high confidence
Introduce the \`install\` utility
Added the \install\ command to uutils, providing file and directory installation capabilities including support for creating leading directories (\-D\), setting ownership and permissions, preserving timestamps, comparing files before overwriting (\-C\), and handling backups. The implementation includes SELinux context support on Linux/Android, non-UTF-8 filename handling, and safe directory traversal to prevent race conditions.
src/uu/install/src · high confidence
Localized error and help messages for tr into English and French
The tr utility now provides user-facing text in English (en-US) and French (fr-FR) using Fluent localization files. This change replaces hardcoded strings with localized versions for help descriptions, usage instructions, and detailed error messages (such as those for invalid character classes, missing operands, and sequence parsing issues), improving clarity for non-English speakers.
src/uu/tr/locales · high confidence
Localized help and error messages for the pr utility
The pr utility now displays its help text, usage instructions, and error messages in the user's configured language. This change introduces Fluent localization files for English (en-US) and French (fr-FR), covering command-line option descriptions (such as pagination, column formatting, and line numbering) and specific error conditions (like invalid arguments or file access issues). Users will see these translated strings instead of hardcoded English text when running pr with --help or when encountering errors.
src/uu/pr/locales · high confidence
New CI and build utility scripts for GNU test analysis, PGO, and coverage
Added several new scripts to the util directory to support the CI pipeline: GHA-delete-GNU-workflow-logs.sh to clean up GitHub Actions logs, analyze-gnu-results.py to aggregate and analyze GNU test suite results, build-pgo.sh for Profile-Guided Optimization builds, and build-run-test-coverage-linux.sh for generating code coverage reports. Also added check-common.sh and related scripts (check-libc-interposition.sh, check-open-once.sh) to verify syscall behavior and libc interposition for utilities like cp, mv, chmod, and chown.
util · high confidence
New fold utility implementation with Unicode and streaming support
The \fold\ command is now implemented in Rust, introducing support for Unicode character widths and column-based folding (the default mode) alongside the existing byte and character modes. It handles variable-width tabs, preserves backspace and carriage return characters, and processes input in streaming chunks to bound memory usage. The utility also improves robustness by continuing to process remaining files after encountering an open error and rejecting invalid width values (including zero) with GNU-compatible error messages.
src/uu/fold/src · high confidence
New locale-aware i18n infrastructure for character encoding, collation, and formatting
The \src/uucore/src/lib/features/i18n\ module has been expanded with new capabilities for handling internationalization. It now includes locale-aware multi-byte character length detection (supporting UTF-8, GB18030, EUC-JP, EUC-KR, and Big5) via \charmap.rs\, and ICU-based locale-aware string collation for sorting and joining operations via \collator.rs\. Additionally, \datetime.rs\ provides locale-specific calendar support (Buddhist, Persian, Ethiopian) and localized month/day name formatting, while \decimal.rs\ handles locale-specific decimal and grouping separators. These changes enable tools like \sort\, \join\, \date\, and \cut\ to correctly respect user locale settings for character boundaries, sort order, and date/number formatting.
src/uucore/src/lib/features/i18n · high confidence
New modular parser library in uucore
A new \parser\ feature module has been introduced in \uucore\ to centralize and standardize input parsing across utilities. This module provides dedicated sub-modules for number parsing (\num\_parser\), size and block-size resolution (\parse\_size\, \parse\_block\_size\), time duration parsing (\parse\_time\), glob pattern matching (\parse\_glob\), and signed numeric arguments (\parse\_signed\_num\). It also includes a \shortcut\_value\_parser\ for clap integration. This refactoring consolidates previously scattered parsing logic into a shared, reusable library, improving consistency and reducing code duplication in utilities like \head\, \tail\, \ls\, and \printf\.
src/uucore/src/lib/features/parser · high confidence
New uufuzz library for differential fuzzing of command-line utilities
A new \uufuzz\ crate has been added to provide a library for differential fuzzing, allowing developers to compare the behavior of uutils coreutils against GNU coreutils (or any other reference implementation) using randomly generated inputs. The library includes core functions to execute commands, capture stdout/stderr/exit codes, and compare results, along with utilities for generating random test inputs. Several working examples are included to demonstrate basic usage, fuzzing simulations, pipe input handling, and integration testing approaches.
fuzz/uufuzz · high confidence
Sort command messages are now localized into English and French
The sort utility now supports internationalization, providing user-facing messages in English (en-US) and French (fr-FR). This change replaces hardcoded strings with Fluent resource files, ensuring that error messages (such as file open or read failures), warnings (including new warnings for obsolescent key syntax and separator behavior), help text, and usage instructions are displayed in the user's preferred language.
src/uu/install/locales, src/uu/sort/locales, src/uu/touch/locales · high confidence
Split command now supports French localization
The split utility now includes a French (fr-FR) translation file, allowing users to see help text and error messages in French. This change also introduces the English (en-US) locale file, establishing the Fluent format for all user-facing strings in the command, including usage instructions, option descriptions, and error details.
src/uu/sleep/locales, src/uu/split/locales · high confidence
Tail command messages are now translatable
The tail utility now supports localization, with user-facing strings such as help text, error messages, and status notifications extracted into Fluent resource files. This change adds initial support for French (fr-FR) alongside the default English (en-US) strings, allowing the command's output to be displayed in the user's preferred language.
src/uu/tail/locales · high confidence
Test command gains structured error reporting with caret diagnostics
The \test\ utility now provides detailed, user-friendly error messages for malformed expressions. When a parse error occurs, the command highlights the specific argument that caused the failure with a caret marker and includes contextual help text (e.g., explaining valid operators or integer formats). This is achieved by introducing a new \ParseError\ type, a dedicated parser, and a diagnostics module that maps errors to their source arguments for rendering.
src/uu/test/src · high confidence
Unified cross-platform process signal and timeout handling
The \uucore\ library now provides a consistent \ChildExt\ trait for managing child processes on both Unix and Windows. This change introduces native Windows support for sending signals (including process group signals) and waiting with timeouts, emulating POSIX behavior using Windows Job Objects and console control events. Users of utilities like \kill\ and \timeout\ will now experience feature parity on Windows, including proper signal delivery and termination semantics that were previously missing or inconsistent.
src/uucore/src/lib/features/process · high confidence
Windows support for the kill command
The \kill\ utility now runs on Windows, delivering signals via a new platform-specific implementation that emulates Unix semantics using Job objects and process-suspend APIs. On this platform, PID 0 targets the current Job object, while negative PIDs and the STOP signal are explicitly rejected as unsupported. The implementation also attempts to elevate privileges to ensure signal delivery succeeds.
src/uu/kill/src/platform · high confidence
arch utility now supports localized help and error messages
The arch command now displays user-facing text (such as help descriptions, usage instructions, and error messages like 'cannot get system name') in the user's configured language. This is achieved by integrating Fluent localization files (en-US.ftl, fr-FR.ftl) and using the uucore translation macros within the main implementation, replacing previous hardcoded English strings.
src/uu/arch/src · high confidence
chgrp now supports the --from option to restrict changes to files with a specific group
The chgrp utility has been updated to include a new --from GROUP option, allowing users to change the group ownership only for files that currently belong to the specified GROUP. This feature enables more precise permission management by preventing accidental changes to files with different existing groups. The implementation also includes improved error handling for invalid group IDs and better support for non-UTF-8 filenames.
src/uu/chgrp/src · high confidence
cp command help and error messages are now localized
The \cp\ utility now supports internationalization for its user-facing text. Help messages, error messages, verbose output, and debug strings are extracted into Fluent resource files, with initial translations provided for English (en-US) and French (fr-FR). Users will see these messages in their configured language when running \cp --help\ or when errors occur during file operations.
(repo-wide) · high confidence
cp utility rewritten in Rust
The \cp\ command has been reimplemented in Rust, replacing the previous implementation. This change introduces a new codebase structure with dedicated modules for directory copying (\copydir.rs\) and platform-specific operations (\platform.rs\), while maintaining the standard command-line interface and behavior for file copying operations.
src/uu/cp/src · high confidence
dd command help and error messages are now translatable
The \dd\ utility's user-facing text, including help documentation, error messages, and progress output, has been migrated to a Fluent localization format. This change introduces English (en-US) and French (fr-FR) locale files, allowing these strings to be translated and displayed in the user's preferred language rather than being hardcoded in English.
src/uu/dd/locales · high confidence
dd: initial implementation with conversion, blocking, and progress reporting
The \dd\ utility is now available, providing a complete rewrite of the core data copy functionality. This release introduces support for character set conversions (ASCII, EBCDIC, IBM, lowercase, and uppercase), record blocking and unblocking with configurable block sizes, and output buffering to handle partial blocks correctly. It also features a \status=LEVEL\ option for controlling progress reporting (including \status=progress\ for real-time updates) and implements standard input/output flags such as \nocache\, \direct\, and \sparse\. Error handling has been improved with diagnostic messages that point to the specific part of the command line that caused a failure.
src/uu/dd/src · high confidence
dircolors help and error messages are now localized
The dircolors utility now supports user-facing text localization. Help messages, usage instructions, and error strings are extracted into Fluent resource files, with initial translations provided for English (en-US) and French (fr-FR). Users will see these messages in their preferred language when interacting with the tool.
src/uu/dircolors/locales, src/uu/uniq/locales · high confidence
expr: Localized help and error messages via Fluent
The \expr\ utility now supports localization for its help text and error messages, with initial translations provided for English (US) and French (FR). Users will see translated output for the \--help\ and \--version\ flags, as well as context-aware error messages (such as syntax errors or division by zero) when the system locale matches the available translations.
src/uu/expr/locales · high confidence
mknod now supports SELinux and SMACK security contexts at creation time
The mknod utility now accepts the -Z/--context options to set SELinux or SMACK security labels on newly created nodes. This is implemented by applying the security context during the inode creation process (using SELinux's FsCreateContext or SMACK's set\_smack\_label\_and\_cleanup) rather than relabeling the file after creation, which eliminates a security window and aligns with GNU coreutils behavior.
src/uu/mknod/src · high confidence
mktemp: Added French localization and Fluent translation infrastructure
The mktemp utility now supports French (fr-FR) in addition to English, with all user-facing strings (about, usage, help, and error messages) converted to the Fluent format. This enables users to see localized help and error messages when using the French locale.
src/uu/mktemp/locales, src/uu/readlink/locales · high confidence
mv command now supports localization with initial French translation
The mv utility now uses Fluent for localization, introducing a new en-US locale file and adding the first French (fr-FR) translation. This change ensures that all user-facing strings—including help text, error messages, verbose output, and prompts—are translatable, allowing French-speaking users to see the interface in their language.
src/uu/mv/locales · high confidence
nice: Adds Fluent localization files for English and French
The nice utility now includes dedicated Fluent localization files (en-US.ftl and fr-FR.ftl) containing translations for its help text, usage instructions, and error messages. This enables the command to display user-facing strings in English and French, improving accessibility for non-English speaking users.
src/uu/nice/locales · high confidence
pathchk utility added with POSIX and portability checking modes
The pathchk utility is introduced to validate file paths for portability and POSIX compliance. It supports three operational modes: Basic (checking path and component lengths against POSIX limits and character sets), Extra (detecting leading hyphens in path components), and Both (combining Basic and Extra checks). The tool also includes a Default mode that relies on filesystem limits. It handles non-UTF-8 filenames via OsString and provides localized error messages for issues such as exceeding path length limits, invalid characters, or empty file names in portability modes.
src/uu/pathchk/src · high confidence
pathchk: Added English and French localization files
The pathchk utility now includes initial localization support with new Fluent resource files for English (en-US) and French (fr-FR). These files define the user-facing strings for the tool's help text, usage instructions, and error messages (such as POSIX compliance checks, path length limits, and nonportable character warnings), enabling the command to display interface text in these languages.
src/uu/pathchk/locales · high confidence
pinky: Added French localization and converted help text to Fluent format
The pinky utility now supports French (fr-FR) translations for its user interface, including help messages, column headers, and status labels. Additionally, the English (en-US) localization files have been converted to the Fluent format, ensuring consistent translation management across the tool.
src/uu/pinky/locales · high confidence
pwd command now supports localization with French translation
The pwd utility has been ported to use the Fluent localization framework, enabling user-facing strings (help, usage, warnings, and errors) to be translated. This change adds initial support for French (fr-FR) alongside the existing English (en-US) locale, allowing users to see the command's output in their preferred language.
src/uu/pwd/locales · high confidence
rm: introduce --progress and --verbose output with safe directory traversal
The rm utility now supports the --progress flag, displaying a progress bar during recursive removals, and the --verbose flag, which prints a line for each removed file or directory. Additionally, the command now uses safe I/O functions for directory traversal on Unix systems (excluding Redox), improving reliability and preventing panics on write failures by reporting them once without aborting the operation.
src/uu/rm/src · high confidence
seq: support floating-point numbers and custom format strings
The \seq\ utility now supports floating-point arguments and increments, replacing the previous integer-only implementation with \BigDecimal\ for precision. A new \-f, --format\ option allows users to specify custom output formatting (similar to \printf\), while the existing \-w, --equal-width\ option remains for padding. This change also introduces improved error reporting with caret diagnostics for invalid format strings and stricter validation, such as rejecting zero increments and disallowing \-f\ and \-w\ simultaneously.
src/uu/seq/src · high confidence
sha1sum is now a standalone binary
The sha1sum utility is now available as a standalone binary rather than only as a symlinked command within the coreutils suite. This change introduces a dedicated entry point and localizations (English and French), allowing users to invoke sha1sum independently to print or check SHA1 checksums of files.
src/uu/sha1sum · high confidence
shred: Added French translation and converted help text to Fluent format
The shred utility now supports French (fr-FR) in addition to English, providing localized help text, error messages, and verbose output. The underlying localization system has been migrated from the previous format to Fluent (FTL), ensuring consistent string handling for both languages.
src/uu/shred/locales · high confidence
stdbuf: Added French translation and Fluent localization files
The stdbuf utility now includes a French (fr-FR) translation file alongside the existing English (en-US) Fluent localization files. This change enables French users to see translated help text, usage instructions, and error messages (such as invalid mode or path separator errors) when running stdbuf, improving accessibility for French-speaking users.
src/uu/stdbuf/locales · high confidence
stty: Initial implementation with BSD target detection
The stty utility has been added to the project, introducing a new command-line tool. The implementation includes a build script that configures target aliases to identify BSD-based operating systems (Apple, FreeBSD, DragonFly, NetBSD, and OpenBSD), ensuring the tool is correctly compiled and available on these platforms.
src/uu/stty · high confidence
unexpand: Added French localization and migrated help text to Fluent
The unexpand utility now supports French (fr-FR) translations for its help and error messages, and the English (en-US) strings have been converted to the Fluent format. Users will see localized UI text in French and consistent, structured message formatting across languages.
src/uu/unexpand/locales · high confidence
uptime: add --since and --pretty output options
The uptime command now supports two new flags: --since (-s) displays the date and time when the system was last booted, and --pretty (-p) formats the uptime duration in a more human-readable way (e.g., days, hours, minutes). These options are implemented in src/uu/uptime/src/uptime.rs using the jiff library for time calculations and integrate with the existing platform-specific uptime logic.
src/uu/uptime/src · high confidence
wc: Added French localization and migrated messages to Fluent
The wc utility now supports French (fr-FR) in addition to English, with all user-facing strings (help, errors, and debug messages) converted to the Fluent format. This change ensures consistent translation handling and allows French users to see localized output for options, error conditions, and debug information.
src/uu/wc/locales · high confidence
Architecture
Introduce shared checksum utility library
A new \checksum\_common\ crate has been added to provide shared CLI argument definitions, localization strings, and common processing logic for all checksum utilities (such as \sha256sum\, \md5sum\, etc.). This refactoring centralizes the handling of options like \--algorithm\, \--length\, \--check\, and output formatting, ensuring consistent behavior and help text across the entire \cksum\ family of tools.
_src/uu/checksum\common · high confidence
ls: Refactor into modular source files and add programmatic output API
The \ls\ utility source code has been reorganized from a single monolithic file into distinct modules (\colors\, \config\, \dired\, \display\, \output\, \ls\), improving maintainability and separation of concerns. Additionally, a new programmatic API is exposed via the \output\ module, allowing external consumers to receive structured file metadata through the \LsOutput\ trait and \EntryInfo\ struct without parsing text output.
src/uu/ls/src · high confidence
Behavioural changes
Add French localization and migrate help text to Fluent format
The \users\ utility now supports French (fr-FR) translations for its help and usage messages, in addition to the existing English (en-US) strings. The localization system has been migrated to use the Fluent format (.ftl files), replacing the previous help\_about structure. This ensures that users seeing the French locale will receive accurate translations for the command's description, usage syntax, and the musl libc warning regarding utmpx stubs.
src/uu/users/locales · high confidence
Added French localization for the false command
The false command now supports French translations. Users can view help and version information in French (fr-FR), in addition to the existing English (en-US) strings, via the new Fluent localization files.
src/uu/false/locales · high confidence
Added French localization for whoami error messages
The whoami utility now supports French (fr-FR) translations for its error messages, such as failures to retrieve or print the username. This change introduces a new French locale file alongside the existing English one, enabling users who have set their system language to French to see localized error feedback instead of English defaults.
src/uu/whoami/locales · high confidence
Checksum validation and computation logic moved to uucore
The checksum validation and computation logic has been extracted from the individual utility binaries into the shared \uucore\ library. This change introduces a new \checksum\ module within \uucore\ containing \compute.rs\ for generating checksums and \validate.rs\ for verifying them, along with a \mod.rs\ that defines the supported algorithms (including Blake3 and SHAKE variants) and error types. For users, this ensures consistent behavior across \cksum\, \md5sum\, \sha256sum\, and other checksum utilities, particularly regarding error handling, output formatting, and support for new algorithms.
src/uucore/src/lib/features/checksum · high confidence
Conditional build configuration for libstdbuf on Windows and Unix
The libstdbuf library now includes a build script that prevents compilation on non-Unix targets (such as Windows), as the Windows stdbuf.exe relies on a separate Cygwin-compiled DLL. For Unix targets, the build process enforces position-independent code (-fPIC) required for LD\_PRELOAD and applies strict symbol linking flags (-z defs), except on macOS and Cygwin where those flags are unsupported.
src/uu/stdbuf/src/libstdbuf · high confidence
Cut utility rewritten with clap 4 and multibyte-aware delimiter matching
The cut utility has been completely rewritten to use clap 4 for argument parsing and a new matcher-based architecture for field and delimiter handling. This change introduces support for non-UTF-8 delimiters, multibyte character awareness in field mode (preventing multi-byte characters from being split across selections), and a new --whitespace-delimited option that respects Unicode whitespace separators. The implementation now uses bstr for efficient byte-string processing and provides GNU-compatible error diagnostics for invalid ranges and options.
src/uu/cut/src · high confidence
Date utility rewritten with jiff and enhanced format/locale support
The date utility has been completely rewritten to use the jiff library instead of chrono, bringing improved performance and better GNU compatibility. This change introduces comprehensive support for GNU-style format modifiers (flags like -, \_, 0, ^, \#, + and width specifications), locale-aware default date formats using the system's date\_fmt, and proper handling of format width overflow errors. The implementation also adds support for military timezones, ICU-based locale calendar conversions, and improved error handling for invalid format strings and date inputs.
src/uu/date/src · high confidence
Echo command rewritten to remove clap dependency and implement custom argument parsing
The echo utility has been refactored to remove its dependency on the clap library, replacing it with a custom argument parser that handles flags like -n, -e, and -E directly. This change introduces specific behavioral adjustments: the -e and -E flags now override each other (with the last one taking precedence), support for octal escape sequences (\\NNN) has been added, and the command now respects the POSIXLY\_CORRECT environment variable to alter how arguments are interpreted. Additionally, the implementation ensures that backslash escapes are not expanded for \\u, \\U, and \\" sequences when -e is used, and it correctly handles edge cases such as double hyphens and leading hyphens in arguments.
src/uu/echo/src · high confidence
Fold utility adds French localization and Fluent message definitions
The fold utility now includes a French (fr-FR) translation file alongside the English (en-US) base, enabling French-language help text and error messages for users. The English locale file defines the specific strings for the --help output, usage instructions, and error conditions (such as invalid or out-of-range width values), which are now managed via the Fluent localization format.
src/uu/fold/locales · high confidence
Improved error reporting for --split-string parsing
The env command now provides precise, visual error feedback when the --split-string (-S) argument contains syntax issues. Instead of a generic message, the output highlights the exact location of the problem—such as a missing closing quote, an invalid escape sequence, or a malformed variable expansion—using a caret and explanatory text. This change makes it significantly easier to identify and correct mistakes in complex string arguments.
src/uu/env/src · high confidence
Improved security and error handling in coreutils utility execution
The coreutils binary now resolves the actual executable path using the kernel's execfn on Linux/Android (non-musl) to prevent security bypasses via \env -a\ on hard-linked binaries, while also accepting \/dev/fd/\ prefixes for shebang or fexecve calls. Additionally, unknown utility invocations now print errors to stderr instead of stdout, and unrecognized options trigger a proper error message rather than a panic.
src/common · high confidence
Localization support added for the join command
The join utility now supports internationalization by introducing Fluent localization files for English (en-US) and French (fr-FR). This change replaces the previous static help and error message strings with parameterized translations, allowing users to see the command's help text, usage instructions, and error diagnostics in their preferred language.
src/uu/join/locales · high confidence
New printf-style formatting engine in uucore
The \src/uucore/src/lib/features/format\ module has been replaced with a new, dedicated implementation for \printf\-style formatting. This change introduces a new number parser, a new \ExtendedBigDecimal\-based number formatting engine, and support for escape sequences (including Unicode and octal). For users, this means that \printf\, \seq\, and other utilities relying on uucore formatting now use a rewritten backend that aims for closer GNU compatibility, including fixes for floating-point rounding, hexadecimal printing, and handling of extreme precision/width values without panicking.
src/uucore/src/lib/features/format · high confidence
Nohup utility rewritten in Rust with platform-specific behavior
The nohup command has been reimplemented in Rust, replacing the previous implementation. This change introduces platform-specific handling for Unix and Windows environments via separate modules, ensuring correct behavior across different operating systems. The utility now uses clap for argument parsing and supports localization through a translation system. It also respects the POSIXLY\_CORRECT environment variable to determine the exit code on failure, aligning with POSIX standards. The output file nohup.out is created with appropriate permissions, and the command execution errors are properly reported to the user.
src/uu/nohup/src · high confidence
Paste utility rewritten with clap 4 and improved input handling
The paste utility has been refactored to use clap 4 for argument parsing and uucore's localization macros, replacing the previous getopts/clap 3 implementation. This change introduces support for multi-stdin inputs and prevents unbounded buffering when processing a single input source (streaming directly to stdout instead of buffering lines), which avoids memory issues with infinite streams like /dev/zero. Additionally, the utility now correctly resets the delimiter list per file in serial mode and handles non-UTF-8 filenames via OsString, ensuring better GNU compatibility and robustness.
src/uu/paste/src · high confidence
Performance improvements for base64 encoding and decoding
The \basenc\ utility now uses the \base64-simd\ crate to accelerate base64 encoding and decoding operations via SIMD instructions. This change provides significant performance improvements, with base64 encoding becoming approximately 3-4 times faster and decoding 4-5 times faster than the previous implementation. On large files (4GB+), the overall performance is 1.77x faster than GNU coreutils base64. The SIMD implementation automatically detects and uses the best available CPU instructions (SSE2, SSSE3, SSE4.1, AVX2, etc.) for maximum performance on the target platform.
src/uu/basenc · high confidence
Platform-specific copy implementations for Linux, macOS, Windows, and WASI
The \cp\ command now uses dedicated platform modules to handle file copying with OS-specific optimizations. On Linux, it supports copy-on-write cloning via \ioctl\_ficlone\ and sparse file creation using \fiemap\/\lseek\. On macOS, it leverages the \clonefile(2)\ system call for reflinks and handles fallbacks for existing destinations. Windows gains sparse copy support by setting the \FILE\_ATTRIBUTE\_SPARSE\_FILE\ flag and allocating holes based on volume cluster sizes. WASI receives symlink creation support, while other Unix systems and non-Unix platforms fall back to standard byte-for-byte copying with restrictive destination permissions.
src/uu/cp/src/platform · high confidence
Platform-specific external sort implementation for WASI
The external sort module now uses platform-specific implementations: on WASI targets, it falls back to a single-threaded in-memory sort because threads are unavailable, while on other platforms it continues to use the multi-threaded chunked approach with temporary files. This change enables the sort utility to function correctly on WASI, though large inputs on that platform may consume significant memory.
_src/uu/sort/src/ext\sort · high confidence
Platform-specific file writing and filter support for split
The split utility now uses a new platform abstraction layer (src/uu/split/src/platform) to handle output file creation and shell filtering. On Unix, it supports writing to a shell process's stdin via the --filter argument, allowing output files to be processed by external commands while forwarding the output filename. It also prevents overwriting the input file by checking if input and output paths refer to the same file. On Windows, it provides similar file-overwrite protection but does not support shell filtering. For WASI, it implements a best-effort path-based check to prevent overwriting input files, as WASI lacks process spawning and direct file descriptor comparison. This change ensures consistent behavior across platforms while leveraging platform-specific capabilities where available.
src/uu/split/src/platform · high confidence
Platform-specific touch implementations for WASI and Windows
The touch utility now includes dedicated platform modules for WASI and Windows. On WASI, file timestamps are set using rustix's utimensat because the filetime crate is unimplemented, and touching stdout is unsupported. On Windows, the tool uses the GetFinalPathNameByHandleW API to resolve the path of stdout, enabling touch operations on piped output where previously this might have failed or been unavailable.
src/uu/touch/src/platform · high confidence
Platform-specific uptime implementation for Unix and Windows
The \uptime\ utility now uses a platform-specific facade to handle system-specific details. On Unix systems, it supports reading from a user-supplied utmp file operand (where available) and derives boot time from utmpx records, with specific handling for OpenBSD (which lacks utmpx) and Android (which excludes utmpx paths). On Windows, the utmp file operand is unsupported and ignored, while boot time is derived directly from system uptime APIs. This change ensures consistent behavior across platforms while respecting OS-specific limitations.
src/uu/uptime/src/platform · high confidence
Port rm to Fluent localization
The rm utility now uses the Fluent format for its user-facing strings, replacing the previous localization method. This change introduces new English (en-US) and French (fr-FR) translation files containing help text, error messages, and progress indicators, ensuring consistent and modern internationalization support for the command.
src/uu/rm/locales · high confidence
Port uname to Fluent localization and add French translation
The uname utility's user-facing text (help messages, error strings, and labels) has been migrated to the Fluent localization format. This change introduces a new French translation (fr-FR) and adds labeled output support for the -A/--all-labeled option, where each system information item is printed on its own line with a translated label (e.g., "Kernel name:" or "Nom du noyau:").
src/uu/uname/locales, src/uu/uptime/locales · high confidence
Realpath rewritten with clap 4 and new resolution modes
The realpath utility has been completely rewritten to use clap 4 for argument parsing, introducing a custom parser to strictly reject empty operands. This change adds new command-line options: -E/--canonicalize (all components must exist), -e/--canonicalize-existing (all components must exist, alias for -E), and -m/--canonicalize-missing (allow missing final component). It also adds -P/--physical to resolve symlinks in all components, and -L/--logical to resolve only the final component. The -s/--strip option now explicitly disables symlink resolution. The tool now supports relative path resolution via --relative-to and --relative-base options. Error handling has been improved with better exit code management in quiet mode and proper handling of non-UTF-8 filenames.
src/uu/realpath/src · high confidence
Refactor nohup platform-specific logic and align behavior with GNU coreutils
The platform-specific implementation for nohup has been reorganized into separate Unix and Windows modules. On Unix, the tool now makes the substitute stdin unreadable (opening /dev/null write-only) to match GNU behavior, ensuring commands that mistakenly read from stdin receive an error rather than a silent EOF. On Windows, the child process's stderr is now redirected to the output file (or stdout if stderr is not terminal) when stdout is redirected, mirroring Unix semantics. Additionally, the Unix implementation sets the output file mode to 0600 for new files to restrict access.
src/uu/nohup/src/platform · high confidence
Refactor rm to use platform-specific safe traversal implementations
The rm utility's platform-specific logic has been extracted into a new \src/uu/rm/src/platform\ module (containing \mod.rs\ and \unix.rs\). This change introduces Unix-specific implementations for safe directory traversal and file removal, utilizing \DirFd\ and \SymlinkBehavior\ to handle symlinks and directory descent more securely. It also refactors interactive prompts to reuse existing \stat\ data, reducing system calls, and ensures that verbose write failures do not abort the removal process.
src/uu/rm/src/platform · high confidence
Refactor whoami to use platform-specific modules for username retrieval
The whoami utility now uses a new platform abstraction layer (src/uu/whoami/src/platform) to retrieve the current username. On Unix systems, it leverages rustix for getting the effective user ID and uucore for resolving the username, replacing previous libc calls. On Windows, it switches from the winapi crate to windows-sys to call GetUserNameW, removing the advapi32-sys dependency. This change isolates platform-specific logic into dedicated unix.rs and windows.rs modules within the platform directory.
src/uu/whoami/src/platform · high confidence
Refactored file-following logic and added WASI support
The file-following subsystem has been restructured into dedicated modules (files, watch) to improve maintainability and fix several platform-specific issues. The \FileHandling\ struct now manages file state using a \HashMap\ with canonicalized paths, resolving issues where \-f\/\-F\ failed to follow files on Windows and correctly handling symlinks that change targets or are replaced. Additionally, WASI support has been added by providing stub implementations for the observer when platform-specific notification features (inotify/kqueue) are unavailable, allowing \tail\ to compile on WASI targets.
src/uu/tail/src/follow · high confidence
Refactored platform-specific process checking to use rustix and windows-sys
The platform abstraction layer for \tail\ has been restructured to improve cross-platform compatibility and safety. On Unix systems, process liveness checks now use the \rustix\ crate instead of unsafe \libc\ calls, providing a safer way to detect if a process has terminated. On Windows, the implementation has migrated from the \winapi\ crate to \windows-sys\, updating the underlying API usage for process handle management. Additionally, WASI support has been added by providing stub implementations for process checks, allowing \tail\ to compile on WASI targets where process management is not available.
src/uu/tail/src/platform · high confidence
Refactored quoting style engine with locale-aware escaping and control character handling
The quoting style module in uucore has been restructured to use a new \Quoter\ trait and dedicated implementation files (C, shell, literal) for better code organization. This change introduces locale-aware escaping for file names, ensuring that control characters and non-Unicode sequences are handled correctly according to the system's encoding. Specifically, it fixes issues with shell quoting (\%q\) where control characters and quotes were previously not escaped properly, and adds options to show or hide control characters in output. The refactoring also includes sane defaults for quoting styles to reduce code duplication and improves the robustness of name escaping across different utilities like \ls\ and \cksum\.
_src/uucore/src/lib/features/quoting\style · high confidence
Refined unsafe overwrite detection for cat on Unix
The \cat\ utility now more accurately detects when writing to a file that is also being read from would cause data corruption. On Unix systems, the new platform-specific logic in \src/uu/cat/src/platform/unix.rs\ checks if the output file is opened in append mode; if so, it verifies that the input file descriptor's position is at or beyond the end of the file, preventing false positives for safe append operations. It also correctly handles cases where input and output file descriptors are at different offsets within the same file. Windows and WASI implementations have been updated to match this safer behavior, with WASI assuming safety due to platform limitations.
src/uu/cat/src/platform · high confidence
Rewrite of \`fmt\` to match GNU coreutils behavior and compatibility
The \fmt\ utility has been rewritten in Rust to align its behavior with GNU coreutils. This change introduces GNU-compatible line-breaking algorithms (including the Knuth-Plass optimal algorithm), measures width in UTF-8 bytes rather than display columns to match GNU's byte-oriented approach, and enforces strict validation for width and goal parameters (e.g., preventing goal \> width, handling width limits, and managing goal-to-width ratios). It also improves prefix handling (honoring exact/exact-skip prefixes) and error reporting for invalid inputs.
src/uu/fmt/src · high confidence
Rewrite of \`id\` utility to align with GNU coreutils behavior
The \id\ utility has been rewritten to conform to GNU coreutils (8.32) test suite requirements, specifically for \uid.sh\ and \zero.sh\. This change introduces proper error handling for the \-u\, \-g\, and \-G\ flags, ensuring correct stderr output and exit codes. It also adds support for multiple users (a feature from coreutils 8.31) and implements the \--zero\ flag, which is now restricted to be used only with other GNU-compatible options. The implementation replaces the previous BSD-based logic with a new structure that handles name lookups and group ID ordering more robustly, including fixes for panic conditions on write errors and NULL pointer dereferences.
src/uu/id/src · high confidence
Rewrite of \`od\` core logic to improve GNU compatibility and performance
The \od\ utility has been rewritten to replace the previous implementation with a new modular architecture that significantly improves GNU coreutils compatibility and input handling. The new code introduces a \MultifileReader\ that optimizes skipping bytes on seekable inputs using \seek\ and \splice(2)\ instead of reading and discarding, while correctly handling non-seekable streams. It adds support for new float format specifiers (\fH\ and \fB\ for half-precision and bfloat16) and ensures float output uses the shortest round-trip representation matching GNU \od\ 9.11. The rewrite also fixes several behavioral issues, including panics on empty address radix, incorrect handling of large ASCII dump widths, and proper error reporting when skipping past the end of seekable special files.
src/uu/od/src · high confidence
Rewrite of the \`more\` pager with new options and improved terminal handling
The \more\ utility has been rewritten to use \clap\ for argument parsing and \crossterm\ for terminal interaction, replacing the previous implementation. This change introduces several new command-line options: \-s\/\--squeeze\ to squeeze multiple blank lines into one, \-n\/\--lines\ and \--number\ to specify the number of lines to display, \-u\/\--plain\ for plain text output, \-F\/\--from-line\ to start viewing from a specific line, and \-p\/\--pattern\ to search for patterns within files. The pager now handles multiple files more robustly, displaying a status banner when switching between them, and provides clearer error messages for directories or non-existent files. Terminal behavior has been improved with better handling of raw mode, panic recovery, and screen clearing, ensuring a more stable and consistent user experience.
src/uu/more/src · high confidence
Rewritten head utility with improved argument parsing and error handling
The head utility has been rewritten to use clap 4 for argument parsing, introducing a new cli.rs module and refactoring the core logic in head.rs. This change adds support for the -z/--zero-terminated flag, improves error messages with caret diagnostics for invalid size arguments, and fixes several bugs including handling of non-seekable files, overflow on 32-bit platforms, and the -c0/-n0 behavior on directories. The rewrite also includes better handling of obsolete argument formats (e.g., -5k) and ensures GNU compatibility for edge cases.
src/uu/head/src · high confidence
Shred utility rewritten with clap argument parsing and improved performance
The shred utility has been refactored to use clap for argument management, introducing support for new options like --force and --random-source, while also improving performance by switching to StdRng and increasing the buffer size to 65536 bytes. The implementation now handles non-UTF-8 filenames correctly, ensures deterministic pass sequences compatible with the reference implementation, and provides better error reporting for issues such as inaccessible files and random source failures.
src/uu/shred/src · high confidence
Sleep utility rewritten with clap and fundu for improved argument parsing and error handling
The sleep utility has been refactored to use the clap argument parser and the fundu library for time parsing, replacing the previous getopts-based implementation. This change introduces stricter validation, requiring at least one time argument and returning an error (exit code 1) if none are provided or if parsing fails. It also improves error messages by leveraging fundu's error types and ensures that multiple duration inputs are summed safely using saturating addition to prevent panics on overflow. The help text and usage messages are now localized via the uucore translation system.
src/uu/sleep/src · high confidence
Split utility rewritten with clap 4 and modular architecture
The split command has been completely rewritten to use clap 4 for argument parsing, replacing the previous getopts-based implementation. This change introduces a modular codebase with separate modules for CLI definitions, filename generation, number handling, and chunking strategies. Users benefit from improved argument validation, better error messages with caret diagnostics, and enhanced support for non-UTF-8 filenames and arguments. The rewrite also adds new features like the --filter option, improved --number option support with round-robin and kth-chunk capabilities, and better handling of suffix auto-widening and auto-width.
src/uu/split/src · high confidence
Standardized main entry point with signal handling and error reporting
The \uucore\_procs\ crate now provides a \\#\[main\]\ procedural macro that wraps utility entry points to centralize startup behavior. This macro automatically captures and restores SIGPIPE states for correct pipeline compatibility, disables Rust's default signal handlers to ensure proper core dumps, and standardizes error output by displaying usage hints (e.g., "Try 'util --help'") when errors occur. Utilities using this macro benefit from consistent error handling and signal management without requiring manual boilerplate in each binary.
_src/uucore\procs · high confidence
Sync utility rewritten with new CLI arguments and platform-specific sync logic
The sync utility has been restructured to support new command-line options, specifically --data and --file-system, allowing users to control whether only file data or the entire file system is synchronized. On Linux and Android, the implementation now uses the rustix crate for low-level file operations, including opening files with non-blocking flags and resetting them to match GNU behavior, while Windows support has been updated to use the windows-sys crate for volume enumeration and flushing. The command-line interface has been migrated to clap 4, providing localized error messages and usage strings, and the main entry point now returns a UResult for consistent error handling.
src/uu/sync/src · high confidence
Tail utility rewritten with clap 4 argument parsing and new follow/polling architecture
The \tail\ utility has been completely refactored to use clap 4 for argument parsing, introducing a new \args.rs\ module that handles options like \--follow=name\, \--retry\, and \--sleep-interval\ with sub-second precision. The core logic now uses a new \Observer\ pattern in \follow.rs\ to manage file monitoring, supporting both inotify (Linux) and kqueue (macOS) backends, with a fallback to polling. Input handling is abstracted via \paths.rs\ and \chunks.rs\, which provide efficient reverse-chunk iteration for large files and support for zero-terminated lines. The change also adds support for negative indexing (e.g., \-n -5\), improves error handling for permission denied and file-not-found cases, and ensures GNU compatibility for obsolete argument syntax (e.g., \-5f\).
src/uu/tail/src · high confidence
Truncate utility re-implemented with clap and uucore integration
The truncate command has been rewritten to use the clap argument parser and uucore infrastructure, introducing structured size-mode handling (absolute, extend, reduce, at-most, at-least, round-down, round-up) and improved error diagnostics for size arguments. Users benefit from better GNU compatibility, including support for non-UTF-8 filenames, proper handling of --reference and --size overrides, and more precise error messages when size parsing fails or when operations would cause overflow or division by zero.
src/uu/truncate/src · high confidence
Unexpand now supports extended tab-stop syntax (+N and /N) and rejects invalid inputs
The unexpand command now accepts extended tab-stop specifications using the +N (increment) and /N (repeat) syntax, matching GNU coreutils behavior. It also validates tab size arguments, rejecting zero, excessively large values, or non-ascending sequences with clear error messages instead of crashing or overflowing.
src/uu/unexpand/src · high confidence
Unlink command now supports English and French translations
The unlink utility has been updated to use Fluent for localization, adding initial support for English (en-US) and French (fr-FR). Users will now see translated messages for the command's description, usage instructions, and error handling (e.g., 'cannot unlink {path}') in these languages, improving accessibility for non-English speakers.
src/uu/unlink/locales · high confidence
Unlink utility rewritten to use clap 4 and uucore macros
The unlink command has been refactored to use the clap 4 argument parser and uucore's localization and error-handling infrastructure. This change updates the command-line interface to support long arguments by default, improves error messages with proper quoting of file paths, and ensures consistent help text formatting across utilities. Users will see updated help output and more robust error reporting when unlinking files.
src/uu/unlink/src · high confidence
Uptime library now supports Windows and fixes platform-specific build issues
The \uucore::uptime\ module now includes a Windows implementation, allowing the \uptime\ command to function on Windows by using \GetTickCount64\ for system uptime and WTS session enumeration for user counts (load average remains unsupported on Windows). This change also resolves build failures on Android and wasm32 targets, fixes a potential null-pointer dereference in the Windows session buffer handling, and improves macOS boot-time detection reliability by using \sysctl\ as a fallback when \utmpx\ data is unavailable.
src/uucore/src/lib/features/uptime · high confidence
Windows filesystem information now uses safe Win32 wrappers for accurate free space and mount paths
The Windows backend for filesystem extension functions has been rewritten to use safe Win32 API wrappers instead of previous implementations. This change ensures that \df\ and related tools on Windows now correctly resolve mount paths by mount prefix and report real free space values, improving the accuracy of disk usage reporting on Windows systems.
src/uucore/src/lib/features/fsext · high confidence
base32 utility restructured with clap 4 and streaming I/O
The base32 command has been rewritten to use clap 4 for argument parsing and uucore's localization macros, replacing the previous getopts-based implementation. This change introduces streaming I/O for Base32 and Base64 formats to keep memory usage bounded during large file operations, while Base58 retains full buffering. The utility now supports localized help text, allows repeating decode/ignore-garbage flags, and prints an error for extra operands instead of silently ignoring them.
src/uu/base32/src · high confidence
base64 utility restructured to use clap and shared base logic
The base64 command has been refactored to use the clap library for argument parsing and delegates core encoding logic to the shared base\_common module. This change standardizes the command's help output and argument handling, aligning it with other utilities in the suite that now use the same base application structure.
src/uu/base64/src · high confidence
basename command now supports French localization
The basename utility now provides user-facing text in French (fr-FR), including help messages, usage instructions, and error strings. This change adds the French locale file alongside the existing English (en-US) locale, allowing French-speaking users to see the command's interface in their language.
src/uu/basename/locales · high confidence
chcon help and error messages now support French localization
The chcon utility now provides translated user-facing text for French users. This change adds a French locale file (fr-FR.ftl) containing translations for the command's help descriptions, usage instructions, error messages, and verbose output, allowing the tool to display these strings in French instead of English when the system locale is set to French.
src/uu/chcon/locales · high confidence
chown utility rewritten in Rust
The chown command is now implemented in Rust (src/uu/chown/src), replacing the previous implementation. This new version uses clap for argument parsing, supports non-UTF-8 paths via OsString, and integrates with uucore for error handling and translation. It allows setting arbitrary numeric user IDs and groups, and supports the '.' character as a separator in addition to ':'.
src/uu/chown/src · high confidence
chown: Added French translation and warning for dot separator
The chown utility now includes a French (fr-FR) localization for its help and error messages. Additionally, the tool now warns users when a dot (.) is used instead of a colon (:) as the separator between owner and group specifications, displaying a message indicating that the colon should be used.
src/uu/chown/locales · high confidence
chroot: Added French localization and migrated help/error messages to Fluent
The chroot utility now supports French (fr-FR) in addition to English, providing translated help and error messages. The localization system has been migrated to Fluent (FTL format), replacing the previous format, which allows for more robust message handling and variable substitution in both languages.
src/uu/chroot/locales · high confidence
chroot: improved error handling and exit codes
The chroot utility now provides more robust error handling and standardized exit codes. It no longer panics on invalid user/group specifications or non-existent directories, instead returning user-friendly error messages. Exit codes are now set to 125 for chroot failures, 126 for command invocation errors, and 127 for command not found, aligning with GNU coreutils behavior. The --skip-chdir option has been enhanced to prevent race conditions by chrooting the resolved path instead of the original argument.
src/uu/chroot/src · high confidence
csplit: Added French localization and migrated to Fluent format
The csplit utility now supports French (fr-FR) translations, providing localized help and error messages for French-speaking users. Additionally, the localization system has been migrated to the Fluent format, replacing the previous structure with new .ftl files for both English and French to standardize how strings are managed.
(repo-wide) · high confidence
csplit: new implementation with improved error diagnostics and GNU compatibility
The csplit utility has been rewritten to provide more precise error reporting and better GNU coreutils compatibility. Users will now see diagnostic messages with a caret pointing to the specific pattern or option that caused an error, rather than a generic one-line message. The implementation also fixes several behavioral issues, including ensuring a final empty split file is created when using --suppress-matched, handling non-UTF-8 filenames correctly, and avoiding panics on write errors to /dev/full. Additionally, the tool now uses clap for argument parsing, supports localized error messages, and correctly handles edge cases like empty regex patterns and repeated arguments.
src/uu/csplit/src · high confidence
df: complete rewrite of internal architecture and output formatting
The \df\ utility has been refactored to use a modular structure with dedicated modules for block size handling (\blocks.rs\), column definitions (\columns.rs\), filesystem abstraction (\filesystem.rs\), and table rendering (\table.rs\). This change introduces a new \--output\ argument that allows users to specify a custom, comma-separated list of columns (e.g., \source\, \size\, \used\, \avail\, \pcent\, \target\, \fstype\, \file\) to display in the output table, replacing the previous fixed column set. The block size logic now supports suffixes (like \K\, \M\, \G\) and reads from environment variables (\DF\_BLOCK\_SIZE\, \BLOCK\_SIZE\, \BLOCKSIZE\), while the table rendering engine has been updated to handle Unicode widths correctly and compute totals accurately. Platform-specific code has been separated into \platform/unix.rs\ and \platform/windows.rs\ to handle differences in filesystem usage probing and path resolution.
src/uu/df/src · high confidence
dirname rewritten with POSIX-compliant string manipulation and clap 4
The dirname utility has been completely rewritten to use clap 4 for argument parsing and implements pure string manipulation logic that strictly follows POSIX/GNU specifications. This change fixes several behavioral issues, including proper handling of trailing slashes, the \/.\ pattern, and non-UTF-8 filenames on Windows, while also improving performance by avoiding unnecessary heap allocations and using efficient byte-level path processing.
src/uu/dirname/src · high confidence
expand: new Rust implementation with enhanced tab-stop parsing and error handling
The \expand\ utility has been rewritten in Rust, introducing stricter validation for the \--tabs\ argument (including checks for ascending values, size limits, and invalid characters) and supporting multiple \--tabs\ arguments. It now provides localized error messages via \translate!\, handles non-UTF-8 filenames correctly, and continues processing when input files do not exist rather than aborting. The implementation also supports tab-stop shortcuts (e.g., \-7\) and uses \thiserror\ for structured error reporting.
src/uu/expand/src · high confidence
expr: improved diagnostics and locale-aware string operations
The expr utility now provides richer error reporting by mapping errors to specific arguments and rendering them with caret labels, and it performs string comparisons, index searches, and substring operations in a locale-aware manner to correctly handle multibyte characters and collation rules.
src/uu/expr/src · high confidence
false utility now supports --help and --version flags
The false utility has been updated to support --help and --version command-line flags, aligning its behavior with GNU coreutils. Previously, these flags were not recognized; now, users can invoke them to display help text or the version number, with the utility still returning an exit code of 1 to indicate failure. The implementation uses clap for argument parsing and integrates with the uucore translation system for localized help messages.
src/uu/false/src · high confidence
groups utility rewritten in Rust with clap 4 and localization
The \groups\ command has been completely rewritten in Rust, replacing the previous implementation. It now uses clap 4 for argument parsing, supports localization via the \translate!\ macro, and integrates with uucore's error handling (\thiserror\) and user/group lookup APIs (\Passwd::locate\, \get\_groups\_gnu\). The utility now returns proper exit codes on errors (e.g., user not found, group fetch failure) and displays localized error messages. The entry point is now a standard Rust binary using \uucore::bin!\, and the main logic resides in \groups.rs\ with a separate \main.rs\ for binary registration.
src/uu/groups/src · high confidence
hostid utility rewritten to use clap 4 and platform-specific host ID generation
The hostid utility has been completely rewritten to use clap 4 for argument parsing and uucore's localization infrastructure, replacing the previous implementation. It now generates the host identifier by attempting to read /etc/hostid first, then falling back to deriving a value from the system's IPv4 address (on Unix via rustix or Windows via std::net), ensuring consistent 32-bit hexadecimal output. The entry point uses uucore's bin! macro and disables signals for faster startup.
src/uu/hostid/src · high confidence
hostname utility rewritten using the hostname crate and clap
The hostname utility has been refactored to use the external hostname crate for retrieving and setting the system hostname, replacing previous implementation details. The command-line interface now uses clap for argument parsing, supporting options like --domain, --ip-address, --fqdn, and --short, with localized help text and usage messages. The entry point is simplified via a uucore macro, and the tool now handles hostname resolution for the --ip-address flag by resolving the current hostname to socket addresses.
src/uu/hostname/src · high confidence
hostname: Added French translation and converted help text to Fluent format
The hostname utility now supports French localization (fr-FR), providing translated help messages and error strings for users. Additionally, the English (en-US) locale has been converted to the Fluent format, ensuring consistent handling of parameterized messages (such as invalid hostnames) across both languages.
src/uu/hostname/locales · high confidence
link utility rewritten to use clap 4 and uucore localization
The link utility has been completely rewritten to use clap 4 for argument parsing and uucore's localization infrastructure for help text and error messages. This change replaces the previous getopts-based implementation with a modern clap Command structure, enabling features like long argument inference and standardized help templates. The utility now uses uucore's translation macros for user-facing strings and integrates with the new uucore argument handling patterns, resulting in consistent behavior and localization support across the coreutils suite.
src/uu/link/src · high confidence
logname utility rewritten to use clap and uucore infrastructure
The logname utility has been completely rewritten to use the clap argument parser and the uucore library infrastructure. This change introduces modern command-line argument handling, localized help messages, and consistent error reporting. The utility now returns proper exit codes on errors and uses the new uucore macros for binary initialization and localization.
src/uu/logname/src · high confidence
mkdir command now supports localized help and error messages
The mkdir utility has been updated to use Fluent for localization, introducing initial support for English (en-US) and French (fr-FR). Users will now see translated help text, usage instructions, and error messages (such as 'File exists' or 'No such file or directory') in their preferred language, replacing the previous hardcoded English strings.
src/uu/mkdir/locales · high confidence
mkdir utility rewritten with clap 4 and uucore integration
The mkdir utility has been completely rewritten to use clap 4 for argument parsing and uucore for core functionality. This introduces support for localized help messages, improved error diagnostics for invalid mode arguments (including caret pointing to the error location), and consistent handling of security contexts (SELinux/SMACK). The command now requires at least one directory argument and supports the -Z flag for setting security contexts. On Windows, mode setting is skipped as it is not implemented. The change also includes better umask handling and recursive directory creation with verbose output.
src/uu/mkdir/src · high confidence
mkfifo: improved mode handling and security context support
The mkfifo utility now applies the requested permission mode atomically at creation time by clearing the umask during the mkfifo call, which closes a TOCTOU race condition that previously existed when using a separate chmod step. It also rejects invalid non-file permission bits (setuid, setgid, sticky) and provides better diagnostics for invalid mode strings. Additionally, the tool now supports setting SELinux security contexts at creation time on Linux/Android and SMACK labels on Linux, ensuring security labels are applied without leaving a window for race conditions.
src/uu/mkfifo/src · high confidence
mkfifo: localized error messages and new validation for permission modes
The mkfifo utility now provides localized error messages in English and French, replacing hardcoded strings with translatable Fluent resources. Additionally, the tool now validates permission modes and returns an error if non-file permission bits are specified, ensuring that only valid file permission bits are accepted.
src/uu/mkfifo/locales · high confidence
mknod: Added French localization and converted help text to Fluent format
The mknod utility now supports French (fr-FR) translations for its help and error messages, and the underlying localization system has been migrated to Fluent (FTL) format. Users will see French text for options like --mode, --major, and --minor, as well as for error messages regarding invalid device types or missing arguments, while the English (en-US) strings have been updated to match this new structure.
src/uu/mknod/locales · high confidence
mktemp utility rewritten with modern Rust libraries and improved template handling
The mktemp utility has been completely rewritten to use the \tempfile\ crate for temporary file creation and \thiserror\ for error handling, replacing custom implementations. This change introduces stricter validation for templates, requiring them to end with a contiguous block of 'X' characters, and improves support for non-UTF-8 filenames and environment variables like TMPDIR. The argument parsing now uses clap 4, and the tool respects the -t flag to prioritize TMPDIR over the -p option, while also adding better error messages for invalid templates and missing directories.
src/uu/mktemp/src · high confidence
mv: migrate to thiserror and introduce structured error types
The mv utility now uses the thiserror crate to define a dedicated MvError enum, replacing ad-hoc error handling with structured, localized error variants (such as NoSuchFile, SameFile, and DirectoryToNonDirectory). This change improves error message consistency and maintainability by centralizing error definitions in a new error.rs module and leveraging the translate! macro for user-facing messages.
src/uu/mv/src · high confidence
nice: support legacy argument syntax and set exit code 125 on errors
The \nice\ utility now accepts legacy argument formats (such as \-1\, \-n1\, \-+1\, \--1\, and \-n -1\) by normalizing them before argument parsing, ensuring compatibility with GNU coreutils behavior. Additionally, all command-line parsing errors now result in an exit code of 125, aligning with standard expectations for \nice\ failures.
src/uu/nice/src · high confidence
nohup: Added French translation and new error reporting
The nohup utility now includes a French (fr-FR) locale, making its help text and status messages available in French. Additionally, the tool now reports specific errors when executing a command fails, providing users with clearer feedback on why a command could not be run.
src/uu/nohup/locales · high confidence
nproc now respects cgroups2 CPU quotas and ignores offline cores
The nproc utility has been rewritten to more closely match GNU coreutils behavior on Linux and Android. It now detects CPU quotas from cgroups2 (via /sys/fs/cgroup/cpu.max) and limits the reported core count accordingly, except for specific real-time schedulers (SCHED\_FIFO, SCHED\_RR, SCHED\_DEADLINE). Additionally, it prefers online cores (via sched\_getaffinity) over configured cores, aligning with GNU's handling of offline CPUs. The tool also improves parsing of OMP\_NUM\_THREADS (handling comma-separated values and overflow) and OMP\_THREAD\_LIMIT environment variables, and uses clap 4 for argument parsing with localized help text.
src/uu/nproc/src · high confidence
numfmt: localized help and error messages via Fluent
The numfmt utility now provides localized user-facing text for help documentation, error messages, and diagnostic labels, with initial support for English (en-US) and French (fr-FR). This change replaces hardcoded strings with Fluent resource files, ensuring that users see translated guidance for options like --grouping and --field, as well as clearer error explanations for invalid inputs and format specifications.
src/uu/numfmt/locales · high confidence
numfmt: structured error reporting with caret diagnostics
The numfmt utility now provides detailed, user-friendly error messages that point directly to the problematic part of the input or command-line arguments. When a number fails to parse, a format string is invalid, or an option value is incorrect, the tool renders a diagnostic with a caret (e.g., \numfmt: error: invalid suffix: 'q'\ with a pointer under the 'q'). This is powered by new modules (\diagnostics.rs\, \errors.rs\, \format.rs\) that integrate with \uucore::diagnostics\ to map errors to specific spans in the argument list or input data, replacing previous plain-text error messages with contextual feedback.
src/uu/numfmt/src · high confidence
pinky: rewrite argument parsing and help system using clap
The pinky utility has been rewritten to use the clap library for argument parsing, replacing the previous getopts-based implementation. This change introduces a new command-line interface structure defined in \src/uu/pinky/src/pinky.rs\, including support for flags like \--lookup\, \--long-format\, and various omission flags (\-b\, \-h\, \-p\, \-f\, \-w\, \-i\, \-q\). The help text is now localized using the \translate!\ macro and integrated with clap's help system, while the entry point in \main.rs\ delegates to the platform-specific implementation via \uucore::bin!(uu\_pinky)\. A new \capitalize\ helper function is exposed for consistent name formatting, matching GNU behavior.
src/uu/pinky/src · high confidence
pinky: support for OpenBSD and improved time formatting
The pinky utility now runs on OpenBSD by displaying a localized "unsupported" message instead of crashing, as the platform lacks utmpx support. On Unix systems, the tool's time display has been refactored to use the \time\ crate, allowing it to respect locale settings (e.g., using short month names in the C locale vs. ISO format otherwise) and falling back to UTC if the local timezone cannot be determined.
src/uu/pinky/src/platform · high confidence
pr utility rewritten in Rust with clap argument parsing
The \pr\ utility has been reimplemented in Rust, replacing the previous implementation. This change introduces \clap\ for command-line argument parsing and error handling, modernizing the codebase while maintaining compatibility with existing \pr\ flags and behaviors. The new implementation includes support for various formatting options such as line numbering, column separation, and pagination, ensuring that users can continue to use \pr\ for file formatting tasks with the same command-line interface.
src/uu/nl/src, src/uu/pr/src · high confidence
printenv now exits with code 1 when a requested variable is not found
The printenv utility has changed its exit behavior: it now returns an error code (1) if any of the specified environment variables are missing or if invalid arguments (containing '=') are provided, whereas previously it may have exited with 0. This ensures that scripts relying on printenv to verify variable existence can correctly detect failures. The change also includes a refactor to use clap for argument parsing and supports null-separated output via the -0 flag.
src/uu/printenv/src · high confidence
printf help text now uses Fluent localization files
The help and documentation text for the printf utility has been migrated from plain text to Fluent (.ftl) localization files. This change introduces English (en-US) and French (fr-FR) locale resources, enabling the tool to display its usage instructions, escape sequence documentation, and substitution examples in these languages when the user's locale matches.
src/uu/printf/locales · high confidence
printf: improved error diagnostics and argument handling
The printf utility now provides more precise error reporting by highlighting the specific part of the format string that caused a parsing error, using a caret indicator in the diagnostic message. It also correctly handles the end of options with \--\ before the format string, ensuring that subsequent arguments are treated as data rather than options. Additionally, it warns users when excess arguments are provided that are ignored due to the absence of format specifiers, preventing potential confusion or infinite loops.
src/uu/printf/src · high confidence
ptx: improved UTF-8 handling and GNU compatibility fixes
The ptx utility now correctly handles UTF-8 characters by using character counts instead of byte indices for indexing and line width calculations, preventing incorrect output for multi-byte characters. It also fixes a panic that occurred when the reference length exceeded the line width and ensures that non-alphabetic index tokens are skipped to match GNU default behavior. Additionally, invalid UTF-8 input and trailing backslash regex patterns are now accepted gracefully, and text wrapping in traditional mode (-G) with references enabled is aligned with the GNU reference implementation.
src/uu/ptx/src · high confidence
pwd now supports logical path resolution via -L and POSIXLY\_CORRECT
The pwd utility has been rewritten to support the -L (logical) flag, which prints the current working directory as maintained by the shell (via the $PWD environment variable) rather than the physical path. This behavior is also triggered automatically when the POSIXLY\_CORRECT environment variable is set, ensuring POSIX-compliant output. The implementation validates the $PWD variable for reasonableness (checking for absolute paths and absence of . or .. components) before using it, falling back to the physical path if validation fails. Non-option arguments are now ignored with a warning, aligning with GNU coreutils behavior.
src/uu/pwd/src · high confidence
readlink: adopt Physical resolution for canonicalize flags and modernize CLI interface
The readlink utility now uses Physical resolution mode when canonicalize flags (-f, -e, -m) are active, ensuring that symbolic links are followed before resolving '..' components to match GNU behavior. The command-line interface has been rebuilt using clap 4, introducing support for long arguments, localized help messages, and a new silent mode (enabled by default) that suppresses error output unless the verbose flag is set. Additionally, the tool now properly rejects missing operands and handles non-UTF-8 filenames more robustly.
src/uu/readlink/src · high confidence
rmdir: improved symlink error reporting and argument handling
The rmdir utility now provides clearer error messages when attempting to remove a directory via a symbolic link that has a trailing slash (e.g., \rmdir foo/\), specifically displaying "Symbolic link not followed" on Unix systems to match GNU behavior. Additionally, the command-line interface has been updated to use clap 4, enabling automatic inference of long arguments and modernizing argument parsing.
src/uu/rmdir/src · high confidence
runcon rewritten for Linux/Android with improved error handling and SELinux integration
The runcon utility has been completely rewritten for Linux and Android targets, replacing the previous implementation with a new structure that uses clap for argument parsing and uucore for error management. This change introduces specific exit codes for command-not-found (127) and execution-failure (126) scenarios, ensures proper error reporting for SELinux operations, and supports both plain and custom context modes with correct PATH search behavior. On non-Linux/Android platforms, the binary now provides a stub that exits with an error message indicating SELinux is not supported, ensuring cross-platform build compatibility.
src/uu/runcon/src · high confidence
runcon: Added French localization and Fluent migration
The runcon utility now includes a French (fr-FR) translation file, making its help and error messages available in French. Additionally, the localization infrastructure has been migrated to use the Fluent format, replacing the previous system for managing strings in both English and French locales.
src/uu/runcon/locales · high confidence
shuf: Rewrite with improved performance, reproducibility, and GNU compatibility
The shuf utility has been rewritten to significantly improve performance and reliability. It now supports the --random-seed option for reproducible output by using a ChaCha12 RNG seeded via SHA3-256. The implementation includes a new compatibility layer for --random-source to match GNU shuf's behavior, fixes off-by-one errors in range handling, and optimizes memory usage for large ranges by using a sparse hash map fallback. Additionally, it correctly handles multiple --head-count arguments by taking the minimum value, treats empty files as zero elements, and refuses to repeat zero lines.
src/uu/shuf/src · high confidence
sort: complete rewrite with new architecture and improved sorting capabilities
The sort utility has been completely rewritten, introducing a new modular architecture with dedicated files for buffer heuristics, chunk management, merging, and numeric comparison. This change brings several behavioral improvements: automatic buffer size calculation based on file size and available memory, support for locale-aware month sorting (-M) and human-numeric sorting, enhanced key parsing with diagnostic caret positioning, and better handling of temporary files with proper cleanup on SIGINT. The rewrite also adds support for dictionary-order sorting, improved numeric string comparison with thousands separator handling, and more robust error reporting for field parsing issues.
src/uu/sort/src · high confidence
stat utility rewritten in Rust with improved format diagnostics and quoting
The stat utility has been reimplemented in Rust, replacing the previous implementation. This change introduces stricter validation of format strings, providing precise caret-based error reporting when an invalid directive is encountered. It also aligns filename quoting behavior with GNU coreutils 9.12, ensuring special characters and control sequences in names are handled consistently. Additionally, the tool now supports the %Qn format specifier for quoting names and improves the handling of stdin and FIFO inputs to prevent panics on unmounted filesystems or invalid data.
src/uu/stat/src · high confidence
stdbuf library now supports OpenBSD, NetBSD, and Cygwin
The libstdbuf component, which intercepts standard streams via LD\PRELOAD, has been updated to correctly locate stdin, stdout, and stderr on OpenBSD, NetBSD, and Cygwin. Previously, these platforms likely fell back to generic handling or failed; the new code uses platform-specific mechanisms (such as \\_getreent on Cygwin and fdopen on NetBSD) to ensure stdbuf works reliably across these additional operating systems.
src/uu/stdbuf/src/libstdbuf/src · high confidence
stdbuf now embeds libstdbuf for cross-platform builds
The stdbuf utility now automatically builds and embeds the libstdbuf shared library during compilation, enabling it to function on Windows (via Cygwin) and other platforms without requiring a separate system library installation. On Unix systems, the build script compiles libstdbuf and embeds it into the binary, while on non-Unix targets, it configures the build to use an external library. This change simplifies deployment and improves cross-platform compatibility by removing the dependency on pre-installed libstdbuf binaries.
src/uu/stdbuf · high confidence
stdbuf: improved error reporting and cross-platform library injection
The stdbuf utility now provides more precise error messages for invalid buffering modes, using a caret diagnostic to point directly at the failing part of the argument. It also supports injecting the libstdbuf library from the same directory as the stdbuf binary, improving portability. Additionally, the tool now handles non-UTF-8 filenames correctly and creates temporary directories with secure permissions (0700) to prevent information leakage.
src/uu/stdbuf/src · high confidence
sum utility rewritten with clap 4 and improved error handling
The \sum\ utility has been completely rewritten to use clap 4 for argument parsing, replacing the previous implementation. This change introduces better support for non-UTF-8 filenames via \OsString\, improved error messages that now include file paths and specific OS error details, and a fixed buffer size of 8 KiB for both BSD and System V checksum algorithms. The tool now correctly handles directories and missing files with distinct error messages, and uses \div\_ceil\ for accurate block counting.
src/uu/sum/src · high confidence
tac utility rewritten with regex support and improved error handling
The tac utility has been significantly refactored to support regular expression separators via the new --regex (-r) option, allowing for more flexible line reversal patterns. It now uses a dedicated error type (TacError) for clearer, localized error messages when opening, reading, or writing files, or when parsing invalid regexes. The implementation also supports multi-character separators, handles non-UTF-8 filenames and separators correctly, and optimizes performance by using memory maps where possible and buffering stdout more coarsely.
src/uu/tac/src · high confidence
tee: new --output-error option and improved pipe error handling
The tee utility now includes a new --output-error option that allows users to control how write errors on output files are handled (warn, warn-nopipe, exit, or exit-nopipe). This replaces the previous behavior where pipe errors were silently ignored with the -p flag. The implementation also improves handling of broken pipes and signal interrupts, ensuring more robust behavior when writing to multiple outputs.
src/uu/tee/src · high confidence
timeout: complete rewrite with cross-platform signal handling and verbose mode
The \timeout\ utility has been rewritten to support both Unix and Windows platforms, introducing a platform-specific facade for process group management and signal forwarding. On Unix, it uses \rustix\ for safer process control and signal handling, while on Windows it leverages Job Objects to manage process trees and forwards console events. The tool now includes a new \--verbose\ (\-v\) flag to report signals being sent, supports the \--preserve-status\ (\-p\) flag to maintain the child's exit status, and handles realtime signals. It also introduces a dedicated \ExitStatus\ enumeration for clearer error reporting (e.g., distinguishing between command timeout, invocation failure, and signal termination) and uses \clap\ 4 for argument parsing.
src/uu/timeout/src · high confidence
touch utility rewritten with modern Rust error handling and time libraries
The touch utility has been refactored to use the \thiserror\ crate for structured error reporting and the \jiff\ library for safer, more precise time operations, replacing previous dependencies on \chrono\ and \time\. This change introduces a new \TouchError\ enum in \error.rs\ that provides localized, user-friendly error messages for issues like invalid date formats, inaccessible reference files, and platform-specific limitations. The core logic in \touch.rs\ now leverages \rustix\ for file timestamp operations on Unix systems and supports WASI, ensuring consistent behavior across platforms while maintaining GNU compatibility for flags like \-d\, \-r\, and \-t\.
src/uu/touch/src · high confidence
tr: improved error diagnostics with caret-based set location
The tr utility now provides more precise error reporting for invalid character sets. When a sequence error occurs (such as an invalid character class, a backwards range, or an equivalence class issue), the error message now includes a caret pointing to the specific part of the set operand that caused the problem, rather than just indicating the entire set is at fault. This makes it easier to identify and fix issues in set definitions like typos in character class names or incorrect range endpoints.
src/uu/tr/src · high confidence
true: Custom help/version handling and broken pipe fix
The \true\ utility now implements custom handling for \--help\ and \--version\ flags to ensure maximum compatibility with GNU coreutils, including the use of localized help templates and version strings. Additionally, the implementation explicitly handles \BrokenPipe\ errors during output, ensuring the command exits with status 0 in those cases rather than failing, which improves robustness when piped to closed streams.
src/uu/true/src · high confidence
tsort rewritten with iterative DFS and optimized memory handling
The tsort utility has been completely rewritten to use an iterative depth-first search algorithm, preventing stack overflows on deeply nested inputs. It now employs a custom byte interner and streaming parser to process input without loading the entire file into memory, significantly reducing memory usage and improving performance. Error handling has been modernized using thiserror, and the tool now correctly reports cycles and handles non-UTF-8 filenames.
src/uu/tsort/src · high confidence
tty utility rewritten with clap 4, rustix, and cross-platform terminal detection
The tty utility has been completely rewritten to use clap 4 for argument parsing and rustix for low-level terminal operations, replacing previous dependencies on libc, nix, and atty. This change introduces proper cross-platform support: Unix systems use rustix::termios::ttyname to detect the terminal, Windows uses native Win32 APIs to retrieve the console handle name, and WASI defaults to /dev/tty for compatibility. The utility now correctly handles write errors by setting exit code 3 instead of crashing, supports the --silent flag to check terminal status without output, and uses localized strings for all user-facing messages.
src/uu/tty/src · high confidence
uname: migrate to clap 4 and platform-info 2.0
The uname utility has been updated to use clap 4 for argument parsing and platform-info 2.0 for system information retrieval. This change modernizes the underlying dependencies, ensuring compatibility with current Rust standards and providing more robust system data access. Users will benefit from improved command-line argument handling and potentially more accurate system information reporting, while maintaining full backward compatibility with existing command-line options.
src/uu/uname/src · high confidence
uniq: reimplementation with clap 4 and optimized line processing
The \uniq\ utility has been rewritten to use clap 4 for argument parsing and modern Rust idioms, introducing a new \--group\ option to display grouped output. The core processing logic has been optimized to merge per-line writes and grow the input buffer, reducing memory allocations and improving performance. The implementation now correctly handles multibyte input, fixes skip-field calculations, and ensures GNU compatibility by flushing buffers and handling errors consistently.
src/uu/uniq/src · high confidence
users utility rewritten with clap 4 and platform-specific UTMP handling
The \users\ command has been refactored to use clap 4 for argument parsing and uucore's localization macros, providing translated help text and consistent usage formatting. It now supports OpenBSD by using the \utmp\_classic\ crate to parse the older UTMP format, while other platforms continue to use \utmpx\. The utility also includes a musl-specific warning in its help text and gates compilation to supported operating systems (Apple, Cygwin, FreeBSD, Linux, NetBSD, OpenBSD).
src/uu/users/src · high confidence
wc: Inlines UTF-8 decoding logic and switches to localized error messages
The \wc\ utility no longer depends on the external \utf-8\ crate; instead, it includes the UTF-8 decoding implementation directly in \src/uu/wc/src/utf8\. This change introduces \BufReadDecoder\ for incremental, zero-copy UTF-8 decoding with error handling. Additionally, UTF-8 decoding errors are now translated using the \translate!\ macro, enabling localized error messages (e.g., French) for invalid byte sequences, replacing the previous hardcoded English strings.
src/uu/wc/src/utf8 · high confidence
wc: faster byte counting with fast paths and optimized line iteration
The wc utility now uses optimized fast paths for counting bytes, significantly improving performance for byte-only operations. On Unix systems, it attempts to use the splice system call or file statistics (stat) to determine byte counts without reading the entire file content, falling back to a buffered read only when necessary. On Windows, it uses file metadata for regular files. Additionally, the tool now features a specialized iterator for counting lines and characters that avoids unnecessary UTF-8 decoding overhead when only byte or line counts are needed, and aligns buffers for better SIMD performance where applicable.
src/uu/wc/src · high confidence
who: migrate argument parsing to clap 4
The \who\ utility has been refactored to use clap 4 for command-line argument parsing, replacing the previous getopts implementation. This change updates the internal argument handling structure and integrates with the project's localization system for help text, ensuring consistent behavior and improved long-argument inference across supported platforms.
src/uu/who/src · high confidence
whoami utility refactored to use clap 4 and uucore macros
The whoami utility has been updated to use clap 4 for argument parsing and the uucore framework for core functionality. This change introduces support for localized help messages and error strings, enables inference of long arguments for a more user-friendly CLI experience, and utilizes the \no\_signals\ and \no\_flush\ optimizations for faster startup and reduced binary size. The implementation now relies on \uucore::Args\ and \UResult\ for consistent error handling across the coreutils suite.
src/uu/whoami/src · high confidence
yes utility rewritten with high-performance zero-copy output on Linux
The \yes\ utility has been completely rewritten to significantly improve output throughput on Linux and Android systems by utilizing the \tee\ and \splice\ syscalls for zero-copy data transfer to stdout, falling back to standard buffered writes on other platforms. The implementation now supports non-UTF-8 arguments via \OsString\, handles broken pipes silently on Windows and WASI, and uses localized help templates for consistent internationalization.
src/uu/yes/src · high confidence
Test coverage
Add initial performance benchmark suite for dd; Add performance benchmarks for the wc utility; Add platform-specific test implementations for WASI and Windows; Add stress-test benchmarks for the factor command; Added base64 encoding and decoding benchmarks; Added benchmark for deep directory traversal performance; Added benchmark for echo utility; Added benchmark suite for the nl utility; Added benchmarking suite for the cat utility; Added benchmarking support for the timeout utility; Added benchmarks for \tr\ translation operations; Added benchmarks for du with cache warming and variance reduction; Added benchmarks for expr index performance; Added benchmarks for the fold utility; Added performance benchmarks for cksum algorithms; Added performance benchmarks for the date utility; Added performance benchmarks for uniq; Added startup performance benchmarks for true and false utilities; Added test coverage for locale files; Added unit tests for dd argument parsing; Comprehensive test suite expansion and maintenance; Expanded fuzz testing coverage for core utilities; Introduce uutests test harness crate; New comprehensive benchmarks for sort performance.
Dependencies
Massive dependency and build manifest updates across 118 crates
This release updates dependencies across 118 manifests, including major version bumps for clap (to v4), serde (to v1.0.205+), and zip (to v5+), alongside numerous minor updates to crates like libc, regex, and tempfile. These changes modernize the project's dependency tree, improve build stability, and align with current Rust ecosystem standards.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 52 → 73 (+20.3)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 81 (-11.7)
- Architecture 92 → 88 (-3.8)
- Maturity 74 → 67 (-7.1)
- Readiness 32 → 83 (+50.7)
- Security 59 → 71 (+12.2)
- Event Sourcing 100 (new)
Resolved (79)
- Dimension evaluation failed
- Duplicated block (12 lines × 2) (util/test_compare_test_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (6 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- Duplicated block (7 lines × 2) (util/test_compare_size_results.py)
- …and 59 more
New (1073)
- AstNode::eval_located (cognitive 19) (src/uu/expr/src/syntax_tree.rs)
- Base58Wrapper::encode_to_vec_deque (cognitive 26) (src/uucore/src/lib/features/encoding.rs)
- Base58Wrapper::encode_to_vec_deque (cyclomatic 17) (src/uucore/src/lib/features/encoding.rs)
- Base64SimdWrapper::decode_into_vec (cognitive 22) (src/uucore/src/lib/features/encoding.rs)
- BufReadDecoder::next_strict (cognitive 29) (src/uu/wc/src/utf8/read.rs)
- ByteChunkWriter::copy (cognitive 17) (src/uu/split/src/split.rs)
- CharCut::write_line (cognitive 28) (src/uu/cut/src/cut.rs)
- CharCut::write_line (cyclomatic 17) (src/uu/cut/src/cut.rs)
- Chmoder::calculate_new_mode (cognitive 20) (src/uu/chmod/src/chmod.rs)
- Chmoder::chmod (cognitive 42) (src/uu/chmod/src/chmod.rs)
- Chmoder::chmod (cyclomatic 19) (src/uu/chmod/src/chmod.rs)
- Chmoder::safe_traverse_dir (cognitive 25) (src/uu/chmod/src/chmod.rs)
- Chmoder::walk_dir_with_context (cognitive 21) (src/uu/chmod/src/chmod.rs)
- ChownExecutor::dive_into (cognitive 30) (src/uucore/src/lib/features/perms.rs)
- ChownExecutor::safe_traverse_dir (cognitive 37) (src/uucore/src/lib/features/perms.rs)
- ChownExecutor::safe_traverse_dir (cyclomatic 20) (src/uucore/src/lib/features/perms.rs)
- ChownExecutor::traverse (cognitive 39) (src/uucore/src/lib/features/perms.rs)
- ChownExecutor::traverse (cyclomatic 18) (src/uucore/src/lib/features/perms.rs)
- ClassTooLong: Stater (src/uu/stat/src/stat.rs)
- Config::from_with_program_mode (cognitive 65) (src/uu/ls/src/config.rs)
- …and 1053 more
Changes since last survey
- 300 commits — 264 feature/other, 36 fixes
By area
- src/uu — 143 commits
- src/uucore — 41 commits
- tests/by-util — 37 commits
- (root) — 35 commits
- .github/workflows — 30 commits
- util/gnu-patches — 3 commits
- .vscode/cspell.dictionaries — 2 commits
- docs/src — 2 commits
- util/update-version.sh — 2 commits
- .github/skills — 1 commit
- fuzz/Cargo.lock — 1 commit
- tests/uutests — 1 commit
- util/build-gnu.sh — 1 commit
- util/fetch-gnu.sh — 1 commit
Notable commits
- fix: CI: fix artifact name for Cygwin
- fix: CI: fix the reference publish race and the secrets conditional
- fix: Fix clippy warnings
- fix: Fix review issues
- fix: Revert "chore(deps): update vmactions/freebsd-vm action to v1.5.6 (#12977)"
- fix: Revert "env: trace the environment changes under -v"
- fix: [pre-commit.ci] auto fixes from pre-commit.com hooks
- fix: chore: fix clippy missing_const_for_thread_local lint
- fix: chore: fix clippy unnecessary_cast lint
- fix: chore: fix clippy unnecessary_wraps lint
- fix: cp: fix copying entries sharing parent directory name with -R .
- fix: date: fix warnings from spell-checker
- fix: dirname: Fix backslash support on Windows
- fix: du: fix EOVERFLOW on 32-bit Linux by passing O_LARGEFILE
- fix: expr(fix): capacity overflow
- fix: fix cspell
- fix: fix(build): adjust check for cross-platform building
- fix: fix(ls): ensure ACL and capability markers respect dereference config
- fix: fix: missing_const_for_thread_local clippy lint
- fix: fix: remove Windows directory symlinks recursively
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
uutils/coreutils was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4af0c3cf9b060048225a208bc36c2769bebb398b — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.