This is a live mirror of the Perl 5 development currently hosted at
11 years agoTODO test for $AUTOLOAD with XS AUTOLOAD
Steffen Mueller [Wed, 12 Oct 2011 01:20:06 +0000 (18:20 -0700)]

If an AUTOLOAD sub is an XSUB, $AUTOLOAD won't be set. This is intended
as an optimization, but $AUTOLOAD *was* set back in 5.6.0, so this is
a regression.

Committer’s note: I modified the commit message and the comments, as
the original author did not know about the autoload mechanism setting
CvSTASH.  For that matter, neither did I till yesterday.

11 years agoSSize_t, not IV, is a signed STRLEN
Chip Salzenberg [Wed, 12 Oct 2011 00:30:29 +0000 (17:30 -0700)]
SSize_t, not IV, is a signed STRLEN

11 years ago[perl #30661] autoload sort subs
Father Chrysostomos [Tue, 11 Oct 2011 21:07:44 +0000 (14:07 -0700)]
[perl #30661] autoload sort subs

11 years agomro.c: Oops, missing a =cut
Father Chrysostomos [Tue, 11 Oct 2011 19:48:33 +0000 (12:48 -0700)]
mro.c: Oops, missing a =cut

11 years agoEliminate (X|F) convention from perldiag.
Father Chrysostomos [Tue, 11 Oct 2011 15:41:30 +0000 (08:41 -0700)]
Eliminate (X|F) convention from perldiag.

Commit 748a930 (perl 5.001) introduced the (W)(S) convention in
perldiag, for messages under multiple categories.  (There were none
before that.)

Commit 55497cf (inseparable changes from patch from perl5.003_07 to
perl5.003_08) introduced the (X|F) convention.  There have been two
ever since.

This commit makes perldiag consistently use the original (5.001)

11 years agoCorrected: 'possible a' => 'possibly a'
Alan Haggai Alavi [Tue, 11 Oct 2011 13:43:19 +0000 (19:13 +0530)]
Corrected: 'possible a' => 'possibly a'

Signed-off-by: David Golden <>
11 years agoCorrected: 'filehanlde' => 'filehandle'
Alan Haggai Alavi [Tue, 11 Oct 2011 13:35:50 +0000 (19:05 +0530)]
Corrected: 'filehanlde' => 'filehandle'

Signed-off-by: David Golden <>
11 years agoCorrected: 'can made' => 'can be made'
Alan Haggai Alavi [Tue, 11 Oct 2011 13:35:25 +0000 (19:05 +0530)]
Corrected: 'can made' => 'can be made'

Signed-off-by: David Golden <>
11 years agoCorrected: 'Zeus for Window' => 'Zeus for Windows'
Alan Haggai Alavi [Sat, 8 Oct 2011 09:02:54 +0000 (14:32 +0530)]
Corrected: 'Zeus for Window' => 'Zeus for Windows'

Signed-off-by: David Golden <>
11 years agoMake sv_set[ps]v(cv...) set prototype
Father Chrysostomos [Tue, 11 Oct 2011 12:54:57 +0000 (05:54 -0700)]
Make sv_set[ps]v(cv...) set prototype

The SvPVX slot of a CV is used both for the prototype and for the sub
name passed to an XS AUTOLOAD sub.

It used to be that such AUTOLOADing would clobber the prototype.

Commit 8fa6a4095 made the two uses of SvPVX try to play along nicely
with each other, so the prototype comes after the sub name if both
need to be present.  It added the CvPROTO macro to account for that.

Some CPAN modules expect to be able to set the prototype with
sv_set[ps]v.  So this commit makes that work as expected, by turn-
ing off the flag that says the prototype comes after the auto-
loaded sub name.

Anyone using Scalar::Util::set_prototype to work around the proto-
type-clobbering bug can now continue to do so, without triggering
a new bug.

11 years agoadd missing STATIC to S_finalize_op
David Mitchell [Tue, 11 Oct 2011 10:01:35 +0000 (11:01 +0100)]
add missing STATIC to S_finalize_op

This function was declared static in embed.fnc, but the actual function
definition was missing the 'STATIC'.

11 years agoXS::APItest: s/justinc/justisa/
Father Chrysostomos [Tue, 11 Oct 2011 06:51:53 +0000 (23:51 -0700)]
XS::APItest: s/justinc/justisa/

I meant to call this mro ‘just @ISA’, because it just uses @ISA and
no super-superclasses.  But I misnamed it.  It has nothing to do
with @INC.

11 years agoAlso add repaired variants for CV and SVREF typemaps
Steffen Mueller [Sun, 9 Oct 2011 20:00:21 +0000 (22:00 +0200)]
Also add repaired variants for CV and SVREF typemaps

11 years agoA repaired, properly refcounting AV&HV typemap
Steffen Mueller [Sun, 9 Oct 2011 18:34:29 +0000 (20:34 +0200)]
A repaired, properly refcounting AV&HV typemap

in place of T_AVREF/T_HVREF. They do away with having to remember
to decrement refcounts manually.

11 years ago[perl #94306] Do not skip first elem of linear isa
Father Chrysostomos [Tue, 11 Oct 2011 06:31:55 +0000 (23:31 -0700)]
[perl #94306] Do not skip first elem of linear isa

Perl has assumed up till now that the first element of an isa linear-
isation is the name of the class itself.  That is true for dfs and c3,
but not requiring that makes it easier for plugin authors.

Since various parts of the mro code make that assumption, this commit
copies the AV returned by mro_alg.resolve to a new one beginning with
the class’s own name, if the original AV did not include it.

11 years agoDocument calling convention for Perl_mro_register
Father Chrysostomos [Tue, 11 Oct 2011 06:28:19 +0000 (23:28 -0700)]
Document calling convention for Perl_mro_register

I had to look in embed.fnc to find this out when I wanted to use it.

11 years agoStop attribute errors from leaking op trees
Father Chrysostomos [Tue, 11 Oct 2011 05:30:18 +0000 (22:30 -0700)]
Stop attribute errors from leaking op trees

This commit moves attribute handling in newATTRSUB so that it happens
after the op tree is attached to the sub.  So when the sub is freed,
the op tree goes with it, instead af leaking when an attribute han-
dler dies.

Witness what happens without that:

$ PERL_DESTRUCT_LEVEL=2 ./perl -Ilib -le 'BEGIN {$^H{a}="b"}; sub foo:bar{1}'
Invalid CODE attribute: bar at -e line 1
BEGIN failed--compilation aborted at -e line 1.
Unbalanced string table refcount: (1) for "a" at (null) line 1 during global destruction.

It was the ‘Unbalanced string table’ warnings that alerted me to the
problem.  The fairly new t/uni/attrs.t happens to trigger this bug.

Not that this told me anything, but I did a binary search which lead
me to this commit:

commit b3ca2e834c3607fd8aa8736a51aa3a2b8bba1044
Author: Nicholas Clark <>
Date:   Fri Mar 31 13:45:57 2006 +0000

    Serialise changes to %^H onto the current COP. Return the compile time
    state of %^H as an eleventh value from caller. This allows users to
    write pragmas.

That commit started indirectly storing HEKs in cops (in the hints
hash), which means we have an easy way to tell when ops are leaking.

11 years agounder DEBUGGING, minimize the sentinels written in sv_chop, to avoid substr slowdown
Chip Salzenberg [Tue, 11 Oct 2011 02:39:14 +0000 (19:39 -0700)]
under DEBUGGING, minimize the sentinels written in sv_chop, to avoid substr slowdown

11 years agotweak sv_chop pod
Chip Salzenberg [Tue, 11 Oct 2011 02:03:18 +0000 (19:03 -0700)]
tweak sv_chop pod

11 years agodo not return useless value from void-context substr
Chip Salzenberg [Tue, 11 Oct 2011 01:59:42 +0000 (18:59 -0700)]
do not return useless value from void-context substr

11 years agoI32 may not be big enough for string insert length
Chip Salzenberg [Tue, 11 Oct 2011 01:57:56 +0000 (18:57 -0700)]
I32 may not be big enough for string insert length

11 years agoAvoid creating extra SVs in gv_fullname4
Father Chrysostomos [Mon, 10 Oct 2011 23:23:10 +0000 (16:23 -0700)]
Avoid creating extra SVs in gv_fullname4

11 years agoFix cv-to-gv assignment to use CvPROTO
Father Chrysostomos [Mon, 10 Oct 2011 21:36:53 +0000 (14:36 -0700)]
Fix cv-to-gv assignment to use CvPROTO

The SvPVX field of a XS AUTOLOAD sub can contain both the prototype
and the name of an AUTOLOADed sub.  The CvPROTO macro knows where in
the buffer to find the prototype.  All code that reads the prototype
should use it.  When I introduced it with commit 8fa6a4095, one code
path was missed: *regular_prototyped_sub = \&prototyped_XS_AUTOLOAD
was using the sub name of the rhs, instead of the prototype, in the
prototype check.

11 years agogv.c:gv_autoload_pvn: Avoid warning due to temp flag
Father Chrysostomos [Mon, 10 Oct 2011 21:12:22 +0000 (14:12 -0700)]
gv.c:gv_autoload_pvn: Avoid warning due to temp flag

11 years agoResolve XS AUTOLOAD-prototype conflict
Father Chrysostomos [Mon, 10 Oct 2011 05:57:56 +0000 (22:57 -0700)]
Resolve XS AUTOLOAD-prototype conflict

Did you know that a subroutine’s prototype can be modified with s///?
Don’t look:

    *AUTOLOAD = *Internals'SvREFCNT;
    my $f = "Just another "; eval{main->$f};
    print prototype AUTOLOAD;
    $f =~ s/Just another /Perl hacker,\n/;
    print prototype AUTOLOAD;

You did look, didn’t you?  You must admit that’s creepy.

The problem goes back to this:

commit adb5a9ae91a0bed93d396bb0abda99831f9e2e6f
Author: Doug MacEachern <>
Date:   Sat Jan 6 01:30:05 2001 -0800

    [patch] xsub AUTOLOAD fix/optimization
    Message-ID: <>

    Allow AUTOLOAD to be an xsub and allow such xsubs
    to avoid use of $AUTOLOAD.

    p4raw-id: //depot/perl@8362

which includes this:

+    if (CvXSUB(cv)) {
+        /* rather than lookup/init $AUTOLOAD here
+         * only to have the XSUB do another lookup for $AUTOLOAD
+         * and split that value on the last '::',
+         * pass along the same data via some unused fields in the CV
+         */
+        CvSTASH(cv) = stash;
+        SvPVX(cv) = (char *)name; /* cast to loose constness warning */
+        SvCUR(cv) = len;
+        return gv;
+    }

That ‘unused’ field is not unused.  It’s where the prototype is
stored.  So, not only is it clobbering the prototype, it’s also leak-
ing it by assigning over the top of SvPVX.  Furthermore, it’s blindly
assigning someone else’s string, which could be freed before it’s
even used.

Since it has been documented for a long time that SvPVX contains the
name of the AUTOLOADed sub, and since the use of SvPVX for prototypes
is documented nowhere, we have to preserve the former.

So this commit makes the prototype and the sub name share the same
buffer, in a manner resembling that which CvFILE used before I changed
it with bad4ae38.

There are two new internal macros, CvPROTO and CvPROTOLEN for retriev-
ing the prototype.

11 years agoTests for XS AUTOLOAD routines
Father Chrysostomos [Sun, 9 Oct 2011 06:55:04 +0000 (23:55 -0700)]
Tests for XS AUTOLOAD routines

11 years agoFix up pad_check_dup entry in perlintern
Father Chrysostomos [Sun, 9 Oct 2011 06:31:07 +0000 (23:31 -0700)]
Fix up pad_check_dup entry in perlintern

When the pad API was added, the special

   m|pad_check_dup|SV *name|U32 flags|const HV *ourstash

sequence was added to pad.c, but that is unnecessary as it is listed
in embed.fnc.  Also it is not correct, as the name of the function is
in the return value field.

So this restore it back to the simple ‘=for apidoc pad_check_dup’.

The description of the function was in plain text like this:

Check for duplicate declarations: report any of:
     * a my in the current scope with the same name;
     * an our (anywhere in the pad) with the same name and the same stash
       as C<ourstash>
C<is_our> indicates that the name to check is an 'our' declaration

which gets rewrapped in rendered pod.  So this patch changes it to use
a verbatim block (as doesn’t seem to like pod lists).

11 years agoUpdate docs for XS AUTOLOAD
Father Chrysostomos [Sun, 9 Oct 2011 05:23:50 +0000 (22:23 -0700)]
Update docs for XS AUTOLOAD

This mentions the UTF8 flag and moves the discussion to perlapi, where
it belongs, IMHO.

11 years agoUpdate Unicode-Collate to CPAN version 0.80
Chris 'BinGOs' Williams [Sun, 9 Oct 2011 20:43:39 +0000 (21:43 +0100)]
Update Unicode-Collate to CPAN version 0.80


  0.80  Sun Oct  9 21:00:21 2011
    - U::C::Locale newly supports locales: bs, hi, kn, kok, ln.
    - added loc_bs.t, loc_hi.t, loc_kn.t, loc_kok.t, loc_ln.t in t.
    - updated some locales to CLDR 2.0 : ha, hr, kk, lt.

  0.79  Sun Oct  2 20:31:01 2011
    - pod: [ #70241] Fix minor grammar error in manpage
            by Harlan Lieberman-Berg.
    - 'suppress' no longer affects contractions via 'entry'.
    - U::C::Locale newly supports locales: as, fi__phonebook, gu.
    - added loc_as.t, loc_fiph.t, loc_gu in t.
    - updated some locales to CLDR 2.0 : ar, be, bg.

11 years needs the libpth mutli-arch search logic.
Nicholas Clark [Sun, 9 Oct 2011 12:32:05 +0000 (14:32 +0200)] needs the libpth mutli-arch search logic.

Without this, Configure can't find on mutli-arch Linux systems.

11 years agoperldelta: s/nul\k/l/g
Father Chrysostomos [Sat, 8 Oct 2011 20:20:47 +0000 (13:20 -0700)]
perldelta: s/nul\k/l/g

Other parts of the documentation already refer to it as a
‘null byte’ or ‘null’, which looks much nicer, as it is a
real English word.

11 years agoCorrect SvEND docs
Father Chrysostomos [Sat, 8 Oct 2011 20:22:13 +0000 (13:22 -0700)]
Correct SvEND docs

SvEND does not point to the last character, but to a spot
just after it.

11 years agoRewrite sv_catsv to pass SV_CAT* flags to sv_catpvn
Father Chrysostomos [Sat, 8 Oct 2011 13:09:38 +0000 (06:09 -0700)]
Rewrite sv_catsv to pass SV_CAT* flags to sv_catpvn

(Both functions actually end with _flags, but I’m trying to keep the
first line short.)

Now that sv_catpvn_flags has this functionality (as of c682ebef86),
sv_catsv can use it, which avoids creating an extra SV for the
utf8+bytes case and removes some duplicate logic.

Also, one code path in sv_utf8_upgrade_flags_grow was ignore the
_grow, causing crashes after the sv_catsv change, so this patch fixes
that, too.

Also, sv_catpvn_flags was not allocating a byte for the trailing
nul, which was entirely my fault (c682ebef86).  So that is hereby
fixed as well.

11 years agomro.c:S_gather_and_rename: Avoid extra SVs
Father Chrysostomos [Sat, 8 Oct 2011 13:38:29 +0000 (06:38 -0700)]
mro.c:S_gather_and_rename: Avoid extra SVs

11 years agoDont’t crash when warning about XSUB redefinition
Father Chrysostomos [Sat, 8 Oct 2011 20:02:46 +0000 (13:02 -0700)]
Dont’t crash when warning about XSUB redefinition

If the stash in question has no name, the attempt to generate the
warning will cause a crash.

Simply skipping the warning is this case is fine, as this is will into
‘undefined’ territory (but it still shouldn’t crash).

11 years agoperldelta: Document fix for not matching non-Unicode \p{}
Karl Williamson [Sat, 8 Oct 2011 15:49:43 +0000 (09:49 -0600)]
perldelta: Document fix for not matching non-Unicode \p{}

This documentes commit 0bda3001dd6310abfca950134ed78f6192d3d8a7

11 years agoTweak the documentation for
Nicholas Clark [Sat, 8 Oct 2011 08:05:57 +0000 (10:05 +0200)]
Tweak the documentation for

Use F<> consistently when describing files. Remove --target=perl from an
example in the synopsis.

11 years agoUse full sym name in isIDFIRST_utf8 to fix [perl #100930]
Father Chrysostomos [Sat, 8 Oct 2011 01:03:20 +0000 (18:03 -0700)]
Use full sym name in isIDFIRST_utf8 to fix [perl #100930]

_is_utf8__perl_idstart is not an API function, so the short
_is_utf8__perl_idstart form cannot be used in public macros.
The long form (Perl__is_utf8__perl_idstart) must be used.

11 years disables building DB_File if it can't patch the XS code.
Nicholas Clark [Fri, 7 Oct 2011 22:51:49 +0000 (00:51 +0200)] disables building DB_File if it can't patch the XS code.

Automatically disable the build of DB_File for commits earlier than
ccb44e3bf3be2c30, as it's not practical to patch DB_File 1.70 and earlier
to build with current Berkeley DB headers.

This can be overridden with -Unoextensions

This should now permit building to 'test_prep' on systems with Berkeley DB
installed, for 5.005_62 and earlier.

11 years now emulates -Dnoextensions if Configure doesn't provide it.
Nicholas Clark [Fri, 7 Oct 2011 22:17:36 +0000 (00:17 +0200)] now emulates -Dnoextensions if Configure doesn't provide it.

11 years agoDon’t put malformed UTF8 in $AUTOLOAD
Father Chrysostomos [Fri, 7 Oct 2011 20:44:37 +0000 (13:44 -0700)]
Don’t put malformed UTF8 in $AUTOLOAD

11 years agoRemoving modules should include updating references
Father Chrysostomos [Fri, 7 Oct 2011 20:29:32 +0000 (13:29 -0700)]
Removing modules should include updating references

11 years needs to set @paths correctly on 32 bit Linux
Nicholas Clark [Fri, 7 Oct 2011 21:07:50 +0000 (23:07 +0200)] needs to set @paths correctly on 32 bit Linux

Without this, Configure may fail prior to commit 1cfa4ec74d4933da (which
added the 'ignore_versioned_solibs' logic), because's code
to set libs relies on successfully finding at least one library to pass to
./Configure with -Dlibs=

miniperl and perl should now build back to perl-5.000 on 32 bit Linux.
test_prep may not work, as early versions of DB_File.xs will fail if a
new db.h is found.

11 years should add db4 compatibility to DB_File.xs where possible.
Nicholas Clark [Fri, 7 Oct 2011 20:23:57 +0000 (22:23 +0200)] should add db4 compatibility to DB_File.xs where possible.

Without this it won't build if db.h is found, but it's "too new" for the
checked-out vintage XS code.

Tweak apply_patch() to print out any patch that fails to apply. This helps
with debugging patches generated dynamically by

11 years must build before Unicode::Normalize.
Nicholas Clark [Fri, 7 Oct 2011 19:08:57 +0000 (21:08 +0200)] must build before Unicode::Normalize.

The Makefile.PL for Unicode::Normalize needs lib/unicore/
Even without a parallel build, we need a dependency to ensure that it builds
first. This problem was solved in blead with commit 9f3ef600c170f61e.

11 years agorenumber SVpad_STATE and free a bit in SvFLAGS
David Mitchell [Fri, 7 Oct 2011 19:01:08 +0000 (20:01 +0100)]
renumber SVpad_STATE and free a bit in SvFLAGS

SVpad_STATE is only used on SVs which hold PAD names; make it share the
same flags bit as SVprv_WEAKREF/SVf_IVisUV. Together with the previous
commit, this frees up a single bit in SvFLAGS, 0x00010000.

11 years agomake SVs_PADTMP and SVs_PADSTALE share a bit
David Mitchell [Fri, 7 Oct 2011 14:38:56 +0000 (15:38 +0100)]
make SVs_PADTMP and SVs_PADSTALE share a bit

SVs_PADSTALE is only meaningful with SVs_PADMY, while
SVs_PADTMP is only meaningful with !SVs_PADMY,
so let them share the same flag bit.

Note that this doesn't yet free a bit in SvFLAGS, as the two
bits are also used for SVpad_STATE, SVpad_TYPED.

(This is is follow-on to 62bb6514085e5eddc42b4fdaf3713ccdb7f1da85.)

11 years agoUse HEKf
Father Chrysostomos [Fri, 7 Oct 2011 18:39:50 +0000 (11:39 -0700)]
Use HEKf

This avoids creating a lot of temporary SVs.

11 years agoHEKf256 format
Father Chrysostomos [Fri, 7 Oct 2011 17:00:24 +0000 (10:00 -0700)]
HEKf256 format

11 years agoTeach porting/diag.t about HEKf
Father Chrysostomos [Fri, 7 Oct 2011 16:49:13 +0000 (09:49 -0700)]
Teach porting/diag.t about HEKf

11 years agoHEKf format
Father Chrysostomos [Fri, 7 Oct 2011 16:47:51 +0000 (09:47 -0700)]
HEKf format

11 years agoIn, "patch" ext/IPC/SysV/SysV.xs to the current SHMLBA code.
Nicholas Clark [Fri, 7 Oct 2011 13:33:31 +0000 (15:33 +0200)]
In, "patch" ext/IPC/SysV/SysV.xs to the current SHMLBA code.

For some historical revisions, it's not good enough simply taking out the
first #include <asm/page.h>, because other code changes in that area can
break the build. Instead, replace any old version of that #ifdef forest with
the current code. Additionally, do this editing unconditionally, even if the
target is "miniperl". Skipping it on target "miniperl" causes surprises if
one is trying to debug the build by getting to build to
miniperl (or skip), and then using make lib/auto/IPC/SysV/
as the test case.

This adds an edit_file() function. Move apply_patch() next to it, to group
related functions together.

11 years agouse SSize_t for string offsets instead of int or socklen_t
Tony Cook [Fri, 7 Oct 2011 09:45:05 +0000 (20:45 +1100)]
use SSize_t for string offsets instead of int or socklen_t

Note: while I discovered the incorrect types while investigating [perl
described in that report, so I don't consider this a fix for that bug.

Unfortunately to test this change I'd need a scalar at least 2G in
size, which unreasonable for a test we run on each install.

Tested manually on a machine with plenty of memory:


[tonyc@dromedary perl]$ echo foo | ./perl -le '$x = ""; read(STDIN, $x, 4, 5000000000); print length $x'


[tonyc@dromedary perl]$ echo foo | ./perl -le '$x = ""; read(STDIN, $x, 4, 5000000000); print length $x'

11 years agodocument the behaviour of negative klen for hv_fetch and friends
Tony Cook [Fri, 7 Oct 2011 09:17:02 +0000 (20:17 +1100)]
document the behaviour of negative klen for hv_fetch and friends

This interface is unfortunate, but it's there and in use.

11 years agoperldelta up to c60dbbc38
Father Chrysostomos [Fri, 7 Oct 2011 07:02:04 +0000 (00:02 -0700)]
perldelta up to c60dbbc38

11 years agoSuppress some uninit warnings in gv.c:S_maybe_add_coresub
Father Chrysostomos [Fri, 7 Oct 2011 06:08:13 +0000 (23:08 -0700)]
Suppress some uninit warnings in gv.c:S_maybe_add_coresub

Suprisingly, gcc figured out that these were never used uninitialised
when I had the body of this function as part of gv_fetchpvn_flags, but
now it has trouble recognising that fact.

11 years agoCast to signed before negating, to avoid compiler warnings
Brian Fraser [Fri, 7 Oct 2011 05:17:33 +0000 (22:17 -0700)]
Cast to signed before negating, to avoid compiler warnings

11 years agoClarification in perlre.pod about captures created inside a DEFINE
Brian Fraser [Fri, 7 Oct 2011 03:12:38 +0000 (00:12 -0300)]
Clarification in perlre.pod about captures created inside a DEFINE

11 years agoperldelta up to 59c72abb9
Father Chrysostomos [Fri, 7 Oct 2011 03:22:47 +0000 (20:22 -0700)]
perldelta up to 59c72abb9

11 years agoMake undef %overload:: test more likely to crash
Father Chrysostomos [Fri, 7 Oct 2011 03:19:09 +0000 (20:19 -0700)]
Make undef %overload:: test more likely to crash

I think I omitted the blessing by mistake.  Taken alone, this
block does not crash in earlier versions without the bless.

11 years agoIncrease $DynaLoader'VERSION from 1.13 to 1.14,
Father Chrysostomos [Fri, 7 Oct 2011 01:33:46 +0000 (18:33 -0700)]
Increase $DynaLoader'VERSION from 1.13 to 1.14,

in view of 2e3468793982.

11 years agoRemove "8-bit" reference from ord documentation
John P Linderman [Fri, 7 Oct 2011 02:04:38 +0000 (20:04 -0600)]
Remove "8-bit" reference from ord documentation

for additional background.

11 years agoSet PERL_DL_NONLAZY in t/TEST to check existence of all symbols
Gerard Goossen [Tue, 24 Nov 2009 10:07:52 +0000 (11:07 +0100)]
Set PERL_DL_NONLAZY in t/TEST to check existence of all symbols

11 years agoMerge support for UTF8 symbols
Father Chrysostomos [Thu, 6 Oct 2011 20:02:12 +0000 (13:02 -0700)]
Merge support for UTF8 symbols

This branch makes symbols support UTF8 internally, which means that
Unicode is supported properly at the perl level.  So ${"\xff"} will
give you the same scalar, regardless of the internal encoding of the
string.  Also, many  parts of the core are now nul-clean, too, as a
result of the UTF8 changes, which means that ‘$m = "a\0b"; foo->$m’
will try to call the method named "a\0b", instead of just "a".
Details follow.

• New API functions:
  Many of these take a _flags parameter, which accept the
  SVf_UTF8 flag.
  • gv_init_pv(n)/sv
  • gv_fetchmeth_pv(n)/sv
  • gv_fetchmeth_pv(n)/sv_autoload
  • gv_fetchmethod_pv(n)/sv_flags — may change
  • gv_autoload_pv(n)/sv
  • newGVgen_flags
  • sv_derived_from_pv(n)/sv
  • sv_does_pv(n)/sv
  • whichsig_pv(n)/sv
• New internal functions:
  • CopSTASH_flags
  • CopSTASH_flags_set
  • PmopSTASH_flags
  • PmopSTASH_flags_set
  • sv_sethek
• Parts of Perl that handle Unicode symbol names correctly:
  • Method names (including those passed to ‘use overload’)
  • Typeglob names (including variable and filehandle names)
  • Package names
  • Constant subroutine names (not nul-clean yet)
  • goto
  • Symbolic dereferencing
  • Second argument to bless() and tie()
  • Return value of ref()
  • Package names returned by caller()
  • Subroutine prototypes
  • Attributes
  • Warnings and error messages that mention filehandles, packages,
    methods, variables, constant values, subroutines, symbolic refer-
    ences, format names and subroutine prototypes
• Parts of Perl that now handle embedded nuls correctly:
  • Method names
  • Typeglob names (including filehandle names)
  • Package names
  • Autoloading
  • Return value of ref()
  • Package names returned by caller()
  • Filehandle warnings
  • Typeglob elements (*foo{"THING\0stuff"})
  • Signal names
  • Warnings and error messages that mention (yes, it’s the same list
    as above) filehandles, packages, methods, variables, constant val-
    ues, subroutines, symbolic references, format names and subroutine
• Other bug fixes
  • *{é} now treats é as the name of the glob (the usual implicit
    quoting), instead of treating it as a bareword (strict-unsafe)
    or function call.  *{é} used to be equivalent to *{+é}, in
    other words.
• Modified modules:
  • constant has been modified not to apply the workaround for the bug
    that this branch fixes, if that workaround does not apply.
  • attributes has been modified as part of making Unicode attri-
    butes work.
  • XS::APItest
  • mro, as part of making method lookup account for Unicode.
• Side effects
  • Blessing into "\0" no longer causes ref() to return false.
  • *{"*é::..."} is now equivalent to *{"é::..."}, just as
    *{"*e::..."} is equivalent to *{"e::..."}.  Previously, the * was
    only stripped if followed by [A-Za-z].
  • $é is now subject to ‘Used only once’ warnings.  It used to be
    exempt, as the code that checked the named considered it a punctu-
    ation variable.

11 years agoCorrect skip counts for miniperl
Father Chrysostomos [Thu, 6 Oct 2011 15:46:35 +0000 (08:46 -0700)]
Correct skip counts for miniperl

11 years agoIncrease $mro::VERSION from 1.08 to 1.09
Father Chrysostomos [Thu, 6 Oct 2011 07:10:06 +0000 (00:10 -0700)]
Increase $mro::VERSION from 1.08 to 1.09

11 years agoIncrease $attributes::VERSION from 0.16 to 0.17
Father Chrysostomos [Thu, 6 Oct 2011 07:09:30 +0000 (00:09 -0700)]
Increase $attributes::VERSION from 0.16 to 0.17

11 years agoIncrease $XS::APItest::VERSION from 0.31 to 0.32
Father Chrysostomos [Thu, 6 Oct 2011 07:08:59 +0000 (00:08 -0700)]
Increase $XS::APItest::VERSION from 0.31 to 0.32

11 years agoIncrease $constant::VERSION from 1.22 to 1.23
Father Chrysostomos [Thu, 6 Oct 2011 07:08:28 +0000 (00:08 -0700)]
Increase $constant::VERSION from 1.22 to 1.23

11 years agouni/universal.t tests passing
Father Chrysostomos [Thu, 6 Oct 2011 06:32:16 +0000 (23:32 -0700)]
uni/universal.t tests passing

11 years agoRewrite -l warning test to account for 433644eed
Father Chrysostomos [Thu, 6 Oct 2011 06:31:52 +0000 (23:31 -0700)]
Rewrite -l warning test to account for 433644eed

11 years agoRestore whichsig to the list in perlapi
Father Chrysostomos [Thu, 6 Oct 2011 05:26:00 +0000 (22:26 -0700)]
Restore whichsig to the list in perlapi

11 years agowhichsig nul-cleanup.
Brian Fraser [Fri, 30 Sep 2011 20:48:58 +0000 (13:48 -0700)]
whichsig nul-cleanup.

This adds _pv, _pvn, and _pv versions of whichsig() in mg.c, which
get both kill "NAME" and %SIG lookup nul-clean.

11 years agotoke.c, ext/attributes/attributes.xs: Make attributes UTF-8 clean.
Brian Fraser [Fri, 22 Jul 2011 17:16:42 +0000 (18:16 +0100)]
toke.c, ext/attributes/attributes.xs: Make attributes UTF-8 clean.

11 years agoop.c: Scalar filehandles in errors UTF8 cleanup.
Brian Fraser [Fri, 30 Sep 2011 20:26:26 +0000 (13:26 -0700)]
op.c: Scalar filehandles in errors UTF8 cleanup.

11 years agoModify S_pending_ident to use sv_catpvn_flags
Father Chrysostomos [Fri, 30 Sep 2011 19:15:09 +0000 (12:15 -0700)]
Modify S_pending_ident to use sv_catpvn_flags

with the new SV_CAT* constants, since that’s faster than creating an
SV to pass to sv_catsv.

11 years agoTODO tests for parsing our() now pass
Brian Fraser [Thu, 6 Oct 2011 05:16:32 +0000 (22:16 -0700)]
TODO tests for parsing our() now pass

11 years agoOust cv_ckproto_len
Father Chrysostomos [Fri, 30 Sep 2011 19:10:51 +0000 (12:10 -0700)]
Oust cv_ckproto_len

It is no longer used in core (having been superseded by
cv_ckproto_len_flags), is unused on CPAN, and is not part of the API.

The cv_ckproto ‘public’ macro is modified to use the _flags version.
I put ‘public’ in quotes because, even before this commit, cv_ckproto
was using a non-exported function, and hence could never have worked
on a strict linker (or whatever you call it).

11 years agotoke.c, op.c, sv.c: Prototype parsing and checking are nul-and-UTF8 clean.
Brian Fraser [Fri, 30 Sep 2011 13:25:45 +0000 (06:25 -0700)]
toke.c, op.c, sv.c: Prototype parsing and checking are nul-and-UTF8 clean.

This means that eval "sub foo ($;\0whoops) { say @_  }" will correctly
include \0whoops in the CV's prototype (while complaining about illegal
characters), and that

use utf8;
BEGIN { $::{"foo"} = "\$\0L\351on" }
BEGIN { eval "sub foo (\$\0L\x{c3}\x{a9}on) {};"; }

will not warn about a mismatched prototype.

11 years agogv.c, op.c, pp.c: Stash-injected prototypes and prototype() are UTF-8 clean.
Brian Fraser [Mon, 11 Jul 2011 17:50:10 +0000 (18:50 +0100)]
gv.c, op.c, pp.c: Stash-injected prototypes and prototype() are UTF-8 clean.

This makes perl -E '$::{example} = "\x{30cb}"; say prototype example;'
store and fetch the correctly flagged prototype.

With this, all TODO tests in gv.t pass; The next commit will deal
with making the parsing of prototypes nul-clean.

11 years agopp.c: Got pp_gelem nul-clean.
Brian Fraser [Mon, 11 Jul 2011 17:17:32 +0000 (18:17 +0100)]
pp.c: Got pp_gelem nul-clean.

11 years agotoke.c: Some simple mending to get readline() working with UTF-8 filehandles
Brian Fraser [Sun, 10 Jul 2011 11:20:26 +0000 (08:20 -0300)]
toke.c: Some simple mending to get readline() working with UTF-8 filehandles

11 years agopp_sys.c: pp_select UTF8 cleanup.
Brian Fraser [Sun, 10 Jul 2011 11:18:57 +0000 (08:18 -0300)]
pp_sys.c: pp_select UTF8 cleanup.

11 years agoop.c: Malformed prototype warning on UTF8 sub name
Brian Fraser [Thu, 7 Jul 2011 12:25:18 +0000 (09:25 -0300)]
op.c: Malformed prototype warning on UTF8 sub name

11 years agogv.c: Use name_end to avoid compiler warning
Father Chrysostomos [Thu, 6 Oct 2011 05:13:35 +0000 (22:13 -0700)]
gv.c: Use name_end to avoid compiler warning

In this code path, name_cursor could be uninitialised if
gv_fetchpvn_flags is called with GV_NOTQUAL|GV_ADDWARN.  Whenever it
is initialised, it is the same as name_end by the time this part
of the function is reached.

11 years agoglobvar.t: Skip PL_warn_uninit_sv
Father Chrysostomos [Thu, 6 Oct 2011 05:07:07 +0000 (22:07 -0700)]
globvar.t: Skip PL_warn_uninit_sv

Until someone can explain to me why these sorts of things are exported,
I’ll skipping the test.  Nothing is failing for me (yet), and it is
not clear that we want to support this name for ever.

11 years agoFix diag.t failure with diag_listed_as comment
Father Chrysostomos [Thu, 6 Oct 2011 04:45:05 +0000 (21:45 -0700)]
Fix diag.t failure with diag_listed_as comment

11 years agoSeveral TODO tests that now pass.
Brian Fraser [Thu, 6 Oct 2011 03:45:21 +0000 (20:45 -0700)]
Several TODO tests that now pass.

11 years agoutil.c UTF8 cleanup
Brian Fraser [Thu, 7 Jul 2011 09:09:12 +0000 (06:09 -0300)]
util.c UTF8 cleanup

11 years agoMore warnings tests.
Brian Fraser [Thu, 7 Jul 2011 09:01:33 +0000 (06:01 -0300)]
More warnings tests.

11 years agouniversal.c: VERSION UTF8 cleanup
Brian Fraser [Thu, 7 Jul 2011 08:57:57 +0000 (05:57 -0300)]
universal.c: VERSION UTF8 cleanup

11 years agouniversal.c: Make croak_xs_usage account for UTF8
Brian Fraser [Thu, 7 Jul 2011 08:43:43 +0000 (05:43 -0300)]
universal.c: Make croak_xs_usage account for UTF8

11 years ago"Use of uninitialized value..." UTF8 cleanup
Brian Fraser [Thu, 7 Jul 2011 08:36:34 +0000 (05:36 -0300)]
"Use of uninitialized value..." UTF8 cleanup

11 years agogv.c: Make more warnings utf8-clean
Brian Fraser [Thu, 6 Oct 2011 03:42:53 +0000 (20:42 -0700)]
gv.c: Make more warnings utf8-clean

11 years agomro.(c|xs): Make warnings utf8-clean
Brian Fraser [Thu, 7 Jul 2011 07:35:35 +0000 (04:35 -0300)]
mro.(c|xs): Make warnings utf8-clean

11 years agot/uni/gv.t, stringify is clean, remove the TODO
Brian Fraser [Fri, 22 Jul 2011 13:05:11 +0000 (10:05 -0300)]
t/uni/gv.t, stringify is clean, remove the TODO

11 years agoTests for DATA handle in UTF8 packages
Brian Fraser [Fri, 30 Sep 2011 01:27:10 +0000 (18:27 -0700)]
Tests for DATA handle in UTF8 packages

11 years agotoke.c: Take utf8 into account when creating DATA handle
Father Chrysostomos [Fri, 30 Sep 2011 01:23:27 +0000 (18:23 -0700)]
toke.c: Take utf8 into account when creating DATA handle

This is based on work from Brian Fraser, but differs from his original
in that it does not require an intermediate SV.

11 years agoTests for UTF-8 stashes.
Brian Fraser [Fri, 22 Jul 2011 13:10:48 +0000 (10:10 -0300)]
Tests for UTF-8 stashes.

11 years agoTests for package; declarations in UTF-8
Brian Fraser [Fri, 22 Jul 2011 13:10:34 +0000 (10:10 -0300)]
Tests for package; declarations in UTF-8