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

Re: We need a language design process.

Thread Previous | Thread Next
Jesse Vincent
December 31, 2017 05:35
Re: We need a language design process.
Message ID:

On Sat, Dec 30, 2017 at 04:44:17PM -0500, Dan Book wrote:
> As mentioned before, this is a unique situation. A lot of the code using
> smartmatch, broken by these changes, was written on perls where it is not
> experimental.

When I authored the policy in question, I don't believe I contemplated the
concept of 'demoting' a feature from production to 'experimental'. Upon 
reflection, it's a very clever way to deprecate a set of semantics without
entirely torpeodoing a feature. There should be a written policy explaining
how this should work, but, operationally, I don't think it's all that ripe for 

That said, we spent a lot of time right around then trying to figure out
what the hell to do about the broken smartmatch semantics we'd stolen from
an early draft of Perl 6. My vote was for someone incredibly smart with,
way, way too much free time to give us lexical smartmatch implementations.

I want to be very clear that I am _years_ out of date on everything related to
p5p and the implementation of the core, so you should ignore all of my advice. 
That said, smartmatch was introduced in 5.10 (2007), had its semantics changed in 
5.10.1, was bumped to 'experimental' by rjbs in 5.18 (2013), reflecting the fact
that the existing implementation was crazypants and shouldn't be used in production 
code. That was four years ago.

In _my_ eyes, bouncing a feature from production to 'experimental' is pretty much 
the same thing as bouncing it to 'deprecated', with the caveat that we think there
might be something salvagable there. When I wrote the early draft of the
policy, I said "If something in the Perl core is marked as experimental,
we may change its behaviour, deprecate or remove it without notice."

At the same time, the last supported Perl release with a non-experimental
version of smartmatch was 5.16, which we officially stopped supporting
(at least per the policy from my era) when 5.20 came out in 2014. If I were 
pumpking, I'd probably angst about this for a while, try the new changes in blead and
see about getting the bits of CPAN that are depending on what is, essentially a 
broken, deprecated feature updated.

And then I'd document the hell out of it in the release notes.

But I'm not the Pumpking, just a cranky old hacker who has nothing better to
do than reply to threads he gets CCed into.

<3 Jesse

> -Dan


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About