CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Fri, 25 Jul 2025 19:38:30 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20211201073709
location: https://web.archive.org/web/20211201073709/https://perl5.git.perl.org/perl5.git/log
server-timing: captures_list;dur=0.616632, exclusion.robots;dur=0.026803, exclusion.robots.policy;dur=0.012796, esindex;dur=0.015067, cdx.remote;dur=82.840983, LoadShardBlock;dur=133.415768, PetaboxLoader3.datanode;dur=51.937491
x-app-server: wwwb-app223
x-ts: 302
x-tr: 267
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: SERVER=wwwb-app223; 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: Fri, 25 Jul 2025 19:38:32 GMT
content-type: application/xhtml+xml; charset=utf-8
x-archive-orig-date: Wed, 01 Dec 2021 07:37:08 GMT
x-archive-orig-server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
x-archive-orig-keep-alive: timeout=5, max=100
x-archive-orig-connection: Keep-Alive
x-archive-orig-x-crawler-transfer-encoding: chunked
x-archive-orig-content-length: 122670
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: iso-8859-1
memento-datetime: Wed, 01 Dec 2021 07:37:09 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Fri, 26 Jun 2020 23:45:26 GMT", ; rel="prev memento"; datetime="Tue, 17 Aug 2021 07:27:42 GMT", ; rel="memento"; datetime="Wed, 01 Dec 2021 07:37:09 GMT", ; rel="next memento"; datetime="Mon, 11 Jul 2022 04:03:27 GMT", ; rel="last memento"; datetime="Wed, 27 Nov 2024 05:42:01 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: CC-MAIN-2021-49-1637964359093.97-0003/CC-MAIN-20211201052655-20211201082655-00073.warc.gz
server-timing: captures_list;dur=0.667440, exclusion.robots;dur=0.025354, exclusion.robots.policy;dur=0.012228, esindex;dur=0.016663, cdx.remote;dur=66.188997, LoadShardBlock;dur=236.059129, PetaboxLoader3.datanode;dur=252.321055, load_resource;dur=423.945935, PetaboxLoader3.resolve;dur=327.774305
x-app-server: wwwb-app223
x-ts: 200
x-tr: 921
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=()
perl5.git.perl.org Git - perl5.git/log
This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge branch 'hydahy/fix-gh19249' into blead
For: p.r. https://github.com/Perl/perl5/pull/19251;
issue: https://github.com/Perl/perl5/issues/19249
For: p.r. https://github.com/Perl/perl5/pull/19251;
issue: https://github.com/Perl/perl5/issues/19249
fix pod error in sv.c. Closes #19249
builtin.c: Fix C++ compilation errors
C++ does not allow `goto` across initalisations of variables that are
in scope at the label, so just get rid of the `goto`.
An alternative would be to start a new scope after the first `goto`,
so that the variables aren't in scope any more at the label, but I
think this is neater.
C++ does not allow `goto` across initalisations of variables that are
in scope at the label, so just get rid of the `goto`.
An alternative would be to start a new scope after the first `goto`,
so that the variables aren't in scope any more at the label, but I
think this is neater.
Add a builtin:: namespace, with true/false/isbool
This finishes the perl-visible API required for RFC 0008
https://github.com/Perl/RFCs/blob/master/rfcs/rfc0008.md
It also begins the "builtin::" namespace of RFC 0009
https://github.com/Perl/RFCs/blob/master/rfcs/rfc0009.md
This finishes the perl-visible API required for RFC 0008
https://github.com/Perl/RFCs/blob/master/rfcs/rfc0008.md
It also begins the "builtin::" namespace of RFC 0009
https://github.com/Perl/RFCs/blob/master/rfcs/rfc0009.md
newSVpvn_flags().. is more efficient than sv_2mortal(newSVpvn(..))
The same holds for newSVpvs* wrappers around newSVpvn* functions.
The same holds for newSVpvs* wrappers around newSVpvn* functions.
newSVpvn_flags(x, .. ,SVs_TEMP) more efficient than sv_2mortal(newSVpv(x,0))
Add a phase_name() macro.
Also C<codeword> quote "defer" and "goto"
Quote the word "defer" in exception messages about control flow
Forbid using 'goto' to jump into a 'defer' block because everything will break when it's done
update perldsc examples to be strict compliant
Where possible, update perldsc examples to use lexical variables, to be
strict compliant. Earlier code in this document specifically discusses
differences with strict, but the examples aren't really related to
anything about non-lexical variables, so they should be updated to work
with modern standards.
Some parts of the examples have not been updated because they are using
variables that are implicitly meant to come from some an outside source.
Where possible, update perldsc examples to use lexical variables, to be
strict compliant. Earlier code in this document specifically discusses
differences with strict, but the examples aren't really related to
anything about non-lexical variables, so they should be updated to work
with modern standards.
Some parts of the examples have not been updated because they are using
variables that are implicitly meant to come from some an outside source.
add missing brace in perldsc hash of hashes example
Fixup Corelist.pm
Prepare Module::Corelist for 5.35.7
Bump the perl version in various places for 5.35.7
new perldelta for 5.35.7
Tick off 5.35.6 from release schedule
Add epigraph for 5.35.6
add new release to perlhist
Update perldelta for 5.35.6 release
Update Module::CoreList for 5.35.6
Update AUTHORS list for 5.35.6
t/op/pack.t: Get it to pass under 'make minitest'
During preparations for release of perl-5.35.6 we noticed that
t/op/pack.t was failing during 'make minitest', though passing under
'make test'. Certain tests require Math::BigInt, which in turn now
requires Scalar::Util. The latter is not available under miniperl. So
we skip certain tests.
Also, Math::BigInt is now under cpan/, not dist/.
Insert one 'note' so that we can see where we are in the file. Minor
whitespace improvements.
During preparations for release of perl-5.35.6 we noticed that
t/op/pack.t was failing during 'make minitest', though passing under
'make test'. Certain tests require Math::BigInt, which in turn now
requires Scalar::Util. The latter is not available under miniperl. So
we skip certain tests.
Also, Math::BigInt is now under cpan/, not dist/.
Insert one 'note' so that we can see where we are in the file. Minor
whitespace improvements.
Update HTTP::Tiny to v0.080
0.080 2021-11-05 08:15:46-04:00 America/New_York
- No changes from 0.079-TRIAL.
0.079 2021-11-04 12:33:43-04:00 America/New_York (TRIAL RELEASE)
[FIXED]
- Fixed uninitialized value warnings on older Perls when the
REQUEST_METHOD environment variable is set and CGI_HTTP_PROXY
is not.
0.080 2021-11-05 08:15:46-04:00 America/New_York
- No changes from 0.079-TRIAL.
0.079 2021-11-04 12:33:43-04:00 America/New_York (TRIAL RELEASE)
[FIXED]
- Fixed uninitialized value warnings on older Perls when the
REQUEST_METHOD environment variable is set and CGI_HTTP_PROXY
is not.
Merge branch 'blead' of https://github.com/Perl/perl5 into blead
Update bignum, Math::BigInt, Math::BigInt::FastCalc, and Math::BigRat
bignum
======
0.63 2021-10-08
* This version instroduces no changes to the Perl modules, only the
tests.
* Remove tests that don't work on old Perls and that were actually
testing
Math::Big(Int|Float|Rat) more than big(int|num|rat).
* Skip tests that don't work on older versions of Perl.
* Remove Perl v5.10.0 as dependency. This distribution is compatible
with
Perls back to at least v5.6.1, although some functionality
(e.g., nesting the pragmas) requires more recent versions of Perl.
0.62 2021-10-03
* Add support for multiple options in import(), so that one can use,
e.g.,
use bignum accuracy => 20, lib => "GMP";
* Make sure the bigrat pragma always returns Math::BigRat objects.
* Make the "trace" option work as indended, or at least according to
what I
believe is the intention.
* Improve documentation. Fix typos, improve wording, add more examples
etc.
0.61 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point
literals before v5.32.0.
0.60 2021-09-28
* Separate the bigint, bignum, and bigrat pragmas.
- The bigint pragma now converts every numeric constant that
represents an
integer to a Math::BigInt object. Non-integers are converted to
Math::BigInt NaNs. With the previous behaviour, only some numeric
constant integers were converted to a Math::BigInt.
- The bignum pragma now converts every numeric constant to a
Math::BigFloat
object.
- The bigrat pragma now converts every numeric constant to a
Math::BigRat
pragma.
The pragmas no longer activate upgrading and downgrading. The
upgrading and
downgrading must now be activated explicitly. The rationale behind
deactivating it by default is that can cause infinite looping where
objects
bounce back and forth between different classes. Explicitly
requesting a
specific class doesn't always work either, because the object might
be
automatically upgraded or downgraded to a different class.
Only one pragma can be used at a time in a given scope. Enabling one
pragma
disables the others in the same scope.
* Implementat working version of "no bigint", "no bignum", and "no
bigrat".
Previously, the upgrading and downgrading activated by, e.g., "use
bigint"
was not deactivated by "no bigint".
* Sync behaviour with the Math-BigInt distribution.
Math::BigInt
============
1.999827 2021-10-03
* Improve error message for missing library argument.
* Skip tests that don't work on older Perls. Also skip tests that
compare
floating point numbers.
1.999826 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point
literals before v5.32.0.
1.999825 2021-09-28
* Make Math::BigInt accept integers regardless of whether they are
written as
decimal, binary, octal, or hexadecimal integers or decimal, binary,
octal,
or hexadecimal floating point number.
* When numeric constants are overloaded (with the ":constant" option)
in
Math::BigInt, every numeric constant that represent an integer is
converted
to an object regardless of how it is written. All finite non-integers
are
converted to a NaN.
* When numeric constants are overloaded (with the ":constant" option)
in
Math::BigFloat, every numeric constant is converted to an object
regardless
of how it is written.
* Add method from_dec() (cf. from_bin(), from_oct(), and from_hex()).
It is
like new() except that it does not accept anything but a string
representing a finite decimal number.
1.999824 2021-09-20
* Don't allow mixing math libraries. Use the first backend math library
that
is successfully loaded, and ignore any further attempts at loading a
different backend library. This is a solution to the re-occurring
problem
of using objects using different math libraries.
* Add missing documentation.
* Miscellaneous minor improvements.
Math::BigInt::FastCalc
======================
0.5012 2021-09-28
* Sync test files with Math-BigInt.
0.5011 2021-09-20
* Sync test files with Math-BigInt.
* Add missing documentation.
* Make the test files only print to the standard error when there is an
actual error.
* Miscellaneous changes and updates to author and release test files.
Math::BigRat
============
0.2620 2021-10-03
* Skip tests that don't work on older Perls. Also skip tests that
compare
floating point numbers.
0.2619 2021-10-01
* Correct the handling of Inf and NaN in numify().
* Improve constant overloading. When numeric constants are overloaded
(with the ":constant" option) in Math::BigRat, every numeric constant
is converted to an object regardless of how it is written.
0.2618 2021-09-28
* Add new method binv() for the inverse.
* Add new method dparts(), which returns the integer part and fraction
part
of a number. For example, 9/4 is split into 2 and 1/4. This method is
equivalent to the Math::BigInt and Math::BigFloat methods with the
same
name.
* Improve blog(). Handle cases $x->blog($b) where the numerator of $x
and/or $b is 1 as special.
* Sync tests with Math-BigInt.
bignum
======
0.63 2021-10-08
* This version instroduces no changes to the Perl modules, only the
tests.
* Remove tests that don't work on old Perls and that were actually
testing
Math::Big(Int|Float|Rat) more than big(int|num|rat).
* Skip tests that don't work on older versions of Perl.
* Remove Perl v5.10.0 as dependency. This distribution is compatible
with
Perls back to at least v5.6.1, although some functionality
(e.g., nesting the pragmas) requires more recent versions of Perl.
0.62 2021-10-03
* Add support for multiple options in import(), so that one can use,
e.g.,
use bignum accuracy => 20, lib => "GMP";
* Make sure the bigrat pragma always returns Math::BigRat objects.
* Make the "trace" option work as indended, or at least according to
what I
believe is the intention.
* Improve documentation. Fix typos, improve wording, add more examples
etc.
0.61 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point
literals before v5.32.0.
0.60 2021-09-28
* Separate the bigint, bignum, and bigrat pragmas.
- The bigint pragma now converts every numeric constant that
represents an
integer to a Math::BigInt object. Non-integers are converted to
Math::BigInt NaNs. With the previous behaviour, only some numeric
constant integers were converted to a Math::BigInt.
- The bignum pragma now converts every numeric constant to a
Math::BigFloat
object.
- The bigrat pragma now converts every numeric constant to a
Math::BigRat
pragma.
The pragmas no longer activate upgrading and downgrading. The
upgrading and
downgrading must now be activated explicitly. The rationale behind
deactivating it by default is that can cause infinite looping where
objects
bounce back and forth between different classes. Explicitly
requesting a
specific class doesn't always work either, because the object might
be
automatically upgraded or downgraded to a different class.
Only one pragma can be used at a time in a given scope. Enabling one
pragma
disables the others in the same scope.
* Implementat working version of "no bigint", "no bignum", and "no
bigrat".
Previously, the upgrading and downgrading activated by, e.g., "use
bigint"
was not deactivated by "no bigint".
* Sync behaviour with the Math-BigInt distribution.
Math::BigInt
============
1.999827 2021-10-03
* Improve error message for missing library argument.
* Skip tests that don't work on older Perls. Also skip tests that
compare
floating point numbers.
1.999826 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point
literals before v5.32.0.
1.999825 2021-09-28
* Make Math::BigInt accept integers regardless of whether they are
written as
decimal, binary, octal, or hexadecimal integers or decimal, binary,
octal,
or hexadecimal floating point number.
* When numeric constants are overloaded (with the ":constant" option)
in
Math::BigInt, every numeric constant that represent an integer is
converted
to an object regardless of how it is written. All finite non-integers
are
converted to a NaN.
* When numeric constants are overloaded (with the ":constant" option)
in
Math::BigFloat, every numeric constant is converted to an object
regardless
of how it is written.
* Add method from_dec() (cf. from_bin(), from_oct(), and from_hex()).
It is
like new() except that it does not accept anything but a string
representing a finite decimal number.
1.999824 2021-09-20
* Don't allow mixing math libraries. Use the first backend math library
that
is successfully loaded, and ignore any further attempts at loading a
different backend library. This is a solution to the re-occurring
problem
of using objects using different math libraries.
* Add missing documentation.
* Miscellaneous minor improvements.
Math::BigInt::FastCalc
======================
0.5012 2021-09-28
* Sync test files with Math-BigInt.
0.5011 2021-09-20
* Sync test files with Math-BigInt.
* Add missing documentation.
* Make the test files only print to the standard error when there is an
actual error.
* Miscellaneous changes and updates to author and release test files.
Math::BigRat
============
0.2620 2021-10-03
* Skip tests that don't work on older Perls. Also skip tests that
compare
floating point numbers.
0.2619 2021-10-01
* Correct the handling of Inf and NaN in numify().
* Improve constant overloading. When numeric constants are overloaded
(with the ":constant" option) in Math::BigRat, every numeric constant
is converted to an object regardless of how it is written.
0.2618 2021-09-28
* Add new method binv() for the inverse.
* Add new method dparts(), which returns the integer part and fraction
part
of a number. For example, 9/4 is split into 2 and 1/4. This method is
equivalent to the Math::BigInt and Math::BigFloat methods with the
same
name.
* Improve blog(). Handle cases $x->blog($b) where the numerator of $x
and/or $b is 1 as special.
* Sync tests with Math-BigInt.
Merge branch 'openstrike-blead' into blead
POD breakage in lib/warnings.pm
An unescaped right angle bracket was resulting in a malformed code snippet in warnings.pm
This tiny PR escapes that character and thus fixes the rendering.
regen/warnings.pl corrected and regenerated; version bumped.
Pete Houston is now a Perl Author.
For: https://github.com/Perl/perl5/pull/19228
An unescaped right angle bracket was resulting in a malformed code snippet in warnings.pm
This tiny PR escapes that character and thus fixes the rendering.
regen/warnings.pl corrected and regenerated; version bumped.
Pete Houston is now a Perl Author.
For: https://github.com/Perl/perl5/pull/19228
Additional feedback
Update per feedback
Obituary for David H Adler
correct the comment distinguishing between threaded/unthreaded cop macros
Add CopFILEAVn() and use it when cleaning up COP pointers
On threaded builds CopFILEAV() calls gv_fetchfile(), which always
created the *{"::_<filenamehere"} glob, so the attempted clean up
here could recreate the glob, even if it has already been removed
when cleaning up a string eval.
To avoid this, add CopFILEAVn() that never creates the glob,
nor the AV so that the clean up never adds new objects.
This change makes the check for PL_phase unnecessary, but that check
is much cheaper than the call for gv_fetchfile_flags() that the
macro hides, so retain the check.
On threaded builds CopFILEAV() calls gv_fetchfile(), which always
created the *{"::_<filenamehere"} glob, so the attempted clean up
here could recreate the glob, even if it has already been removed
when cleaning up a string eval.
To avoid this, add CopFILEAVn() that never creates the glob,
nor the AV so that the clean up never adds new objects.
This change makes the check for PL_phase unnecessary, but that check
is much cheaper than the call for gv_fetchfile_flags() that the
macro hides, so retain the check.
don't try to clean up the COP pointer during global destruction
At this point there should be no further debugging code trying to
use the COP pointer.
On threaded builds the call to CopFILEAV() could cause a segmentation
fault, since during late destruction gv_fetchfile() could return
NULL, which the threaded version of CopFILEAV() would blindly call
GvAV() on.
At this point there should be no further debugging code trying to
use the COP pointer.
On threaded builds the call to CopFILEAV() could cause a segmentation
fault, since during late destruction gv_fetchfile() could return
NULL, which the threaded version of CopFILEAV() would blindly call
GvAV() on.
remove cop addressed from saved lines when the cop is freed
This could cause a bad read and write when the debugger tried to
set a breakpoint on the line.
Fixed #19198
This could cause a bad read and write when the debugger tried to
set a breakpoint on the line.
Fixed #19198
document the DebugWrap class used internally to perl5db.t
saves me having to find the difference between "output" and
"contents" each time I write a debugger test
saves me having to find the difference between "output" and
"contents" each time I write a debugger test
allow DebugWrap to take the test code as an argument
This increases the locality of the code being tested to the test and
avoids littering the tree with little test files.
This increases the locality of the code being tested to the test and
avoids littering the tree with little test files.
Unencrypted git protocol no longer supported by github.com
Reference: https://github.blog/2021-09-01-improving-git-protocol-security-github/
For: https://github.com/Perl/perl5/pull/19220
Reference: https://github.blog/2021-09-01-improving-git-protocol-security-github/
For: https://github.com/Perl/perl5/pull/19220
Merge branch 'features-for-5-36' into blead
perldelta: update feature bundle changes for bareword_filehandles
feature.pm: remove bareword_filehandles from :5.36
feature updates: tweaks from code review
perldelta: note changes to feature bundle
perlfunc: note that bareword open is now often forbidden
feature: remove indirect and multidimensional in v5.36
Remove missed mention of perldos POD document in plan9/mkfile
Remove AT&T UWIN support
UWIN is a UNIX compatibility layer for Windows. It was last released
in 2012 and has been superseded by Cygwin these days.
UWIN is a UNIX compatibility layer for Windows. It was last released
in 2012 and has been superseded by Cygwin these days.
Remove DOS/DJGPP support
DJGPP is a port of the GNU toolchain to 32-bit x86 systems running DOS.
The last known attempt to build Perl on it was on 5.20, which only got
as far as building miniperl.
DJGPP is a port of the GNU toolchain to 32-bit x86 systems running DOS.
The last known attempt to build Perl on it was on 5.20, which only got
as far as building miniperl.
One character spelling error
bump $GDBM_File::VERSION
gdbm: Define error codes; provide the global $gdbm_errno variable.
* ext/GDBM_File/GDBM_File.pm: Export gdbm error codes.
Improve documentation.
* ext/GDBM_File/GDBM_File.xs (BOOT): Define the GDBM_File::gdbm_errno
variable.
(gdbm_errno): Return a value usable both in numeric and string
contexts.
* ext/GDBM_File/Makefile.PL: Define gdbm error codes.
* Document GDBM_* constants used with tie().
* ext/GDBM_File/GDBM_File.pm: Export gdbm error codes.
Improve documentation.
* ext/GDBM_File/GDBM_File.xs (BOOT): Define the GDBM_File::gdbm_errno
variable.
(gdbm_errno): Return a value usable both in numeric and string
contexts.
* ext/GDBM_File/Makefile.PL: Define gdbm error codes.
* Document GDBM_* constants used with tie().
pp_system: safe to switch in sv_setpvn_fresh here
pp_match: newSVpvn_flags now more efficient than sv_newmortal + sv_setpvn.
sv.c: use Perl_sv_grow_fresh & Perl_sv_setvpn_fresh
sv.c: add Perl_sv_grow_fresh & Perl_sv_setvpn_fresh
Regen Configure and friends after backports
release schedule: neilb to handle 2021-12
Merge branch 'fix-grammar' into blead
For: https://github.com/Perl/perl5/pull/19209
For: https://github.com/Perl/perl5/pull/19209
lib/diagnostics.pm remove obscure wording in POD
The text "While apparently a whole nuther program" is too informal
and too obscure for non-Native English speakers.
It is also a misspelling of "whole nother" [1].
[1] https://www.merriam-webster.com/dictionary/whole%20nother
Committer: Robert Rothenberg is now a Perl author.
Increment $VERSION in lib/diagnostics.pm.
The text "While apparently a whole nuther program" is too informal
and too obscure for non-Native English speakers.
It is also a misspelling of "whole nother" [1].
[1] https://www.merriam-webster.com/dictionary/whole%20nother
Committer: Robert Rothenberg is now a Perl author.
Increment $VERSION in lib/diagnostics.pm.
Prepare Module::Corelist for 5.35.6
Bump version to 5.35.6
new perldelta for 5.35.6
Tick off 5.35.5 from release schedule
Add epigraph for 5.35.5
Add 5.35.5 to perlhist
Update perldelta for 5.35.5 release
Update Module::CoreList for 5.35.5
inline.h: _BitScanForward64 is available only on 64-bit architectures
Fixes #19205
Fixes #19205
inline.h: remove superfluous Visual C++ version checks
We no longer support Visual C++ 2012 and older.
We no longer support Visual C++ 2012 and older.
Revert "Introduce a "declaration after statement" into inline.h"
This reverts commit 632ce96a35d784df9e43bc8ad87b4e8f1f24a590.
Sereal hasn't been fixed yet to deal with the fallout of this change,
so we postpone this change for a later moment
This reverts commit 632ce96a35d784df9e43bc8ad87b4e8f1f24a590.
Sereal hasn't been fixed yet to deal with the fallout of this change,
so we postpone this change for a later moment
Add dropping old MSVC++ (pre-VC12) to perldelta
Perl_newHVhv should use share_hek_hek() instead of share_hek_flags()
share_hek_hek() manipulates the shared HEK's reference count directly,
without needing to find it in the shared string table. It was added after
Perl_newHVhv() was implemented, and no-one noticed that it could be used
there.
share_hek_hek() manipulates the shared HEK's reference count directly,
without needing to find it in the shared string table. It was added after
Perl_newHVhv() was implemented, and no-one noticed that it could be used
there.
Fix the build and tests when NODEFAULT_SHAREKEYS is defined
Defining this macro causes newHV() to create hashes without shared hash key
scalars. The default is that hashes are created with shared hash keys.
Defining this macro causes newHV() to create hashes without shared hash key
scalars. The default is that hashes are created with shared hash keys.
Perl_newHVhv() did not correctly copy hashes with non-shared keys
It created a hash built with non-shared keys, but left the "shared keys"
flag set on the hash.
This hasn't been spotted in 20 years, which shows just how much we use
hashes with unshared keys.
It created a hash built with non-shared keys, but left the "shared keys"
flag set on the hash.
This hasn't been spotted in 20 years, which shows just how much we use
hashes with unshared keys.
hv_delete_common() must not call GvAV() on a non-GV
hv_delete_common() must update isa magic stash records when *ISA is deleted
(see commit 6146d9e1c87d449f)
However, it's only valid to use the macro GvAV() on an SV that is a GV.
Previously the code was not checking this, hence if someone deliberately
manipulated the symbol table to first store something other than a typeglob,
and then delete that entry from the symbol table, then (at best) an
assertion would fail, at worst illegal memory accesses.
Do this by moving the check for `SvTYPE(sv) == SVt_PVGV` up to the if() that
governs both code blocks.
Note that you could only trigger this bug by running code that manipulates
symbol tables directly. Compilation of Perl code would not hit it, nor could
user-controlled data in executing Perl programs, unless the programs both
contain code to manipulate symbol tables, and permit unvalidated user data
to reach those code paths.
(Such programs are likely insecure already, as their control flow can be
subverted by user controlled data without requiring any interpreter bugs.)
hv_delete_common() must update isa magic stash records when *ISA is deleted
(see commit 6146d9e1c87d449f)
However, it's only valid to use the macro GvAV() on an SV that is a GV.
Previously the code was not checking this, hence if someone deliberately
manipulated the symbol table to first store something other than a typeglob,
and then delete that entry from the symbol table, then (at best) an
assertion would fail, at worst illegal memory accesses.
Do this by moving the check for `SvTYPE(sv) == SVt_PVGV` up to the if() that
governs both code blocks.
Note that you could only trigger this bug by running code that manipulates
symbol tables directly. Compilation of Perl code would not hit it, nor could
user-controlled data in executing Perl programs, unless the programs both
contain code to manipulate symbol tables, and permit unvalidated user data
to reach those code paths.
(Such programs are likely insecure already, as their control flow can be
subverted by user controlled data without requiring any interpreter bugs.)
op.c: use %zd to format PADOFFSET values
PADOFFSET is SSize_t, so %lu is wrong even if long and SSize_t are the
same size.
PADOFFSET is SSize_t, so %lu is wrong even if long and SSize_t are the
same size.
Add NetWare removal to perlport
Add nick@i3.procura.nl to mailmap
Update Encode to 3.16
Update Scalar-List-Util to 1.60
Update experimental to 0.025
Update Test-Simple to 1.302188
Remove old MSVC++ (pre-VC12) support from Windows Makefiles
Also remove the Platform SDK 2003 SP1/R2 64-bit compiler since (having just
tried it) it no longer builds perl because it doesn't allow mixed code and
declarations.
Also remove mention of the Windows SDK since it doesn't appear to contain
the compiler or linker any more. This page says that the VC++ 2010 compiler
and linker were included in the Windows 7 SDK but then makes no mention of
it for the Windows 8 SDK:
https://docs.microsoft.com/en-us/previous-versions/visualstudio/windows-sdk/ff660763(v=vs.110)
The page notes that it is no longer being updated, but the whole of the
C:\Program Files (x86)\Windows Kits folder on my system (which contains
8.0, 8.10 and 10) does not contain any cl.exe or link.exe.
I've re-worded some of the if/else conditions in the makefiles to pick out
earlier versions rather than later versions. Thus, the current versions
become the "else" case, which means that the next version of Visual C++ is
more likely to work without requiring any changes.
Also remove the Platform SDK 2003 SP1/R2 64-bit compiler since (having just
tried it) it no longer builds perl because it doesn't allow mixed code and
declarations.
Also remove mention of the Windows SDK since it doesn't appear to contain
the compiler or linker any more. This page says that the VC++ 2010 compiler
and linker were included in the Windows 7 SDK but then makes no mention of
it for the Windows 8 SDK:
https://docs.microsoft.com/en-us/previous-versions/visualstudio/windows-sdk/ff660763(v=vs.110)
The page notes that it is no longer being updated, but the whole of the
C:\Program Files (x86)\Windows Kits folder on my system (which contains
8.0, 8.10 and 10) does not contain any cl.exe or link.exe.
I've re-worded some of the if/else conditions in the makefiles to pick out
earlier versions rather than later versions. Thus, the current versions
become the "else" case, which means that the next version of Visual C++ is
more likely to work without requiring any changes.
don't overwrite the faked up type details for hv-with-aux
CID 340472
CID 340472
`for my($k, $v) (%hash)` should not be a syntax error
No-one had thought to test for this explicitly. After all, both
`for my $foo ...` and `for my$foo ...` are valid syntax, so tweaking the
C lexer code to add an optional '(' should work, surely?
The problem was that, *as was*, the lexer code didn't "accept" those two
syntax variants the way the comments would suggest.
`for my $foo ...` was treated as
1) we saw 'my '
2) we saw the dollar sign
3) success!
but `for my$foo ...` was treated as
0) we didn't see 'my ' or 'our '
1) we saw the literal string 'my' which is valid as a package name
2) we saw the dollar sign
3) success!
ie some sort of mangled variant of `for my Dog $spot ...` without 'my'
*but* as the lexer was happy with what it saw, it returned that the input
stream was valid for a "for" token, and control continues to the grammar.
The grammar, of course, didn't make these mistakes, so parsed everything
properly and built the correct optree.
(And, if presented with `for Dog $spot (...)` the grammar wouldn't match,
so all invalid code was correctly rejected)
However, all this came unstuck with `for my($k` because that didn't
mis-tokenise as some crazy package name 'my(', so it reported a syntax error.
Hence rewrite yyl_foreach() to actually tokenise everything correctly.
"Correctly", to be clear, is bug-for-bug compatible with the current emergent
behaviour for various corner cases for "parses and runs" vs "syntax error".
We don't always report identical error messages for certain syntax errors,
where the precise message reported was itself emergent behaviour from the
bugs in the previous implementation.
No-one had thought to test for this explicitly. After all, both
`for my $foo ...` and `for my$foo ...` are valid syntax, so tweaking the
C lexer code to add an optional '(' should work, surely?
The problem was that, *as was*, the lexer code didn't "accept" those two
syntax variants the way the comments would suggest.
`for my $foo ...` was treated as
1) we saw 'my '
2) we saw the dollar sign
3) success!
but `for my$foo ...` was treated as
0) we didn't see 'my ' or 'our '
1) we saw the literal string 'my' which is valid as a package name
2) we saw the dollar sign
3) success!
ie some sort of mangled variant of `for my Dog $spot ...` without 'my'
*but* as the lexer was happy with what it saw, it returned that the input
stream was valid for a "for" token, and control continues to the grammar.
The grammar, of course, didn't make these mistakes, so parsed everything
properly and built the correct optree.
(And, if presented with `for Dog $spot (...)` the grammar wouldn't match,
so all invalid code was correctly rejected)
However, all this came unstuck with `for my($k` because that didn't
mis-tokenise as some crazy package name 'my(', so it reported a syntax error.
Hence rewrite yyl_foreach() to actually tokenise everything correctly.
"Correctly", to be clear, is bug-for-bug compatible with the current emergent
behaviour for various corner cases for "parses and runs" vs "syntax error".
We don't always report identical error messages for certain syntax errors,
where the precise message reported was itself emergent behaviour from the
bugs in the previous implementation.
for CORE::my $var (...) {} is legal syntax, hence test it
We had tests for CORE::state, but not CORE::my or CORE::our. It happens that
they are all legal syntax, but seemingly more be accident than design. They
are only accepted by yyl_foreach() as a quirk of the current implementation.
Note that for my Dog $spot (...) {} is legal, but not CORE::my. our Dog is
legal, CORE::our is not. Neither state Dog nor CORE::state are legal. These
are all emergent behaviour of the parser - do not take these tests as
"correct", merely as verifying that current behaviour doesn't change unless
we intended it to.
We had tests for CORE::state, but not CORE::my or CORE::our. It happens that
they are all legal syntax, but seemingly more be accident than design. They
are only accepted by yyl_foreach() as a quirk of the current implementation.
Note that for my Dog $spot (...) {} is legal, but not CORE::my. our Dog is
legal, CORE::our is not. Neither state Dog nor CORE::state are legal. These
are all emergent behaviour of the parser - do not take these tests as
"correct", merely as verifying that current behaviour doesn't change unless
we intended it to.
add customized entries for the latest Memoize changes
Fix Memoize tests, where GDBM_File is involved
* cpan/Memoize/t/errors.t: Use GDBM_NEWDB as the flags argument
when tying to GDBM_File.
* cpan/Memoize/t/tie_gdbm.t: Likewise.
* cpan/Memoize/t/errors.t: Use GDBM_NEWDB as the flags argument
when tying to GDBM_File.
* cpan/Memoize/t/tie_gdbm.t: Likewise.
perlop - clarify that hyphens are interpreted literally in tr with single quotes
install libgdbm and libdb in GitHub Actions
This ensures that DB_File and GDBM_File will be built and tested.
This ensures that DB_File and GDBM_File will be built and tested.
disable LeakSanitizer in GitHub Actions
It randomly fails with a fatal error for no apparent reason.
Fixes #19189
It randomly fails with a fatal error for no apparent reason.
Fixes #19189
Merge branch 'pp_iter' into blead
Pod improvements suggested by Matthew Horsfall
for my ($foo,,, $bar) { ... } should parse as ($foo, $bar)
Multiple commas between the lexicals in the list shouldn't change the
parsing.
Multiple commas between the lexicals in the list shouldn't change the
parsing.
Test next, continue and redo with n-at-a-time for loops
Note why this if block in pp_iter is empty
perldelta for n-at-a-time for loops.
n-at-a-time for loops now warn by default (as 'experimental::for_list').
Add a new warning experimental::for_list.