Cygwin User’s Guide 11 / 115
1.7.9 What’s new and what changed in 2.5
• Full set of POSIX.1e ACL API functions now implemented. New APIs: acl_add_perm, acl_calc_mask, acl_clear_perms,
acl_copy_entry, acl_copy_ext, acl_copy_int, acl_create_entry, acl_delete_def_file, acl_delete_entry, acl_delete_perm, acl_dup,
acl_free, acl_from_text, acl_get_entry, acl_get_fd, acl_get_file, acl_get_permset, acl_get_qualifier, acl_get_tag_type, acl_init,
acl_set_fd, acl_set_file, acl_set_permset, acl_set_qualifier, acl_set_tag_type, acl_size, acl_to_text, acl_valid.
• Most libacl extensions now implemented, too: New APIs: acl_check, acl_cmp, acl_entries, acl_equiv_mode, acl_error,
acl_extended_fd, acl_extended_file, acl_extended_file_nofollow, acl_from_mode, acl_get_perm, acl_to_any_text.
• Including <sys/acl.h> now *only* includes the POSIX ACL API. To include the old Solaris API, include <cygwin/acl.h>.
• First implementation of pthread_barrier/pthread_barrierattr functions. New APIs: pthread_barrierattr_init, pthread_barrierattr_setpshared,
pthread_barrierattr_getpshared, pthread_barrierattr_destroy, pthread_barrier_init, pthread_barrier_destroy, pthread_barrier_wait.
• Enabled console reports requested by escape sequences: Requesting primary and secondary device attributes, requesting cursor
position report; see https://cygwin.com/ml/cygwin-patches/2012-q3/msg00019.html
• New APIs: clog10, clog10f, nexttoward, nexttowardf, nexttowardl.
• Add missing long double functions. New APIs: acoshl, acosl, asinhl, asinl, atan2l, atanhl, atanl, cacoshl, cacosl, cargl, casinhl,
casinl, catanhl, catanl, ccoshl, ccosl, ceill, cexpl, clog10l, clogl, conjl, copysignl, coshl, cosl, cpowl, cprojl, csinhl, csinl, csqrtl,
ctanhl, ctanl, dreml, erfcl, erfl, exp10l, exp2l, expl, expm1l, fabsl, fdiml, floorl, fmal, fmaxl, fminl, fmodl, frexpl, ilogbl, isinfl,
isnanl, ldexpl, lgammal, lgammal_r, llroundl, log10l, log1pl, log2l, logbl, logl, lroundl, modfl, nearbyintl, nextafterl, pow10l,
powl, remainderl, remquol, roundl, scalbl, scalblnl, scalbnl, sincosl, sinhl, sinl, tanhl, tanl, tgammal, truncl.
• In calls to chmod treat ACLs with extra ACEs *only* for Admins and SYSTEM like a trivial ACL.
• Bump POSIX option macros to POSIX.1-2008.
• Profiling data, specifically pc sampling, now covers all threads of a program and not just the main thread. Environment variable
GMON_OUT_PREFIX enables multiple gmon.out files to preserve profiling data after fork or from multiple program runs.
• Feature test macros, which control which symbols are exposed in the standard headers, have been completely overhauled for
compatibility with glibc.
• The isinf, isinff, and isinfl functions are signed, returning -1 for negative infinity for compatibility with glibc.
1.7.10 What’s new and what changed in 2.4
• New, unified implementation of POSIX permission and ACL handling. The new ACLs now store the POSIX ACL MASK/-
CLASS_OBJ permission mask, and they allow to inherit the S_ISGID bit. ACL inheritance now really works as desired, in a
limited, but theoretically equivalent fashion even for non-Cygwin processes.
To accommodate standard Windows ACLs, the POSIX permissions of the owner and all other users in the ACL are computed
using the Windows AuthZ API. This may slow down the computation of POSIX permissions noticably in some circumstances,
but is generally more correct. The new code also ignores SYSTEM and Administrators group permissions when computing the
MASK/CLASS_OBJ permission mask on old ACLs, and it doesn’t deny access to SYSTEM and Administrators group based
on the value of MASK/CLASS_OBJ when creating the new ACLs.
The new code now handles the S_ISGID bit on directories as on Linux: Setting S_ISGID on a directory causes new files and
subdirs created within to inherit its group, rather than the primary group of the user who created the file. This only works for
files and directories created by Cygwin processes.
• cygpath has a new -U option, which creates cygdrive paths using the unambiguous /proc/cygdrive prefix.
• New API: rpmatch.
• Align setfacl(1) usage a bit closer to the usage on Linux. Rename -d option to -x, --substitute to --set. Add --no-mask
and --mask options. Allow to use the -b and -k option combined to allow reducing an ACL to only reflect standard POSIX
permissions.
• Fix (numeric and monetary) decimal point and thousands separator in fa_IR and ps_AF locales to be aligned with Linux.
• utmpname/utmpxname are now defined as int functions as on Linux.