p5h / p5summit-2019

Perl 5 Summit
0 stars 0 forks source link

more batteries included #3

Open toddr opened 4 years ago

leonerd commented 4 years ago

I'm mixed about this. "more batteries included" is all well and good if you ship "the right kind" of batteries, but everyone's opinions on those batteries will differ.

E.g. right now core perl doesn't ship any sort of asynchronous/events system and I think that is a good thing. You might imagine I'd be biased and want to suggest IO::Async for core, but in truth I find the healthy competition between IO::Async/Mojo/POE to be useful - everyone is always playing catchup with everyone else and importing the best features while inventing their own, and the state of the surrounding technology grows as a result. If one or other falls out of favour from the community then that's fine - no one is held more "important" than the others because of core "favouritism".

On the other hand, things I feel more should be in core are things like Syntax::Keyword::Try, to finally get a decent set of try/catch semantics on a core-accessible level. But given that it's an easily cpan'ed module with no non-core dependencies, I wonder even then what benefit there is to be had by doing so.

Finally I shall remind people of "The CGI.pm Problem". Nuff said? ;)

toddr commented 4 years ago

Some features from Scalar::Util for instance might be good core keywords.

leonerd commented 4 years ago

Well in the case of Scalar::Util I disagree even moreso than usual. Scalar::Util is so far joined-at-the-hip to core perl it practically is core perl. Really basic core things like weaken are only accessible via it. It has to be built against core. It is required by core. It really is part of core language.

Supposing we wanted to move weaken into being a core operator instead of an XSUB from S:U. I really don't see much saving in

use feature 'weaken';
weaken( my $weakself = $self );

vs

use Scalar::Util 'weaken';
weaken( my $weakself = $self );

unless we were going to bundle it as part of some automatically-available featureset as per #4

toddr commented 4 years ago

Exactly. IMO it should just be

weaken( my $weakself = $self );
leonerd commented 4 years ago

Righty, but that's going to require the default-enabled feature bundle as hinted by my reference to #4. So that all depends on whether that happens, really