LINUX.ORG.RU
ФорумTalks

Microsoft представила Coreutils for Windows на базе Rust Coreutils

 , , ,


0

1

Microsoft представила Coreutils for Windows — набор UNIX-подобных утилит командной строки, работающих в Windows нативно, без запуска WSL. Проект основан не на классических GNU Coreutils, а на uutils/coreutils — кроссплатформенной реализации GNU Coreutils на Rust. Анонс был сделан в рамках Microsoft Build 2026, где компания описала Coreutils for Windows как часть «developer-optimized» окружения для Windows 11.

Coreutils for Windows распространяется как поддерживаемая Microsoft сборка uutils/coreutils, findutils и grep, упакованная в единый multi-call binary. То есть один исполняемый файл предоставляет привычные команды под стандартными именами вроде cat.exe, grep.exe, find.exe, ls.exe, cp.exe, rm.exe, xargs.exe и других. Задача проекта — сделать перенос скриптов и привычных пайплайнов между Linux, macOS, WSL, контейнерами и Windows менее болезненным.

Установить пакет можно через WinGet:

winget install Microsoft.Coreutils

На GitHub первый релиз опубликован 2 июня 2026 года под тегом v2026.5.29. В него вошли Rust-реализация GNU Coreutils, реализация FindUtils, новая реализация grep, прослойка для совместимости с DOS-вызовами sort и find, а также PowerShell-обёртка для более привычной работы с glob-шаблонами.

Есть и ограничения. Репозиторий прямо отмечает, что проект пока находится в состоянии preview, хотя в блоге Build 2026 Microsoft описывает Coreutils for Windows как generally available. Для PowerShell требуется версия 7.4 или новее, а часть команд конфликтует со встроенными командами CMD и PowerShell. Например, cat, cp, ls, rm, pwd, tee и другие могут пересекаться с алиасами или встроенными командами оболочки, поэтому фактическое поведение зависит от PATH и таблицы алиасов.

Некоторые POSIX-ориентированные команды в поставку не включены: например, chmod, chown, chroot, groups, id, mkfifo, mknod, nohup, tty, uname, who и ряд других. Причина в том, что они завязаны на POSIX-модель прав, сигналов, пользователей или устройств, которая в Windows напрямую отсутствует. Отдельно отмечены Windows-особенности вроде CRLF-переводов строк, отсутствия /dev/null, отличий ACL от POSIX permission bits и отсутствия POSIX-сигналов вроде SIGHUP и SIGPIPE.

Код проекта опубликован в репозитории microsoft/coreutils под лицензией MIT. Microsoft принимает баг-репорты и pull request’ы, но подчёркивает, что изменения в поведении утилит желательно сначала проводить через соответствующие upstream-проекты uutils, а Windows-специфичная обвязка, упаковка и multi-call wrapper живут уже в репозитории Microsoft.

Фактически Microsoft не портировала GNU Coreutils в Windows напрямую, а сделала Windows-сборку Rust-альтернативы GNU-инструментам. Это важная деталь: проект находится ближе к экосистеме uutils, чем к классическому GNU-пакету. Для пользователей Windows это означает появление привычных grep, find, xargs, ls, tail, head, wc, sha256sum и других инструментов «из коробки» через официальный пакет Microsoft, а для FOSS-сообщества — ещё один крупный пример того, как Rust-реализации базовых Unix-утилит выходят за пределы Linux-дистрибутивов.

Источник: windows.com

Перемещено dataman из opensource

★★★★★

Последнее исправление: dataman (всего исправлений: 2)
Ответ на: комментарий от dataman

Я не смотрел туда, но если цель создать набор утилит с одним единым синтаксисом для винды, мака и Линукса, то это будет героический поступок со стороны МС.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от seiken

набор утилит с одним единым синтаксисом для винды, мака

Ждём ответный удар от «яблока». На Swift! :)

dataman ★★★★★
()
Ответ на: комментарий от dataman

Задача проекта — сделать перенос скриптов и привычных пайплайнов

И какой синтаксис там будет, GNU или BSD? Последний и сейчас есть, а толку, если скрипты не кроссплатформенные. Нет уж, придется душить питона.

Lordwind ★★★★★
()
Ответ на: комментарий от Lordwind

Тут https://www.opennet.ru/opennews/art.shtml?num=65609 лучше написали:

Реализация основана на коде проекта uutils (Rust Coreutils), развивающего вариант GNU Coreutils на языке Rust, а также реализациях утилит find и grep на Rust. Утилиты собраны в виде одного универсального исполняемого файла «C:\Program Files\coreutils\coreutils.exe», отдельные команды к которому привязаны при помощи жёстких ссылок в NTFS.

Из-за конфликта с имеющимися штатными утилитами Windows или привязки к специфичным возможностям из поставки исключены утилиты dd, dir, dircolors, shred, sync, uname, expand, kill, more, paste, timeout и whoami. Из состава также исключены утилиты, завязанные на не поддерживаемые в Windows концепции POSIX: chcon, chgrp, chmod, chown, chroot, groups, hostid, id, install, logname, mkfifo, mknod, nice, nohup, pathchk, pinky, runcon, stdbuf, stty, tty, users, who.

Из ограничений и особенностей отмечается необходимость использовать NUL вместо /dev/null, отсутствие поддержки сигналов (SIGHUP, SIGPIPE, SIGUSR), возможность создания символических ссылок только после включения режима для разработчика, недоступность некоторых операций с правами доступа. При работе с каталогами принимаются как пути с символом «/», так и c "".

dataman ★★★★★
()

упакованная в единый multi-call binary

Кто бы сомневался

Причина в том, что они завязаны на POSIX-модель прав, сигналов, пользователей или устройств, которая в Windows напрямую отсутствует. Отдельно отмечены Windows-особенности вроде CRLF-переводов строк, отсутствия /dev/null, отличий ACL от POSIX permission bits и отсутствия POSIX-сигналов вроде SIGHUP и SIGPIPE.

Могли бы и починить.

ya-betmen ★★★★★
()

так и не уловил смысл отдельных покоцанных coreutils.

WSL конечному пользователю даёт возможность баловаться с докерами. msys2 даёт почти полноценное окружение.

а Microsoft.Coreutils для чего?

MKuznetsov ★★★★★
()

Хорошо, хоть все надо делать во время. Кто был заинтересован, находил нужные гну-утилиты. У меня был целый набор, но постепенно их удалял за ненадобностью, так как появились другие решения, особенно это касается инструментов для обработки текста.

Если не брать аспект индивидуального использования, а совместимость со скриптами вообще, то это, я бы сказал, своего рода еще одно признание развития non-Windows (unix-платформы вообще) и несовместимость собственной программной инфраструктуры.

dmitry237 ★★★★★
()

Опять ты со своим ненужно

windows10 ★★★★★
()
Ответ на: комментарий от MKuznetsov

а Microsoft.Coreutils для чего?

Ну справедливости ради, многие вещи консольными утилитами делать намного легче, особенно с пайпами и перенаправлениями, а мелкомягкие «аналоги» имеют всратый синтаксис сравнимый разве что с каким-нибудь systemd

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Ну справедливости ради, многие вещи консольными утилитами делать намного легче, особенно с пайпами и перенаправлениями, а мелкомягкие «аналоги» имеют всратый синтаксис сравнимый разве что с каким-нибудь systemd

я потому и упомянул WSL и msys2 - там всё это есть. Стабильно, Давно. И там и там - полноценные core/bin/file-utils со всеми привычными опциями.

отдельно взятые аналоги (зато на Кгые! Rust) вообще бесцельны - конечному юзеру не дают ничего. кроме раст. И разрыва совместимости конечно, в растовских «аналогах» втихую её рушат - чуть иные ключи, другое поведение, формат вывода.

MKuznetsov ★★★★★
()

А что, Повершелл-Кал не прижился? А сколько было визгов, что линуксовые шеллы устарели. Я еще тогда говорил, что Микрослоп не понимает, что линуксовый шелл рассчитан на интерактивную работу, поэтому все утилиты короткие и легко набираются человеком. А Вот-Эти-Их-Высеры, конешно, выглядят замечательно в корпоративной документации, но совершенно непригодны для интерактивного использования.

MoldAndLimeHoney ★★★
()
Ответ на: комментарий от MoldAndLimeHoney

А что, Повершелл-Кал не прижился? А сколько было визгов, что линуксовые шеллы устарели. Я еще тогда говорил, что Микрослоп не понимает, что линуксовый шелл рассчитан на интерактивную работу, поэтому все утилиты короткие и легко набираются человеком. А Вот-Эти-Их-Высеры, конешно, выглядят замечательно в корпоративной документации, но совершенно непригодны для интерактивного использования.

Ещё что легаси, что модерн Повершеллы довольно долго запускаются. CMD, BASH, ZSH, FISH стартуют мнгновенно, а Повершеллы - тупят секунду…

mndtr0
()
Ответ на: комментарий от mndtr0

Повершеллы - тупят секунду…

Не секунду конечно, но стартует в 38 раз медленнее:

$ time bash -c ""

real	0m0.003s
user	0m0.002s
sys	0m0.001s

$ time pwsh -nop -c ""

real	0m0.114s
user	0m0.161s
sys	0m0.026s

Для шелла, если он постоянно запущен (у меня всегда), это не имеет значения. Но вот для запуска скрипта через шебанг, это конечно никуда не годится, при условии, что сотые доли секунды критичны в конкретном случае.

dmitry237 ★★★★★
()

оо.. давно искала что-то актуальное нативное (а не на cygwin)


так, а bash есть?

PS: не работает, точка входа DLL чего-то там не найдена
MS как всегда в своем репертуаре

EPIC, даже uninstall не работает

Sylvia ★★★★★
()
Последнее исправление: Sylvia (всего исправлений: 3)

А что, Цигвин уже всё? Кажется там всё это давно было и отлично работало. Ну у меня точно отлично работало, когда было актуально.

Dispetcher14 ★★★★★
()
Ответ на: комментарий от Dispetcher14

сейчас всё ушло в mingw
MSYS2 всё еще содержит компоненты cygwin

Sylvia ★★★★★
()

Тем временем, я добровольно перевёл свои домашние системы (арчи) на uutils-coreutils.

В первую очередь по философским причинам против GNU/GPL, а не техническим.

Посмотрим как оно покажет себя на дистанции с технической стороны.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 3)
Ответ на: комментарий от dmitry237
PowerShell 7.6.2
Loading personal and system profiles took 910ms.
PS C:\Windows\System32>

Ну, это так только в первый раз сразу после загрузки Винды, последующие запуски шустрее

mndtr0
()
Последнее исправление: mndtr0 (всего исправлений: 1)
Ответ на: комментарий от mndtr0

В винде рантайм больше, чем в линукс-макось-версиях, где он урезанный. В принципе это нормальный результат для запуска интерактивного шелла, а вот для скрипта, запущенного не из шелла это долго.

dmitry237 ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

А сколько было визгов, что линуксовые шеллы устарели.

Так они и устарели. Просто в индустрию набрали креветок-копипастеров, и пришлепнули сверху иишкой, обученной на рецептах с камланиями вида «cat | grep | awk», а в венде не работает, и им неуютненько.

Хотя для креветочной деятельности по уши хватило бы десятка алиасов к павершельным заклинаниям, некоторые из которых и так давно существовали. Но зачем-то решили насрать в ось еще и этого.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 2)

Нафига, если есть Пауэшелл?

sparkie ★★★★★
()
Ответ на: комментарий от seiken

Лет двадцать с гаком у MS был MSYS, даже с эмуляцией fork(). За деньги. Потом форк оказался не сильно нужен, а если нужен, достаточно cygwin32.dll, и msys выкинули. А название перешло к gnu окружению на базе mingw - msys.2 - но fork по-прежнему cygwin вроде.

Так это я о чём - subj это какое-то дикое ненужно.

Shadow ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)