=head1 Incompatible Changes
-XXX For a release on a stable branch, this section aspires to be:
+=head2 Use of C<:=> to mean an empty attribute list is now deprecated.
- There are no changes intentionally incompatible with 5.XXX.XXX. If any
- exist, they are bugs and reports are welcome.
+An accident of Perl's parser means that these constructions are all equivalent:
+ my $pi := 4;
+ my $pi : = 4;
+ my $pi : = 4;
+
+with the C<:> being treated as the start of an attribute list, which ends
+before the C<=>. As whitespace is not significant here, all are parsed as an
+empty attribute list, hence all the above are equivalent to, and better written
+as
+
+ my $pi = 4;
+
+because no attribute processing is done for an empty list.
+
+As is, this means that C<:=> cannot be used as a new token, without silently
+changing the meaning of existing code. Hence that particular form is now
+deprecated, and will become a syntax error. If it is absolutely necessary to
+have empty attribute lists (for example, because of a code generator) the
+avoid the warning by adding a space before the C<=>.
=head1 Core Enhancements
enhancements. Particularly prominent performance optimisations could go
here, but most should go in the L</Performance Enhancements> section.
+=head2 qr overloading
+
+It is now possible to overload the C<qr//> operator, that is, conversion
+to regexp, like it was already possible to overload conversion to
+boolean, string or number of objects. It is invoked when an object
+appears on the right hand side of the C<=~> operator, or when it is
+interpolated into a regexp. See L<overload>.
+
+=head2 Pluggable keywords
+
+Extension modules can now cleanly hook into the Perl parser to define new
+kinds of keyword-headed expression and compound statement. The syntax
+following the keyword is defined entirely by the extension. This allow
+a completely non-Perl sublanguage to be parsed inline, with the right
+ops cleanly generated. This feature is currently considered experimental.
+
+See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core source
+distribution also includes a new module L<XS::APItest::KeywordRPN>, which
+implements reverse Polish notation arithmetic via pluggable keywords.
+This module is mainly used for test purposes, and is not normally
+installed, but also serves as an example of how to use the new mechanism.
+
+=head2 APIs for more internals
+
+The lowest layers of the lexer and parts of the pad system now have C
+APIs available to XS extensions. These are necessary to support proper
+use of pluggable keywords, but have other uses too. The new APIs are
+experimental, and only cover a small proportion of what would be necessary
+to take full advantage of the core's facilities in these areas. It is
+intended that the Perl 5.13 development cycle will see the addition of
+a full range of clean, supported interfaces.
+
+=head2 Overridable function lookup
+
+Where an extension module hooks the creation of rv2cv ops, to modify
+the subroutine lookup process, this now works correctly for bareword
+subroutine calls. This means that prototypes on subroutines referenced
+this way will be processed correctly. (Previously bareword subroutine
+names were initially looked up, for parsing purposes, by an unhookable
+mechanism, so extensions could only properly influence subroutine names
+that appeared with an C<&> sigil.)
+
=head1 New Platforms
XXX List any platforms that this version of perl compiles on, that previous
=head1 Performance Enhancements
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
-
=over 4
=item *
-XXX
+Reversing an array to itself (as in C<@a = reverse @a>) in void context now
+happens in-place and is several orders of magnitude faster than it used to be.
+It will also preserve non-existent elements whenever possible, i.e. for non
+magical arrays or tied arrays with C<EXISTS> and C<DELETE> methods.
=back
=head1 Changed Internals
-XXX Changes which affect the interface available to C<XS> code go here.
-
=over 4
=item *
-XXX
+C<Perl_pmflag> has been removed from the public API. Calling it now generates
+a deprecation warning, and it will be removed in a future release. Although
+listed as part of the API, it was never documented, and only ever used in
+F<toke.c>, and prior to 5.10, F<regcomp.c>. In core, it has been replaced by a
+static function.
=back