Named arguments, default values, parameter checking are all syntactic sugar, which sure, is somewhat nice to have, but is no possible way essential. Every time you go "I can do this using this little longer syntax" - you already disqualified it as a "long overdue must have feature".
If anything they are not long overdue: they are too late to the party. Using such snazziness would require me to leave behind 5.8-style perl, at which point I might as well leave perl behind altogether. The more "modern" you get, the geometrically smaller the pool of folks who would benefit from your work.
This is something I had to write 2 months ago. I can not write this in perl, and am not likely to ever be able to. Before you go "but async" - I will point out that in the entirety of my career IO has never been an issue. Given certain level of competence, you almost invariably end up bottlenecked on CPU.
But sure, let's talk about signatures and postfix-deref 🤮