2018-11-29 11:12:05 +01:00
|
|
|
What's new:
|
|
|
|
-----------
|
|
|
|
|
|
|
|
- Support for CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
|
2019-01-22 15:46:17 +01:00
|
|
|
CLOCK_MONOTONIC_RAW, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
|
|
|
|
CLOCK_BOOTTIME_ALARM clocks.
|
2018-11-29 11:12:05 +01:00
|
|
|
|
2018-12-26 11:36:22 +01:00
|
|
|
- Support for case sensitive directories. mkdir(2) automatically
|
|
|
|
creates directories within the Cygwin installation dir as case
|
|
|
|
sensitive now.
|
|
|
|
|
|
|
|
This feature requires Windows 10 1803 or later and WSL installed!
|
|
|
|
|
|
|
|
- New file ioctls's FS_IOC_GETFLAGS and FS_IOC_SETFLAGS. The actual
|
|
|
|
inode flags are Cygwin-specific. This allows to set or reset
|
|
|
|
DOS attributes, file sparseness, FS level encryption and compression,
|
|
|
|
as well as directory case sensitivity programatically.
|
|
|
|
|
|
|
|
- New tools chattr(1) and lsattr(1) to utilize setting and viewing the
|
|
|
|
aforementioned new ioctl's on the command line.
|
|
|
|
|
|
|
|
- Support for exFAT.
|
|
|
|
|
2019-01-07 19:33:11 +01:00
|
|
|
- Support Linux-specific open(2) flag O_PATH.
|
|
|
|
|
2019-01-07 19:36:37 +01:00
|
|
|
- Support Linux-specific linkat(2) flag AT_EMPTY_PATH.
|
|
|
|
|
2019-01-12 21:19:52 +01:00
|
|
|
- Support overrun counter for posix timers (via timer_getoverrun() or
|
|
|
|
siginfo_t::si_overrun).
|
|
|
|
|
2019-01-15 22:02:33 +01:00
|
|
|
- New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
|
|
|
|
timer_getoverrun.
|
2019-01-12 21:19:52 +01:00
|
|
|
|
2018-11-29 11:12:05 +01:00
|
|
|
|
|
|
|
What changed:
|
|
|
|
-------------
|
|
|
|
|
|
|
|
- clock_nanosleep, pthread_condattr_setclock and timer_create now support
|
|
|
|
all clocks, except CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
|
|
|
|
|
|
|
|
- clock_setres is a no-op now.
|
|
|
|
|
2018-12-26 11:36:22 +01:00
|
|
|
- Use the new POSIX unlink semantics on NTFS starting with Windows 10 1709.
|
|
|
|
Deleting an in-use file now actually removes the file, rather than moving
|
|
|
|
it to the recycler bin.
|
|
|
|
|
2019-01-14 21:57:38 +01:00
|
|
|
- Use the new POSIX rename semantics on NTFS starting with Windows 10 1809.
|
2019-01-09 15:47:43 +01:00
|
|
|
Renaming a file to another in-use file now actually removes the other file,
|
|
|
|
rather than moving it to the recycler bin.
|
|
|
|
|
2019-01-06 20:28:48 +01:00
|
|
|
- open(..., O_TMPFILE) now moves the file to the trash bin immediately,
|
|
|
|
to free the parent directory.
|
|
|
|
|
2019-01-13 23:35:28 +01:00
|
|
|
- Wctype functions updated to Unicode 11.0.
|
|
|
|
|
2018-12-06 17:14:01 +01:00
|
|
|
- Remove matherr, and SVID and X/Open math library configurations.
|
|
|
|
Default math library configuration is now IEEE.
|
|
|
|
|
2019-01-24 12:01:01 +01:00
|
|
|
- Improve uname(2) for newly built applications.
|
|
|
|
|
2019-01-26 18:33:41 +01:00
|
|
|
- Kerberos/MSV1_0 S4U authentication replaces two old methods:
|
|
|
|
Creating a token from scratch and Cygwin LSA authentication package.
|
|
|
|
|
Cygwin: processes: use dedicated Cygwin PID rather than Windows PID
Using the Windows PID as Cygwin PID has a few drawbacks:
- the PIDs on Windows get reused quickly. Some POSIX applications choke
on that, so we need extra code to avoid too quick PID reuse.
- The code to avoid PID reuse keeps parent process handles and
(depending on a build option) child processes open unnecessarily.
- After an execve, the process has a split personality: Its Windows PID
is a new PID, while its Cygwin PID is the PID of the execve caller
process. This requires to keep two procinfo shared sections open, the
second just to redirect process info requests to the first, correct
one.
This patch changes the way Cygwin PIDs are generated:
- Cygwin PIDs are generated independently of the Windows PID, in a way
expected by POSIX processes. The PIDs are created incrementally in
the range between 2 and 65535, round-robin.
- On startup of the first Cygwin process, choose a semi-random start PID
for the first process in the lower PID range to make the PIDs slightly
unpredictable. This may not be necessary but it seems kind of inviting
to know that the first Cygwin process always starts with PID 2.
- Every process not only creates the shared procinfo section, but also a
symlink in the NT namespace, symlinking the Windows PID to the Cygwin
PID. This drops the need for the extra procinfo section after execve.
- Don't keep other process handles around unnecessarily.
- Simplify the code creating/opening the shared procinfo section and
make a clear distinction between interfaces getting a Cygwin PID and
interfaces getting a Windows PID.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-01-31 21:19:03 +01:00
|
|
|
- Cygwin PIDs have been decoupled from Windows PID. Cygwin PIDs are
|
|
|
|
now incrementally dealt in the range from 2 up to 65535, POSIX-like.
|
2019-02-02 21:13:37 +01:00
|
|
|
Native Windows processes not started by Cygwin processes are mapped
|
|
|
|
into the range beyond 65535.
|
Cygwin: processes: use dedicated Cygwin PID rather than Windows PID
Using the Windows PID as Cygwin PID has a few drawbacks:
- the PIDs on Windows get reused quickly. Some POSIX applications choke
on that, so we need extra code to avoid too quick PID reuse.
- The code to avoid PID reuse keeps parent process handles and
(depending on a build option) child processes open unnecessarily.
- After an execve, the process has a split personality: Its Windows PID
is a new PID, while its Cygwin PID is the PID of the execve caller
process. This requires to keep two procinfo shared sections open, the
second just to redirect process info requests to the first, correct
one.
This patch changes the way Cygwin PIDs are generated:
- Cygwin PIDs are generated independently of the Windows PID, in a way
expected by POSIX processes. The PIDs are created incrementally in
the range between 2 and 65535, round-robin.
- On startup of the first Cygwin process, choose a semi-random start PID
for the first process in the lower PID range to make the PIDs slightly
unpredictable. This may not be necessary but it seems kind of inviting
to know that the first Cygwin process always starts with PID 2.
- Every process not only creates the shared procinfo section, but also a
symlink in the NT namespace, symlinking the Windows PID to the Cygwin
PID. This drops the need for the extra procinfo section after execve.
- Don't keep other process handles around unnecessarily.
- Simplify the code creating/opening the shared procinfo section and
make a clear distinction between interfaces getting a Cygwin PID and
interfaces getting a Windows PID.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-01-31 21:19:03 +01:00
|
|
|
|
2018-11-29 11:12:05 +01:00
|
|
|
|
|
|
|
Bug Fixes
|
|
|
|
---------
|
|
|
|
|
|
|
|
- Fix a thread race when initializing CLOCK_MONOTONIC.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2018-11/msg00017.html
|
|
|
|
|
|
|
|
- Fix early timeout from pthread_cond_timedwait.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2018-11/msg00171.html
|
2018-12-26 11:36:22 +01:00
|
|
|
|
|
|
|
- Fix a bug in recognizing remote FAT/FAT32/exFAT correctly.
|
2019-01-06 20:28:48 +01:00
|
|
|
|
|
|
|
- Allow open(2)/stat(2)/linkat(2) of a file via /proc/PID/fd/DESCRIPTOR
|
|
|
|
even if file has been deleted.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2018-12/msg00125.html
|
|
|
|
https://cygwin.com/ml/cygwin/2018-12/msg00028.html
|
Cygwin: select: fix overwriting fd sets if poll returns no fd
There's a long-standing bug in select. If we have poll-only
descriptors in the fd set, select overwrites the incoming
fd sets with the polling result. If none of the fds is ready,
select has to loop again. But now the fd sets are set to all
zero and select hangs.
Fix this by utilizing the local fd sets r, w, e as storage for
the incoming fd sets and use them to initialize select_stuff.
If we have to loop, overwritung the incoming fd sets doesn't matter.
While at it, rename r, w, e to readfds_in, writefds_in, exceptfds_in.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-01-13 22:43:52 +01:00
|
|
|
|
|
|
|
- Fix a bug in select(2) when polling HANDLE-less descriptors.
|
2019-01-13 23:35:28 +01:00
|
|
|
|
|
|
|
- Fix WEOF handling in wctype functions.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2018-12/msg00173.html
|
2019-01-23 21:39:19 +01:00
|
|
|
|
|
|
|
- Fix thread names in GDB when cygthreads get reused.
|
2019-01-24 14:01:59 +01:00
|
|
|
|
|
|
|
- Fix return value of gethostname in a border case.
|
2019-01-24 16:22:49 +01:00
|
|
|
|
|
|
|
- Disallow seteuid on disabled or locked out accounts.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00197.html
|
2019-01-30 11:36:45 +01:00
|
|
|
|
|
|
|
- Fix raise to work as required by POSIX.
|
2019-01-30 22:21:46 +01:00
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00149.html
|
|
|
|
|
|
|
|
- Fix exception handling in pthreads.
|
|
|
|
Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00149.html
|