Различия между MSYS2 и Cygwin

Традиционно MSYS bash считается ниже Cygwin bash. Первый был вспомогательным инструментом внутри MinGW, предназначенным для запуска сценариев autoconf. Но теперь есть MinGW-w64 и MSYS2. Последний поставляется со сладким pacman, таким как менеджер пакетов и элегантные оболочки, такие как zsh, поэтому я задаюсь вопросом, есть ли еще промежуток в слое эмуляции.

Хотя приложения MinGW * являются родными исполняемыми файлами Windows, для программного обеспечения MSYS2 требуется слой эмуляции POSIX, как это делает Cygwin. По крайней мере, случайному пользователю трудно определить различия между ними.

  • Каковы функциональные различия между двумя уровнями эмуляции (если они есть)?
  • Какая эмуляция выполняется быстрее (более эффективно)?

Ответ 1

Традиционно MSYS bash был уступает, но главным образом потому, что Cygwin оставался в активной разработке, тогда как MSYS этого не делал. MSYS forked из Cygwin версии 1.3.3 и никогда не синхронизируется, тогда как MSYS2 регулярно ресинхронизируется с проектом Cygwin.

У нас нет "сладкого pacman like manager", у нас есть прямая перекомпиляция менеджера пакетов pacman Arch Linux, как мы могли бы достичь.

MSYS2 не имеет cygwin.dll, но у него есть msys-2.0.dll, который делает то же самое (и еще кое-что). В частности, аргументы, которые выглядят как пути и PATH env. var преобразуются в форму Windows при запуске собственного программного обеспечения Windows.

Что касается того, медленнее ли это, я ожидаю, что будет очень мало различий, но MSYS2 будет на несколько меньше меньше из-за дополнительной работы по преобразованию. Опять же, скорее всего, вы будете запускать больше Windows-родного программного обеспечения из MSYS2 (например, компиляторов MinGW-w64), чем вы бы от Cygwin, чтобы перевести все в пользу MSYS2.

Ответ 2

Как я понимаю, MSYS2 является вилкой Cygwin с основной целью предоставить возможность использовать пакеты MinGW-w64. Эта цель достигается за счет общего количества доступного программного обеспечения. Сравните список MSYS2 и Cygwin.

По существу, вот и все. Поэтому, хотя вам не нужно компилировать что-то под MinGW-w64, вряд ли у вас будет какая-то причина использовать MSYS2, а не оригинальный Cygwin.