The relevant commits in bleadperl:
commit c0659f7
Author: Karl Williamson <khw@cpan.org>
AuthorDate: Wed Nov 19 17:02:58 2014 -0700
Commit: Karl Williamson <khw@cpan.org>
CommitDate: Thu Nov 20 21:45:18 2014 -0700
perldelta for deprecating ${^ENCODING}
commit a3ee04b
Author: Karl Williamson <khw@cpan.org>
AuthorDate: Wed Nov 19 16:49:53 2014 -0700
Commit: Karl Williamson <khw@cpan.org>
CommitDate: Thu Nov 20 21:45:18 2014 -0700
perlvar: More text about ${^ENCODING}; refer by perldiag
commit d5b4785
Author: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
AuthorDate: Mon Nov 10 23:54:46 2014 +0000
Commit: Karl Williamson <khw@cpan.org>
CommitDate: Thu Nov 20 21:45:18 2014 -0700
Deprecate setting ${^ENCODING}
The commiter added a no warnings in t/op/leaky-magic.t, and made other
minor changes because of rebasing issues.
commit 3e66930
Author: Karl Williamson <khw@cpan.org>
AuthorDate: Tue Nov 18 17:03:03 2014 -0700
Commit: Karl Williamson <khw@cpan.org>
CommitDate: Thu Nov 20 21:45:18 2014 -0700
Make encoding pragma lexical in scope
The encoding pragma is deprecated, but in the meantime it causes spooky
action at a distance with other modules that it may be combined with.
In these modules, operations such as chr(), ord(), and utf8::upgrade()
will suddenly start doing the wrong thing.
The documentation for 'encoding' has said to call it after loading other
modules, but this may be impractical. This is especially bad with
anything that auto-loads at first use, like \N{} does now for charnames.
There is an issue with combining this with setting the variable
${^ENCODING} directly. The potential for conflicts has always been
there, and remains. This commit introduces a shadow hidden variable,
subservient to ${^ENCODING} (to preserve backwards compatibility) that
has lexical scope validity.
The pod for 'encoding' has been revamped to be more concise, clear, use
more idiomatic English, and to speak from a modern perspective.