OSDN Git Service

44c01a6b9c685d67f99162c765f6e254b842a46b
[pf3gnuchains/sourceware.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 Drop support for Windows NT4 prior to Service Pack 4.
9 </para></listitem>
10
11 <listitem><para>
12 Reinstantiate Cygwin's ability to delete an empty directory which is the
13 current working directory of the same or another process.  Same for any
14 other empty directory which has been opened by the same or another process.
15 </para></listitem>
16
17 <listitem><para>
18 Cygwin now ships the C standard library fenv.h header file, and implements the
19 related APIs (including GNU/glibc extensions): feclearexcept, fedisableexcept,
20 feenableexcept, fegetenv, fegetexcept, fegetexceptflag, fegetprec, fegetround,
21 feholdexcept, feraiseexcept, fesetenv, fesetexceptflag, fesetprec, fesetround,
22 fetestexcept, feupdateenv, and predefines both default and no-mask FP
23 environments.  See the
24 <ulink url="http://www.gnu.org/software/libc/manual/html_node/Arithmetic.html">
25 GNU C Library manual</ulink> for full details of this functionality.
26 </para></listitem>
27
28 <listitem><para>
29 Support for the C99 complex functions, except for the "long double"
30 implementations.  New APIs: cacos, cacosf, cacosh, cacoshf, carg, cargf, casin,
31 casinf, casinh, casinhf, catan, catanf, catanh, catanhf, ccos, ccosf, ccosh,
32 ccoshf, cexp, cexpf, cimag, cimagf, clog, clogf, conj, conjf, cpow, cpowf,
33 cproj, cprojf, creal, crealf, csin, csinf, csinh, csinhf, csqrt, csqrtf, ctan,
34 ctanf, ctanh, ctanhf.
35 </para></listitem>
36
37 <listitem><para>
38 Fix the width of "CJK Ambiguous Width" characters to 1 for singlebyte charsets
39 and 2 for East Asian multibyte charsets. (For UTF-8, it remains dependent on
40 the specified language, and the "@cjknarrow" locale modifier can still be used
41 to force width 1.)
42 </para></listitem>
43
44 <listitem><para>
45 The strerror_r interface now has two flavors; if _GNU_SOURCE is
46 defined, it retains the previous behavior of returning char *
47 (but the result is now guaranteed to be NUL-terminated); otherwise
48 it now obeys POSIX semantics of returning int.
49 </para></listitem>
50
51 <listitem><para>
52 /proc/sys now allows unfiltered access to the native NT namespace.  Access
53 restrictions still apply.  Direct device access via /proc/sys is not yet
54 supported.  File system access via block devices works.  For instance
55 (note the trailing backslash!)
56 <screen>
57 bash$ cd /proc/sys/Device/HarddiskVolumeShadowCopy1/
58 </screen>
59 </para></listitem>
60
61 <listitem><para>
62 Other new APIs: llround, llroundf, madvise, pthread_yield.
63 Export program_invocation_name, program_invocation_short_name.
64 Support TIOCGPGRP, TIOCSPGRP ioctls.
65 </para></listitem>
66
67 </itemizedlist>
68
69 </sect2>
70
71 <sect2 id="ov-new1.7.7"><title>What's new and what changed from 1.7.6 to 1.7.7</title>
72
73 <itemizedlist mark="bullet">
74
75 <listitem><para>
76 Partially revert the 1.7.6 change to set the Win32 current working directory
77 (CWD) always to an invalid directory, since it breaks backward compatibility
78 too much.  The Cygwin CWD and the Win32 CWD are now kept in sync again, unless
79 the Cygwin CWD is not usable as Win32 CWD.  See the reworked
80 <xref linkend="pathnames-win32-api"></xref> for details.
81 </para></listitem>
82
83 <listitem><para>
84 Make sure to follow the Microsoft security advisory concerning DLL hijacking.
85 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.
86 </para></listitem>
87
88 <listitem><para>
89 Allow to link against -lbinmode instead of /lib/binmode.o.  Same for
90 -ltextmode, -ltextreadmode and -lautomode. 
91 See <xref linkend="textbin-devel"></xref> for details.
92 </para></listitem>
93
94 </itemizedlist>
95
96 </sect2>
97
98 <sect2 id="ov-new1.7.6"><title>What's new and what changed from 1.7.5 to 1.7.6</title>
99
100 <itemizedlist mark="bullet">
101
102 <listitem><para>
103 Add new mount options "dos" and "ihash" to allow overriding Cygwin default
104 behaviour on broken filesystems not recognized by Cygwin.
105 </para></listitem>
106
107 <listitem><para>
108 Add new mount option "bind" to allow remounting parts of the POSIX file
109 hirarchy somewhere else.
110 </para></listitem>
111
112 <listitem><para>
113 Ttys and ptys are handled as securable objects using file-like permissions
114 and owner/group information.  <command>chmod</command> and
115 <command>chown</command> now work on ttys/ptys.  A new mechanism is used
116 to propagate pty handles safely to other processes, which does not require
117 to use Cygserver.
118 </para></listitem>
119
120 <listitem><para>
121 Pass on coresize settings made with setrlimit(2).  This allows shells to
122 disable creating stackdump files in child processes via
123 <screen>ulimit -c 0</screen> in bash or <screen>limit coredumpsize 0</screen>
124 in tcsh.
125 </para></listitem>
126
127 <listitem><para>
128 Locale categories contain all localization strings additionally as wide-char
129 strings.  locale(1) prints these values just as on Linux.  nl_langinfo(3)
130 allows to fetch them.
131 </para></listitem>
132
133 <listitem><para>
134 New interfaces mkostemp(3) and mkostemps(3) are added.
135 </para></listitem>
136
137 <listitem><para>
138 New virtual file /proc/filesystems.
139 </para></listitem>
140
141 <listitem><para>
142 clock_gettime(3) and clock_getres(3) accept CLOCK_MONOTONIC.
143 </para></listitem>
144
145 <listitem><para>
146 DEPRECATED with 1.7.7: Cygwin handles the current working directory entirely
147 on its own.  The Win32 current working directory is set to an invalid path to
148 be out of the way.  [...]
149 </para></listitem>
150
151 </itemizedlist>
152
153 </sect2>
154
155 <sect2 id="ov-new1.7.5"><title>What's new and what changed from 1.7.3 to 1.7.5</title>
156
157 <itemizedlist mark="bullet">
158
159 <listitem><para>
160 Support for DEC Backarrow Key Mode escape sequences (ESC [ ? 67 h, ESC [ ? 67 l)
161 in Windows console.
162 </para></listitem>
163
164 </itemizedlist>
165
166 </sect2>
167
168 <sect2 id="ov-new1.7.3"><title>What's new and what changed from 1.7.2 to 1.7.3</title>
169
170 <itemizedlist mark="bullet">
171
172 <listitem><para>
173 Support for GB2312/EUC-CN.  These charsets are implemented as aliases to GBK.
174 GB2312 is now the default charset name for the locales zh_CN and zh_SG, just
175 as on Linux.
176 </para></listitem>
177
178 <listitem><para>
179 Modification and access timestamps of devices reflect the current time.
180 </para></listitem>
181
182 </itemizedlist>
183
184 </sect2>
185
186 <sect2 id="ov-new1.7.2"><title>What's new and what changed from 1.7.1 to 1.7.2</title>
187
188 <itemizedlist mark="bullet">
189
190 <listitem><para>Localization support has been much improved.</para>
191
192   <itemizedlist mark="bullet">
193
194   <listitem><para>
195   Cygwin now handles locales using the underlying Windows locale
196   support.  The locale must exist in Windows to be recognized.
197   Locale aliases from the file /usr/share/locale/locale.alias are also
198   allowed, as long as their replacement is supported by the underlying Windows.
199   </para></listitem>
200
201   <listitem><para>
202   New tool "locale" to fetch locale information and default locales based on
203   the Windows default settings as well as lists of all supported locales
204   and character sets.
205   </para></listitem>
206
207   <listitem><para>
208   Default charset for locales without explicit charset is now chosen
209   from a list of Linux-compatible charsets.
210   </para>
211   
212   <para>
213   For instance: en_US -> ISO-8859-1, ja_JP -> EUC-JP, zh_TW -> Big5.
214   </para></listitem>
215
216   <listitem><para>
217   Added support for the charsets GEORGIAN-PS, PT154, and TIS-620.
218   </para></listitem>
219
220   <listitem><para>
221   Support for the various locale modifiers to switch charsets as on Linux.
222   </para></listitem>
223
224   <listitem><para>
225   Default charset in the "C" or "POSIX" locale has been changed back
226   from UTF-8 to ASCII, to avoid problems with applications
227   expecting a singlebyte charset in the "C"/"POSIX" locale.  Still use
228   UTF-8 internally for filename conversion in this case.
229   </para></listitem>
230
231   <listitem><para>
232   LC_COLLATE, LC_MONETARY, LC_NUMERIC, and LC_TIME localization is
233   enabled via Windows locale support.  LC_MESSAGES is enabled via a big
234   table with localized strings.
235   </para></listitem>
236
237   <listitem><para>
238   fnmatch(3), regcomp(3), regexec(3) calls are now multibyte-aware.
239   </para></listitem>
240
241   <listitem><para>
242   printf(3), wprintf(3) families of functions now handle the grouping
243   flag, the apostrophe <literal>'</literal>, per POSIX-1.2008.  The
244   integer portion of the result of a decimal conversion (%i, %d, %u, %f,
245   %F, %g, %G) will be formatted with thousands' grouping characters.
246   </para></listitem>
247
248   <listitem><para>
249   strftime(3), wcsftime(3), and strptime(3) now handle the E and O format
250   modifiers to print/scan alternative date and time representations or to
251   use alternative digits in locales which support this.  Additionally these
252   functions now also support the padding modifiers '0' and '+', as well as
253   a field width per POSIX-1.2008.
254   </para></listitem>
255
256   <listitem><para>
257   New strfmon(3) call.
258   </para></listitem>
259
260   </itemizedlist>
261
262 </listitem>
263
264 <listitem><para>
265 Support open(2) flags O_CLOEXEC and O_TTY_INIT flags.  Support fcntl
266 flag F_DUPFD_CLOEXEC.  Support socket flags SOCK_CLOEXEC and SOCK_NONBLOCK.
267 Add new Linux-compatible API calls accept4(2), dup3(2), and pipe2(2).
268 Support the signal SIGPWR.
269 </para></listitem>
270
271 <listitem><para>Enhanced Windows console support.</para>
272
273   <itemizedlist mark="bullet">
274
275   <listitem><para>
276   The console's backspace keycode can be changed using 'stty erase'.
277   </para></listitem>
278
279   <listitem><para>
280   Function keys send distinguished escape sequences compatible with rxvt.
281   Keypad keys send distinguished escape sequences, xterm-style.
282   </para></listitem>
283
284   <listitem><para>
285   Support of combining Alt and AltGr modifiers in console window
286   (compatible with xterm and mintty), so that e.g. Alt-@ sends ESC @
287   also on keyboards where @ is mapped to an AltGr combination.
288   </para></listitem>
289
290   <listitem><para>
291   Report mouse wheel scroll events in mouse reporting mode 1000 (note:
292   this doesn't seem to work on all systems, assumedly due to driver
293   interworking issues).
294   Add mouse reporting mode 1002 to report mouse drag movement.
295   Add mouse reporting mode 1003 to report any mouse movement.
296   Add focus event reporting (mode 1004), compatible with xterm and mintty.
297   </para></listitem>
298
299   <listitem><para>
300   Add escape sequences for not bold (22), not invisible (28), not
301   blinking (25) (compatible with xterm and mintty).
302   </para></listitem>
303
304   <listitem><para>
305   Support VT100 line drawing graphics mode in console window (compatible
306   with xterm and mintty).
307   </para></listitem>
308
309   </itemizedlist>
310
311 </listitem>
312
313 <listitem><para>
314 Handle native DOS paths always as if mounted with "posix=0,noacl".
315 </para></listitem>
316
317 <listitem><para>
318 Handle UNC paths starting with slashes identical to /cygdrive paths.
319 In other words, use the /cygdrive mount flags for these paths as well.
320 </para></listitem>
321
322 <listitem><para>
323 Recognize NWFS filesystem and workaround broken OS call.
324 </para></listitem>
325
326 <listitem><para>
327 New support for eXtensible Data Record (XDR) encoding and decoding,
328 as defined by RFCs 1014, 1832, and 4506.  The XDR protocol and
329 functions are useful for cross-platfrom data exchange, and are
330 commonly used as the core data interchange format for Remote
331 Procedure Call (RPC) and NFS.
332 </para></listitem>
333
334 </itemizedlist>
335
336 </sect2>
337
338 <sect2 id="ov-new1.7-os"><title>OS related changes</title>
339
340 <itemizedlist mark="bullet">
341
342 <listitem><para>
343 Windows 95, 98 and Me are not supported anymore.  The new Cygwin 1.7 DLL
344 will not run on any of these systems.
345 </para></listitem>
346
347 <listitem><para>
348 Add support for Windows 7 and Windows Server 2008 R2.
349 </para></listitem>
350
351 </itemizedlist>
352
353 </sect2>
354
355 <sect2 id="ov-new1.7-file"><title>File Access related changes</title>
356
357 <itemizedlist mark="bullet">
358
359 <listitem><para>
360 Mount points are no longer stored in the registry.  Use /etc/fstab and
361 /etc/fstab.d/$USER instead.  Mount points created with mount(1) are only
362 local to the current session and disappear when the last Cygwin process
363 in the session exits.
364 </para></listitem>
365
366 <listitem><para>
367 Cygwin creates the mount points for /, /usr/bin, and /usr/lib
368 automatically from it's own position on the disk.  They don't have to be
369 specified in /etc/fstab.
370 </para></listitem>
371
372 <listitem><para>
373 If a filename cannot be represented in the current character set, the
374 character will be converted to a sequence Ctrl-X + UTF-8 representation
375 of the character.  This allows to access all files, even those not
376 having a valid representation of their filename in the current character
377 set.  To always have a valid string, use the UTF-8 charset by
378 setting the environment variable $LANG, $LC_ALL, or $LC_CTYPE to a valid
379 POSIX value, for instance in Cygwin.bat like this:
380 </para>
381
382 <screen>
383 set LC_CTYPE=en_US.UTF-8
384 </screen>
385
386 </listitem>
387
388 <listitem><para>
389 PATH_MAX is now 4096.  Internally, path names can be as long as the
390 underlying OS can handle (32K).
391 </para></listitem>
392
393 <listitem><para>
394 struct dirent now supports d_type, filled out with DT_REG or DT_DIR.
395 All other file types return as DT_UNKNOWN for performance reasons.
396 </para></listitem>
397
398 <listitem><para>
399 The CYGWIN environment variable options "ntsec" and "smbntsec" have been
400 replaced by the per-mount option "acl"/"noacl".
401 </para></listitem>
402
403 <listitem><para>
404 The CYGWIN environment variable option "ntea" has been removed without
405 substitute.
406 </para></listitem>
407
408 <listitem><para>
409 The CYGWIN environment variable option "check_case" has been removed in
410 favor of real case-sensitivity on file systems supporting it.
411 </para></listitem>
412
413 <listitem><para>
414 Creating filenames with special DOS characters '"', '*', ':', '&lt;',
415 '&gt;', '|' is supported.
416 </para></listitem>
417
418 <listitem><para>
419 Creating files with special DOS device filename components ("aux",
420 "nul", "prn") is supported.
421 </para></listitem>
422
423 <listitem><para>
424 File names are case sensitive if the OS and the underlying file system
425 supports it.  Works on NTFS and NFS.  Does not work on FAT and Samba
426 shares.  Requires to change a registry key (see the User's Guide).  Can
427 be switched off on a per-mount basis.
428 </para></listitem>
429
430 <listitem><para>
431 Due to the above changes, managed mounts have been removed.
432 </para></listitem>
433
434 <listitem><para>
435 Incoming DOS paths are always handled case-insensitive and get no POSIX
436 permission, as if they are mounted with noacl,posix=0 mount flags.
437 </para></listitem>
438
439 <listitem><para>
440 unlink(2) and rmdir(2) try very hard to remove files/directories even if
441 they are currently accessed or locked.  This is done by utilizing the
442 hidden recycle bin directories and marking the files for deletion.
443 </para></listitem>
444
445 <listitem><para>
446 rename(2) rewritten to be more POSIX conformant.
447 </para></listitem>
448
449 <listitem><para>
450 access(2) now performs checks using the real user ID, as required by
451 POSIX; the old behavior of querying based on effective user ID is
452 available through the new faccessat(2) and euidaccess(2) APIs.
453 </para></listitem>
454
455 <listitem><para>
456 Add st_birthtim member to struct stat.
457 </para></listitem>
458
459 <listitem><para>
460 File locking is now advisory, not mandatory anymore.  The fcntl(2) and
461 the new lockf(2) APIs create and maintain locks with POSIX semantics,
462 the flock(2) API creates and maintains locks with BSD semantics.  POSIX
463 and BSD locks are independent of each other.
464 </para></listitem>
465
466 <listitem><para>
467 Implement atomic O_APPEND mode.
468 </para></listitem>
469
470 <listitem><para>
471 New open(2) flags O_DIRECTORY, O_EXEC and O_SEARCH.
472 </para></listitem>
473
474 <listitem><para>
475 Make the "plain file with SYSTEM attribute set" style symlink default
476 again when creating symlinks.  Only create Windows shortcut style
477 symlinks if CYGWIN=winsymlinks is set in the environment.
478 </para></listitem>
479
480 <listitem><para>
481 Symlinks now use UTF-16 encoding for the target filename for better
482 internationalization support.  Cygwin 1.7 can read all old style
483 symlinks, but the new style is not compatible with older Cygwin
484 releases.
485 </para></listitem>
486
487 <listitem><para>
488 Handle NTFS native symlinks available since Vista/2008 as symlinks (but
489 don't create Vista/2008 symlinks due to unfortunate OS restrictions).
490 </para></listitem>
491
492 <listitem><para>
493 Recognize NFS shares and handle them using native mechanisms.  Recognize
494 and create real symlinks on NFS shares.  Get correct stat(2) information
495 and set real mode bits on open(2), mkdir(2) and chmod(2).
496 </para></listitem>
497
498 <listitem><para>
499 Recognize MVFS and workaround problems manipulating metadata and handling
500 DOS attributes.
501 </para></listitem>
502
503 <listitem><para>
504 Recognize Netapp DataOnTap drives and fix inode number handling.
505 </para></listitem>
506
507 <listitem><para>
508 Recognize Samba version beginning with Samba 3.0.28a using the new
509 extended version information negotiated with the Samba developers.
510 </para></listitem>
511
512 <listitem><para>
513 Stop faking hardlinks by copying the file on filesystems which don't
514 support hardlinks natively (FAT, FAT32, etc.).  Just return an error
515 instead, just like Linux.
516 </para></listitem>
517
518 <listitem><para>
519 List servers of all accessible domains and workgroups in // instead of
520 just the servers in the own domain/workgroup.
521 </para></listitem>
522
523 <listitem><para>
524 Support Linux-like extended attributes ([fl]getxattr, [fl]listxattr,
525 [fl]setxattr, [fl]removexattr).
526 </para></listitem>
527
528 <listitem><para>
529 New file conversion API for conversion from Win32 to POSIX path and vice
530 versa (cygwin_conv_path, cygwin_create_path, cygwin_conv_path_list).
531 </para></listitem>
532
533 <listitem><para>
534 New openat family of functions: openat, faccessat, fchmodat, fchownat,
535 fstatat, futimesat, linkat, mkdirat, mkfifoat, mknodat, readlinkat,
536 renameat, symlinkat, unlinkat.
537 </para></listitem>
538
539 <listitem><para>
540 Other new APIs: posix_fadvise, posix_fallocate, funopen, fopencookie,
541 open_memstream, open_wmemstream, fmemopen, fdopendir, fpurge, mkstemps,
542 eaccess, euidaccess, canonicalize_file_name, fexecve, execvpe.
543 </para></listitem>
544
545 </itemizedlist>
546
547 </sect2>
548
549 <sect2 id="ov-new1.7-net"><title>Network related changes</title>
550
551 <itemizedlist mark="bullet">
552
553 <listitem><para>
554 New implementation for blocking sockets and select on sockets which is
555 supposed to allow POSIX-compatible sharing of sockets between threads
556 and processes.
557 </para></listitem>
558
559 <listitem><para>
560 send/sendto/sendmsg now send data in 64K chunks to circumvent an
561 internal buffer problem in WinSock (KB 201213).
562 </para></listitem>
563
564 <listitem><para>
565 New send/recv option MSG_DONTWAIT.
566 </para></listitem>
567
568 <listitem><para>
569 IPv6 support.  New APIs getaddrinfo, getnameinfo, freeaddrinfo,
570 gai_strerror, in6addr_any, in6addr_loopback.  On IPv6-less systems,
571 replacement functions are available for IPv4.  On systems with IPv6
572 enabled, the underlying WinSock functions are used.  While I tried hard
573 to get the functionality as POSIXy as possible, keep in mind that a
574 *fully* conformant implementation of getaddrinfo and other stuff is only
575 available starting with Windows Vista/2008.
576 </para></listitem>
577
578 <listitem><para>
579 Resolver functions (res_init, res_query, res_search, res_querydomain,
580 res_mkquery, res_send, dn_comp, dn_expand) are now part of Cygwin.
581 Applications don't have to link against minires anymore.  Actually, this
582 *is* the former libminires.a.
583 </para></listitem>
584
585 <listitem><para>
586 rcmd is now implemented inside of Cygwin, instead of calling the WinSock
587 function.  This allows rsh(1) usage on Vista/2008 and later, which
588 dropped this function from WinSock.
589 </para></listitem>
590
591 <listitem><para>
592 Define multicast structures in netinet/in.h.  Note that fully conformant
593 multicast support is only available beginning with Vista/2008.
594 </para></listitem>
595
596 <listitem><para>
597 Improve get_ifconf.  Redefine struct ifreq and subsequent datastructures
598 to be able to keep more information.  Support SIOCGIFINDEX,
599 SIOCGIFDSTADDR and the Cygwin specific SIOCGIFFRNDLYNAM.  Support real
600 interface flags on systems supporting them.
601 </para></listitem>
602
603 <listitem><para>
604 Other new APIs: bindresvport, bindresvport_sa, gethostbyname2,
605 iruserok_sa, rcmd_af, rresvport_af.  getifaddrs, freeifaddrs,
606 if_nametoindex, if_indextoname, if_nameindex, if_freenameindex.
607 </para></listitem>
608
609 <listitem><para>
610 Add /proc/net/if_inet6.
611 </para></listitem>
612
613 </itemizedlist>
614
615 </sect2>
616
617 <sect2 id="ov-new1.7-device"><title>Device related changes</title>
618
619 <itemizedlist mark="bullet">
620
621 <listitem><para>
622 Reworked pipe implementation which uses overlapped IO to create more
623 reliable interruptible pipes and fifos.
624 </para></listitem>
625
626 <listitem><para>
627 The CYGWIN environment variable option "binmode" has been removed.
628 </para></listitem>
629
630 <listitem><para>
631 Improved fifo handling by using native Windows named pipes.
632 </para></listitem>
633
634 <listitem><para>
635 Detect when a stdin/stdout which looks like a pipe is really a tty.
636 Among other things, this allows a debugged application to recognize that
637 it is using the same tty as the debugger.
638 </para></listitem>
639
640 <listitem><para>
641 Support UTF-8 in console window.
642 </para></listitem>
643
644 <listitem><para>
645 In the console window the backspace key now emits DEL (0x7f) instead of
646 BS (0x08), Alt-Backspace emits ESC-DEL (0x1b,0x7f) instead of DEL
647 (0x7f), same as the Linux console and xterm.  Control-Space now emits an
648 ASCII NUL (0x0) character.
649 </para></listitem>
650
651 <listitem><para>
652 Support up to 64 serial interfaces using /dev/ttyS0 - /dev/ttyS63.
653 </para></listitem>
654
655 <listitem><para>
656 Support up to 128 raw disk drives /dev/sda - /dev/sddx.
657 </para></listitem>
658
659 <listitem><para>
660 New API: cfmakeraw, get_avphys_pages, get_nprocs, get_nprocs_conf,
661 get_phys_pages, posix_openpt.
662 </para></listitem>
663
664 </itemizedlist>
665
666 </sect2>
667
668 <sect2 id="ov-new1.7-posix"><title>Other POSIX related changes</title>
669
670 <itemizedlist mark="bullet">
671
672 <listitem><para>
673 A lot of character sets are supported now via a call to setlocale().
674 The setting of the environment variables $LANG, $LC_ALL or $LC_CTYPE
675 will be used.  For instance, setting $LANG to "de_DE.ISO-8859-15" before
676 starting a Cygwin session will use the ISO-8859-15 character set in the
677 entire session.  The default locale in the absence of one of the
678 aforementioned environment variables is "C.UTF-8".
679 </para>
680
681 <para>
682 The full list of supported character sets: "ASCII", "ISO-8859-x" with x
683 in 1-16, except 12, "UTF-8", Windows codepages "CPxxx", with xxx in
684 (437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866, 874, 1125, 1250,
685 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258), "KOI8-R", "KOI8-U",
686 "SJIS", "GBK", "eucJP", "eucKR", and "Big5".
687 </para>
688
689 </listitem>
690
691 <listitem><para>
692 Allow multiple concurrent read locks per thread for pthread_rwlock_t.
693 </para></listitem>
694
695 <listitem><para>
696 Implement pthread_kill(thread, 0) as per POSIX.
697 </para></listitem>
698
699 <listitem><para>
700 New API for POSIX IPC: Named semaphores: sem_open, sem_close,
701 sem_unlink.  Message queues: mq_open, mq_getattr, mq_setattr, mq_notify,
702 mq_send, mq_timedsend, mq_receive, mq_timedreceive, mq_close, mq_unlink.
703 Shared memory: shm_open, shm_unlink.
704 </para></listitem>
705
706 <listitem><para>
707 Only declare expected functions in &lt;strings.h&gt;, don't include
708 &lt;string.h&gt; from here.
709 </para></listitem>
710
711 <listitem><para>
712 Support for WCONTINUED, WIFCONTINUED() added to waitpid and wait4.
713 </para></listitem>
714
715 <listitem><para>
716 New APIs: _Exit, confstr, insque, remque, sys_sigabbrev, posix_madvise,
717 posix_memalign, reallocf, exp10, exp10f, pow10, pow10f, lrint, lrintf,
718 rint, rintf, llrint, llrintf, llrintl, lrintl, rintl, mbsnrtowcs,
719 strcasestr, stpcpy, stpncpy, wcpcpy, wcpncpy, wcsnlen, wcsnrtombs,
720 wcsftime, wcstod, wcstof, wcstoimax, wcstok, wcstol, wcstoll, wcstoul,
721 wcstoull, wcstoumax, wcsxfrm, wcscasecmp, wcsncasecmp, fgetwc, fgetws,
722 fputwc, fputws, fwide, getwc, getwchar, putwc, putwchar, ungetwc,
723 asnprintf, dprintf, vasnprintf, vdprintf, wprintf, fwprintf, swprintf,
724 vwprintf, vfwprintf, vswprintf, wscanf, fwscanf, swscanf, vwscanf,
725 vfwscanf, vswscanf.
726 </para></listitem>
727
728 </itemizedlist>
729
730 </sect2>
731
732 <sect2 id="ov-new1.7-sec"><title>Security related changes</title>
733
734 <itemizedlist mark="bullet">
735
736 <listitem><para>
737 Getting a domain user's groups is hopefully more bulletproof now.
738 </para></listitem>
739
740 <listitem><para>
741 Cygwin now comes with a real LSA authentication package.  This must be
742 manually installed by a privileged user using the /bin/cyglsa-config
743 script.  The advantages and disadvantages are noted in
744 http://cygwin.com/ml/cygwin-developers/2006-11/msg00000.html
745 </para></listitem>
746
747 <listitem><para>
748 Cygwin now allows storage and use of user passwords in a hidden area of
749 the registry.  This is tried first when Cygwin is called by privileged
750 processes to switch the user context.  This allows, for instance, ssh
751 public key sessions with full network credentials to access shares on
752 other machines.
753 </para></listitem>
754
755 <listitem><para>
756 New options have been added to the mkpasswd and mkgroup tools to ease
757 use in multi-machine and multi-domain environments.  The existing
758 options have a slightly changed behaviour.
759 </para></listitem>
760
761 </itemizedlist>
762
763 </sect2>
764
765 <sect2 id="ov-new1.7-misc"><title>Miscellaneous</title>
766
767 <itemizedlist mark="bullet">
768
769 <listitem><para>
770 New ldd utility, similar to Linux.
771 </para></listitem>
772
773 <listitem><para>
774 New link libraries libdl.a, libresolv.a, librt.a.
775 </para></listitem>
776
777 <listitem><para>
778 Fallout from the long path names: If the current working directory is
779 longer than 260 bytes, or if the current working directory is a virtual
780 path (like /proc, /cygdrive, //server), don't call native Win32 programs
781 since they don't understand these paths.
782 </para></listitem>
783
784 <listitem><para>
785 On the first usage of a DOS path (C:\foo, \\foo\bar), the Cygwin DLL
786 emits a scary warning that DOS paths shouldn't be used.  This warning
787 may be disabled via the new CYGWIN=nodosfilewarning setting.
788 </para></listitem>
789
790 <listitem><para>
791 The CYGWIN environment variable option "server" has been removed.
792 Cygwin automatically uses cygserver if it's available.
793 </para></listitem>
794
795 <listitem><para>
796 Allow environment of arbitrary size instead of a maximum of 32K.
797 </para></listitem>
798
799 <listitem><para>
800 Don't force uppercase environment when started from a non-Cygwin
801 process.  Except for certain Windows and POSIX variables which are
802 always uppercased, preserve environment case.  Switch back to old
803 behaviour with the new CYGWIN=upcaseenv setting.
804 </para></listitem>
805
806 <listitem><para>
807 Detect and report a missing DLL on process startup.
808 </para></listitem>
809
810 <listitem><para>
811 Add /proc/registry32 and /proc/registry64 paths to access 32 bit and 64
812 bit registry on 64 bit systems.
813 </para></listitem>
814
815 <listitem><para>
816 Add the ability to distinguish registry keys and registry values with
817 the same name in the same registry subtree.  The key is called "foo" and
818 the value will be called "foo%val" in this case.
819 </para></listitem>
820
821 <listitem><para>
822 Align /proc/cpuinfo more closly to Linux content.
823 </para></listitem>
824
825 <listitem><para>
826 Add /proc/$PID/mounts entries and a symlink /proc/mounts pointing to
827 /proc/self/mounts as on Linux.
828 </para></listitem>
829
830 <listitem><para>
831 Optimized strstr and memmem implementation.
832 </para></listitem>
833
834 <listitem><para>
835 Remove backwards compatibility with old signal masks.  (Some *very* old
836 programs which use signal masks may no longer work correctly).
837 </para></listitem>
838
839 <listitem><para>
840 Cygwin now exports wrapper functions for libstdc++ operators new and
841 delete, to support the toolchain in implementing full C++ standards
842 conformance when working with shared libraries.
843 </para></listitem>
844
845 <listitem><para>
846 Different Cygwin installations in different paths can be run in parallel
847 without knowing of each other.  The path of the Cygwin DLL used in a
848 process is a key used when creating IPC objects.  So different Cygwin
849 DLLs are running in different namespaces.
850 </para></listitem>
851
852 <listitem><para>
853 Each Cygwin DLL stores its path and installation key in the registry.
854 This allows troubleshooting of problems which could be a result of
855 having multiple concurrent Cygwin installations.
856 </para></listitem>
857
858 </itemizedlist>
859
860 </sect2>
861
862 </sect1>