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 ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)