РАЗРАБОТКА

Microsoft перенесла Coreutils в Windows без WSL

Microsoft выпустила Coreutils для Windows: десятки Unix-утилит теперь работают без WSL, а старые скрипты можно переносить с меньшей болью.

✍️ Редакция iTech News | 04.06.2026 | ⏱ 4 мин | 👁 1 | Источник: Habr / Новости
🔧

Microsoft представила Coreutils для Windows — порт классического набора Unix-утилит, который работает без WSL и собран в один исполняемый файл. Для разработчиков и администраторов это не просто очередная галочка в экосистеме Windows: речь о попытке убрать лишний слой между привычными Linux-командами и нативной средой Windows, где до сих пор многие сценарии либо ломались, либо требовали обходных путей.

О новинке сообщает Habr / Новости. По данным источника, проект распространяется по лицензии MIT, а исходный код написан на Rust и PowerShell. В состав набора вошли несколько десятков утилит, среди них sort, cat, cp, find, sleep, tee, echo, uptime и ls. Идея простая: дать пользователям Windows знакомые команды, флаги и поведение без необходимости поднимать WSL только ради базовых операций в скриптах и терминале.

Технически Microsoft не стала изобретать велосипед заново. Реализация опирается на uutils — Rust-переосмысление GNU Coreutils, а также на Rust-реализации find и grep. Сами утилиты поставляются в виде одного файла C:Program Filescoreutilscoreutils.exe, а отдельные команды подключаются через жёсткие ссылки NTFS. Подход прагматичный: меньше разрозненных бинарников, проще поставка и, вероятно, меньше шансов утонуть в зоопарке несовместимых сборок. Заодно это хорошо ложится в общий курс Microsoft на Rust в системных компонентах, где язык всё чаще рассматривают не как игрушку для энтузиастов, а как рабочий инструмент для инфраструктурного софта.

Но важно не путать этот релиз с обещанием «теперь Windows стала Linux». Coreutils для Windows — это адаптация, а не полная калька GNU-мира. Из поставки исключили часть команд из-за конфликтов со штатными средствами Windows или из-за привязки к Windows-специфике. В списке отсутствуют, например, dd, dir, dircolors, shred, sync, uname, more, timeout и whoami. Отдельно убрали набор утилит, которые слишком глубоко завязаны на POSIX-концепции, плохо совместимые с Windows: chroot, groups, id, mkfifo, mknod, nice, nohup, stty, tty, who и другие. И это, пожалуй, самая честная часть всей истории: Microsoft не делает вид, будто различий между системами нет, а сразу очерчивает границы применимости.

Есть и практические ограничения, которые быстро напомнят, что перед нами всё же Windows. Вместо /dev/null нужно использовать NUL. Поддержки сигналов уровня SIGHUP, SIGPIPE и SIGUSR нет. Создание символических ссылок требует включённого режима разработчика. Некоторые операции с правами доступа недоступны. С другой стороны, с путями Microsoft поступила разумно: при работе с каталогами принимаются как слеши /, так и обратные слеши . Это мелочь только на бумаге. На практике именно такие мелочи решают, будет ли скрипт после переноса работать «почти сразу» или превратится в вечер ручной правки с чашкой холодного кофе рядом с терминалом.

Для кого этот релиз действительно важен? В первую очередь для тех, кто живёт на стыке сред: разработчиков, переносящих shell-скрипты между Linux, контейнерами, WSL и Windows; DevOps- и platform-команд, где рабочие станции могут быть на Windows, а прод — на Linux; инженеров сборки и внутренних тулчейнов. До сих пор у таких команд был не самый изящный выбор: либо требовать WSL как обязательную прослойку, либо переписывать скрипты под PowerShell и cmd, либо тащить в проект Git Bash, MSYS2, Cygwin и прочие компромиссы с собственными нюансами совместимости. Coreutils для Windows не отменяет эти варианты полностью, но даёт ещё один сценарий: оставить часть привычного Unix-инструментария прямо в нативной Windows-среде.

Для бизнеса и IT-руководителей сигнал тоже понятный. Чем меньше различий между рабочими окружениями внутри команды, тем ниже стоимость поддержки внутренних скриптов, онбординга и документации. Если разработчик открывает Windows-машину и получает предсказуемые cat, sort или find без отдельной подсистемы, это экономит не только минуты, но и нервы. Не в том смысле, что у компании внезапно исчезнут все платформенные проблемы. Скорее в том, что одна из самых скучных и дорогих статей технического долга — несовместимость базовых CLI-сценариев — становится чуть менее скучной и чуть менее дорогой.

При этом релиз хорошо вписывается в более широкий тренд: Windows давно перестала делать вид, будто мир терминала заканчивается на dir и пакетных файлах. За последние годы Microsoft последовательно встраивала в свою платформу инструменты, привычные Unix-разработчикам, от Windows Terminal до WSL. Теперь компания делает ещё один шаг и переносит часть базового пользовательского слоя Unix прямо в Windows, без виртуализации и без отдельной подсистемы. Символически это почти важнее, чем сам список утилит: Microsoft уже не только терпит чужую экосистему рядом, а методично заимствует её удачные интерфейсы.

Главный вопрос теперь не в том, смогут ли разработчики запустить ls или tee в Windows. Смогут. Вопрос в другом: насколько далеко Microsoft готова зайти в выравнивании поведения команд и где остановится из-за архитектурных различий Windows и POSIX. Если проект получит нормальную поддержку и не останется витриной на пару анонсов, Windows может стать заметно дружелюбнее для тех, кто привык думать скриптами, а не меню и чекбоксами.

Поделиться: Telegram X LinkedIn