This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
POSIX::asctime pod: Note it always returns English
[perl5.git] / ext / POSIX / lib / POSIX.pod
index 4393702..a92a20c 100644 (file)
@@ -24,7 +24,7 @@ interfaces.
 This document gives a condensed list of the features available in the POSIX
 module.  Consult your operating system's manpages for general information on
 most features.  Consult L<perlfunc> for functions which are noted as being
-identical to Perl's builtin functions.
+identical or almost identical to Perl's builtin functions.
 
 The first section describes POSIX functions from the 1003.1 specification.
 The second section describes some classes for signal objects, TTY objects,
@@ -81,8 +81,13 @@ if the handler does not return normally (it e.g.  does a C<longjmp>).
 
 =item C<abs>
 
-This is identical to Perl's builtin C<abs()> function, returning
-the absolute value of its numerical argument.
+This is identical to Perl's builtin C<abs()> function, returning the absolute
+value of its numerical argument (except that C<POSIX::abs()> must be provided
+an explicit value (rather than relying on an implicit C<$_>):
+
+    $absolute_value = POSIX::abs(42);   # good
+
+    $absolute_value = POSIX::abs();     # throws exception
 
 =item C<access>
 
@@ -106,12 +111,17 @@ the arcus cosine of its numerical argument.  See also L<Math::Trig>.
 
 This is identical to the C function C<acosh()>, returning the
 hyperbolic arcus cosine of its numerical argument [C99].  See also
-L<Math::Trig>.
+L<Math::Trig>.  Added in Perl v5.22.
 
 =item C<alarm>
 
-This is identical to Perl's builtin C<alarm()> function,
-either for arming or disarming the C<SIGARLM> timer.
+This is identical to Perl's builtin C<alarm()> function, either for arming or
+disarming the C<SIGARLM> timer, except that C<POSIX::alarm()> must be provided
+an explicit value (rather than relying on an implicit C<$_>):
+
+    POSIX::alarm(3)     # good
+
+    POSIX::alarm()      # throws exception
 
 =item C<asctime>
 
@@ -129,6 +139,10 @@ The C<$mon> is zero-based: January equals C<0>.  The C<$year> is
 1900-based: 2001 equals C<101>.  C<$wday> and C<$yday> default to zero
 (and are usually ignored anyway), and C<$isdst> defaults to -1.
 
+Note the result is always in English.  Use C<L</strftime>> instead to
+get a result suitable for the current locale.  That function's C<%c>
+format yields the locale's preferred representation.
+
 =item C<asin>
 
 This is identical to the C function C<asin()>, returning
@@ -138,7 +152,7 @@ the arcus sine of its numerical argument.  See also L<Math::Trig>.
 
 This is identical to the C function C<asinh()>, returning the
 hyperbolic arcus sine of its numerical argument [C99].  See also
-L<Math::Trig>.
+L<Math::Trig>.  Added in Perl v5.22.
 
 =item C<assert>
 
@@ -154,7 +168,7 @@ arcus tangent of its numerical argument.  See also L<Math::Trig>.
 
 This is identical to the C function C<atanh()>, returning the
 hyperbolic arcus tangent of its numerical argument [C99].  See also
-L<Math::Trig>.
+L<Math::Trig>.  Added in Perl v5.22.
 
 =item C<atan2>
 
@@ -194,7 +208,7 @@ Not implemented.  C<calloc()> is C-specific.  Perl does memory management transp
 
 =item C<cbrt>
 
-The cube root [C99].
+The cube root [C99].  Added in Perl v5.22.
 
 =item C<ceil>
 
@@ -203,13 +217,30 @@ integer value greater than or equal to the given numerical argument.
 
 =item C<chdir>
 
-This is identical to Perl's builtin C<chdir()> function, allowing
-one to change the working (default) directory, see L<perlfunc/chdir>.
+This is identical to Perl's builtin C<chdir()> function, allowing one to
+change the working (default) directory -- see L<perlfunc/chdir> -- with the
+exception that C<POSIX::chdir()> must be provided an explicit value (rather
+than relying on an implicit C<$_>):
+
+    $rv = POSIX::chdir('path/to/dir');      # good
+
+    $rv = POSIX::chdir();                   # throws exception
 
 =item C<chmod>
 
 This is identical to Perl's builtin C<chmod()> function, allowing
-one to change file and directory permissions, see L<perlfunc/chmod>.
+one to change file and directory permissions -- see L<perlfunc/chmod> -- with
+the exception that C<POSIX::chmod()> can only change one file at a time
+(rather than a list of files):
+
+    $c = chmod 0664, $file1, $file2;          # good
+
+    $c = POSIX::chmod 0664, $file1;           # throws exception
+
+    $c = POSIX::chmod 0664, $file1, $file2;   # throws exception
+
+As with the built-in C<chmod()>, C<$file> may be a filename or a file
+handle.
 
 =item C<chown>
 
@@ -256,7 +287,7 @@ the hyperbolic cosine of its numeric argument.  See also L<Math::Trig>.
 
 =item C<copysign>
 
-Returns C<x> but with the sign of C<y> [C99].
+Returns C<x> but with the sign of C<y> [C99].  Added in Perl v5.22.
 
  $x_with_sign_of_y = POSIX::copysign($x, $y);
 
@@ -283,12 +314,15 @@ Generates the path name for the controlling terminal.
 This is identical to the C function C<ctime()> and equivalent
 to C<asctime(localtime(...))>, see L</asctime> and L</localtime>.
 
-=item C<cuserid>
+=item C<cuserid> [POSIX.1-1988]
 
 Get the login name of the owner of the current process.
 
        $name = POSIX::cuserid();
 
+Note: this function has not been specified by POSIX since 1990 and is included
+only for backwards compatibility. New code should use L<C<getlogin()>|perlfunc/getlogin> instead.
+
 =item C<difftime>
 
 This is identical to the C function C<difftime()>, for returning
@@ -322,11 +356,11 @@ Returns C<undef> on failure.
 
 =item C<erf>
 
-The error function [C99].
+The error function [C99].  Added in Perl v5.22.
 
 =item C<erfc>
 
-The complementary error function [C99].
+The complementary error function [C99].  Added in Perl v5.22.
 
 =item C<errno>
 
@@ -374,6 +408,7 @@ see L<perlfunc/exp>.
 =item C<expm1>
 
 Equivalent to C<exp(x) - 1>, but more precise for small argument values [C99].
+Added in Perl v5.22.
 
 See also L</log1p>.
 
@@ -433,35 +468,40 @@ integer value less than or equal to the numerical argument.
 =item C<fdim>
 
 "Positive difference", S<C<x - y>> if S<C<x E<gt> y>>, zero otherwise [C99].
+Added in Perl v5.22.
 
 =item C<fegetround>
 
 Returns the current floating point rounding mode, one of
 
-  FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_UPWARD
+  FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_DOWNWARD
 
 C<FE_TONEAREST> is like L</round>, C<FE_TOWARDZERO> is like L</trunc> [C99].
+Added in Perl v5.22.
 
 =item C<fesetround>
 
-Sets the floating point rounding mode, see L</fegetround> [C99].
+Sets the floating point rounding mode, see L</fegetround> [C99].  Added in
+Perl v5.22.
 
 =item C<fma>
 
 "Fused multiply-add", S<C<x * y + z>>, possibly faster (and less lossy)
-than the explicit two operations [C99].
+than the explicit two operations [C99].  Added in Perl v5.22.
 
  my $fused = POSIX::fma($x, $y, $z);
 
 =item C<fmax>
 
 Maximum of C<x> and C<y>, except when either is C<NaN>, returns the other [C99].
+Added in Perl v5.22.
 
  my $min = POSIX::fmax($x, $y);
 
 =item C<fmin>
 
 Minimum of C<x> and C<y>, except when either is C<NaN>, returns the other [C99].
+Added in Perl v5.22.
 
  my $min = POSIX::fmin($x, $y);
 
@@ -508,6 +548,7 @@ telling the class of the argument [C99].  C<FP_INFINITE> is positive
 or negative infinity, C<FP_NAN> is not-a-number.  C<FP_SUBNORMAL>
 means subnormal numbers (also known as denormals), very small numbers
 with low precision. C<FP_ZERO> is zero.  C<FP_NORMAL> is all the rest.
+Added in Perl v5.22.
 
 =item C<fprintf>
 
@@ -634,7 +675,7 @@ L<perlfunc/getlogin>.
        use POSIX ':nan_payload';
        getpayload($var)
 
-Returns the C<NaN> payload.
+Returns the C<NaN> payload.  Added in Perl v5.24.
 
 Note the API instability warning in L</setpayload>.
 
@@ -691,11 +732,11 @@ see L<perlfunc/gmtime>.
 =item C<hypot>
 
 Equivalent to C<S<sqrt(x * x + y * y)>> except more stable on very large
-or very small arguments [C99].
+or very small arguments [C99].  Added in Perl v5.22.
 
 =item C<ilogb>
 
-Integer binary logarithm [C99]
+Integer binary logarithm [C99].  Added in Perl v5.22.
 
 For example C<ilogb(20)> is 4, as an integer.
 
@@ -713,13 +754,13 @@ See also L</isinf>, and L</fpclassify>.
 
 =item C<isalnum>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:alnum:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isalpha>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:alpha:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
@@ -730,26 +771,26 @@ to a tty.  Similar to the C<-t> operator, see L<perlfunc/-X>.
 
 =item C<iscntrl>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:cntrl:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isdigit>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:digit:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isfinite>
 
 Returns true if the argument is a finite number (that is, not an
-infinity, or the not-a-number) [C99].
+infinity, or the not-a-number) [C99].  Added in Perl v5.22.
 
 See also L</isinf>, L</isnan>, and L</fpclassify>.
 
 =item C<isgraph>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:graph:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
@@ -758,23 +799,26 @@ to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 (Also C<isgreaterequal>, C<isless>, C<islessequal>, C<islessgreater>,
 C<isunordered>)
 
-Floating point comparisons which handle the C<NaN> [C99].
+Floating point comparisons which handle the C<NaN> [C99].  Added in Perl
+v5.22.
 
 =item C<isinf>
 
 Returns true if the argument is an infinity (positive or negative) [C99].
+Added in Perl v5.22.
 
 See also L</Inf>, L</isnan>, L</isfinite>, and L</fpclassify>.
 
 =item C<islower>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:lower:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isnan>
 
-Returns true if the argument is C<NaN> (not-a-number) [C99].
+Returns true if the argument is C<NaN> (not-a-number) [C99].  Added in
+Perl v5.22.
 
 Note that you cannot test for "C<NaN>-ness" with
 
@@ -787,19 +831,19 @@ See also L</nan>, L</NaN>, L</isinf>, and L</fpclassify>.
 =item C<isnormal>
 
 Returns true if the argument is normal (that is, not a subnormal/denormal,
-and not an infinity, or a not-a-number) [C99].
+and not an infinity, or a not-a-number) [C99].  Added in Perl v5.22.
 
 See also L</isfinite>, and L</fpclassify>.
 
 =item C<isprint>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:print:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<ispunct>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:punct:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
@@ -808,7 +852,7 @@ to use instead.  See L<perlrecharclass/POSIX Character Classes>.
        use POSIX ':nan_payload';
        issignaling($var, $payload)
 
-Return true if the argument is a I<signaling> NaN.
+Return true if the argument is a I<signaling> NaN.  Added in Perl v5.24.
 
 Note the API instability warning in L</setpayload>.
 
@@ -816,19 +860,19 @@ See L</nan> for more discussion about C<NaN>.
 
 =item C<isspace>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:space:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isupper>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:upper:]]+ $ /x>>, which you should convert
 to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
 =item C<isxdigit>
 
-This function has been removed as of v5.24.  It was very similar to
+This function has been removed as of Perl v5.24.  It was very similar to
 matching against S<C<qr/ ^ [[:xdigit:]]+ $ /x>>, which you should
 convert to use instead.  See L<perlrecharclass/POSIX Character Classes>.
 
@@ -880,24 +924,24 @@ C<ldiv()> is C-specific, use C</> and C<int()> instead.
 
 =item C<lgamma>
 
-The logarithm of the Gamma function [C99].
+The logarithm of the Gamma function [C99].  Added in Perl v5.22.
 
 See also L</tgamma>.
 
 =item C<log1p>
 
 Equivalent to S<C<log(1 + x)>>, but more stable results for small argument
-values [C99].
+values [C99].  Added in Perl v5.22.
 
 =item C<log2>
 
-Logarithm base two [C99].
+Logarithm base two [C99].  Added in Perl v5.22.
 
 See also L</expm1>.
 
 =item C<logb>
 
-Integer binary logarithm [C99].
+Integer binary logarithm [C99].  Added in Perl v5.22.
 
 For example C<logb(20)> is 4, as a floating point number.
 
@@ -911,10 +955,20 @@ for creating hard links into files, see L<perlfunc/link>.
 =item C<localeconv>
 
 Get numeric formatting information.  Returns a reference to a hash
-containing the current underlying locale's formatting values.  Users of this function
-should also read L<perllocale>, which provides a comprehensive
-discussion of Perl locale handling, including
+containing the formatting values of the locale that currently underlies
+the program, regardless of whether or not it is called from within the
+scope of a S<C<use locale>>.  Users of this function should also read
+L<perllocale>, which provides a comprehensive discussion of Perl locale
+handling, including
 L<a section devoted to this function|perllocale/The localeconv function>.
+Prior to Perl 5.28, or when operating in a non thread-safe environment,
+it should not be used in a threaded application unless it's certain that
+the underlying locale is C or POSIX.  This is because it otherwise
+changes the locale, which globally affects all threads simultaneously.
+Windows platforms starting with Visual Studio 2005 are mostly
+thread-safe, but use of this function in those prior to Visual Studio
+2015 can interfere with a thread that has called
+L<perlapi/switch_to_global_locale>.
 
 Here is how to query the database for the B<de> (Deutsch or German) locale.
 
@@ -958,7 +1012,15 @@ POSIX.1-2008 and are only available on systems that support them.
 =item C<localtime>
 
 This is identical to Perl's builtin C<localtime()> function for
-converting seconds since the epoch to a date see L<perlfunc/localtime>.
+converting seconds since the epoch to a date see L<perlfunc/localtime> except
+that C<POSIX::localtime()> must be provided an explicit value (rather than
+relying on an implicit C<$_>):
+
+    @localtime = POSIX::localtime(time);    # good
+
+    @localtime = localtime();               # good
+
+    @localtime = POSIX::localtime();        # throws exception
 
 =item C<log>
 
@@ -1001,19 +1063,20 @@ Returns C<undef> on failure.
 Depending on the current floating point rounding mode, rounds the
 argument either toward nearest (like L</round>), toward zero (like
 L</trunc>), downward (toward negative infinity), or upward (toward
-positive infinity) [C99].
+positive infinity) [C99].  Added in Perl v5.22.
 
 For the rounding mode, see L</fegetround>.
 
 =item C<lround>
 
-Like L</round>, but as integer, as opposed to floating point [C99].
+Like L</round>, but as integer, as opposed to floating point [C99].  Added
+in Perl v5.22.
 
 See also L</ceil>, L</floor>, L</trunc>.
 
 Owing to an oversight, this is not currently exported by default, or as part of
 the C<:math_h_c99> export tag; importing it must therefore be done by explicit
-name. This will be changed in Perl 5.26.
+name.
 
 =item C<malloc>
 
@@ -1021,25 +1084,64 @@ Not implemented.  C<malloc()> is C-specific.  Perl does memory management transp
 
 =item C<mblen>
 
-This is identical to the C function C<mblen()>.
-
-Core Perl does not have any support for the wide and multibyte
-characters of the C standards, except under UTF-8 locales, so this might
-be a rather useless function.
-
-However, Perl supports Unicode, see L<perluniintro>.
-
-=item C<mbstowcs>
-
-This is identical to the C function C<mbstowcs()>.
-
-See L</mblen>.
+This is the same as the C function C<mblen()> on unthreaded perls.  On
+threaded perls, it transparently (almost) substitutes the more
+thread-safe L<C<mbrlen>(3)>, if available, instead of C<mblen>.
+
+Core Perl does not have any support for wide and multibyte locales,
+except Unicode UTF-8 locales.  This function, in conjunction with
+L</mbtowc> and L</wctomb> may be used to roll your own decoding/encoding
+of other types of multi-byte locales.
+
+Use C<undef> as the first parameter to this function to get the effect
+of passing NULL as the first parameter to C<mblen>.  This resets any
+shift state to its initial value.  The return value is undefined if
+C<mbrlen> was substituted, so you should never rely on it.
+
+When the first parameter is a scalar containing a value that either is a
+PV string or can be forced into one, the return value is the number of
+bytes occupied by the first character of that string; or 0 if that first
+character is the wide NUL character; or negative if there is an error.
+This is based on the locale that currently underlies the program,
+regardless of whether or not the function is called from Perl code that
+is within the scope of S<C<use locale>>.  Perl makes no attempt at
+hiding from your code any differences in the C<errno> setting between
+C<mblen> and C<mbrlen>.  It does set C<errno> to 0 before calling them.
+
+The optional second parameter is ignored if it is larger than the
+actual length of the first parameter string.
 
 =item C<mbtowc>
 
-This is identical to the C function C<mbtowc()>.
-
-See L</mblen>.
+This is the same as the C function C<mbtowc()> on unthreaded perls.  On
+threaded perls, it transparently (almost) substitutes the more
+thread-safe L<C<mbrtowc>(3)>, if available, instead of C<mbtowc>.
+
+Core Perl does not have any support for wide and multibyte locales,
+except Unicode UTF-8 locales.  This function, in conjunction with
+L</mblen> and L</wctomb> may be used to roll your own decoding/encoding
+of other types of multi-byte locales.
+
+The first parameter is a scalar into which, upon success, the wide
+character represented by the multi-byte string contained in the second
+parameter is stored.  The optional third parameter is ignored if it is
+larger than the actual length of the second parameter string.
+
+Use C<undef> as the second parameter to this function to get the effect
+of passing NULL as the second parameter to C<mbtowc>.  This resets any
+shift state to its initial value.  The return value is undefined if
+C<mbrtowc> was substituted, so you should never rely on it.
+
+When the second parameter is a scalar containing a value that either is
+a PV string or can be forced into one, the return value is the number of
+bytes occupied by the first character of that string; or 0 if that first
+character is the wide NUL character; or negative if there is an error.
+This is based on the locale that currently underlies the program,
+regardless of whether or not the function is called from Perl code that
+is within the scope of S<C<use locale>>.  Perl makes no attempt at
+hiding from your code any differences in the C<errno> setting between
+C<mbtowc> and C<mbrtowc>.  It does set C<errno> to 0 before calling
+them.
 
 =item C<memchr>
 
@@ -1120,7 +1222,7 @@ See also L</nan>, C</isnan>, and L</fpclassify>.
 
    my $nan = nan();
 
-Returns C<NaN>, not-a-number [C99].
+Returns C<NaN>, not-a-number [C99].  Added in Perl v5.22.
 
 The returned NaN is always a I<quiet> NaN, as opposed to I<signaling>.
 
@@ -1156,12 +1258,12 @@ See also L</isnan>, L</NaN>, L</setpayload> and L</issignaling>.
 =item C<nearbyint>
 
 Returns the nearest integer to the argument, according to the current
-rounding mode (see L</fegetround>) [C99].
+rounding mode (see L</fegetround>) [C99].  Added in Perl v5.22.
 
 =item C<nextafter>
 
 Returns the next representable floating point number after C<x> in the
-direction of C<y> [C99].
+direction of C<y> [C99].  Added in Perl v5.22.
 
  my $nextafter = POSIX::nextafter($x, $y);
 
@@ -1170,7 +1272,7 @@ Like L</nexttoward>, but potentially less accurate.
 =item C<nexttoward>
 
 Returns the next representable floating point number after C<x> in the
-direction of C<y> [C99].
+direction of C<y> [C99].  Added in Perl v5.22.
 
  my $nexttoward = POSIX::nexttoward($x, $y);
 
@@ -1329,7 +1431,7 @@ Not implemented.  C<realloc()> is C-specific.  Perl does memory management trans
 =item C<remainder>
 
 Given C<x> and C<y>, returns the value S<C<x - n*y>>, where C<n> is the integer
-closest to C<x>/C<y>. [C99]
+closest to C<x>/C<y> [C99].  Added in Perl v5.22.
 
  my $remainder = POSIX::remainder($x, $y)
 
@@ -1337,13 +1439,13 @@ See also L</remquo>.
 
 =item C<remove>
 
-This is identical to Perl's builtin C<unlink()> function
-for removing files, see L<perlfunc/unlink>.
+Deletes a name from the filesystem.  Calls L<perlfunc/unlink> for
+files and L<perlfunc/rmdir> for directories.
 
 =item C<remquo>
 
 Like L</remainder> but also returns the low-order bits of the quotient (n)
-[C99]
+[C99].  Added in Perl v5.22.
 
 (This is quite esoteric interface, mainly used to implement numerical
 algorithms.)
@@ -1374,13 +1476,13 @@ for removing (empty) directories, see L<perlfunc/rmdir>.
 =item C<round>
 
 Returns the integer (but still as floating point) nearest to the
-argument [C99].
+argument [C99].  Added in Perl v5.22.
 
 See also L</ceil>, L</floor>, L</lround>, L</modf>, and L</trunc>.
 
 =item C<scalbn>
 
-Returns S<C<x * 2**y>> [C99].
+Returns S<C<x * 2**y>> [C99].  Added in Perl v5.22.
 
 See also L</frexp> and L</ldexp>.
 
@@ -1405,14 +1507,19 @@ see L<perlfunc/eval>.
 
 =item C<setlocale>
 
-WARNING!  Do NOT use this function in a L<thread|threads>.  The locale
-will change in all other threads at the same time, and should your
-thread get paused by the operating system, and another started, that
-thread will not have the locale it is expecting.  On some platforms,
-there can be a race leading to segfaults if two threads call this
-function nearly simultaneously.
-
-Modifies and queries the program's underlying locale.  Users of this
+WARNING!  Prior to Perl 5.28 or on a system that does not support
+thread-safe locale operations, do NOT use this function in a
+L<thread|threads>.  The locale will change in all other threads at the
+same time, and should your thread get paused by the operating system,
+and another started, that thread will not have the locale it is
+expecting.  On some platforms, there can be a race leading to segfaults
+if two threads call this function nearly simultaneously.  This warning
+does not apply on unthreaded builds, or on perls where
+C<${^SAFE_LOCALES}> exists and is non-zero; namely Perl 5.28 and later
+compiled to be locale-thread-safe.
+
+This function
+modifies and queries the program's underlying locale.  Users of this
 function should read L<perllocale>, whch provides a comprehensive
 discussion of Perl locale handling, knowledge of which is necessary to
 properly use this function.  It contains
@@ -1420,7 +1527,9 @@ L<a section devoted to this function|perllocale/The setlocale function>.
 The discussion here is merely a summary reference for C<setlocale()>.
 Note that Perl itself is almost entirely unaffected by the locale
 except within the scope of S<C<"use locale">>.  (Exceptions are listed
-in L<perllocale/Not within the scope of "use locale">.)
+in L<perllocale/Not within the scope of "use locale">, and
+locale-dependent functions within the POSIX module ARE always affected
+by the current locale.)
 
 The following examples assume
 
@@ -1457,7 +1566,7 @@ out which locales are available in your system.
        use POSIX ':nan_payload';
        setpayload($var, $payload);
 
-Sets the C<NaN> payload of var.
+Sets the C<NaN> payload of var.  Added in Perl v5.24.
 
 NOTE: the NaN payload APIs are based on the latest (as of June 2015)
 proposed ISO C interfaces, but they are not yet a standard.  Things
@@ -1472,7 +1581,8 @@ See also L</setpayloadsig>, L</isnan>, L</getpayload>, and L</issignaling>.
        use POSIX ':nan_payload';
        setpayloadsig($var, $payload);
 
-Like L</setpayload> but also makes the NaN I<signaling>.
+Like L</setpayload> but also makes the NaN I<signaling>.  Added in Perl
+v5.24.
 
 Depending on the platform the NaN may or may not behave differently.
 
@@ -1530,7 +1640,7 @@ semantics, as defined by POSIX/SUSv3:
                 otherwise the signal was sent by the kernel
 
 The constants for specific C<code> values can be imported individually
-or using the C<:signal_h_si_code> tag.
+or using the C<:signal_h_si_code> tag, since Perl v5.24.
 
 The following are also defined by POSIX/SUSv3, but unfortunately
 not very widely implemented:
@@ -1559,6 +1669,7 @@ Not implemented.  C<siglongjmp()> is C-specific: use L<perlfunc/die> instead.
 =item C<signbit>
 
 Returns zero for positive arguments, non-zero for negative arguments [C99].
+Added in Perl v5.22.
 
 =item C<sigpending>
 
@@ -1770,9 +1881,13 @@ POSIX-compliant systems set C<$!> (C<$ERRNO>) to indicate a translation
 error, so clear C<$!> before calling C<strtod>.  However, non-POSIX systems
 may not check for overflow, and therefore will never set C<$!>.
 
-C<strtod> respects any POSIX C<setlocale()> C<LC_TIME> settings,
+C<strtod> respects any POSIX C<setlocale()> C<LC_NUMERIC> settings,
 regardless of whether or not it is called from Perl code that is within
-the scope of S<C<use locale>>.
+the scope of S<C<use locale>>.  Prior to Perl 5.28, or when operating in
+a non thread-safe environment, it should not be used in a threaded
+application unless it's certain that the underlying locale is C
+or POSIX.  This is because it otherwise changes the locale, which
+globally affects all threads simultaneously.
 
 To parse a string C<$str> as a floating point number use
 
@@ -1920,7 +2035,7 @@ Returns C<undef> on failure.
 
 =item C<tgamma>
 
-The Gamma function [C99].
+The Gamma function [C99].  Added in Perl v5.22.
 
 See also L</lgamma>.
 
@@ -1951,10 +2066,11 @@ Not implemented.  Use method C<IO::File::new_tmpfile()> instead, or see L<File::
 
 For security reasons, which are probably detailed in your system's
 documentation for the C library C<tmpnam()> function, this interface
-is no longer available; instead use L<File::Temp>.
+is no longer available since Perl v5.26; instead use L<File::Temp>.
 
 =item C<tolower>
 
+This function has been removed as of Perl v5.26.
 This is identical to the C function, except that it can apply to a single
 character or to a whole string, and currently operates as if the locale
 always is "C".  Consider using the C<lc()> function, see L<perlfunc/lc>,
@@ -1963,6 +2079,7 @@ strings.
 
 =item C<toupper>
 
+This function has been removed as of Perl v5.26.
 This is similar to the C function, except that it can apply to a single
 character or to a whole string, and currently operates as if the locale
 always is "C".  Consider using the C<uc()> function, see L<perlfunc/uc>,
@@ -1970,7 +2087,8 @@ or the equivalent C<\U> operator inside doublequotish strings.
 
 =item C<trunc>
 
-Returns the integer toward zero from the argument [C99].
+Returns the integer toward zero from the argument [C99].  Added in Perl
+v5.22.
 
 See also L</ceil>, L</floor>, and L</round>.
 
@@ -2055,17 +2173,34 @@ builtin C<waitpid()> function, see L<perlfunc/waitpid>.
        $pid = POSIX::waitpid( -1, POSIX::WNOHANG );
        print "status = ", ($? / 256), "\n";
 
-=item C<wcstombs>
-
-This is identical to the C function C<wcstombs()>.
-
 See L</mblen>.
 
 =item C<wctomb>
 
-This is identical to the C function C<wctomb()>.
-
-See L</mblen>.
+This is the same as the C function C<wctomb()> on unthreaded perls.  On
+threaded perls, it transparently (almost) substitutes the more
+thread-safe L<C<wcrtomb>(3)>, if available, instead of C<wctomb>.
+
+Core Perl does not have any support for wide and multibyte locales,
+except Unicode UTF-8 locales.  This function, in conjunction with
+L</mblen> and L</mbtowc> may be used to roll your own decoding/encoding
+of other types of multi-byte locales.
+
+Use C<undef> as the first parameter to this function to get the effect
+of passing NULL as the first parameter to C<wctomb>.  This resets any
+shift state to its initial value.  The return value is undefined if
+C<wcrtomb> was substituted, so you should never rely on it.
+
+When the first parameter is a scalar, the code point contained in the
+scalar second parameter is converted into a multi-byte string and stored
+into the first parameter scalar.  This is based on the locale that
+currently underlies the program, regardless of whether or not the
+function is called from Perl code that is within the scope of S<C<use
+locale>>.  The return value is the number of bytes stored; or negative
+if the code point isn't representable in the current locale.  Perl makes
+no attempt at hiding from your code any differences in the C<errno>
+setting between C<wctomb> and C<wcrtomb>.  It does set C<errno> to 0
+before calling them.
 
 =item C<write>
 
@@ -2208,6 +2343,9 @@ Create a set with C<SIGUSR1>.
 
        $sigset = POSIX::SigSet->new( &POSIX::SIGUSR1 );
 
+Throws an error if any of the signals supplied cannot be added to the
+set.
+
 =item C<addset>
 
 Add a signal to a SigSet object.
@@ -2433,6 +2571,20 @@ C<_POSIX_TZNAME_MAX> C<_POSIX_VDISABLE> C<_POSIX_VERSION>
 
 =back
 
+=head1 RESOURCE CONSTANTS
+
+Imported with the C<:sys_resource_h> tag.
+
+=over 8
+
+=item Constants
+
+Added in Perl v5.28:
+
+C<PRIO_PROCESS> C<PRIO_PGRP> C<PRIO_USER>
+
+=back
+
 =head1 SYSTEM CONFIGURATION
 
 =over 8
@@ -2534,6 +2686,8 @@ on systems that support them.
 
 C<HUGE_VAL>
 
+Added in Perl v5.22:
+
 C<FP_ILOGB0> C<FP_ILOGBNAN> C<FP_INFINITE> C<FP_NAN> C<FP_NORMAL> C<FP_SUBNORMAL> C<FP_ZERO>
 C<INFINITY> C<NAN> C<Inf> C<NaN>
 C<M_1_PI> C<M_2_PI> C<M_2_SQRTPI> C<M_E> C<M_LN10> C<M_LN2> C<M_LOG10E> C<M_LOG2E> C<M_PI>
@@ -2553,6 +2707,9 @@ C<SA_SIGINFO> C<SIGABRT> C<SIGALRM> C<SIGCHLD> C<SIGCONT> C<SIGFPE> C<SIGHUP> C<
 C<SIGKILL> C<SIGPIPE> C<SIGQUIT> C<SIGSEGV> C<SIGSTOP> C<SIGTERM> C<SIGTSTP> C<SIGTTIN> C<SIGTTOU>
 C<SIGUSR1> C<SIGUSR2> C<SIG_BLOCK> C<SIG_DFL> C<SIG_ERR> C<SIG_IGN> C<SIG_SETMASK>
 C<SIG_UNBLOCK>
+
+Added in Perl v5.24:
+
 C<ILL_ILLOPC> C<ILL_ILLOPN> C<ILL_ILLADR> C<ILL_ILLTRP> C<ILL_PRVOPC> C<ILL_PRVREG> C<ILL_COPROC>
 C<ILL_BADSTK> C<FPE_INTDIV> C<FPE_INTOVF> C<FPE_FLTDIV> C<FPE_FLTOVF> C<FPE_FLTUND> C<FPE_FLTRES>
 C<FPE_FLTINV> C<FPE_FLTSUB> C<SEGV_MAPERR> C<SEGV_ACCERR> C<BUS_ADRALN> C<BUS_ADRERR>
@@ -2692,6 +2849,8 @@ is true)
 
 =item Constants
 
+Added in Perl v5.24:
+
 C<WSAEINTR> C<WSAEBADF> C<WSAEACCES> C<WSAEFAULT> C<WSAEINVAL> C<WSAEMFILE> C<WSAEWOULDBLOCK>
 C<WSAEINPROGRESS> C<WSAEALREADY> C<WSAENOTSOCK> C<WSAEDESTADDRREQ> C<WSAEMSGSIZE>
 C<WSAEPROTOTYPE> C<WSAENOPROTOOPT> C<WSAEPROTONOSUPPORT> C<WSAESOCKTNOSUPPORT>