OSDN Git Service

* new-features.sgml (ov-new1.7.8): Document new C99 complex API.
[pf3gnuchains/pf3gnuchains4x.git] / winsup / doc / new-features.sgml
1 <sect1 id="ov-new1.7"><title>What's new and what changed in Cygwin 1.7</title>
2
3 <sect2 id="ov-new1.7.8"><title>What's new and what changed from 1.7.7 to 1.7.8</title>
4
5 <itemizedlist mark="bullet">
6
7 <listitem><para>
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
13 environments.  See the
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.
16 </para></listitem>
17
18 <listitem><para>
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,
24 ctanf, ctanh, ctanhf.
25 </para></listitem>
26
27 <listitem><para>
28 Drop support for Windows NT4 prior to Service Pack 4.
29 </para></listitem>
30
31 <listitem><para>
32 Drop support for Windows NT4 prior to Service Pack 4.
33 </para></listitem>
34
35 </itemizedlist>
36
37 </sect2>
38
39 <sect2 id="ov-new1.7.7"><title>What's new and what changed from 1.7.6 to 1.7.7</title>
40
41 <itemizedlist mark="bullet">
42
43 <listitem><para>
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.
49 </para></listitem>
50
51 <listitem><para>
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.
54 </para></listitem>
55
56 <listitem><para>
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.
60 </para></listitem>
61
62 </itemizedlist>
63
64 </sect2>
65
66 <sect2 id="ov-new1.7.6"><title>What's new and what changed from 1.7.5 to 1.7.6</title>
67
68 <itemizedlist mark="bullet">
69
70 <listitem><para>
71 Add new mount options "dos" and "ihash" to allow overriding Cygwin default
72 behaviour on broken filesystems not recognized by Cygwin.
73 </para></listitem>
74
75 <listitem><para>
76 Add new mount option "bind" to allow remounting parts of the POSIX file
77 hirarchy somewhere else.
78 </para></listitem>
79
80 <listitem><para>
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
85 to use Cygserver.
86 </para></listitem>
87
88 <listitem><para>
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>
92 in tcsh.
93 </para></listitem>
94
95 <listitem><para>
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)
98 allows to fetch them.
99 </para></listitem>
100
101 <listitem><para>
102 New interfaces mkostemp(3) and mkostemps(3) are added.
103 </para></listitem>
104
105 <listitem><para>
106 New virtual file /proc/filesystems.
107 </para></listitem>
108
109 <listitem><para>
110 clock_gettime(3) and clock_getres(3) accept CLOCK_MONOTONIC.
111 </para></listitem>
112
113 <listitem><para>
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.  [...]
117 </para></listitem>
118
119 </itemizedlist>
120
121 </sect2>
122
123 <sect2 id="ov-new1.7.5"><title>What's new and what changed from 1.7.3 to 1.7.5</title>
124
125 <itemizedlist mark="bullet">
126
127 <listitem><para>
128 Support for DEC Backarrow Key Mode escape sequences (ESC [ ? 67 h, ESC [ ? 67 l)
129 in Windows console.
130 </para></listitem>
131
132 </itemizedlist>
133
134 </sect2>
135
136 <sect2 id="ov-new1.7.3"><title>What's new and what changed from 1.7.2 to 1.7.3</title>
137
138 <itemizedlist mark="bullet">
139
140 <listitem><para>
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
143 as on Linux.
144 </para></listitem>
145
146 <listitem><para>
147 Modification and access timestamps of devices reflect the current time.
148 </para></listitem>
149
150 </itemizedlist>
151
152 </sect2>
153
154 <sect2 id="ov-new1.7.2"><title>What's new and what changed from 1.7.1 to 1.7.2</title>
155
156 <itemizedlist mark="bullet">
157
158 <listitem><para>Localization support has been much improved.</para>
159
160   <itemizedlist mark="bullet">
161
162   <listitem><para>
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.
167   </para></listitem>
168
169   <listitem><para>
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
172   and character sets.
173   </para></listitem>
174
175   <listitem><para>
176   Default charset for locales without explicit charset is now chosen
177   from a list of Linux-compatible charsets.
178   </para>
179   
180   <para>
181   For instance: en_US -> ISO-8859-1, ja_JP -> EUC-JP, zh_TW -> Big5.
182   </para></listitem>
183
184   <listitem><para>
185   Added support for the charsets GEORGIAN-PS, PT154, and TIS-620.
186   </para></listitem>
187
188   <listitem><para>
189   Support for the various locale modifiers to switch charsets as on Linux.
190   </para></listitem>
191
192   <listitem><para>
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.
197   </para></listitem>
198
199   <listitem><para>
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.
203   </para></listitem>
204
205   <listitem><para>
206   fnmatch(3), regcomp(3), regexec(3) calls are now multibyte-aware.
207   </para></listitem>
208
209   <listitem><para>
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.
214   </para></listitem>
215
216   <listitem><para>
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.
222   </para></listitem>
223
224   <listitem><para>
225   New strfmon(3) call.
226   </para></listitem>
227
228   </itemizedlist>
229
230 </listitem>
231
232 <listitem><para>
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.
237 </para></listitem>
238
239 <listitem><para>Enhanced Windows console support.</para>
240
241   <itemizedlist mark="bullet">
242
243   <listitem><para>
244   The console's backspace keycode can be changed using 'stty erase'.
245   </para></listitem>
246
247   <listitem><para>
248   Function keys send distinguished escape sequences compatible with rxvt.
249   Keypad keys send distinguished escape sequences, xterm-style.
250   </para></listitem>
251
252   <listitem><para>
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.
256   </para></listitem>
257
258   <listitem><para>
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.
265   </para></listitem>
266
267   <listitem><para>
268   Add escape sequences for not bold (22), not invisible (28), not
269   blinking (25) (compatible with xterm and mintty).
270   </para></listitem>
271
272   <listitem><para>
273   Support VT100 line drawing graphics mode in console window (compatible
274   with xterm and mintty).
275   </para></listitem>
276
277   </itemizedlist>
278
279 </listitem>
280
281 <listitem><para>
282 Handle native DOS paths always as if mounted with "posix=0,noacl".
283 </para></listitem>
284
285 <listitem><para>
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.
288 </para></listitem>
289
290 <listitem><para>
291 Recognize NWFS filesystem and workaround broken OS call.
292 </para></listitem>
293
294 <listitem><para>
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.
300 </para></listitem>
301
302 </itemizedlist>
303
304 </sect2>
305
306 <sect2 id="ov-new1.7-os"><title>OS related changes</title>
307
308 <itemizedlist mark="bullet">
309
310 <listitem><para>
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.
313 </para></listitem>
314
315 <listitem><para>
316 Add support for Windows 7 and Windows Server 2008 R2.
317 </para></listitem>
318
319 </itemizedlist>
320
321 </sect2>
322
323 <sect2 id="ov-new1.7-file"><title>File Access related changes</title>
324
325 <itemizedlist mark="bullet">
326
327 <listitem><para>
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.
332 </para></listitem>
333
334 <listitem><para>
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.
338 </para></listitem>
339
340 <listitem><para>
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:
348 </para>
349
350 <screen>
351 set LC_CTYPE=en_US.UTF-8
352 </screen>
353
354 </listitem>
355
356 <listitem><para>
357 PATH_MAX is now 4096.  Internally, path names can be as long as the
358 underlying OS can handle (32K).
359 </para></listitem>
360
361 <listitem><para>
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.
364 </para></listitem>
365
366 <listitem><para>
367 The CYGWIN environment variable options "ntsec" and "smbntsec" have been
368 replaced by the per-mount option "acl"/"noacl".
369 </para></listitem>
370
371 <listitem><para>
372 The CYGWIN environment variable option "ntea" has been removed without
373 substitute.
374 </para></listitem>
375
376 <listitem><para>
377 The CYGWIN environment variable option "check_case" has been removed in
378 favor of real case-sensitivity on file systems supporting it.
379 </para></listitem>
380
381 <listitem><para>
382 Creating filenames with special DOS characters '"', '*', ':', '&lt;',
383 '&gt;', '|' is supported.
384 </para></listitem>
385
386 <listitem><para>
387 Creating files with special DOS device filename components ("aux",
388 "nul", "prn") is supported.
389 </para></listitem>
390
391 <listitem><para>
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.
396 </para></listitem>
397
398 <listitem><para>
399 Due to the above changes, managed mounts have been removed.
400 </para></listitem>
401
402 <listitem><para>
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.
405 </para></listitem>
406
407 <listitem><para>
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.
411 </para></listitem>
412
413 <listitem><para>
414 rename(2) rewritten to be more POSIX conformant.
415 </para></listitem>
416
417 <listitem><para>
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.
421 </para></listitem>
422
423 <listitem><para>
424 Add st_birthtim member to struct stat.
425 </para></listitem>
426
427 <listitem><para>
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.
432 </para></listitem>
433
434 <listitem><para>
435 Implement atomic O_APPEND mode.
436 </para></listitem>
437
438 <listitem><para>
439 New open(2) flags O_DIRECTORY, O_EXEC and O_SEARCH.
440 </para></listitem>
441
442 <listitem><para>
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.
446 </para></listitem>
447
448 <listitem><para>
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
452 releases.
453 </para></listitem>
454
455 <listitem><para>
456 Handle NTFS native symlinks available since Vista/2008 as symlinks (but
457 don't create Vista/2008 symlinks due to unfortunate OS restrictions).
458 </para></listitem>
459
460 <listitem><para>
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).
464 </para></listitem>
465
466 <listitem><para>
467 Recognize MVFS and workaround problems manipulating metadata and handling
468 DOS attributes.
469 </para></listitem>
470
471 <listitem><para>
472 Recognize Netapp DataOnTap drives and fix inode number handling.
473 </para></listitem>
474
475 <listitem><para>
476 Recognize Samba version beginning with Samba 3.0.28a using the new
477 extended version information negotiated with the Samba developers.
478 </para></listitem>
479
480 <listitem><para>
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.
484 </para></listitem>
485
486 <listitem><para>
487 List servers of all accessible domains and workgroups in // instead of
488 just the servers in the own domain/workgroup.
489 </para></listitem>
490
491 <listitem><para>
492 Support Linux-like extended attributes ([fl]getxattr, [fl]listxattr,
493 [fl]setxattr, [fl]removexattr).
494 </para></listitem>
495
496 <listitem><para>
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).
499 </para></listitem>
500
501 <listitem><para>
502 New openat family of functions: openat, faccessat, fchmodat, fchownat,
503 fstatat, futimesat, linkat, mkdirat, mkfifoat, mknodat, readlinkat,
504 renameat, symlinkat, unlinkat.
505 </para></listitem>
506
507 <listitem><para>
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.
511 </para></listitem>
512
513 </itemizedlist>
514
515 </sect2>
516
517 <sect2 id="ov-new1.7-net"><title>Network related changes</title>
518
519 <itemizedlist mark="bullet">
520
521 <listitem><para>
522 New implementation for blocking sockets and select on sockets which is
523 supposed to allow POSIX-compatible sharing of sockets between threads
524 and processes.
525 </para></listitem>
526
527 <listitem><para>
528 send/sendto/sendmsg now send data in 64K chunks to circumvent an
529 internal buffer problem in WinSock (KB 201213).
530 </para></listitem>
531
532 <listitem><para>
533 New send/recv option MSG_DONTWAIT.
534 </para></listitem>
535
536 <listitem><para>
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.
544 </para></listitem>
545
546 <listitem><para>
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.
551 </para></listitem>
552
553 <listitem><para>
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.
557 </para></listitem>
558
559 <listitem><para>
560 Define multicast structures in netinet/in.h.  Note that fully conformant
561 multicast support is only available beginning with Vista/2008.
562 </para></listitem>
563
564 <listitem><para>
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.
569 </para></listitem>
570
571 <listitem><para>
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.
575 </para></listitem>
576
577 <listitem><para>
578 Add /proc/net/if_inet6.
579 </para></listitem>
580
581 </itemizedlist>
582
583 </sect2>
584
585 <sect2 id="ov-new1.7-device"><title>Device related changes</title>
586
587 <itemizedlist mark="bullet">
588
589 <listitem><para>
590 Reworked pipe implementation which uses overlapped IO to create more
591 reliable interruptible pipes and fifos.
592 </para></listitem>
593
594 <listitem><para>
595 The CYGWIN environment variable option "binmode" has been removed.
596 </para></listitem>
597
598 <listitem><para>
599 Improved fifo handling by using native Windows named pipes.
600 </para></listitem>
601
602 <listitem><para>
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.
606 </para></listitem>
607
608 <listitem><para>
609 Support UTF-8 in console window.
610 </para></listitem>
611
612 <listitem><para>
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.
617 </para></listitem>
618
619 <listitem><para>
620 Support up to 64 serial interfaces using /dev/ttyS0 - /dev/ttyS63.
621 </para></listitem>
622
623 <listitem><para>
624 Support up to 128 raw disk drives /dev/sda - /dev/sddx.
625 </para></listitem>
626
627 <listitem><para>
628 New API: cfmakeraw, get_avphys_pages, get_nprocs, get_nprocs_conf,
629 get_phys_pages, posix_openpt.
630 </para></listitem>
631
632 </itemizedlist>
633
634 </sect2>
635
636 <sect2 id="ov-new1.7-posix"><title>Other POSIX related changes</title>
637
638 <itemizedlist mark="bullet">
639
640 <listitem><para>
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".
647 </para>
648
649 <para>
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".
655 </para>
656
657 </listitem>
658
659 <listitem><para>
660 Allow multiple concurrent read locks per thread for pthread_rwlock_t.
661 </para></listitem>
662
663 <listitem><para>
664 Implement pthread_kill(thread, 0) as per POSIX.
665 </para></listitem>
666
667 <listitem><para>
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.
672 </para></listitem>
673
674 <listitem><para>
675 Only declare expected functions in &lt;strings.h&gt;, don't include
676 &lt;string.h&gt; from here.
677 </para></listitem>
678
679 <listitem><para>
680 Support for WCONTINUED, WIFCONTINUED() added to waitpid and wait4.
681 </para></listitem>
682
683 <listitem><para>
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,
693 vfwscanf, vswscanf.
694 </para></listitem>
695
696 </itemizedlist>
697
698 </sect2>
699
700 <sect2 id="ov-new1.7-sec"><title>Security related changes</title>
701
702 <itemizedlist mark="bullet">
703
704 <listitem><para>
705 Getting a domain user's groups is hopefully more bulletproof now.
706 </para></listitem>
707
708 <listitem><para>
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
713 </para></listitem>
714
715 <listitem><para>
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
720 other machines.
721 </para></listitem>
722
723 <listitem><para>
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.
727 </para></listitem>
728
729 </itemizedlist>
730
731 </sect2>
732
733 <sect2 id="ov-new1.7-misc"><title>Miscellaneous</title>
734
735 <itemizedlist mark="bullet">
736
737 <listitem><para>
738 New ldd utility, similar to Linux.
739 </para></listitem>
740
741 <listitem><para>
742 New link libraries libdl.a, libresolv.a, librt.a.
743 </para></listitem>
744
745 <listitem><para>
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.
750 </para></listitem>
751
752 <listitem><para>
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.
756 </para></listitem>
757
758 <listitem><para>
759 The CYGWIN environment variable option "server" has been removed.
760 Cygwin automatically uses cygserver if it's available.
761 </para></listitem>
762
763 <listitem><para>
764 Allow environment of arbitrary size instead of a maximum of 32K.
765 </para></listitem>
766
767 <listitem><para>
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.
772 </para></listitem>
773
774 <listitem><para>
775 Detect and report a missing DLL on process startup.
776 </para></listitem>
777
778 <listitem><para>
779 Add /proc/registry32 and /proc/registry64 paths to access 32 bit and 64
780 bit registry on 64 bit systems.
781 </para></listitem>
782
783 <listitem><para>
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.
787 </para></listitem>
788
789 <listitem><para>
790 Align /proc/cpuinfo more closly to Linux content.
791 </para></listitem>
792
793 <listitem><para>
794 Add /proc/$PID/mounts entries and a symlink /proc/mounts pointing to
795 /proc/self/mounts as on Linux.
796 </para></listitem>
797
798 <listitem><para>
799 Optimized strstr and memmem implementation.
800 </para></listitem>
801
802 <listitem><para>
803 Remove backwards compatibility with old signal masks.  (Some *very* old
804 programs which use signal masks may no longer work correctly).
805 </para></listitem>
806
807 <listitem><para>
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.
811 </para></listitem>
812
813 <listitem><para>
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.
818 </para></listitem>
819
820 <listitem><para>
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.
824 </para></listitem>
825
826 </itemizedlist>
827
828 </sect2>
829
830 </sect1>