develooper Front page | perl.perl5.changes | Postings from March 2023

[Perl/perl5] 933bd1: hard stricture enablement from "use v5.37" andup

From:
Yves Orton via perl5-changes
Date:
March 10, 2023 14:11
Subject:
[Perl/perl5] 933bd1: hard stricture enablement from "use v5.37" andup
Message ID:
Perl/perl5/push/refs/heads/zefram/remove_version_downgrade_deprecation/000000-5f99d1@github.com
  Branch: refs/heads/zefram/remove_version_downgrade_deprecation
  Home:   https://github.com/Perl/perl5
  Commit: 933bd12fdee89615d3e66d98ca038ae3d3f76704
      https://github.com/Perl/perl5/commit/933bd12fdee89615d3e66d98ca038ae3d3f76704
  Author: Zefram <zefram@fysh.org>
  Date:   2023-03-10 (Fri, 10 Mar 2023)

  Changed paths:
    M lib/strict.t
    M op.c
    M pod/perldeprecation.pod
    M pod/perlfunc.pod

  Log Message:
  -----------
  hard stricture enablement from "use v5.37" and up

Until now, "use VERSION" has only set stricture bits that were not
already set explicitly.  That's unlike the treatment of feature flags
and warnings.  This changes it so that for new versions, v5.37 and above,
"use VERSION" will enable the stricture bits unconditionally, as if there
had been an explicit "use strict".  The meanings of "use v5.36" and below
remain unchanged: they still won't override explicitly-set stricture
status.  "use v5.37" and above counts as explicitly enabling stricture.


  Commit: 73d2cfd1216769dd70696357c3dcc42e135286aa
      https://github.com/Perl/perl5/commit/73d2cfd1216769dd70696357c3dcc42e135286aa
  Author: Zefram <zefram@fysh.org>
  Date:   2023-03-10 (Fri, 10 Mar 2023)

  Changed paths:
    M pod/perldeprecation.pod
    M pod/perldiag.pod
    M pod/perlfunc.pod

  Log Message:
  -----------
  abandon future "use VERSION" stricture change

Documentation was threatening that "use VERSION" for versions below 5.37
would in the future change to hard stricture setting (turning off for
<5.11, on for >=5.11) that takes precedence over prior explicit stricture
declarations.  Now that we've determined that we're not going to make that
change in the future, remove the mentions of it from the documentation.

We've determined not to make that change because it would be an
incompatible change that we have no need to make.  The stricture setting
is already hard for versions >=5.37.  All that removing soft stricture
setting would achieve is to free up the HINT_EXPLICIT_STRICT_* bits
from $^H.  With the cop_features mechanism there's no longer any pressure
to free up bits there, because flags in %^H can now have performance
equivalent to $^H.  Even if there were pressure on $^H bits then those
flags could have moved into %^H rather than disappearing altogether;
because they're only touched when pragmata are processed, the performance
of %^H wouldn't be an issue even without cop_features.


  Commit: 8c166aaa3d1d2f9d3b945cbd848183f32fc35e5f
      https://github.com/Perl/perl5/commit/8c166aaa3d1d2f9d3b945cbd848183f32fc35e5f
  Author: Zefram <zefram@fysh.org>
  Date:   2023-03-10 (Fri, 10 Mar 2023)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M lib/strict.t
    M op.c
    M pod/perldeprecation.pod
    M pod/perldiag.pod
    M pp_ctl.c
    M scope.c
    M t/comp/use.t
    M t/lib/feature/implicit

  Log Message:
  -----------
  remove deprecation of downgrading version decls

There isn't actually any problem with version declarations shadowing
each other, including in cases where the inner declaration may disable
strictures.  Therefore no longer deprecate the latter.


  Commit: 5f99d1f217aaa5f2fc3eed6ef443754e30d389ab
      https://github.com/Perl/perl5/commit/5f99d1f217aaa5f2fc3eed6ef443754e30d389ab
  Author: Zefram <zefram@fysh.org>
  Date:   2023-03-10 (Fri, 10 Mar 2023)

  Changed paths:
    M lib/strict.pm
    M lib/strict.t
    M pod/perlfunc.pod

  Log Message:
  -----------
  explicit soft stricture control via strict.pm

The concept of soft stricture control has existed since Perl 5.15.6,
which made version declarations perform it.  Until now the concept hasn't
had a name, nor a supported way to perform it on its own.  This change
adds adverbs to strict.pm, which support explicit manipulation of soft
stricture status.


Compare: https://github.com/Perl/perl5/compare/933bd12fdee8%5E...5f99d1f217aa



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