MSYS2 refers to the libraries and programs that use the POSIX emulation layer (“msys2 runtime”, derived from Cygwin’s cygwin1.dll). It is very easy to port libraries and programs from Unix/Linux because most of the POSIX semantics is emulated reasonably well, for example the fork() function. Bash and Perl are examples of MSYS2 programs.

MinGW refers to libraries and programs that are compiled using GNU tools but do not require any POSIX semantics, instead relying on the standard Win32 API and the C runtime library. MinGW stands for “Minimal GNU for Windows”. Examples: cURL (a library to talk to remote servers via HTTP(S), (S)FTP, etc), emacs, Inkscape, etc

The POSIX emulation layer of MSYS2 binaries is convenient, but comes at a cost: Typically, MSYS2 programs are noticably slower than their MinGW counterparts (if there are such counterparts). As a consequence, the Git for Windows project tries to provide as many components as possible as MinGW binaries.

- The difference between MSYS2 and MinGW / git-for-windows

POSIX 에뮬레이션 레이어가 기반이냐 아니냐가 가장 큰 차이다. POSIX 에뮬레이션 레이어를 거치면 속도가 현저하게 느려진다. Win32 API와 C runtime library에 의존하는 MinGW는 MSYS2보다 빠르다. 그래서 Git For Windows는 가능한 많은 MinGW 바이너리를 제공하려고 노력한다.

어떻게 잘 버무려 쓸까? 나는 이런 고민 안 하고 잘 버무려진 Git for Windows SDK 쓴다.

Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com