CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Sun, 27 Jul 2025 18:56:35 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20141217172821
location: https://web.archive.org/web/20141217172821/https://perl5.git.perl.org/perl.git/log
server-timing: captures_list;dur=0.536131, exclusion.robots;dur=0.027003, exclusion.robots.policy;dur=0.012444, esindex;dur=0.011679, cdx.remote;dur=2200.130196, LoadShardBlock;dur=174.202407, PetaboxLoader3.datanode;dur=90.761494
x-app-server: wwwb-app221
x-ts: 302
x-tr: 2412
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: SERVER=wwwb-app221; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Sun, 27 Jul 2025 18:56:37 GMT
content-type: text/html; charset=utf-8
x-archive-orig-date: Wed, 17 Dec 2014 17:28:20 GMT
x-archive-orig-server: Apache/2.2.15 (CentOS)
x-archive-orig-connection: close
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Wed, 17 Dec 2014 17:28:21 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Thu, 25 Dec 2008 07:04:25 GMT", ; rel="prev memento"; datetime="Sun, 09 Nov 2014 04:11:10 GMT", ; rel="memento"; datetime="Wed, 17 Dec 2014 17:28:21 GMT", ; rel="next memento"; datetime="Tue, 01 Aug 2017 20:37:22 GMT", ; rel="last memento"; datetime="Tue, 01 Aug 2017 20:37:22 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: alexa20141218-04/51_43_20141217172751_crawl102.arc.gz
server-timing: captures_list;dur=0.905667, exclusion.robots;dur=0.019876, exclusion.robots.policy;dur=0.010332, esindex;dur=0.010824, cdx.remote;dur=340.494417, LoadShardBlock;dur=491.269434, PetaboxLoader3.resolve;dur=430.339573, PetaboxLoader3.datanode;dur=188.646859, load_resource;dur=265.181333
x-app-server: wwwb-app221
x-ts: 200
x-tr: 1245
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
perl5.git.perl.org Git - perl.git/log
Template::Declare's tests now pass under 5.22-to-be
Remove duplicate apidoc entries
Modify apidoc.pl to warn about duplicate apidoc entries, and
remove duplicates for av_tindex and toLOWER_LC
Modify apidoc.pl to warn about duplicate apidoc entries, and
remove duplicates for av_tindex and toLOWER_LC
update perldelta for UNOP_AUX and OP_MULTIDEREF
INSTALL: warning text has changed
Some text tells you about
Note (probably harmless): No library found for -lsomething
warnings, but the actual warning has now changed to
Warning (mostly harmless): No library found for -lsomething
Some text tells you about
Note (probably harmless): No library found for -lsomething
warnings, but the actual warning has now changed to
Warning (mostly harmless): No library found for -lsomething
Deparse constant Perl subs
Subs like sub f () { 42 } stopped being emitted, probably in
v5.21.3-638-g2eaf799, when such subs started being stored as simple
scalar refs in the stash.
Subs like sub f () { 42 } stopped being emitted, probably in
v5.21.3-638-g2eaf799, when such subs started being stored as simple
scalar refs in the stash.
VMS does have fsync, so configure accordingly.
And has had since roughly the beginning of time, and has even been
using it since right around then in vms/vms.c. But it doesn't work
on read-only filehandles, so skip the test that expects that.
And has had since roughly the beginning of time, and has even been
using it since right around then in vms/vms.c. But it doesn't work
on read-only filehandles, so skip the test that expects that.
Clean up VMS includes in ext/Errno/Errno_pm.PL.
There are currently (and for many years now) no viable alternatives
to the headers that come with the operating system, regardless of
compiler.
There are currently (and for many years now) no viable alternatives
to the headers that come with the operating system, regardless of
compiler.
Obsolete workaround in ext/SDBM_File/sdbm/Makefile.PL.
Hasn't been necessary or relevant for some years.
Hasn't been necessary or relevant for some years.
Add Template::Declare to perl5220delta
for #123364.
for #123364.
Storable.xs: introduce SEEN*_NN
Introduce _NN versions of the SEEN() and SEEN0() macros, that
don't bother to check whether their first arg is null.
The initial motivation for this was to to silence a compiler warning
about a conditional always being true in SEEN(&PL_sv_undef,...), but
I've also applied it to all places in the code where it's clear that the
arg can't be null, e.g.
sv = NEWSV();
SEEN(sv,...);
At it happens, "places where" currently equates to every usage of
SEEN/SEEN0 in the source code.
Introduce _NN versions of the SEEN() and SEEN0() macros, that
don't bother to check whether their first arg is null.
The initial motivation for this was to to silence a compiler warning
about a conditional always being true in SEEN(&PL_sv_undef,...), but
I've also applied it to all places in the code where it's clear that the
arg can't be null, e.g.
sv = NEWSV();
SEEN(sv,...);
At it happens, "places where" currently equates to every usage of
SEEN/SEEN0 in the source code.
perldiag.pod: fix typo
toupper/lower: avoid sign warnings
Perl's toLOWER_LC() etc macros are specified as having U8 arg and return,
while the underlying macro may call the OS's tolower() function which is
int. Stop the compiler warning about mismatched sign in conditional by
casting the result of the OS function.
Perl's toLOWER_LC() etc macros are specified as having U8 arg and return,
while the underlying macro may call the OS's tolower() function which is
int. Stop the compiler warning about mismatched sign in conditional by
casting the result of the OS function.
[perl #123436] installperl patch related to $Config{dlext}
[perl #123438] Wrong comment style in win32/win32.h
[perl #123020] Scalar cx for lhs of void (...)x...
No sane code calls x in void context (except at the end of a subrou-
tine), but we have to handle it anyway.
Previously, the left-hand parenthesized operand to (...)x... would be
evaluated in the context in which the current sub was called. I.e.,
if the last statement in the current sub is called in last context,
then then lhs of (...)x... a hundred lines earlier (say we have a
big sub) is called in list context, even though it is completely
unrelated.
Since the left-hand operand could be called in any of the three con-
texts when x itself was in void context, I could choose whatever I
wanted when making it consistent. Scalar context makes the most sense
to me, because x falls back to string repeat when not in list context,
and because void context makes stack handling complex.
Unfortunately, this does not fix the context if x occurs at the end of
a subroutine. That will be a lot trickier to fix. (Hence, the com-
plex stack handling in pp_repeat must remain.)
No sane code calls x in void context (except at the end of a subrou-
tine), but we have to handle it anyway.
Previously, the left-hand parenthesized operand to (...)x... would be
evaluated in the context in which the current sub was called. I.e.,
if the last statement in the current sub is called in last context,
then then lhs of (...)x... a hundred lines earlier (say we have a
big sub) is called in list context, even though it is completely
unrelated.
Since the left-hand operand could be called in any of the three con-
texts when x itself was in void context, I could choose whatever I
wanted when making it consistent. Scalar context makes the most sense
to me, because x falls back to string repeat when not in list context,
and because void context makes stack handling complex.
Unfortunately, this does not fix the context if x occurs at the end of
a subroutine. That will be a lot trickier to fix. (Hence, the com-
plex stack handling in pp_repeat must remain.)
Don’t ignore rv2gv when deparsing readline
Unlike most handle ops, readline does not implicitly add an rv2gv op.
In fact, there is a difference in behaviour, depending on whether
there is an rv2gv op present. An explicit * (rv2gv) will force vivi-
fication of the typeglob, but ‘readline’ alone won’t vivify it.
So B::Deparse should not ignore the rv2gv kid of readline.
Previously, readline(*$foo) (vivifying) would deparse as <$foo> (non-
ivifying), and readline *{$foo} would deparse as readline do { $foo }
(same behavioural difference again).
Unlike most handle ops, readline does not implicitly add an rv2gv op.
In fact, there is a difference in behaviour, depending on whether
there is an rv2gv op present. An explicit * (rv2gv) will force vivi-
fication of the typeglob, but ‘readline’ alone won’t vivify it.
So B::Deparse should not ignore the rv2gv kid of readline.
Previously, readline(*$foo) (vivifying) would deparse as <$foo> (non-
ivifying), and readline *{$foo} would deparse as readline do { $foo }
(same behavioural difference again).
Deparse: Restore proto checks for coderef2text
This fixes #123435 (I hope).
Before v5.21.6-485-gf2279a6, B::Deparse, when deparsing sub calls,
would look in the stash for a sub with a prototype, and use that
prototype for deparsing. (It would only do this for subs that it
itself is not going to deparse.) That caused this to deparse
incorrectly:
BEGIN {
require Test::More;
is("foo", "foo");
}
Because of the presence of the prototyped &main::is by the time
B::Deparse is invoked, it would deparse the is() sub call without
parentheses, resulting in invalid code.
So I changed it to trust only those subs that it has already deparsed.
Now, with coderef2text, B::Deparse doesn’t deparse any subs except the
one passed to it. So *all* prototype sub calls turn into &foo, break-
ing CPAN tests that expect otherwise. While such tests could be con-
sidered too sensitive, I don’t think that this is necessarily a sane
default for coderef2text.
Ideally we should provide the option to tell coderef2text which
subs to trust, the default being to trust all of them. But for
now I will just implement that default, which means reverting
v5.21.6-485-gf2279a6 *for coderef2text*, but not when deparsing the
main program.
This fixes #123435 (I hope).
Before v5.21.6-485-gf2279a6, B::Deparse, when deparsing sub calls,
would look in the stash for a sub with a prototype, and use that
prototype for deparsing. (It would only do this for subs that it
itself is not going to deparse.) That caused this to deparse
incorrectly:
BEGIN {
require Test::More;
is("foo", "foo");
}
Because of the presence of the prototyped &main::is by the time
B::Deparse is invoked, it would deparse the is() sub call without
parentheses, resulting in invalid code.
So I changed it to trust only those subs that it has already deparsed.
Now, with coderef2text, B::Deparse doesn’t deparse any subs except the
one passed to it. So *all* prototype sub calls turn into &foo, break-
ing CPAN tests that expect otherwise. While such tests could be con-
sidered too sensitive, I don’t think that this is necessarily a sane
default for coderef2text.
Ideally we should provide the option to tell coderef2text which
subs to trust, the default being to trust all of them. But for
now I will just implement that default, which means reverting
v5.21.6-485-gf2279a6 *for coderef2text*, but not when deparsing the
main program.
Deparse.pm: Remove obsolete comment about globals
Knowing that object fields were globals is no longer useful, unless
one is intimately familiar with a very old version of B::Deparse and
wants to find his way around the new one. (Good luck!)
Furthermore, several of these ‘former globals’ were never globals,
because they came after this comment.
Knowing that object fields were globals is no longer useful, unless
one is intimately familiar with a very old version of B::Deparse and
wants to find his way around the new one. (Good luck!)
Furthermore, several of these ‘former globals’ were never globals,
because they came after this comment.
Skip obsolete skip in io_xs.t.
The VAXC compiler and its compatibility library VAXCRTL are long
since obsolete.
The VAXC compiler and its compatibility library VAXCRTL are long
since obsolete.
document + improve ancient optimization in ParseXS
From commit 8990e30710 "perl 5.0 alpha 6". The DESTROY XSUB with T_PTROBJ
as INPUT arg was refusing to obey my custom typemap for T_PTROBJ, but all
other XSUBs followed the custom T_PTROBJ override. Extend this
optimization to other rarely used typemap types and document this behavior.
From commit 8990e30710 "perl 5.0 alpha 6". The DESTROY XSUB with T_PTROBJ
as INPUT arg was refusing to obey my custom typemap for T_PTROBJ, but all
other XSUBs followed the custom T_PTROBJ override. Extend this
optimization to other rarely used typemap types and document this behavior.
Deparse: Stop =~ QR_CONST from dropping flags
Add B::REGEXP::compflags
Deparse.pm: Two more matchwords
This is *highly* important. :-)
This is *highly* important. :-)
deparse-skips.txt: op/getpid.t fails
deparse-skips.txt: More passing tests
Deparse system-BLOCK correctly
Same with exec. Don’t put ‘do’ before the block.
This was accomplished by running it through the same code path
(indirop) that print and sort already go through.
There was a slight discrepancy between listop and indirop in the way
they handled no arguments. Before we would get:
() = system;
() = exec;
() = sort();
Instead of making the first two get the redundant parentheses, I
changed indirop, so sort lost them.
Same with exec. Don’t put ‘do’ before the block.
This was accomplished by running it through the same code path
(indirop) that print and sort already go through.
There was a slight discrepancy between listop and indirop in the way
they handled no arguments. Before we would get:
() = system;
() = exec;
() = sort();
Instead of making the first two get the redundant parentheses, I
changed indirop, so sort lost them.
deparse-skips.txt: eval tests pass
deparse-skips.txt: Skip reason for op/each.t
pp_readline: Don’t set PL_last_in_gv to &PL_sv_undef
Code elsewhere assumes it is always a GV or NULL:
readline "foo";
my $lastfh = "${^LAST_FH}";
Code elsewhere assumes it is always a GV or NULL:
readline "foo";
my $lastfh = "${^LAST_FH}";
add cpan/Test-Simple/t/Behavior/subtest_die.t to MANIFEST
perl.pod: Use consistent perldelta order
perl.pod: Line things up vertically
Import perl5184delta
Test-Simple Version Bump, 1.301001_090 (RC10)
Don’t set PadlistMAXNAMED for single-char entries
This fixes perl #123430.
Single-character entries like "$" and "&" are not actually named
entries, but are partially treated as such for the sake of bookkeeping
and scope. (E.g., a flipflop target must have the same lifetime as a
state variable.)
PadlistMAXNAMED is an optimisation that marks the offset of the high-
est pad slot with a name. If there any many anonymous pad slots after
the last named one, we don’t want to search through them when looking
up a symbol. So we mark the maximum named slot and skip half the pad
if we are lucky.
Commit v5.21.4-51-g14d9114 caused flipflop targets to be allocated as
variables named "$", causing compilation of some generated code to
slow down. At compile time, the name pad is not extended to the
length of the pad until the end of subroutine compilation. So prior
to 14d9114 flipflop targets would not make the name pad any longer.
Now that flipflop targets expand the name pad, stop setting
PadlistMAXNAMED, so that things are no slower than before.
This is not really the best fix, IMO, because code that is sensitive
to this will slow down dramatically if you tweak it ever so slightly
by adding a ‘my $x’ here or there.
This fixes perl #123430.
Single-character entries like "$" and "&" are not actually named
entries, but are partially treated as such for the sake of bookkeeping
and scope. (E.g., a flipflop target must have the same lifetime as a
state variable.)
PadlistMAXNAMED is an optimisation that marks the offset of the high-
est pad slot with a name. If there any many anonymous pad slots after
the last named one, we don’t want to search through them when looking
up a symbol. So we mark the maximum named slot and skip half the pad
if we are lucky.
Commit v5.21.4-51-g14d9114 caused flipflop targets to be allocated as
variables named "$", causing compilation of some generated code to
slow down. At compile time, the name pad is not extended to the
length of the pad until the end of subroutine compilation. So prior
to 14d9114 flipflop targets would not make the name pad any longer.
Now that flipflop targets expand the name pad, stop setting
PadlistMAXNAMED, so that things are no slower than before.
This is not really the best fix, IMO, because code that is sensitive
to this will slow down dramatically if you tweak it ever so slightly
by adding a ‘my $x’ here or there.
perldelta for syber’s method stuff
b55b14d0f234ed20e6c2a0b6fd8609fa418cddf3
e3384dcea386322f748cca779e4b8d80c8644024
d648ffcb179b885089e064ec1d58c60027c80915
7d6c333c75cb0519428c389de3894edcb394d3a0
810bd8b704e337dfba3e46eaea33244c1b0afce3
c6afe6664edd0f72ba320c7d17ab247876849084
c290e187228e365708b7d5a9ae53ad10c3c002c6
This description is not precise, but trying to explain exactly which
cases have and have not been optimised would make it confusing.
b55b14d0f234ed20e6c2a0b6fd8609fa418cddf3
e3384dcea386322f748cca779e4b8d80c8644024
d648ffcb179b885089e064ec1d58c60027c80915
7d6c333c75cb0519428c389de3894edcb394d3a0
810bd8b704e337dfba3e46eaea33244c1b0afce3
c6afe6664edd0f72ba320c7d17ab247876849084
c290e187228e365708b7d5a9ae53ad10c3c002c6
This description is not precise, but trying to explain exactly which
cases have and have not been optimised would make it confusing.
perldelta for 127ce1c
perldelta: Add #40565 bug number
perldelta for B pad name changes
perldelta: encoding.pm change is incompatible
so list it under Incompatible Changes.
so list it under Incompatible Changes.
B.pm: Document that OP_NULL may be B::COP
B.pm: Capitalise B::* Methods consistently
Use tabs in AUTHORS
Useqq no longer forces use of the pure-perl Data::Dumper
Update Archive-Tar to CPAN version 2.04
[DELTA]
2.04 14/12/2014
- RT#100903 enable ptargrep.t to work on VMS
[DELTA]
2.04 14/12/2014
- RT#100903 enable ptargrep.t to work on VMS
Test-Simple Version Bump, 1.301001_089 (RC9)
PATCH: [perl #23171] Bleadperl breaks ZEFRAM/Hash-SharedMem
This just makes sure POSIX::strerror() pays attention to the current
locale.
This just makes sure POSIX::strerror() pays attention to the current
locale.
makedef.pl: don't hard-code list of mathoms
It's easy enough to read the list out of mathoms.c directly, and this should
prevent almost all bugs of the sort that were fixed by
083750a56b7927292a4bf7b1bf64aa26dd2a6858. (Only names that don't begin with
"Perl_" will cause a problem.)
The list of names detected automatically may actually differ slightly from
the hard-coded list; for example, the definition of Perl_huge() is inside
"#if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL))",
but the new code in makedef.pl ignores preprocessor conditions. However, the
list is used as names to *skip*, rather than to include, so it's not a
problem if makedef.pl is willing to skip names that it will never be asked
to include.
It's easy enough to read the list out of mathoms.c directly, and this should
prevent almost all bugs of the sort that were fixed by
083750a56b7927292a4bf7b1bf64aa26dd2a6858. (Only names that don't begin with
"Perl_" will cause a problem.)
The list of names detected automatically may actually differ slightly from
the hard-coded list; for example, the definition of Perl_huge() is inside
"#if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL))",
but the new code in makedef.pl ignores preprocessor conditions. However, the
list is used as names to *skip*, rather than to include, so it's not a
problem if makedef.pl is willing to skip names that it will never be asked
to include.
deparse-skips.txt: do.t now passes
deparse-skips.txt: crypt.t now passes
deparse-skips.txt: coreamp.t now passes
Deparse: Don’t parenthesize \my @a needlessly
because \my(@a) is different, and produces a list of element refs,
rather than a single reference to the array.
No good:
$ ./perl -Ilib -MO=Deparse -e '\my @x'
\my(@x);
-e syntax OK
because \my(@a) is different, and produces a list of element refs,
rather than a single reference to the array.
No good:
$ ./perl -Ilib -MO=Deparse -e '\my @x'
\my(@x);
-e syntax OK
Test-Simple Version Bump, 1.301001_088 (RC8)
deparse-skips.txt: More passing tests
deparse-skips.t: chdir.t passes
Fix deparsing of chdir without args
I just broke that in 0175f038c5. I did not realise that OPf_SPECIAL
means two different things on chdir. (See the previous commit.)
I just broke that in 0175f038c5. I did not realise that OPf_SPECIAL
means two different things on chdir. (See the previous commit.)
op.h: Note chdir’s use of OPf_SPECIAL
op.c: Correct comment about OPf_SPECIAL & parens
Fix ptargrep match.
The 08_ptargrep.t test does a pattern match that appears to assume platform-specific semantics for the pattern that matches a filename. It certainly doesn't match the filename on VMS:
not ok 1 - ptargrep shows matched file
But we know the actual filename, so the simplest solution is to just do an equality test on that, and that's what the attached patch does.
Submitted upstream at <https://rt.cpan.org/Public/Bug/Display.html?id=100903>.
The 08_ptargrep.t test does a pattern match that appears to assume platform-specific semantics for the pattern that matches a filename. It certainly doesn't match the filename on VMS:
not ok 1 - ptargrep shows matched file
But we know the actual filename, so the simplest solution is to just do an equality test on that, and that's what the attached patch does.
Submitted upstream at <https://rt.cpan.org/Public/Bug/Display.html?id=100903>.
Deparse chdir(bareword) without quotes
deparse-skips.t: bop.t passes
deparse-skips.t: Note bug number for attrs.t
‘my’ list assignment with attributes. Another tricky one.
‘my’ list assignment with attributes. Another tricky one.
deparse-skips.t: Reason for attrhand.t skip
This is a hard one which I don’t feel like fixing just now.
This is a hard one which I don’t feel like fixing just now.
deparse-skips.txt: array_base.t now passes