| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(aka README.win32)
The fix was in
commit 034a96a9c8546c2e080a802babba5ed9bc6c7798
Author: Elvin Aslanov <rwp.primary@gmail.com>
Date: Wed Apr 19 15:17:19 2023 +0200
Add MS Build Tools links
Add new section on Microsoft Build Tools, improve formatting.
|
| |
|
|
|
|
|
|
|
|
|
| |
ppport.h is pod, but the link to it, removed by this commit, is broken,
resulting in a 404 "Raptor not found" from
https://perldoc.perl.org/Devel::PPPort#SEE-ALSO
This commit changes the mention of the file from a link to a F<>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Karl complained about some of the wrapping logic we use for expressions.
This tweaks the rules in a number of different ways in an attempt to
produce more legible expressions. For instance if we have a complex
expression with different parenthesized sub expressions, then try to put
each sub expression on its own line. A previous patch ensures that we
put shorter sub expressions first, and this patch builds on that to put
each sub expression on its own line.
We also use different logic to wrap the expressions, with the end result
that each line should have the same number of defined() operations on it
(with the exception of the last). We also try harder to line up
logical operators and defined() functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our checks on the define info we expose via Internals::V(), especially
the sorted part, did not really work properly as it only checked defines
that are actually exposed in our standard builds. Many of the defines
that are exposed in this list are special cases that would not be
enabled in a normal build we test under CI, and indeed prior to this
patch it was possible for us to produce unsorted output if certain
defines were enabled.
This patch adds checks that reads the actual code. It checks that the
define and the string are the same, and it checks that strings would be
output in sorted order assuming every define was enabled.
There are two historical exceptions where the string we show and the
define use internally are different, but we work around these two cases
with as special case hash.
|
|
|
|
|
| |
Net-Ping is in dist/ which means we are upstream, so there should
not be any customized files.
|
|
|
|
|
|
|
|
|
|
|
| |
On HPUX `nm globals.o` produces output like this (without the indent):
[5] | 2420| 2|OBJT |GLOB |0| .rodata|PL_Yes
So change the $define qr// to accommodate it.
We also have to TODO some of the tests, as HPUX seems to export
everything.
|
|
|
|
|
|
|
|
|
|
| |
and t/TEST
Also that we test everything expected in MANIFEST.
Also includes some fixups to t/TEST to deal with the fact
that List/Util is not anymore the name of a distribution
even though it is the name of an extension. Same for Cwd.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were bundling something that claimed to be 3.14 but which was not.
This removes the customization info and sync with a rereleased 3.15
which is the same as the actual 3.14 but with a version bump to keep
cmp_version.t happy.
This is the change log 3.15 and 3.14:
3.15 2023-03-20
- Release for updating bleadperl to avoid cmp_version.t trouble. No code
changes.
3.14 2022-05-22
- Remove broken link in Net::FTP manpage. [Mike Blackwell]
- Fix EBCDIC detection. [Karl Williamson, PR#45]
- Fix non-deterministic output in libnet.cfg. [Sergei Trofimovich, PR#44]
- Fix TLS session reuse for dataconn with TLS 1.3 when using passive mode.
[Steffen Ullrich, PR#41]
|
| |
|
|
|
|
|
| |
the "when" parameter is expected to be a version string of the form "5.\d+",
with no minor version.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The pod/perlfilter.pod document says "The original purpose of source
filters was to let you encrypt your program source to prevent casual
piracy.". The likening of copyright infringement to nautical hijacking
is wildly hyperbolic. Perl should not be spreading this line of
tendentious misinformation. Even without the hyperbole, it's misleading
to say that program encryption is aimed at preventing copyright
infringement: it doesn't actually impede copying of the whole file. The
things it really impedes are the understanding and editing of the
program, which are actions that are at most only loosely connected to
copyright infringement.
I suggest that the word "piracy" should be replaced with "reading",
which is both a more neutral term and a more accurate description of what
program encryption impedes. There's also a similar problem with the word
"cracker" later in the document.
The document also understates how fundamental it is that program
encryption can't fully prevent access to the real source code.
This patch fixes all of these problems.
[Note from the committer: this patch was submitted to perl5-porters via
perlbug, this message was extracted and moderately edited (mostly for
tense) for creating this patch. I also added the changes to
customized.dat, although I am not sure why that was necessary. - Yves]
|
|
|
|
|
|
|
|
|
|
| |
This updates the mode-line for most of our generated files so that
they include file type information so they will be properly syntax
highlighted on github.
This does not make any other functional changes to the files.
[Note: Commit message rewritten by Yves]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to this patch t/porting/regen.t would stop after it found a
single case where the generated file was not up to date. If there
were many files this meant that you would fix, run the test again
find out about the next one, and repeat over and over... This
kind of test whack-a-mole is very frustrating. To make things worse
the old hint when there was a failure would tell you to run make regen,
which was only true for certain of the tests that might have failed.
This patch updates this logic so we test ALL the files in one go,
and then if there were any issues we die with a report detailing
*all* of the regen commands that need to be run.
It also includes some minor cleanup and tweaks so it runs properly
when executed from the root dir of the repo.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new experimental warning, feature, keywords and enough parsing to
implement basic classes with an empty `new` constructor method.
Inject a $self lexical into method bodies; populate it with the object instance, suitably shifted
Creates a new OP_METHSTART opcode to perform method setup
Define an aux flag to remark which stashes are classes
Basic implementation of fields.
Basic anonymous methods.
|
|
|
|
|
|
|
|
|
|
| |
Per discussion by @demerphq in
https://github.com/Perl/perl5/pull/20682#issuecomment-1377536039. The
'regen' programs should be run with your installed 'perl'.
Use single quote in heredoc, as $_ is no longer being interpolated (per
@JRaspass in
https://github.com/Perl/perl5/pull/20683#discussion_r1066294815).
|
|
|
|
|
|
|
|
|
|
| |
We were not testing for errors from rev-parse, and we were improperly
passsing in a range and the --verify mode does not expect a range,
it expects a specific commit.
This changes the test to check each end of the commit range, and to
check for errors. It also uses the {commit} notation to check if the
objects actually are commits.
|
|
|
|
|
|
|
| |
Dave noticed there was a bug where I was adding a reference to an
integer. That did not make any sense. This patch fixes up the data so
the source of the line is more clear. I will do a further follow up
to improve this more, this is just to get the bug out of the way.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
HeaderParser was designed to replace the old grouping code in embed.pl and
regen/embed_lib.pl, which is used to generate embed.h and proto.h and
embedvar.h
It can handle "elif" in embed.fnc, and produces more consistently structured
and formatted and readable output than the old code. It also has much better
logic to dedupe expressions. Adding or changing a constraint in embed.fnc
should no longer have any "action at a distance" effects on the output for
other functions which were not changed or obviously affected by the change.
The old code assumed that sorting the constraints applying to a given function
definition was acceptable, with the result that "elif" was impossible to
support properly, and creating the problem that adding a new constraint which
sorted into a different position could change a large amount of the
output, making it hard to verify that the change was correct.
The new logic should, once the initial normalization is applied, ensure that any
further changes are minimal.
This patch also includes a new tool regen/normalize_embed.pl which will be run
by make regen, which consistently formats embed.fnc itself, which should make
maintaining the file easier, especially during code splits and reorgs.
Function definitions can be lifted out, moved to the end, with new
constraints, and the `make regen` will put it all back into the correct place
and order.
A number of tools and tests which use embed_lib.pl to load embed.fnc data have
necessarily been changed to use the new HeaderParser based logic.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Consistent proper header file parsing with an OO interface.
There are various traps and zaps parsing header files, such as line
continuations, and multiline comments acting as a line continuation.
There are also issues that the naive may overlook such as indented
preprocessor directives, and such things.
There are also some specialized tasks which we perform to construct
header files from other header files, such as grouping content under
similar guard clauses together, normalizing guard clauses, and the like.
HeaderParser provides an API to handle these issues. The code which
needs to read header files, or write header files, can use the
HeaderParser to group and normalize the content they are reading or
writing. This also frees the code generators from needing to worry about
indentation, or such artifacts, HeaderParser normalizes it all away.
This patch includes migrating everything to use the new infra, but it
does not include some of the changes that would come with that new
infra, so it would not pass test on THIS commit. Running make regen
should "fix" this, although it is deliberate to make rebasing the
branch easier.
One of the notable changes in this commit is that embed.fnc is now under
control of `make regen` (even though it is an input to `make regen`) and
any changes will be automatically tied by running it, even if those changes
also trigger other changes. HeaderParser sits underneath it all, so there
is no chicken and egg problem that would require running `make regen`
twice, the output of processing the modified embed.fnc would be identical
to the output of processing the original.
fixup
|
|
|
|
|
|
|
|
| |
They are similar to SVf and SVf_QUOTEDPREFIX but take an HV * argument
and use HvNAME() and related macros to extract the string. This is
helpful as it makes constructing error messages from a stash (HV *)
easier. It is the callers responsibility to ensure that the HV is
actually a stash.
|
| |
|
|
|
|
|
|
| |
podcheck.t assumes all non =head text will be indented
at least 4 spaces, but this wasn't explicit in the output
from podcheck for verbatim line length checks.
|
|
|
|
|
|
| |
I was surprised `make regen` didnt regenerate miniperlmain.pl,
given it is fast I see no reason we shouldn't do it as part of
the regen process.
|
|
|
|
|
|
|
|
|
|
|
|
| |
For LTO builds with gcc and clang the PL_no_mem symbol as listed by
nm is flagged as "D" (writable data) and "T" (text, aka code)
respectively.
Looking at the final generated executable PL_no_mem does end up in
the .rodata (read only data) section, so it might be worth adding a
separate test for that.
Fixes #20518
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
git on windows at least of 2.37.1 does not checkout symbolic links
as symbolic links, leaving them as files containing the filename
linked to.
This meant this test against .github/README.md failed, since it only
contained "../README": nothing that appears to be a copyright message
I considered testing that .github/README.md was a symbolic link
but 8975221916 suggests that it may eventually become more distinct
from the root README file, so instead check its size.
|
| |
|
|
|
|
|
|
|
|
|
| |
In scope.c and scope.h there are various defines that must be coordinated
with the contents of an array, and comments and ids which might have to be
mass changed manually in some circumstances. As this is error prone this
patch adds a new regen script to ensure it is kept in sync and to make the
process of adding new types trivial. The data that drives the script is
kept in the scripts __DATA__ section.
|
|
|
|
|
|
| |
I think this used to work before we removed "." from @INC and
nobody noticed when we made that change. This adds it back into
@INC if necessary like we would have from t/.
|
|
|
|
| |
This module is now being maintained by p5p now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a correction for f1cc674150b9408466f484c1bd08faaa989000de
The I<...> formatting code is to be used generally for descriptive text
that is to be replaced by the user with whatever is appropriate.
C<...> is for text that is to be typed as-is. That would be more
appropriate for these module names, which are as-is.
But in this case, these are links to modules. perl doesn't currently
know if those are valid or not, so podcheck.t fails them. It has to be
told that the spellings indeed are real modules. So instead of changing
the L<...> to something else, a better solution that will allow
hyperlinks to be followed (when formatted by e.g., a browser), is to
inform podcheck.t that these are valid links. This is trivially done by
perl t/porting/podcheck.t --add-link Test::Vars
for example. This revises its knowledge database, which will need to be
committed.
|
|
|
|
|
|
|
|
|
| |
See Net-Ping maintainer's comment:
https://github.com/rurban/Net-Ping/pull/18#issuecomment-1234223370
Regenerate customized database.
For: https://github.com/Perl/perl5/pull/20216
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pod/perlfilter.pod is (for historical reasons, apparently) maintained
upstream on CPAN as part of the Filter distribution. As such, (i) it
should, generally speaking, only be edited upstream and synched into
core; (ii) needs to be referenced in several places in the
Filter::Util::Call element in %Maintainers::Modules
(Porting/Maintainers.pl); (iii) needs to have an entry in
t/porting/customized.dat (the "customized database") to protect it from
being "overwritten" or accidentally removed.
For all of the above conditions to work together, the
filter_customized() subroutine in t/porting/customized.t needs to be
able to construct a regex which recognizes pod/perlfilter.pod's
weirdness. Prior to this patch it was failing to do so. Thus when
pod/perlfilter.pod was accidentally edited in commit d84bd0bd47, the
need to regenerate the customized database was not recognized. Later,
review of a different pull request which required regeneration of the
customized database spotted the unintentional deletion of the entry for
pod/perlfilter.pod from t/porting/customized.dat.
Addressing this problem is inevitably going to be kludgy, but it will be
less kludgy if done in t/porting/customized.t than in
Porting/Maintainers.pl. This patch modifies the former file to
guarantee that the string 'pod/perlfilter.pod' is matched. After that
modification, 'cd t; ./perl -I../lib porting/customized.t --regen; cd -'
was run. This accomplished the (previously overlooked) removal of
certain entries for Memoize in the customized database while leaving the
entry for pod/perlfilter.pod in that database intact.
If at some point in the future we decide that pod/perlfilter.pod should
be maintained directly in core, we can remove this kludge and simplify
the Filter::Util::Call element in %Maintainers::Modules in
Porting/Maintainers.pl.
For: https://github.com/Perl/perl5/issues/20228.
Should (partially) unblock https://github.com/Perl/perl5/pull/20216.
|
|
|
|
|
| |
I wanted to see why a given diagnostics was not listed in perldiag.pod,
so I documented it. Turns out it was in the TODO list. :-)
|
|
|
|
|
| |
The old message was a little less than helpful. The new
one shows the file and line to remove.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The "multiline" logic of diag.t was getting confused by define
statements that would define a symbol to call an error function but not
end in ";", this would then slurp potentially many lines errorenously,
potentially absorbing more than one message. The multi-line logic also
would undef $listed_as and lose the diag_listed_as data in some
circumstances.
Fixing those issues revealed some interesting cases. To fix one of them
I defined a new noop macro in perl.h to help: PERL_DIAG_WARN_SYNTAX(),
which helps the diag.t parser identify messages without needing to be
actually part of a specific message line. These macros are noops, they
just return their argument, but they help hint to diag.t what is going
on. Maybe in the future this can be reworked to be more generic, there
are other similar cases that are not covered.
Interestingly fixing this bug meant that at least one message that used
to be erroneously picked up was no longer identified or tested. This was
replaced with a PERL_DIAG_DIE_SYNTAX() wrapper.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is based on the existing README and is an almost exact copy.
Some minor formatting changes to improve the rendering but the text
remains the same. This is done because not having a formatted README
is blocking some other changes.[^1]
t/porting/copyright.t was also adjusted to check the copyright in
.github/README.md
*Long term*: In the long term the contents of README and .github/README.md
will differ. Since these serve a different purpose:
- README: this is included with each release and for that it's more then
good enough enough;
- .github/README.md: this is for people viewing the repository on GitHub
and for that the current README is - in my opinion - not good enough.
It should be much more informative (compare it with some other repos
and that should be obvious, in #18965 there are some examples but
many more exist).
[^1]: rendering platform specific READMEs as POD in GitHub.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some of the entries in this list of diagnostics are ones that people
just haven't gotten around to documenting.
Patches welcome!
But there are, in my opinion, a very few are ones that don't ever need
to be documented because the text of the diganostic is sufficiently
explanatory in and of itself.
This commit revises the comments explaining the exception list, and
moves the ones I think are sufficiently self-explanatory to the front.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
messages.
These new formats are intended to be used in error messages where
we want to show the contents of a string without any possible
hidden characters not rendering in the error message, and where
it would be unreasonable to show every character of the string
if it is very long.
A good example would be when we want to say that a class name is
illegal. Consider:
"Foo\0"->thing()
should not throw an error message about "Foo" being missing, the fact
there is a null in there should be visible to the developer.
Similarly if we had
("x" x 1000_000)->thing()
we also do not want to throw a 1MB error message as it is generally
just unhelpful, a class name that long is almost certainly a mistake.
Currently this patch restricts it to showing 256 characters, the first
128 followed by an ellipses followed by the last 128 characters, but the
docs are such that we can change that if we wish, I suspect something
like 100 would be more reasonable. You can override the define
PERL_QUOTEDPREFIX_LEN to a longer value in Configure if you wish.
Example usage:
other= newSVpvs("Some\0::Thing\n");
sv_catpvf(msg_sv,"%" SVf_QUOTEDPREFIX, SVfARG(other));
Should append
"Some\0::Thing\n"
to the msg_sv. If it were very long it would have ellipses infixed. The
class name "x" x 1_000_000 would show
Can't locate object method "non_existent_method" via \
package "x[repeated 128 times]"..."x[repeated 128 times]" \
(perhaps you forgot to load \
"x[repeated 128 times]"..."x[repeated 128 times]"?) at -e line 1.
(but obviously as one line with the literal text of the class instead of
"[repeated 128 times]")
This patch changes a variety of error messages that used to output the
full string always. I haven't changed every place that this could happen
yet, just the main ones related to method calls, subroutine names and
the like.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On shallow clones the history is not available.
Before:
The 'are we on a branch' logic was broken which caused this
test to assume it was always on a branch which caused it to
use: `git log HEAD^1..HEAD^2` | perl Porting/checkAUTHORS.pl --tap`.
That `git log` command returns *no commits* when HEAD is *not* a branch
and then the test passes.
In a shallow clone (clone without history) there is only one commit and
never a merge so this test silently did nothing on a shallow clone.
Intermediate:
In commit 16dd3f70cc16005d5af7146385733a7c945fb67e the 'are we on a branch'
logic was fixed and now it does do the right thing.
But this introduces a new problem: on a shallow clone there is no history
so there never is a merge commit. But GitHub Actions does *add* a merge
commit (in some cases) with a different author/committer name/emailaddress
(one which should not be in AUTHORS).
Result: the GitHub CI *failed* because they're using shallow clones.
Now:
When a shallow clone is detected just skip the entire test.
Before it already did that (by accident) now make this explicit.
Example git log:
my branch for which a PR was created:
$ git log --format=format:"%h %aN <%aE> - %s" --graph -n25
* 12a6316 Bram <perl-rt@wizbit.be> - TMP: Add some temporary debugging
* 8ac37a5 Bram <perl-rt@wizbit.be> - CI: Special case porting test in 'sanity check'
* 7f36725 Karl Williamson <khw@cpan.org> - makedef: Export certain symbols
GitHub CI with full git history (i.e. no shallow clone):
$ git log --format=format:"%h %aN <%aE> - %s" --graph -n25
* 99884eedeb Bram <109858694+bram-perl@users.noreply.github.com> - Merge 12a6316de1a8834f07d76c59480bafc3fdfa0c66 into 7f367253e335e8507638bb2ca1767c0fedbc95d3
|\
| * 12a6316de1 Bram <perl-rt@wizbit.be> - TMP: Add some temporary debugging
| * 8ac37a5a03 Bram <perl-rt@wizbit.be> - CI: Special case porting test in 'sanity check'
|/
* 7f367253e3 Karl Williamson <khw@cpan.org> - makedef: Export certain symbols
GitHub CI without history (i.e. shallow clone):
$ git log --format=format:"%h %aN <%aE> - %s" --graph -n25
* 99884eede Bram <109858694+bram-perl@users.noreply.github.com> - Merge 12a6316de1a8834f07d76c59480bafc3fdfa0c66 into 7f367253e335e8507638bb2ca1767c0fedbc95d3
For future reference: the git show info:
commit 99884eedebb6cccd1596023a94e32eb3aea6f5e8
Author: Bram <109858694+bram-perl@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
(I do *not* have that Author email-address configured)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
updateAUTHORS.pl now can replace all the capabilities of
checkAUTHORS.pl, and checkAUTHORS.pl has a slightly different idea of
what needs to be validated, and is not aware of the
Porting/exclude_contrib.txt. Instead of teaching it to be aware and
maintaining two tools this drops checkAUTHORS.pl
In the process we move the logic for t/porting/pending-author.t into
t/porting/authors.t, by letting updateAUTHORS.pl do it as well. This is
helpful because updateAUTHORS.pl contains similar core git logic so that
it can implement some of its options.
|
|
|
|
|
|
| |
Adds the --stats, --files, --who, and related options similar to
what checkAUTHORS.pl offers. See perldoc Porting/updateAUTHORS.pl for
the list of options it supports.
|
|
|
|
|
|
| |
We can at least make sure it compiles... Later we can build on this, for
now this sanity checks that we haven't *completely* broken the script
while we refactor it.
|
|
|
|
| |
they are not pod, but rather editor droppings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
git-rev-parse HEAD^2` was used to detect if HEAD was a merge commit.
When HEAD is not a merge commit then HEAD^2 produces an error;
When HEAD is a merge commit then HEAD^2 points to the second parent.
The problem was that `git rev-parse "HEAD^2"` also produced output on STDOUT
which caused `$revision_range` to be set to something bogus.
Example:
$ git rev-parse HEAD^2 2>/dev/null ; echo $?
HEAD^2
128
$ git log HEAD^1..HEAD^2
fatal: ambiguous argument 'HEAD^1..HEAD^2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
The fix is to use --verify which doesn't give output on STDOUT for something invalid.
It does print an error on STDERR (for invalid things) which can be silenced using -q
$ git rev-parse --verify HEAD^2
fatal: Needed a single revision
$ git rev-parse -q --verify HEAD^2
$
For an actual merge commit:
$ git rev-parse -q --verify e91a97a^2
bee6601bbf238b5366ce11cd41f6b095bfeebfd8
(i.e. working as expected)
|
|
|
|
|
|
|
|
|
| |
These messages are obsolete. They exist to tell perl not to complain
when it finds a matching diagnostic that isn't listed in perldiag. But
the messages don't get generated any more, so running the test without
them still passes.
Many of these were spotted by @bram-perl
|
|
|
|
|
| |
These are clear enough without explanation in perldiag. There's a bunch
of them that can be represented by just one.
|