Description
openedon Jul 29, 2020
Environment
Item | Value |
---|---|
OS, Version / Build | Win32NT 10.0.18363.0 Microsoft Windows NT 10.0.0.18363.0 |
Processor Architecture | ___ (no output? but it's x64) |
Processor Type & Model | Intel Broadwell |
Memory | 16GB |
Storage Type, free / capacity (e.g. C: SSD 128GB / 512GB) | SSD 14.5 GB / 81.6 GB |
Relevant apps installed | mingw-w64/msys2 |
Description
Lots of software uses GNU autoconf or build systems written in POSIX shell. Typically, these use msys/cygwin to run on Windows at all (otherwise they couldn't support Windows). However, performance is extremely low. Essentially, Windows is missing a well-integrated POSIX environment, and the emulation done by Cygwin is, in many situations, extremely slow.
Please note that WSL does not solve the problem in general. It's not well-integrated, but it's more like a VM (WSL2 is literally a VM). A solution that is well-integrated is required. POSIX shell execution is actually only an example. Any project that makes use of POSIX, a standard for portable OS access, suffers from win32's non-orthogonal mess, that makes porting to Windows a nightmare. Even projects supported by Microsoft suffer from this problem. For example, consider: https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/win32compat/fileio.c https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/win32compat/w32fd.c.
It should not be necessary for every program to invent a POSIX compat. layer for Windows, which will be slow (as win32 does not provide the required capabilities). This will generally reduce the Windows experience, and it's Microsoft's responsibility to offer a better solution.
Steps to reproduce
A good test is running ffmpeg's configure program. FFmpeg is well-known enough, so no further description is necessary. However, it affects a lot of other projects.
Expected behavior
POSIX shell execution is as fast as on Linux.
Actual behavior
POSIX shell execution is several magnitudes slower than native or even virtualized Linux.