Oboi here we go 🙄

Ubuntu has managed to do away with GNU Core Utilities in its default stack. The last three holdouts, cp, mv and rm, have moved to uutils’ coreutils; the Rust reimplementation Canonical has been feeding into the distro since 2025.

They had been held back from 26.04 LTS over flaws in the uutils versions. Everything else, from ls and cat to chmod and du, made that jump in earlier releases.

This change, while big, sits hidden away in an obscure mention in Canonical’s work-in-progress release notes for Ubuntu 26.10.

It’s been a long road

Canonical started oxidising Ubuntu last year, and Ubuntu 25.10 became the first release to ship coreutils as the default. That release also made sudo-rs the default privilege tool, replacing a command that had been in place for decades.

26.04 was the release where the plan did slow down quite a bit, as Canonical kept cp, mv, and rm on their GNU versions due to a bunch of TOCTOU issues that were blocking the full implementation.

These were caught during an audit, when Canonical commissioned Zellic for two rounds between December 2025 and March 2026, focusing on the most security-sensitive utilities first.

Across both rounds, Zellic raised 113 issues, and 44 of them were assigned CVEs. Canonical says the vast majority have been resolved.

Getting here has had its ups and downs, and the last stretch was not clean. In July, uutils cp went back into the archive and came straight out again after it broke live image builds.

The fix was quick; as the developers marked it “Critical,” the fix went upstream, and the migration landed in time for 26.10. What changes for you?

When typing commands, nothing changes for you on the surface. uutils coreutils is designed to be a drop-in replacement for essential GNU tools, and the project treats any divergence from GNU as a bug, further pointing out that some options may still be missing or behave differently.

So if you prefer staying on the GNU version, you have the option to install the coreutils-from-gnu package that houses all the required components.

The next stage

Coreutils is one piece of a broader campaign. Earlier this year, Canonical became a Gold Sponsor of the Trifecta Tech Foundation, pitching in €40,000 a year to fund memory-safe system software.

Under this, their current target is ntpd-rs, a Rust rewrite of the tools Ubuntu uses to keep its clock in sync. While work is still ongoing, it has already arrived for testing.

Its transition to being default is targeted for Ubuntu 27.04.

What Canonical is gradually building up towards is the completion of their oxidation vision for Ubuntu, and it’s not about blindly including new components. Rather, it looks like a measured approach that’s being worked out a few steps at a time.

  • thingsiplay@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    5 hours ago

    I know for a fact that this is one of the major pain points, why they can’t or want to publish on Steam. There are games or programs with GPL code on Steam, but they do not make use of those features, because it would mean mixing incompatible licensed code (Steamworkshop) with your games code (GPL). I don’t know if things have changed, but I know in the past that was an issue.

    Also dynamic linking is fine, not compile time linking. Those are two different things. I did not say dynamic linking is a problem.

    • zaphod@sopuli.xyz
      link
      fedilink
      arrow-up
      2
      ·
      4 hours ago

      Yes, dynamic linking is fine. How do the Steam Workshop parts come into the code, is it actual source code provided by Valve or is it dynamic linking to some steam.dll, the latter would be fine for GPL.

      • thingsiplay@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        4 hours ago

        I’m not a game developer, so just looking at https://partner.steamgames.com/doc/sdk/api:

        The Steamworks API officially supports C++, using Microsoft Visual Studio 2008+ on Microsoft Windows, GCC 4.6+ and Clang 3.0+ on macOS and SteamOS / Linux.

        Looks like its static linking. On the other side by reading further, it looks like its dyanmic linking. So I’m unsure here.