argra****@users*****
argra****@users*****
2012年 4月 25日 (水) 18:11:12 JST
Index: docs/perl/5.16.0/perl5160delta.pod diff -u docs/perl/5.16.0/perl5160delta.pod:1.6 docs/perl/5.16.0/perl5160delta.pod:1.7 --- docs/perl/5.16.0/perl5160delta.pod:1.6 Wed Apr 25 04:59:18 2012 +++ docs/perl/5.16.0/perl5160delta.pod Wed Apr 25 18:11:12 2012 @@ -686,12 +686,12 @@ =begin original -Also, single-character Unicode punctuation variables (like $â°) are now +Also, single-character Unicode punctuation variables (like C<$â°>) are now supported [perl #69032]. =end original -ã¾ãã($â° ã®ãããª)åä¸æåã® Unicode å¥èªç¹å¤æ°ã«å¯¾å¿ãã¾ãã +ã¾ãã(C<$â°> ã®ãããª)åä¸æåã® Unicode å¥èªç¹å¤æ°ã«å¯¾å¿ãã¾ãã [perl #69032]ã =head3 Improved ability to mix locales and Unicode, including UTF-8 locales @@ -1171,6 +1171,8 @@ =head3 The C<\$> prototype accepts any scalar lvalue +(C<\$> ãããã¿ã¤ãã¯ä»»æã®ã¹ã«ã©å·¦è¾ºå¤ãåãä»ããããã«) + =begin original The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue @@ -1226,6 +1228,25 @@ èªã¿è¾¼ã¾ãªããã¨ãä¿è¨¼ã§ããªãã®ã§éæ¨å¥¨ã«ãªãã¾ããã L<is_utf8_char_buf()|/Added is_utf8_char_buf()> ãåç §ãã¦ãã ããã +=head2 Malformed UTF-8 input could cause attempts to read beyond the end of the buffer + +(ä¸æ£ãª UTF-8 å ¥åããããã¡ã®æ«å°¾ãè¶ ãã¦èªã¿è¾¼ããã¨ãããã¨ããã) + +=begin original + +Two new XS-accessible functions, C<utf8_to_uvchr_buf()> and +C<utf8_to_uvuni_buf()> are now available to prevent this, and the Perl +core has been converted to use them. +See L</Internal Changes>. + +=end original + +Two new XS-accessible functions, C<utf8_to_uvchr_buf()> and +C<utf8_to_uvuni_buf()> are now available to prevent this, and the Perl +core has been converted to use them. +See L</Internal Changes>. +(TBT) + =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728). (GLOB_ALTDIRFUNC ã§ã® C<File::Glob::bsd_glob()> ã®ã¡ã¢ãªã¨ã©ã¼ (CVE-2011-2728)) @@ -1305,20 +1326,23 @@ F<lib/unicore/ToDigit.pl> ã§ãã 代ããã«ãã®ãã¼ã¿ãå¾ãããã« L<Unicode::UCD/prop_invmap()> ã使ãã¾ãã -=head2 C<is_utf8_char()> +=head2 XS functions C<is_utf8_char()>, C<utf8_to_uvchr()> and +C<utf8_to_uvuni()> + +(XS é¢æ° C<is_utf8_char()>, C<utf8_to_uvchr()>, C<utf8_to_uvuni()>) =begin original This function is deprecated because it could read beyond the end of the -input string. Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()> -instead. +input string. Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>, +C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> instead. =end original ãã®é¢æ°ã¯ãå ¥åæååã®æ«å°¾ãè¶ ãã¦èªã¿è¾¼ããããããªãã®ã§ã éæ¨å¥¨ã«ãªãã¾ããã -代ããã«æ°ãã L<is_utf8_char_buf()|/Added is_utf8_char_buf()> ã -使ã£ã¦ãã ããã +代ããã«æ°ãã L<is_utf8_char_buf()|/Added is_utf8_char_buf()>, +C<utf8_to_uvchr_buf()>, C<utf8_to_uvuni_buf()> ã使ã£ã¦ãã ããã =head1 Future Deprecations @@ -1661,7 +1685,7 @@ æªå®ç¾©ã¨ãã¦æ±ãã"uninitialized" è¦åãåºåãã¦ãã¾ããã ä»ã§ã¯ __ANONIO__ ã¨æåååããã¾ã [perl #96326]ã -=head2 User-defined case changing operations. +=head2 User-defined case changing operations (ã¦ã¼ã¶ã¼å®ç¾©å¤§æåå¤æ´æä½) @@ -1911,7 +1935,7 @@ =head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed -(C<quotemeta> 㨠C<\Q> ã§ã¯ã©ã¼ããããé ASCII æåãå¤æ´ããã¾ãã) +(C<quotemeta> 㨠C<\Q> ã§ã¯ã©ã¼ããããé ASCII æåã®å¤æ´) =begin original @@ -2216,6 +2240,8 @@ =head2 Removed Modules and Pragmata +(åé¤ãããã¢ã¸ã¥ã¼ã«ã¨ãã©ã°ã) + =begin original As promised in Perl 5.14.0's release notes, the following modules have @@ -2819,11 +2845,6 @@ =item * -The C<-Dusesitecustomize> and C<-Duserelocatableinc> options now work -together properly. - -=item * - F<regexp.h> has been modified for compatibility with GCC's B<-Werror> option, as used by some projects that include perl's header files (5.14.1). @@ -2843,25 +2864,68 @@ =item * The magic types and magic vtables are now generated from data in a new script -F<regen/mg_vtable.pl>, instead of being -maintained by hand. As different EBCDIC -variants can't agree on the code point for '~', the character to code point -conversion is done at build time by F<generate_uudmap> to a new generated header -F<mg_data.h>. C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the +F<regen/mg_vtable.pl>, instead of being maintained by hand. As different +EBCDIC variants can't agree on the code point for '~', the character to code +point conversion is done at build time by F<generate_uudmap> to a new generated +header F<mg_data.h>. C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the pre-processor as C<PL_vtbl_regexp>, instead of being distinct C variables. C<PL_vtbl_sig> has been removed. =item * -Building with C<-DPERL_GLOBAL_STRUCT> -works again. This configuration is not +Building with C<-DPERL_GLOBAL_STRUCT> works again. This configuration is not generally used. =item * Perl configured with I<MAD> now correctly frees C<MADPROP> structures when -OPs are freed. C<MADPROP>s are now allocated with -C<PerlMemShared_malloc()> +OPs are freed. C<MADPROP>s are now allocated with C<PerlMemShared_malloc()> + +=item * + +F<makedef.pl> has been refactored. This should have no noticeable affect on +any of the platforms that use it as part of their build (AIX, VMS, Win32). + +=item * + +C<useperlio> can no longer be disabled. + +=item * + +The file F<global.sym> is no longer needed, and has been removed. It +contained a list of all exported functions, one of the files generated by +F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code +has been refactored so that the only user of F<global.sym>, F<makedef.pl>, +now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to +store the list of exported functions in an intermediate file. + +As F<global.sym> was never installed, this change should not be visible +outside the build process. + +=item * + +F<pod/buildtoc>, used by the build process to build L<perltoc>, has been +refactored and simplified. It now only contains code to build L<perltoc>; +the code to regenerate Makefiles has been moved to F<Porting/pod_rules.pl>. +It's a bug if this change has any material effect on the build process. + +=item * + +F<pod/roffitall> is now built by F<pod/buildtoc>, instead of being +shipped with the distribution. Its list of manpages is now generated +(and therefore current). See also RT #103202 for an unresolved related +issue. + +=item * + +The man page for C<XS::Typemap> is no longer installed. C<XS::Typemap> +is a test module which is not installed, hence installing its +documentation makes no sense. + +=item * + +The -Dusesitecustomize and -Duserelocatableinc options now work +together properly. =back @@ -2885,6 +2949,19 @@ =back +=head3 HP-UX + +=over 4 + +=item * + +HP-UX PA-RISC/64 now supports gcc-4.x + +A fix to correct the socketsize now makes the test suite pass on HP-UX +PA-RISC for 64bitall builds. + +=back + =head3 VMS =over 4 @@ -2940,6 +3017,185 @@ =item * +The compiled representation of formats is now stored via the C<mg_ptr> of +their C<PERL_MAGIC_fm>. Previously it was stored in the string buffer, +beyond C<SvLEN()>, the regular end of the string. C<SvCOMPILED()> and +C<SvCOMPILED_{on,off}()> now exist solely for compatibility for XS code. +The first is always 0, the other two now no-ops. (5.14.1) + +=item * + +Some global variables have been marked C<const>, members in the interpreter +structure have been re-ordered, and the opcodes have been re-ordered. The +op C<OP_AELEMFAST> has been split into C<OP_AELEMFAST> and C<OP_AELEMFAST_LEX>. + +=item * + +When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY +field is no longer temporarily zeroed. Any destructors called on the freed +elements see the remaining elements. Thus, %h=() becomes more like +C<delete $h{$_} for keys %h>. + +=item * + +Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now +stored via the mg_ptr of their C<PERL_MAGIC_bm>. +Previously they were PVGVs, with the tables stored in +the string buffer, beyond C<SvLEN()>. This eliminates +the last place where the core stores data beyond C<SvLEN()>. + +=item * + +Simplified logic in C<Perl_sv_magic()> introduces a small change of +behaviour for error cases involving unknown magic types. Previously, if +C<Perl_sv_magic()> was passed a magic type unknown to it, it would + +=over + +=item 1. + +Croak "Modification of a read-only value attempted" if read only + +=item 2. + +Return without error if the SV happened to already have this magic + +=item 3. + +otherwise croak "Don't know how to handle magic of type \\%o" + +=back + +Now it will always croak "Don't know how to handle magic of type \\%o", even +on read only values, or SVs which already have the unknown magic type. + +=item * + +The experimental C<fetch_cop_label> function has been renamed to +C<cop_fetch_label>. + +=item * + +The C<cop_store_label> function has been added to the API, but is +experimental. + +=item * + +F<embedvar.h> has been simplified, and one level of macro indirection for +PL_* variables has been removed for the default (non-multiplicity) +configuration. PERLVAR*() macros now directly expand their arguments to +tokens such as C<PL_defgv>, instead of expanding to C<PL_Idefgv>, with +F<embedvar.h> defining a macro to map C<PL_Idefgv> to C<PL_defgv>. XS code +which has unwarranted chumminess with the implementation may need updating. + +=item * + +An API has been added to explicitly choose whether or not to export XSUB +symbols. More detail can be found in the comments for commit e64345f8. + +=item * + +The C<is_gv_magical_sv> function has been eliminated and merged with +C<gv_fetchpvn_flags>. It used to be called to determine whether a GV +should be autovivified in rvalue context. Now it has been replaced with a +new C<GV_ADDMG> flag (not part of the API). + +=item * + +Padlists are now marked C<AvREAL>; i.e., reference-counted. They have +always been reference-counted, but were not marked real, because F<pad.c> +did its own clean-up, instead of using the usual clean-up code in F<sv.c>. +That caused problems in thread cloning, so now the C<AvREAL> flag is on, +but is turned off in F<pad.c> right before the padlist is freed (after +F<pad.c> has done its custom freeing of the pads). + +=item * + +All the C files that make up the Perl core have been converted to UTF-8. + +=item * + +These new functions have been added as part of the work on Unicode symbols: + + HvNAMELEN + HvNAMEUTF8 + HvENAMELEN + HvENAMEUTF8 + gv_init_pv + gv_init_pvn + gv_init_pvsv + gv_fetchmeth_pv + gv_fetchmeth_pvn + gv_fetchmeth_sv + gv_fetchmeth_pv_autoload + gv_fetchmeth_pvn_autoload + gv_fetchmeth_sv_autoload + gv_fetchmethod_pv_flags + gv_fetchmethod_pvn_flags + gv_fetchmethod_sv_flags + gv_autoload_pv + gv_autoload_pvn + gv_autoload_sv + newGVgen_flags + sv_derived_from_pv + sv_derived_from_pvn + sv_derived_from_sv + sv_does_pv + sv_does_pvn + sv_does_sv + whichsig_pv + whichsig_pvn + whichsig_sv + newCONSTSUB_flags + +The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are +experimental and may change in a future release. + +=item * + +The following functions were added. These are I<not> part of the API: + + GvNAMEUTF8 + GvENAMELEN + GvENAME_HEK + CopSTASH_flags + CopSTASH_flags_set + PmopSTASH_flags + PmopSTASH_flags_set + sv_sethek + HEKfARG + +There is also a C<HEKf> macro corresponding to C<SVf>, for +interpolating HEKs in formatted strings. + +=item * + +C<sv_catpvn_flags> takes a couple of new internal-only flags, +C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to +be concatenated is UTF8. This allows for more efficient concatenation than +creating temporary SVs to pass to C<sv_catsv>. + +=item * + +For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in 5.6.0. This +is in addition to setting C<SvPVX(cv)>, for compatibility with 5.8 to 5.14. +See L<perlguts/Autoloading with XSUBs>. + +=item * + +Perl now checks whether the array (the linearised isa) returned by a MRO +plugin begins with the name of the class itself, for which the array was +created, instead of assuming that it does. This prevents the first element +from being skipped during method lookup. It also means that +C<mro::get_linear_isa> may return an array with one more element than the +MRO plugin provided [perl #94306]. + +=item * + +C<PL_curstash> is now reference-counted. + +=item * + There are now feature bundle hints in C<PL_hints> (C<$^H>) that version declarations use, to avoid having to load F<feature.pm>. One setting of the hint bits indicates a "custom" feature bundle, which means that the @@ -2963,23 +3219,23 @@ =item * -The C<is_gv_magical_sv> function has been eliminated and merged with -C<gv_fetchpvn_flags>. It used to be called to determine whether a GV -should be autovivified in rvalue context. Now it has been replaced with a -new C<GV_ADDMG> flag (not part of the API). +Two new functions C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> have +been added. These are the same as C<utf8_to_uvchr> and +C<utf8_to_uvuni> (which are now deprecated), but take an extra parameter +that is used to guard against reading beyond the end of the input +string. +See L<perlapi/utf8_to_uvchr_buf> and L<perlapi/utf8_to_uvuni_buf>. =item * -Padlists are now marked C<AvREAL>; i.e., reference-counted. They have -always been reference-counted, but were not marked real, because F<pad.c> -did its own clean-up, instead of using the usual clean-up code in F<sv.c>. -That caused problems in thread cloning, so now the C<AvREAL> flag is on, -but is turned off in F<pad.c> right before the padlist is freed (after -F<pad.c> has done its custom freeing of the pads). +The regular expression engine now does TRIE case insensitive matches +under Unicode. This may change the output of C<< use re 'debug'; >>, +and will speed up various things. =item * -All the C files that make up the Perl core have been converted to UTF-8. +There is a new C<wrap_op_checker()> function, which provides a thread-safe +alternative to writing to C<PL_check> directly. =back