You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If anyone sees this and is currently using winpty with old MSYS/MinGW (not MSYS2 or MinGW-w64), please let me know!
The old MSYS/MinGW environment is lacking relative to MSYS2/MinGW-w64 and MSVC in various ways. It would be convenient for me if winpty did not support it anymore.
Issues with native compilation ("MinGW"):
winpty uses DACLs to secure its named pipes, and Windows provides functions to convert between SIDs/SDs and strings. winpty doesn't actually use these functions (because they're slow), but it has convenience C++ wrappers for the APIs to aid in debugging. MinGW (a) doesn't define the SD functions, (b) doesn't define SDDL_VERSION, and (c) defines ConvertStringSidToSidW incorrectly. [src]
MinGW does not define the "LVB" console cell attributes. [src1][src2]
MinGW provides an swprintf matching VC6's prototype. Unlike the other compilers, its swprintf doesn't conform to C99. vsnprintfis provided, but requires passing -std=g++11 even though vsnprintf is part of C99 (and therefore C++11). [src]
MinGW lacks the new version-checking APIs that MSVC and MinGW-w64 provide.[src]
Parallel make hangs -- parallel mingw32-make works better but tends to interleave output on a byte-by-byte basis. [src]
Issues with the UNIX adapter ("MSYS"):
While the MinGW project updates its native-targeting (the "MinGW") toolchain, the MSYS-targeting toolchain is permanently locked at GCC 3.4.x, which lacks support for things like std::wstring and modern C++.
The native code uses pre-compiled headers, but the UNIX adapter must compile without them because MSYS GCC doesn't support them.
select can return EAGAIN. Contemporary Cygwin/MSYS2 can return EINTR, but not EAGAIN. [src]
At some point after MSYS forked Cygwin, the path conversion APIs were deprecated, and new ones were introduced. The winpty UNIX adapter supports both APIs. [src]
MSYS does not support the static-libstdc++ compiler option. [src]
I think this is a race condition involving errno -- read fails and sets errno to something, but errno is reset to 0 by another thread. errno is thread-local on all non-obsolete systems. The fix is probably to kill off the MSYS winpty support. To start, I'll probably omit the MSYS package from the next release.
If anyone sees this and is currently using winpty with old MSYS/MinGW (not MSYS2 or MinGW-w64), please let me know!
The old MSYS/MinGW environment is lacking relative to MSYS2/MinGW-w64 and MSVC in various ways. It would be convenient for me if winpty did not support it anymore.
Issues with native compilation ("MinGW"):
winpty uses DACLs to secure its named pipes, and Windows provides functions to convert between SIDs/SDs and strings. winpty doesn't actually use these functions (because they're slow), but it has convenience C++ wrappers for the APIs to aid in debugging. MinGW (a) doesn't define the SD functions, (b) doesn't define
SDDL_VERSION
, and (c) definesConvertStringSidToSidW
incorrectly. [src]MinGW does not define the "LVB" console cell attributes. [src1] [src2]
MinGW provides an
swprintf
matching VC6's prototype. Unlike the other compilers, itsswprintf
doesn't conform to C99.vsnprintf
is provided, but requires passing-std=g++11
even thoughvsnprintf
is part of C99 (and therefore C++11). [src]MinGW lacks
PIPE_REJECT_REMOTE_CLIENTS
. [src]MinGW lacks
MAPVK_VK_TO_VSC
. [src] [added 2017-01-31]MinGW lacks the new version-checking APIs that MSVC and MinGW-w64 provide.[src]
Parallel
make
hangs -- parallelmingw32-make
works better but tends to interleave output on a byte-by-byte basis. [src]Issues with the UNIX adapter ("MSYS"):
While the MinGW project updates its native-targeting (the "MinGW") toolchain, the MSYS-targeting toolchain is permanently locked at GCC 3.4.x, which lacks support for things like
std::wstring
and modern C++.The native code uses pre-compiled headers, but the UNIX adapter must compile without them because MSYS GCC doesn't support them.
select
can returnEAGAIN
. Contemporary Cygwin/MSYS2 can returnEINTR
, but notEAGAIN
. [src]At some point after MSYS forked Cygwin, the path conversion APIs were deprecated, and new ones were introduced. The winpty UNIX adapter supports both APIs. [src]
MSYS does not support the
static-libstdc++
compiler option. [src]MSYS lacks the
pipe2
API. [commit]Miscellaneous bugs in MSYS:
MSYS
errno
isn't thread-local. [added 2017-02-01]MSYS lacks
wcscpy
andwcscat
. [added 2017-02-01]The text was updated successfully, but these errors were encountered: