1 <sect1 id="ov-new1.7"><title>What's new and what changed in Cygwin 1.7</title>
3 <sect2 id="ov-new1.7.8"><title>What's new and what changed from 1.7.7 to 1.7.8</title>
5 <itemizedlist mark="bullet">
8 Cygwin now ships the C standard library fenv.h header file, and implements the
9 related APIs (including GNU/glibc extensions): feclearexcept, fedisableexcept,
10 feenableexcept, fegetenv, fegetexcept, fegetexceptflag, fegetprec, fegetround,
11 feholdexcept, feraiseexcept, fesetenv, fesetexceptflag, fesetprec, fesetround,
12 fetestexcept, feupdateenv, and predefines both default and no-mask FP
14 <ulink url="http://www.gnu.org/software/libc/manual/html_node/Arithmetic.html">
15 GNU C Library manual</ulink> for full details of this functionality.
19 Support for the C99 complex functions, except for the "long double"
20 implementations. New APIs: cacos, cacosf, cacosh, cacoshf, carg, cargf, casin,
21 casinf, casinh, casinhf, catan, catanf, catanh, catanhf, ccos, ccosf, ccosh,
22 ccoshf, cexp, cexpf, cimag, cimagf, clog, clogf, conj, conjf, cpow, cpowf,
23 cproj, cprojf, creal, crealf, csin, csinf, csinh, csinhf, csqrt, csqrtf, ctan,
28 Drop support for Windows NT4 prior to Service Pack 4.
32 Drop support for Windows NT4 prior to Service Pack 4.
39 <sect2 id="ov-new1.7.7"><title>What's new and what changed from 1.7.6 to 1.7.7</title>
41 <itemizedlist mark="bullet">
44 Partially revert the 1.7.6 change to set the Win32 current working directory
45 (CWD) always to an invalid directory, since it breaks backward compatibility
46 too much. The Cygwin CWD and the Win32 CWD are now kept in sync again, unless
47 the Cygwin CWD is not usable as Win32 CWD. See the reworked
48 <xref linkend="pathnames-win32-api"></xref> for details.
52 Make sure to follow the Microsoft security advisory concerning DLL hijacking.
53 See the <ulink url="http://www.microsoft.com/technet/security/advisory/2269637.mspx">Microsoft Security Advisory (2269637) "Insecure Library Loading Could Allow Remote Code Execution"</ulink> for details.
57 Allow to link against -lbinmode instead of /lib/binmode.o. Same for
58 -ltextmode, -ltextreadmode and -lautomode.
59 See <xref linkend="textbin-devel"></xref> for details.
66 <sect2 id="ov-new1.7.6"><title>What's new and what changed from 1.7.5 to 1.7.6</title>
68 <itemizedlist mark="bullet">
71 Add new mount options "dos" and "ihash" to allow overriding Cygwin default
72 behaviour on broken filesystems not recognized by Cygwin.
76 Add new mount option "bind" to allow remounting parts of the POSIX file
77 hirarchy somewhere else.
81 Ttys and ptys are handled as securable objects using file-like permissions
82 and owner/group information. <command>chmod</command> and
83 <command>chown</command> now work on ttys/ptys. A new mechanism is used
84 to propagate pty handles safely to other processes, which does not require
89 Pass on coresize settings made with setrlimit(2). This allows shells to
90 disable creating stackdump files in child processes via
91 <screen>ulimit -c 0</screen> in bash or <screen>limit coredumpsize 0</screen>
96 Locale categories contain all localization strings additionally as wide-char
97 strings. locale(1) prints these values just as on Linux. nl_langinfo(3)
102 New interfaces mkostemp(3) and mkostemps(3) are added.
106 New virtual file /proc/filesystems.
110 clock_gettime(3) and clock_getres(3) accept CLOCK_MONOTONIC.
114 DEPRECATED with 1.7.7: Cygwin handles the current working directory entirely
115 on its own. The Win32 current working directory is set to an invalid path to
116 be out of the way. [...]
123 <sect2 id="ov-new1.7.5"><title>What's new and what changed from 1.7.3 to 1.7.5</title>
125 <itemizedlist mark="bullet">
128 Support for DEC Backarrow Key Mode escape sequences (ESC [ ? 67 h, ESC [ ? 67 l)
136 <sect2 id="ov-new1.7.3"><title>What's new and what changed from 1.7.2 to 1.7.3</title>
138 <itemizedlist mark="bullet">
141 Support for GB2312/EUC-CN. These charsets are implemented as aliases to GBK.
142 GB2312 is now the default charset name for the locales zh_CN and zh_SG, just
147 Modification and access timestamps of devices reflect the current time.
154 <sect2 id="ov-new1.7.2"><title>What's new and what changed from 1.7.1 to 1.7.2</title>
156 <itemizedlist mark="bullet">
158 <listitem><para>Localization support has been much improved.</para>
160 <itemizedlist mark="bullet">
163 Cygwin now handles locales using the underlying Windows locale
164 support. The locale must exist in Windows to be recognized.
165 Locale aliases from the file /usr/share/locale/locale.alias are also
166 allowed, as long as their replacement is supported by the underlying Windows.
170 New tool "locale" to fetch locale information and default locales based on
171 the Windows default settings as well as lists of all supported locales
176 Default charset for locales without explicit charset is now chosen
177 from a list of Linux-compatible charsets.
181 For instance: en_US -> ISO-8859-1, ja_JP -> EUC-JP, zh_TW -> Big5.
185 Added support for the charsets GEORGIAN-PS, PT154, and TIS-620.
189 Support for the various locale modifiers to switch charsets as on Linux.
193 Default charset in the "C" or "POSIX" locale has been changed back
194 from UTF-8 to ASCII, to avoid problems with applications
195 expecting a singlebyte charset in the "C"/"POSIX" locale. Still use
196 UTF-8 internally for filename conversion in this case.
200 LC_COLLATE, LC_MONETARY, LC_NUMERIC, and LC_TIME localization is
201 enabled via Windows locale support. LC_MESSAGES is enabled via a big
202 table with localized strings.
206 fnmatch(3), regcomp(3), regexec(3) calls are now multibyte-aware.
210 printf(3), wprintf(3) families of functions now handle the grouping
211 flag, the apostrophe <literal>'</literal>, per POSIX-1.2008. The
212 integer portion of the result of a decimal conversion (%i, %d, %u, %f,
213 %F, %g, %G) will be formatted with thousands' grouping characters.
217 strftime(3), wcsftime(3), and strptime(3) now handle the E and O format
218 modifiers to print/scan alternative date and time representations or to
219 use alternative digits in locales which support this. Additionally these
220 functions now also support the padding modifiers '0' and '+', as well as
221 a field width per POSIX-1.2008.
233 Support open(2) flags O_CLOEXEC and O_TTY_INIT flags. Support fcntl
234 flag F_DUPFD_CLOEXEC. Support socket flags SOCK_CLOEXEC and SOCK_NONBLOCK.
235 Add new Linux-compatible API calls accept4(2), dup3(2), and pipe2(2).
236 Support the signal SIGPWR.
239 <listitem><para>Enhanced Windows console support.</para>
241 <itemizedlist mark="bullet">
244 The console's backspace keycode can be changed using 'stty erase'.
248 Function keys send distinguished escape sequences compatible with rxvt.
249 Keypad keys send distinguished escape sequences, xterm-style.
253 Support of combining Alt and AltGr modifiers in console window
254 (compatible with xterm and mintty), so that e.g. Alt-@ sends ESC @
255 also on keyboards where @ is mapped to an AltGr combination.
259 Report mouse wheel scroll events in mouse reporting mode 1000 (note:
260 this doesn't seem to work on all systems, assumedly due to driver
261 interworking issues).
262 Add mouse reporting mode 1002 to report mouse drag movement.
263 Add mouse reporting mode 1003 to report any mouse movement.
264 Add focus event reporting (mode 1004), compatible with xterm and mintty.
268 Add escape sequences for not bold (22), not invisible (28), not
269 blinking (25) (compatible with xterm and mintty).
273 Support VT100 line drawing graphics mode in console window (compatible
274 with xterm and mintty).
282 Handle native DOS paths always as if mounted with "posix=0,noacl".
286 Handle UNC paths starting with slashes identical to /cygdrive paths.
287 In other words, use the /cygdrive mount flags for these paths as well.
291 Recognize NWFS filesystem and workaround broken OS call.
295 New support for eXtensible Data Record (XDR) encoding and decoding,
296 as defined by RFCs 1014, 1832, and 4506. The XDR protocol and
297 functions are useful for cross-platfrom data exchange, and are
298 commonly used as the core data interchange format for Remote
299 Procedure Call (RPC) and NFS.
306 <sect2 id="ov-new1.7-os"><title>OS related changes</title>
308 <itemizedlist mark="bullet">
311 Windows 95, 98 and Me are not supported anymore. The new Cygwin 1.7 DLL
312 will not run on any of these systems.
316 Add support for Windows 7 and Windows Server 2008 R2.
323 <sect2 id="ov-new1.7-file"><title>File Access related changes</title>
325 <itemizedlist mark="bullet">
328 Mount points are no longer stored in the registry. Use /etc/fstab and
329 /etc/fstab.d/$USER instead. Mount points created with mount(1) are only
330 local to the current session and disappear when the last Cygwin process
331 in the session exits.
335 Cygwin creates the mount points for /, /usr/bin, and /usr/lib
336 automatically from it's own position on the disk. They don't have to be
337 specified in /etc/fstab.
341 If a filename cannot be represented in the current character set, the
342 character will be converted to a sequence Ctrl-X + UTF-8 representation
343 of the character. This allows to access all files, even those not
344 having a valid representation of their filename in the current character
345 set. To always have a valid string, use the UTF-8 charset by
346 setting the environment variable $LANG, $LC_ALL, or $LC_CTYPE to a valid
347 POSIX value, for instance in Cygwin.bat like this:
351 set LC_CTYPE=en_US.UTF-8
357 PATH_MAX is now 4096. Internally, path names can be as long as the
358 underlying OS can handle (32K).
362 struct dirent now supports d_type, filled out with DT_REG or DT_DIR.
363 All other file types return as DT_UNKNOWN for performance reasons.
367 The CYGWIN environment variable options "ntsec" and "smbntsec" have been
368 replaced by the per-mount option "acl"/"noacl".
372 The CYGWIN environment variable option "ntea" has been removed without
377 The CYGWIN environment variable option "check_case" has been removed in
378 favor of real case-sensitivity on file systems supporting it.
382 Creating filenames with special DOS characters '"', '*', ':', '<',
383 '>', '|' is supported.
387 Creating files with special DOS device filename components ("aux",
388 "nul", "prn") is supported.
392 File names are case sensitive if the OS and the underlying file system
393 supports it. Works on NTFS and NFS. Does not work on FAT and Samba
394 shares. Requires to change a registry key (see the User's Guide). Can
395 be switched off on a per-mount basis.
399 Due to the above changes, managed mounts have been removed.
403 Incoming DOS paths are always handled case-insensitive and get no POSIX
404 permission, as if they are mounted with noacl,posix=0 mount flags.
408 unlink(2) and rmdir(2) try very hard to remove files/directories even if
409 they are currently accessed or locked. This is done by utilizing the
410 hidden recycle bin directories and marking the files for deletion.
414 rename(2) rewritten to be more POSIX conformant.
418 access(2) now performs checks using the real user ID, as required by
419 POSIX; the old behavior of querying based on effective user ID is
420 available through the new faccessat(2) and euidaccess(2) APIs.
424 Add st_birthtim member to struct stat.
428 File locking is now advisory, not mandatory anymore. The fcntl(2) and
429 the new lockf(2) APIs create and maintain locks with POSIX semantics,
430 the flock(2) API creates and maintains locks with BSD semantics. POSIX
431 and BSD locks are independent of each other.
435 Implement atomic O_APPEND mode.
439 New open(2) flags O_DIRECTORY, O_EXEC and O_SEARCH.
443 Make the "plain file with SYSTEM attribute set" style symlink default
444 again when creating symlinks. Only create Windows shortcut style
445 symlinks if CYGWIN=winsymlinks is set in the environment.
449 Symlinks now use UTF-16 encoding for the target filename for better
450 internationalization support. Cygwin 1.7 can read all old style
451 symlinks, but the new style is not compatible with older Cygwin
456 Handle NTFS native symlinks available since Vista/2008 as symlinks (but
457 don't create Vista/2008 symlinks due to unfortunate OS restrictions).
461 Recognize NFS shares and handle them using native mechanisms. Recognize
462 and create real symlinks on NFS shares. Get correct stat(2) information
463 and set real mode bits on open(2), mkdir(2) and chmod(2).
467 Recognize MVFS and workaround problems manipulating metadata and handling
472 Recognize Netapp DataOnTap drives and fix inode number handling.
476 Recognize Samba version beginning with Samba 3.0.28a using the new
477 extended version information negotiated with the Samba developers.
481 Stop faking hardlinks by copying the file on filesystems which don't
482 support hardlinks natively (FAT, FAT32, etc.). Just return an error
483 instead, just like Linux.
487 List servers of all accessible domains and workgroups in // instead of
488 just the servers in the own domain/workgroup.
492 Support Linux-like extended attributes ([fl]getxattr, [fl]listxattr,
493 [fl]setxattr, [fl]removexattr).
497 New file conversion API for conversion from Win32 to POSIX path and vice
498 versa (cygwin_conv_path, cygwin_create_path, cygwin_conv_path_list).
502 New openat family of functions: openat, faccessat, fchmodat, fchownat,
503 fstatat, futimesat, linkat, mkdirat, mkfifoat, mknodat, readlinkat,
504 renameat, symlinkat, unlinkat.
508 Other new APIs: posix_fadvise, posix_fallocate, funopen, fopencookie,
509 open_memstream, open_wmemstream, fmemopen, fdopendir, fpurge, mkstemps,
510 eaccess, euidaccess, canonicalize_file_name, fexecve, execvpe.
517 <sect2 id="ov-new1.7-net"><title>Network related changes</title>
519 <itemizedlist mark="bullet">
522 New implementation for blocking sockets and select on sockets which is
523 supposed to allow POSIX-compatible sharing of sockets between threads
528 send/sendto/sendmsg now send data in 64K chunks to circumvent an
529 internal buffer problem in WinSock (KB 201213).
533 New send/recv option MSG_DONTWAIT.
537 IPv6 support. New APIs getaddrinfo, getnameinfo, freeaddrinfo,
538 gai_strerror, in6addr_any, in6addr_loopback. On IPv6-less systems,
539 replacement functions are available for IPv4. On systems with IPv6
540 enabled, the underlying WinSock functions are used. While I tried hard
541 to get the functionality as POSIXy as possible, keep in mind that a
542 *fully* conformant implementation of getaddrinfo and other stuff is only
543 available starting with Windows Vista/2008.
547 Resolver functions (res_init, res_query, res_search, res_querydomain,
548 res_mkquery, res_send, dn_comp, dn_expand) are now part of Cygwin.
549 Applications don't have to link against minires anymore. Actually, this
550 *is* the former libminires.a.
554 rcmd is now implemented inside of Cygwin, instead of calling the WinSock
555 function. This allows rsh(1) usage on Vista/2008 and later, which
556 dropped this function from WinSock.
560 Define multicast structures in netinet/in.h. Note that fully conformant
561 multicast support is only available beginning with Vista/2008.
565 Improve get_ifconf. Redefine struct ifreq and subsequent datastructures
566 to be able to keep more information. Support SIOCGIFINDEX,
567 SIOCGIFDSTADDR and the Cygwin specific SIOCGIFFRNDLYNAM. Support real
568 interface flags on systems supporting them.
572 Other new APIs: bindresvport, bindresvport_sa, gethostbyname2,
573 iruserok_sa, rcmd_af, rresvport_af. getifaddrs, freeifaddrs,
574 if_nametoindex, if_indextoname, if_nameindex, if_freenameindex.
578 Add /proc/net/if_inet6.
585 <sect2 id="ov-new1.7-device"><title>Device related changes</title>
587 <itemizedlist mark="bullet">
590 Reworked pipe implementation which uses overlapped IO to create more
591 reliable interruptible pipes and fifos.
595 The CYGWIN environment variable option "binmode" has been removed.
599 Improved fifo handling by using native Windows named pipes.
603 Detect when a stdin/stdout which looks like a pipe is really a tty.
604 Among other things, this allows a debugged application to recognize that
605 it is using the same tty as the debugger.
609 Support UTF-8 in console window.
613 In the console window the backspace key now emits DEL (0x7f) instead of
614 BS (0x08), Alt-Backspace emits ESC-DEL (0x1b,0x7f) instead of DEL
615 (0x7f), same as the Linux console and xterm. Control-Space now emits an
616 ASCII NUL (0x0) character.
620 Support up to 64 serial interfaces using /dev/ttyS0 - /dev/ttyS63.
624 Support up to 128 raw disk drives /dev/sda - /dev/sddx.
628 New API: cfmakeraw, get_avphys_pages, get_nprocs, get_nprocs_conf,
629 get_phys_pages, posix_openpt.
636 <sect2 id="ov-new1.7-posix"><title>Other POSIX related changes</title>
638 <itemizedlist mark="bullet">
641 A lot of character sets are supported now via a call to setlocale().
642 The setting of the environment variables $LANG, $LC_ALL or $LC_CTYPE
643 will be used. For instance, setting $LANG to "de_DE.ISO-8859-15" before
644 starting a Cygwin session will use the ISO-8859-15 character set in the
645 entire session. The default locale in the absence of one of the
646 aforementioned environment variables is "C.UTF-8".
650 The full list of supported character sets: "ASCII", "ISO-8859-x" with x
651 in 1-16, except 12, "UTF-8", Windows codepages "CPxxx", with xxx in
652 (437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866, 874, 1125, 1250,
653 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258), "KOI8-R", "KOI8-U",
654 "SJIS", "GBK", "eucJP", "eucKR", and "Big5".
660 Allow multiple concurrent read locks per thread for pthread_rwlock_t.
664 Implement pthread_kill(thread, 0) as per POSIX.
668 New API for POSIX IPC: Named semaphores: sem_open, sem_close,
669 sem_unlink. Message queues: mq_open, mq_getattr, mq_setattr, mq_notify,
670 mq_send, mq_timedsend, mq_receive, mq_timedreceive, mq_close, mq_unlink.
671 Shared memory: shm_open, shm_unlink.
675 Only declare expected functions in <strings.h>, don't include
676 <string.h> from here.
680 Support for WCONTINUED, WIFCONTINUED() added to waitpid and wait4.
684 New APIs: _Exit, confstr, insque, remque, sys_sigabbrev, posix_madvise,
685 posix_memalign, reallocf, exp10, exp10f, pow10, pow10f, lrint, lrintf,
686 rint, rintf, llrint, llrintf, llrintl, lrintl, rintl, mbsnrtowcs,
687 strcasestr, stpcpy, stpncpy, wcpcpy, wcpncpy, wcsnlen, wcsnrtombs,
688 wcsftime, wcstod, wcstof, wcstoimax, wcstok, wcstol, wcstoll, wcstoul,
689 wcstoull, wcstoumax, wcsxfrm, wcscasecmp, wcsncasecmp, fgetwc, fgetws,
690 fputwc, fputws, fwide, getwc, getwchar, putwc, putwchar, ungetwc,
691 asnprintf, dprintf, vasnprintf, vdprintf, wprintf, fwprintf, swprintf,
692 vwprintf, vfwprintf, vswprintf, wscanf, fwscanf, swscanf, vwscanf,
700 <sect2 id="ov-new1.7-sec"><title>Security related changes</title>
702 <itemizedlist mark="bullet">
705 Getting a domain user's groups is hopefully more bulletproof now.
709 Cygwin now comes with a real LSA authentication package. This must be
710 manually installed by a privileged user using the /bin/cyglsa-config
711 script. The advantages and disadvantages are noted in
712 http://cygwin.com/ml/cygwin-developers/2006-11/msg00000.html
716 Cygwin now allows storage and use of user passwords in a hidden area of
717 the registry. This is tried first when Cygwin is called by privileged
718 processes to switch the user context. This allows, for instance, ssh
719 public key sessions with full network credentials to access shares on
724 New options have been added to the mkpasswd and mkgroup tools to ease
725 use in multi-machine and multi-domain environments. The existing
726 options have a slightly changed behaviour.
733 <sect2 id="ov-new1.7-misc"><title>Miscellaneous</title>
735 <itemizedlist mark="bullet">
738 New ldd utility, similar to Linux.
742 New link libraries libdl.a, libresolv.a, librt.a.
746 Fallout from the long path names: If the current working directory is
747 longer than 260 bytes, or if the current working directory is a virtual
748 path (like /proc, /cygdrive, //server), don't call native Win32 programs
749 since they don't understand these paths.
753 On the first usage of a DOS path (C:\foo, \\foo\bar), the Cygwin DLL
754 emits a scary warning that DOS paths shouldn't be used. This warning
755 may be disabled via the new CYGWIN=nodosfilewarning setting.
759 The CYGWIN environment variable option "server" has been removed.
760 Cygwin automatically uses cygserver if it's available.
764 Allow environment of arbitrary size instead of a maximum of 32K.
768 Don't force uppercase environment when started from a non-Cygwin
769 process. Except for certain Windows and POSIX variables which are
770 always uppercased, preserve environment case. Switch back to old
771 behaviour with the new CYGWIN=upcaseenv setting.
775 Detect and report a missing DLL on process startup.
779 Add /proc/registry32 and /proc/registry64 paths to access 32 bit and 64
780 bit registry on 64 bit systems.
784 Add the ability to distinguish registry keys and registry values with
785 the same name in the same registry subtree. The key is called "foo" and
786 the value will be called "foo%val" in this case.
790 Align /proc/cpuinfo more closly to Linux content.
794 Add /proc/$PID/mounts entries and a symlink /proc/mounts pointing to
795 /proc/self/mounts as on Linux.
799 Optimized strstr and memmem implementation.
803 Remove backwards compatibility with old signal masks. (Some *very* old
804 programs which use signal masks may no longer work correctly).
808 Cygwin now exports wrapper functions for libstdc++ operators new and
809 delete, to support the toolchain in implementing full C++ standards
810 conformance when working with shared libraries.
814 Different Cygwin installations in different paths can be run in parallel
815 without knowing of each other. The path of the Cygwin DLL used in a
816 process is a key used when creating IPC objects. So different Cygwin
817 DLLs are running in different namespaces.
821 Each Cygwin DLL stores its path and installation key in the registry.
822 This allows troubleshooting of problems which could be a result of
823 having multiple concurrent Cygwin installations.