<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje" -->

---
title: Ubuntu 26.10 finishes migrating coreutils to Rust
description: Ubuntu 26.10 'Stonking Stingray' completes the migration of core utilities to Rust-based uutils implementations, moving cp, mv, and rm over after ls, cat,...
canonical: https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Ubuntu 26.10 finishes migrating coreutils to Rust | daily.dev
og:description: Ubuntu 26.10 'Stonking Stingray' completes the migration of core utilities to Rust-based uutils implementations, moving cp, mv, and rm over after ls, cat,...
og:url: https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje
og:image: https://api.daily.dev/og/posts/7gIsxrKJe.png
og:image:alt: Ubuntu 26.10 finishes migrating coreutils to Rust
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Ubuntu 26.10 finishes migrating coreutils to Rust

**[Collections](https://daily.dev/sources/collections)** · 2 min read · 24 upvotes · 1 comments

## Summary

Ubuntu 26.10 'Stonking Stingray' completes the migration of core utilities to Rust-based uutils implementations, moving cp, mv, and rm over after ls, cat, chmod, du, and others switched in Ubuntu 25.10. The move was delayed from Ubuntu 26.04 following a Zellic security audit that found 113 issues in the uutils codebase, 44 of which received CVEs, including TOCTOU vulnerabilities in file operation commands; these were fixed upstream before Canonical shipped them as defaults. The uutils tools aim for drop-in GNU compatibility, and users who want the originals can install coreutils-from-gnu. Canonical funds the work through the Trifecta Tech Foundation at €40,000 per year, and the next target is ntpd-rs, a Rust NTP client planned to become default in Ubuntu 27.04 or 27.10. Ubuntu 26.10 beta arrives later this month, with stable release set for October 15, 2026.

## Content

Ubuntu 26.10 "Stonking Stingray" has finished moving its entire default coreutils stack to Rust, with `cp`, `mv`, and `rm` now sourced from the [uutils](https://github.com/uutils/coreutils) project instead of GNU Coreutils. The draft release notes mark the transition as 100% complete.

## How we got here

The migration started with Ubuntu 25.10, which swapped in Rust-based versions of `ls`, `cat`, `chmod`, `du`, and others. The three file-operation commands were held back from the 26.04 LTS release after a Zellic security audit flagged 113 issues in uutils, 44 of which received CVEs. The most serious were TOCTOU (time-of-check/time-of-use) race conditions in `cp`, `mv`, and `rm`.

Those issues have since been resolved upstream. The uutils 0.12 release, which landed ahead of Ubuntu 26.10, specifically targeted the fixes Canonical needed:

- `rm` segfaults on deeply nested directories
- Data loss in parallel `install -D` runs
- `du` breakage on 32-bit architectures
- `cp -R` name collisions
- Removal of the last remaining C dependency (`expr`)

The release also brought performance improvements to `sort`, `du`, and `cp`, and the project now passes roughly 95% of the GNU Coreutils test suite.

## What changes for users

Practically nothing, by design. The uutils project targets drop-in compatibility with GNU tools, so the commands behave the same way. The main benefit is memory-safety guarantees from Rust rather than any visible behavior change.

If you prefer the GNU versions anyway, a `coreutils-from-gnu` package will be available.

## What Canonical is funding next

Canonical contributes €40,000 per year to the Trifecta Tech Foundation to support Rust rewrites of core system software. The next target is NTP: `ntpd-rs`, a Rust rewrite of NTP tooling, is planned to become the default in Ubuntu 27.04 or 27.10.

Ubuntu 26.10 beta is due later this month, with the stable release scheduled for October 15, 2026.

## Questions this post answers

### Does Ubuntu 26.10 replace cp, mv, and rm with Rust-based versions?

Yes. Ubuntu 26.10 'Stonking Stingray' completes the migration to Rust-based coreutils by switching cp, mv, and rm to uutils implementations, following ls, cat, chmod, du, and others that moved in Ubuntu 25.10. The uutils tools aim for drop-in GNU compatibility, so most users should not notice behavioral differences, and the original GNU versions remain installable via the coreutils-from-gnu package.

_Track coreutils and distro migration changes like this on daily.dev before upgrading production systems._

### Why did Canonical delay switching cp, mv, and rm to uutils until Ubuntu 26.10 instead of shipping them in 26.04?

A Zellic security audit of the uutils codebase found 113 issues, 44 of which received CVEs, including TOCTOU (time-of-check to time-of-use) vulnerabilities in file operation commands like cp, mv, and rm. Canonical waited for these to be fixed upstream before shipping the Rust versions as defaults, pushing the switch from Ubuntu 26.04 to 26.10.

_Developers vetting Rust rewrites of critical tools can follow audit outcomes like this via daily.dev._

### What is ntpd-rs and when will it become Ubuntu's default NTP client?

ntpd-rs is a Rust rewrite of NTP tooling that Canonical is funding through the Trifecta Tech Foundation, at €40,000 per year, as the next target after the coreutils migration. It is planned to become the default NTP client in Ubuntu 27.04 or 27.10.

_Anyone planning ahead for Ubuntu's Rust tooling shifts can watch ntpd-rs progress on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 661 comments across hackernews, lobsters (as of 2026-09-17).

**TL;DR:** Commenters are largely critical of Ubuntu's switch to Rust-based coreutils, citing reproducible crashes and regressions (segfaults, broken rm/mv/ln behavior) plus frustration that bug reports upstream and to Canonical seem to go nowhere; a smaller side-thread debates whether such edge-case bugs matter and pivots into broader gripes about Snap and Ubuntu's direction.

**Sentiment:** 5% positive · 15% mixed · 80% skeptical

**The case for**

- A few argue the rewrite brings genuine improvements like better internationalization, error messages, and small feature extensions over GNU coreutils.
- Some note the underlying issues are being fixed quickly once flagged, showing an active upstream project.
- One commenter reports a related Rust-based NTP client has run reliably for months, suggesting not all Rust rewrites are troubled.

**The pushback**

- Reproducible crashes and data-loss-adjacent bugs (rm segfaulting and leaving files behind, ln race conditions, mkdir/rm mishandling long paths) are cited as evidence the rewrite isn't production-ready.
- Multiple people report bug reports to Launchpad/Canonical go unanswered for months or years, fueling distrust of the rollout process.
- Frustration that regressions shipped even into LTS channels and delayed an LTS point release, not just interim releases.
- Some feel Canonical is rushing a rewrite of security/reliability-critical tools before the implementation is mature, turning users into beta testers.
- Tangential but strong dissatisfaction with Snap is repeatedly raised as a reason to distrust Canonical's engineering priorities and to switch to Debian/Fedora/other distros.

**By community**

- hackernews (skeptical): Heavy skepticism dominates, with detailed bug reports, complaints about ignored Launchpad tickets, and a long tangent venting about Snap, though a few defend the project's progress and rationale.
- lobsters (skeptical): The single detailed comment argues the rewrite was premature and that calling it 'completed' is misleading given ongoing rough edges.

**Hottest debate:** Whether the encountered bugs (like a 32k-deep-directory rm segfault) are a real, prioritizable problem or a trivial edge case not worth blocking the rollout over.

**Open questions**

- Why do bug reports filed against Ubuntu/Launchpad and even upstream uutils repeatedly sit unaddressed for months or years?
- Will the same pattern of regressions repeat with the planned Rust-based NTP client default in Ubuntu 27.10?
- Is the CLI/behavioral compatibility gap (argument parsing, man pages) with GNU coreutils going to be closed before wider adoption?

**Highlights**

> I really don't understand why Canonical rushes this. If 'rm' can't remove all possible directory entries, that is a big issue:   $ podman run --rm -it ubuntu:26.10   $ apt update -y; apt upgrade -y   $ rm --version   rm (uutils coreutils) 0.10.0   $ gnumkdir -p $(yes a/ | head -n $((32 * 1024)) | tr -d '\n')   $ rm -rf a   Segmentation fault (core dumped) rm -rf a   $ ls a   a   $ gnurm -rf a   $ ls a   ls: cannot access 'a': No such file or directory
> — [collinfunk on hackernews · 17 comments](https://news.ycombinator.com/item?id=49697392)

> The Launchpad bug is https://bugs.launchpad.net/ubuntu/+source/rust-coreutils/+bu... . The apparently related bug in the origin project is https://github.com/uutils/coreutils/issues/2949, filed back in 2022 and which sat unmoved for several years until, probably not coincidentally, almost the same time yesterday that this appeared on Hacker News.
> — [JdeBP on hackernews](https://news.ycombinator.com/item?id=49709674)

> I tried switching a buildroot based CI server to the 26.04 One Makefile statement triggered a bug in rust ln:   src/%:       @ln -sfn $(DIR)/foo src In parallel build, we would get random failure:   ln: Already exists Rewrote that Makefile to work-around it, and ended up with the same kind of bugs with parallel $(INSTALL) -D ... Tried latest ubuntu 26.10 which supposedly fixes a lot of TOCTOU races in rust coreutils, but no better. Gave up and switched back to original coreutils.
> — [maxhou on hackernews](https://news.ycombinator.com/item?id=49709740)

> While I supported that idea of Rust coreutils, this your experiment showed me how bad it is. My results are totally different, but not what I expected (edited out long strings of "a/a/a" for brevity). I wouldn't call it stable...   root@71a8c5a6c5e3:/# mkdir -p $(yes a/ | head -n $((32 * 1024)) | tr -d '\n')   mkdir: File name too long   root@71a8c5a6c5e3:/# gnumkdir -p $(yes a/ | head -n $((32 * 1024)) | tr -d '\n')   gnumkdir: cannot create directory 'a/a/a/.../a/a': File name too long   root@71a8c5a6c5e3:/# gnumkdir -p $(yes a/ | head -n $((3 * 1024)) | tr -d '\n')   root@71a8c5a6c5e3:/# rm -rf a   rm: cannot remove 'a/a/a/.../a/a/a': Directory not empty   root@71a8c5a6c5e3:/# gnurm -rf a   root@71a8c5a6c5e3:/# rm -rf a   root@71a8c5a6c5e3:/# And then they plan to move to a new Rust-based NTP. No comment...
> — [HackerThemAll on hackernews · 1 comments](https://news.ycombinator.com/item?id=49710000)

> I don't really get what Canonical is trying to do here. This has been a continuous disaster from the start. I can sympathise with the idea of wanting to urgently get rid of C, but there are surely more important places than coreutils? I have nothing against the people behind uutils or the project itself. It's really good to see someone tackle that challenge. It's unsurprising to me that they run into so many issues, this stuff is hard to do right and a lot of the knowledge required to do it right is in the minds of programmers who don't write Rust. Lastly, Rust's standard library is pretty bad when it comes to filesystem related operations (and I say this as someone who is a big fan of Rust), and so are many of the crates (unless you just use rustix or something), so maybe this will bring about improvements in that area. But clearly uutils was not, and is still not really ready for this kind of mainstream usage. Now yes, this has brought a lot of improvement to uutils quickly as a result of Canonical's choice, but they've in effect decided to make their users into beta-testers. Ignoring all the bugs already outlined, rather basic things like man pages are still ugly, incomplete and generated from some inappropriate format in some inappropriate manner. Command line argument parsing is another major area where yes, clap is nice for new programs, but it is still in the end opinionated and limited in some specific aspects, and when you are replacing coreutils, you would expect bug-for-bug compatibility including in the CLI. "Completes transition to ..." is misleading. What Ubuntu has completed is the onboarding of its users to beta test what is in reality currently mostly a learning/teaching project.
> — [atk on lobsters · 1 points, 7 comments](https://lobste.rs/s/ynjgbz/ubuntu_26_10_completes_transition_rust#c_sxgdjo)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49696697) · 278 points · 619 comments
- [lobsters](https://lobste.rs/s/ynjgbz/ubuntu_26_10_completes_transition_rust) · 42 points · 42 comments

## Community discussion

Top comments from developers on daily.dev.

**@kizomanizo** · 1 upvotes

> Everything rusts over time.

## Similar posts on daily.dev

- [Project Discussion / Foundations](https://daily.dev/posts/project-discussion-foundations-ejlc9xpww) · Lobsters · 0 upvotes · 0 comments
- [Ubuntu Rust Coreutils Audit Revealed 113 Issues, Ubuntu 26.10 Aims For "100% Rust Coreutils"](https://daily.dev/posts/ubuntu-rust-coreutils-audit-revealed-113-issues-ubuntu-26-10-aims-for-100-rust-coreutils--6flwrfhja) · Phoronix · 2 upvotes · 0 comments
- [Ubuntu Rust: How Canonical Is Modernizing Core System Tools](https://daily.dev/posts/ubuntu-rust-how-canonical-is-modernizing-core-system-tools-6irulsi7d) · JetBrains · 6 upvotes · 0 comments
- [Rust Coreutils 0.3 Released With Some Major Speed-Ups, Better GNU Compatibility](https://daily.dev/posts/rust-coreutils-0-3-released-with-some-major-speed-ups-better-gnu-compatibility-lu7b44nkn) · Phoronix · 5 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#rust](https://daily.dev/tags/rust), [#ubuntu](https://daily.dev/tags/ubuntu), [#appsec](https://daily.dev/tags/appsec)

[View this post on daily.dev](https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Ubuntu 26.10 finishes migrating coreutils to Rust","url":"https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje"},"datePublished":"2026-09-15T16:34:17.807Z","dateModified":"2026-09-17T13:54:47.440Z","description":"Ubuntu 26.10 'Stonking Stingray' completes the migration of core utilities to Rust-based uutils implementations, moving cp, mv, and rm over after ls, cat,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7811f2e469567b921c5739569fd3c19c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7811f2e469567b921c5739569fd3c19c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":24},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"linux,rust,ubuntu,appsec","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Ubuntu 26.10 finishes migrating coreutils to Rust"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje","comment":[{"@type":"Comment","text":"Everything rusts over time.","datePublished":"2026-09-19T20:31:36.836Z","url":"https://daily.dev/posts/7gIsxrKJe#c-TtdKMlm4t","author":{"@type":"Person","name":"Kizito","url":"https://daily.dev/kizomanizo","image":"https://lh3.googleusercontent.com/a/AAcHTtf_9jV6bHsBs8P3XMkgVR571XI3Mth0K9aXVStyQc3Rb-8=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/ubuntu-26-10-finishes-migrating-coreutils-to-rust-7gisxrkje#faq","mainEntity":[{"@type":"Question","name":"Does Ubuntu 26.10 replace cp, mv, and rm with Rust-based versions?","acceptedAnswer":{"@type":"Answer","text":"Yes. Ubuntu 26.10 'Stonking Stingray' completes the migration to Rust-based coreutils by switching cp, mv, and rm to uutils implementations, following ls, cat, chmod, du, and others that moved in Ubuntu 25.10. The uutils tools aim for drop-in GNU compatibility, so most users should not notice behavioral differences, and the original GNU versions remain installable via the coreutils-from-gnu package. Track coreutils and distro migration changes like this on daily.dev before upgrading production systems."}},{"@type":"Question","name":"Why did Canonical delay switching cp, mv, and rm to uutils until Ubuntu 26.10 instead of shipping them in 26.04?","acceptedAnswer":{"@type":"Answer","text":"A Zellic security audit of the uutils codebase found 113 issues, 44 of which received CVEs, including TOCTOU (time-of-check to time-of-use) vulnerabilities in file operation commands like cp, mv, and rm. Canonical waited for these to be fixed upstream before shipping the Rust versions as defaults, pushing the switch from Ubuntu 26.04 to 26.10. Developers vetting Rust rewrites of critical tools can follow audit outcomes like this via daily.dev."}},{"@type":"Question","name":"What is ntpd-rs and when will it become Ubuntu's default NTP client?","acceptedAnswer":{"@type":"Answer","text":"ntpd-rs is a Rust rewrite of NTP tooling that Canonical is funding through the Trifecta Tech Foundation, at €40,000 per year, as the next target after the coreutils migration. It is planned to become the default NTP client in Ubuntu 27.04 or 27.10. Anyone planning ahead for Ubuntu's Rust tooling shifts can watch ntpd-rs progress on daily.dev."}}]}
```

