To be completely honest, I would expect no less from Java or python within the same major release, namely for the language and the interpreter to "just work"
I'd expect it too. Sadly my expectations are often not met :-)
Can you help me understand why Perl is so special or outstanding in that regard? Maybe just the very test-aware community?
I think it's a combination of the test-aware community - and the infrastructure that community has built up.
Little things like having the default behaviour of all the build/install tools be "run all the tests and only install if they all pass", rather than having running tests be optional.
Or take cpantesters.org for example.
For those who don't know cpantesters is basically a distributed continual-integration environment for all of CPAN. Any time anybody releases something to CPAN it gets downloaded and compiled on dozens of OS/perl combinations, and the automated tests run.
If I release a module on CPAN and it doesn't work on some obscure OS/perl combination I'll likely get an automated e-mail in a matter of hours. The results of those tests are public - so anybody can easily see what versions of what modules work on what platforms. You'll see them up right next to the module in all the CPAN search tools. So folk can easily understand where they'll be problems, and people with access to that platform can more easily find and patch problematic code.
So anybody who releases anything to CPAN gets a fantastic multi-platform CI tool for free.
The perl community has done a stirling job taking the whole small-pieces-loosely-joined philosophy onto their community module distribution / testing infrastructure.
Because of the transparency and integration "bad" modules are obvious, and tend to get quickly fixed or deprecated. At the very least it's very easy to identify problematic areas and work around them.
I will add that at least both PHP and Python core development has been very willing to give any feature that's deemed a mistake the axe without second thoughts. On the opposite extreme, we (the perl5 porters) have mostly taken the opposite stance of supporting real users if in doubt. There are many features of Perl that are widely considered to by ill-suited for larger projects. We'll take very good care to provide a gentle and clear migration path when we break those. I'm sure this helps in migration. At work, we're slowly migrating ~2.5 million lines of code across 14 versions of perl right now. Mostly without a lot of pain.
This being said, this is not a snipe at how PHP or Python do it. It's a choice of the maintainers/developers.
I'd expect it too. Sadly my expectations are often not met :-)
Can you help me understand why Perl is so special or outstanding in that regard? Maybe just the very test-aware community?
I think it's a combination of the test-aware community - and the infrastructure that community has built up.
Little things like having the default behaviour of all the build/install tools be "run all the tests and only install if they all pass", rather than having running tests be optional.
Or take cpantesters.org for example.
For those who don't know cpantesters is basically a distributed continual-integration environment for all of CPAN. Any time anybody releases something to CPAN it gets downloaded and compiled on dozens of OS/perl combinations, and the automated tests run.
If I release a module on CPAN and it doesn't work on some obscure OS/perl combination I'll likely get an automated e-mail in a matter of hours. The results of those tests are public - so anybody can easily see what versions of what modules work on what platforms. You'll see them up right next to the module in all the CPAN search tools. So folk can easily understand where they'll be problems, and people with access to that platform can more easily find and patch problematic code.
So anybody who releases anything to CPAN gets a fantastic multi-platform CI tool for free.
And a discussion forum (http://cpanforum.com/). And a bug/issue tracker (https://rt.cpan.org). And a review platform (http://cpanratings.perl.org/). And automated "quality" metrics (http://cpants.charsbar.org/) and .... well... I could go on. All of them have public data or API routes so they very quickly get integrated into tools like https://metacpan.org and http://search.cpan.org/.
The perl community has done a stirling job taking the whole small-pieces-loosely-joined philosophy onto their community module distribution / testing infrastructure.
Because of the transparency and integration "bad" modules are obvious, and tend to get quickly fixed or deprecated. At the very least it's very easy to identify problematic areas and work around them.