bump $VERSION for Porting/Maintainers.pm to placate cmp_version.t

7f58bf11 is the first modification of Porting/Maintainers.pm since the
last release, hence cmp_version.t complains.
Florian Ragwitz is scheduled for 5.17.4, Sep 20
Fix command-line argument quoting in Porting/cmpVERSION.pl

Windows, NetWare and VMS want double-quotes, other OSes want single quotes.
B::Concise: Two unused vars

One was made unnecessary by 35f7559499.  The other was added by
35f7559499 and never used.  I forgot to clean up once I had things
working.
Deparse multiple stmts in format line correctly

They were being output on separate lines, resulting in the second
statement being treated as a format picture, etc.  This affected
cases like this:

format =
@
$x; $y
.
toke.c: One less token for missing format args

In commit 705fe0e5f8a, when I made the parser understand format syntax
itself, I had to add special handling for a terminating dot where for-
mat arguments were expected:

format =
@
.

The parser expects every format argument line to look like this:

formarg	:	/* NULL */
			{ $$ = NULL; }
	|	FORMLBRACK stmtseq FORMRBRACK
			{ $$ = op_unscope($2); }
	;

When the line break is encountered after the @, the FORMLBRACK token
is emitted, and the lexer switches into ‘normal’ (as opposed to for-
mat picture) mode.  When the final dot is encountered, since the
FORMLBRACK has already been emitted, the lexer has to conjure up a
FORMRBRACK as well, to avoid a syntax error.

I had it producing a semicolon before the FORMRBRACK, but that is not
necessary, because stmtseq can be null.  So this commit removes it.
toke.c: Set PL_lex_state less when scanning formats

This (in yylex) is the only code that calls scan_formline:

    case LEX_FORMLINE:
	PL_lex_state = PL_parser->form_lex_state;
	s = scan_formline(PL_bufptr);
	if (!PL_lex_formbrack)
	{
	    formbrack = 1;
	    goto rightbracket;
	}
	PL_bufptr = s;
	return yylex();
    }

It is only reached when PL_lex_state is LEX_FORMLINE.  scan_formline
itself does not even look at PL_lex_state.  It does set it, though,
unless it has reached the end of the format (setting PL_lex_formbrack
to 0) or the end of input.

This means we end up flipping it back and forth between two values.

We don’t have to set PL_lex_state before scan_formline() at all.  Hav-
ing scan_formline only set it when it does not need to be LEX_FORMLINE
simplifies things, resulting in less code and fewer assignments.
toke.c: Remove unnecessary assignment

S_scan_formline never needs to do PL_bufptr = s, because it returns s,
and all the code paths that follow the one spot that calls it them-
selves assign s to PL_bufptr.
coreamp: Fix test; correct test name
OptreeCheck.pm: typo
pp_require thread safety for VMS.

When we translate path names of required modules into Unix format,
we haven't (recently) been using the optional second argument to
the translation routines,[1] an argument that supplies a buffer for
the translation.  That causes them to use a static buffer. Which
means that if two or more different threads are doing a require
operation at the same time, they will be blindly sharing the same
buffer.

So allocate buffers as we need them and make them mortal so they
will go away at the next state transition.

[1] Use of an automatic variable for the buffer was removed way
back in 46fc3d4c69a0ad.
Upgrade Compress-Raw-Zlib to 2.056
Add some tests for [\N{}]
re.pm: Nits in pod

This has clarifications, grammar changes, and reflowing to fit into 79
columns
re/re_tests: Correct Todo test

This test was not doing what it purported to test.  It should show that
a /[s\xDF]/i would not match 'ss', because the 's' is seen in the class,
and not the \xDF (which matches 'ss' under /i) in the appropriate
strings
regcomp.c: change pattern to utf8 if needed in \N{}

This patch is in preparation for future patches that will no longer
always make any pattern that contains \N{} be encoded in UTF-8.  Thus
this patch doesn't actually change anything, but enables future ones.
regcomp.c: Set flags when optimizing a [char class]

A bracketed character class containing a single Latin1-range character
has long been optimized into an EXACT node.  Also, flags are set to
include SIMPLE.  However, EXACT nodes containing code points that are
different when encoded under UTF-8 versus not UTF-8 should not be marked
simple.

To fix this, the address of the flags parameter is now passed to
regclass(), the function that parses bracketed character classes, which
now sets it appropriately.  The unconditional setting of SIMPLE that was
always done in the code after calling regclass() has been removed.

In addition, the setting of the flags for EXACT nodes has been pushed
into the common function that populates them.

regclass() will also now increment the naughtiness count if optimized to
a node that normally does that.  I do not understand this heuristic
behavior very well, and could not come up with a test case for it;
experimentation revealed that there are no test cases in our test suite
for which naughtiness makes any difference at all.
regcomp.c: Create NOTHING node when would have been 0 length EXACT

It's peculiar circumstances indeed that would get to this point in the
code with an EXACT node to be created, but nothing to populate it with.
Perhaps it is impossible; I'm not sure.  But commit
5f820f894e71b6970a5aa0fd763a84b647fd628a changed the behavior, which I
discovered in later re-reading the code.  Probably the node would be
populated with a single NUL.  Just in case it is possible to get here
under these peculiar circumstances, this commit adds code to handle the
case, with a NOTHING node instead of a 0 length EXACT.
regcomp.c: Use old paradigm in dealing with flags recursively

In a recursive call to reg(), instead of passing our flags pointer, pass
a new one and upon return or in that result with the existing one.  I
can see why this should be done, as you don't want to lose what you
already have, as reg() will start by resetting it to 0.  I don't know
why one ands it with the known flags, but I'm presuming there is a
reason, and so am copying the paradigm.  I searched the commit messages
and didn't find anything.  No tests failed, and I didn't figure out a
test that would fail.
regcomp.c: Comments only

The diffs will show more than this, as a block of comments was moved and
revised