develooper Front page | perl.perl5.porters | Postings from January 2017

Deprecation plans

Thread Next
From:
Sawyer X
Date:
January 8, 2017 18:23
Subject:
Deprecation plans
Message ID:
c6fd62e3-d940-b069-6464-81627922bdf8@gmail.com
Hi everyone,


During the core hackathon in Amsterdam, we had a large discussion[1] on
deprecations. This resulted in two decisions:

* From now on, deprecations must include a version in which the
deprecation will take effect. This is to avoid the current situation in
which there are numerous deprecations still in the code, some over 10,
15, or 20 years old.

* Every current existing deprecation must either be pinned with an
effective version or be undeprecated.


During the discussion we went over all existing deprecations and made a
collective decision on both, while trying to remain both practical and
lenient where appropriate. I present the decisions we made. Abigail is
currently working on putting these all into work prior to 5.25.9. A big
thank you to everyone who attended this grueling Hunger Games of
deprecated features and syntaxes, and to Abigail for the work on leading
this and making it a reality. :)


The list:

* Attribute "locked" is deprecated: Deprecated in 5.12.0, delete in 5.28.

* Attribute "unique" is deprecated: Deprecated in 5.12.0, delete in 5.28.

* Calling POSIX::%s() is deprecated: Removing from perldiag.

* Constants from lexical variables potentially modified elsewhere are
deprecated: Delete in 5.32.

* Deprecated use of my() in false conditional: Deprecated in 5.10.0,
remove in 5.30.0.

* ${^ENCODING} is no longer supported: Partially deprecated in 5.22.0,
fully deprecated in 5.25.3, fatal in 5.28.

* $* is no longer supported: Functionality removed in 5.10.0, removing
the warning.

* $# is no longer supported: Functionality removed in 5.10.0, removing
the warning.

* Opening dirhandle %s also as a file: Deprecated in 5.10.0, fatal in 5.28.

* Opening filehandle %s also as a directory: Deprecated in 5.10.0, fatal
in 5.28.

* Passing malformed UTF-8 to "%s" is deprecated: Deprecated since
5.18.0, fatal in 5.25.9.

* Setting ${^ENCODING} is deprecated: Deprecated in 5.22.0. Remove text.

* Setting $/ to a reference to %s as a form of slurp is deprecated,
treating as undef: Deprecated in 5.20.0, fatal in 5.28.

* Unescaped left brace in regex is deprecated here, passed through in
regex; marked by S<<-- HERE> in m/%s/: Deprecated in 5.25.2, fatal in 5.30.

* Unknown charname '' is deprecated: Deprecated since 5.24.0, remove in
5.28.0.

* Use of assignment to $[ is deprecated: Deprecated in 5.12.0; list
context deprecated in 5.14.0, fatal in 5.28 (unless you use arybase)

* Use of bare << to mean <<"" is deprecated: Deprecated in 5.000, remove
in 5.28.0.

* Use of code point 0x%s is deprecated; the permissible max is 0x%s:
Deprecated since 5.24.0, remove in 5.28.

* Use of comma-less variable list is deprecated: Remove in 5.28.

* Use of *glob{FILEHANDLE} is deprecated: Deprecated in 5.8,
undeprecated in 5.24.0, remove from perldiag.

* Use of "goto" to jump into a construct is deprecated: Deprecated in
5.12.0, remove in 5.28.0.

* Use of inherited AUTOLOAD for non-method %s() is deprecated:
Deprecated since 5.004, remove in 5.28.

* Use of %s is deprecated: Remove text.

* Use of %s on a handle without * is deprecated: Remove text.

* Use of strings with code points over 0xFF as arguments to %s operator
is deprecated: Deprecated in 5.24.0, removed in 5.28.0.

* dump() better written as CORE::dump(): Make it a deprecation warning;
dump no longer available in 5.30.

* File::Glob::glob(): Deprecated in 5.8, add deprecation warning in
5.25.9, remove in 5.30.

* "L<section>": Deprecated in 5.12.0.

* "%s" is more clearly written simply as "%s": Deprecated in 5.14.0,
removed in 5.28.

* Don't read the Unicode data base files in F<lib/unicore>: Deprecated
in 5.16.0, no action for now.

* "--libpods" in Pod::Html: Warn since 5.18.0, remove in 5.26.

* sysread(), syswrite(), recv() and send() are deprecated on :utf8
handles: Deprecated in 5.24.0, remove in 5.30.

* $! vs $^E for Winsock functions: Deprecated in 5.24.0, put in
perlport, no action for now.

* Utils: c2ph, pstruct: Deprecated in favor of h2xs, gone in 5.26.0.

* %SIG: Undeprecate.

* B::OP::terse: Remove in 5.28.0.


[1] This included Abigail, Yves Orton, Dave Mitchell, Karl Williamson,
Nicholas Clark, Ilmari, Leon Timmermans, Aaron Crane, Matthew Horsfall,
Lukas Mai, Tux, Nicolas (Atoomic) Rochelemagne, Todd Rinaldo, John
Lightsey, Nick Koston, Stevan Little, and myself. (This is out of memory
and a bit of checking. I apologize if I forgot anyone.)

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About