newlib/winsup/cygwin/release/3.0

116 lines
4.1 KiB
Plaintext
Raw Normal View History

What's new:
-----------
- Support for CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
CLOCK_MONOTONIC_RAW, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
CLOCK_BOOTTIME_ALARM clocks.
- 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.
- Support Linux-specific open(2) flag O_PATH.
- Support Linux-specific linkat(2) flag AT_EMPTY_PATH.
- Support overrun counter for posix timers (via timer_getoverrun() or
siginfo_t::si_overrun).
- New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
timer_getoverrun.
- fork(2) now is able to recover from when an in-use executable/dll is
removed or replaced during process runtime. This feature is disabled by
default and limited to exes/dlls on the same NTFS partition as the Cygwin
installation. For more information and how to enable, please refer to
https://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process
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.
- 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.
- Use the new POSIX rename semantics on NTFS starting with Windows 10 1809.
Renaming a file to another in-use file now actually removes the other file,
rather than moving it to the recycler bin.
- open(..., O_TMPFILE) now moves the file to the trash bin immediately,
to free the parent directory.
- Wctype functions updated to Unicode 11.0.
- Remove matherr, and SVID and X/Open math library configurations.
Default math library configuration is now IEEE.
- Improve uname(2) for newly built applications.
- 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.
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
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
- Fix a bug in recognizing remote FAT/FAT32/exFAT correctly.
- 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
- Fix a bug in select(2) when polling HANDLE-less descriptors.
- Fix WEOF handling in wctype functions.
Addresses: https://cygwin.com/ml/cygwin/2018-12/msg00173.html
- Fix thread names in GDB when cygthreads get reused.
- Fix return value of gethostname in a border case.
- Disallow seteuid on disabled or locked out accounts.
Addresses: https://cygwin.com/ml/cygwin/2019-01/msg00197.html
- Fix raise to work as required by POSIX.
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
- Fix O_APPEND handling on files when calling non-Cygwin applications
Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00081.html
- Fix case correctness of passwd/group entries fetched via getpwnam
or getgrnam.
Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00109.html