Microsoft porta Coreutils Rust Linux su Windows con un progetto dedicato

Microsoft Coreutils for Windows nasce da uutils in Rust e porta comandi Unix nativi su Windows. Il nodo vero riguarda compatibilità, conflitti con PowerShell e licenza MIT.

Microsoft porta su Windows le utilità coreutils scritte in Rust per Unix/Linux (uutils): una scelta tecnica utile che però riapre la questione sul rapporto tra licenze permissive, fork aziendali e compatibilità con GNU coreutils. Microsoft Coreutils for Windows (repository GitHub) si presenta come una raccolta di comandi in stile Unix che gira nativamente su Windows: il progetto, derivato dalle Rust coreutils, mette a disposizione un multi-call binary, ovvero un unico eseguibile che espone comandi come cat.exe, grep.exe, find.exe, ls.exe, cp.exe e rm.exe.

L’obiettivo consiste nel ridurre le differenze tra Linux, macOS, WSL (Windows Subsystem for Linux), container e Windows. Chi scrive script shell sa bene quanto basti una piccola variazione nel comportamento di sort, find o grep per rompere una procedura: Microsoft prova quindi a offrire strumenti familiari senza obbligare l’utente ad aprire WSL.

uutils/coreutils usa la licenza MIT, mentre GNU coreutils resta sotto GPLv3 o successiva. In pratica, Microsoft può creare una build propria, distribuire modifiche e anche mantenere codice non pubblicato in futuro, purché conservi gli avvisi di copyright e licenza relativi al codice MIT originario. Non può rendere proprietario il codice già rilasciato da uutils, ma può chiudere modifiche successive scritte internamente.

Microsoft Coreutils non è GNU coreutils: la differenza conta

Come osservato in precedenza, non siamo davanti a un fork di GNU coreutils, il pacchetto storico del progetto GNU che include comandi fondamentali come cp, mv, rm, chmod, chown, date, wc, sort, uniq e molti altri. Nasce nel solco Unix e ha avuto un ruolo centrale nelle distribuzioni Linux.

uutils è un progetto separato: riscrive i comportamenti di GNU coreutils in Rust, punta alla compatibilità e considera le differenze rispetto a GNU come bug.

La documentazione del progetto segnala che tutti i programmi risultano implementati, ma alcune opzioni possono mancare o comportarsi in modo diverso. Qui si vede il limite tecnico più delicato: replicare un comando storico non significa solo riprodurre le opzioni più note, ma porsi sullo stesso identico solco fatto di anni di casi limite, error code, messaggi su stderr, percorsi non UTF-8, symlink, permessi e comportamento su filesystem differenti.

Microsoft sembra interessata a costruire una variante dei comandi storici Unix/Linux per Windows, con patch mirate al sistema operativo e un pacchetto pensato per WinGet. La documentazione ufficiale indica infatti l’installazione con winget install Microsoft.Coreutils presentando il progetto come anteprima.

Perché Microsoft punta sulle utilità Unix

Negli ultimi anni Windows ha progressivamente avvicinato il proprio ecosistema a quello Linux. L’introduzione di Windows Subsystem for Linux, il supporto ai container Docker, la crescente diffusione di Git e l’utilizzo sempre più frequente di ambienti cloud hanno modificato profondamente il profilo dell’utente professionale.

Molti sviluppatori trascorrono quotidianamente parte del proprio lavoro su terminali Linux e Windows: la necessità di ricordare sintassi differenti o mantenere versioni separate degli script rappresenta un ostacolo alla produttività. La disponibilità nativa di strumenti come quelli citati in precedenza contribuisce a rendere l’esperienza più uniforme e prevedibile.

Le inevitabili collisioni con i comandi storici di Windows

L’integrazione delle utilità Unix non è però priva di complicazioni: Windows possiede infatti una lunga storia di comandi integrati sia nel Prompt dei comandi (cmd) sia in PowerShell: molti nomi coincidono con quelli utilizzati nel mondo Unix/Linux.

La situazione è particolarmente evidente in PowerShell, dove il sistema utilizza una complessa gerarchia di alias e cmdlet che può intercettare l’esecuzione prima ancora che venga raggiunto l’eseguibile desiderato. Per questo motivo Microsoft richiede espressamente PowerShell 7.4 o versioni successive.

Alcuni strumenti, inoltre, non sono distribuiti affatto per evitare incompatibilità potenzialmente pericolose con l’ambiente Windows. Tra questi figurano dir, more, whoami, paste, expand. La loro presenza potrebbe infatti alterare il comportamento di script esistenti o creare ambiguità difficili da gestire.

Conclusione: una mossa utile, non neutra

Microsoft Coreutils non distrugge uutils e non minaccia GNU coreutils nel breve periodo. Offre però un segnale chiaro: Windows vuole assorbire sempre più strumenti familiari agli sviluppatori Unix-like, senza costringerli a uscire dal loro ambiente nativo.

Dal punto di vista tecnico, l’operazione ha senso: Rust offre buone basi per strumenti sicuri e portabili, uutils ha già una copertura ampia e Windows ha bisogno di una compatibilità shell meno frammentata. Dal punto di vista dell’open source, il tema resta aperto: la licenza MIT permette collaborazione, ma non la impone.

La verifica decisiva arriverà dai fatti: patch Windows pubblicate, contributi accettati da uutils, bug corretti a monte e documentazione onesta sui limiti. Fino ad allora conviene evitare sia l’entusiasmo ingenuo sia eventuali toni allarmistici. È una build Microsoft di strumenti Unix-like per Windows; utile, interessante e politicamente davvero rilevante.

Ti consigliamo anche

Link copiato negli appunti