Change files for core modules

barbie on 2005-10-08T11:24:56

I was doing some dependency checking yesterday, for some of the distributions that have failed to complete any CPAN testing. I was quite surprised that there are several modules that reference specific versions of core Perl modules. File::Path gets referenced most. So I decided to see why someone would specifically look to a specific version than just the installed core version. The distribution in question was referencing the version in perl-5.8.6.

Unfortunately there isn't a distinct Changes file for File::Path, or if there is, it isn't anywhere that is easily viewable on the web. There are all the perldeltas, but it takes a while to sift through them to see what has changed against a core module.

So my question is there anywhere that the Changes file for just File::Path or any other core module, is viewable on the web?

Next week I will investigate whether that version of File::Path is actually required, or whether the authors just put it in because that was the version on their system. It's a shame that too many distributions insist on being only compatible with Perl 5.8+, when most are quite compatible with Perl 5.6.1 too.

I also noted that Catalyst now depends on Perl 5.8, thus rendering a whole bunch of CPAN distributions N/A for Perl 5.6.1. Maypole works in Perl 5.6.1, so I'm not sure why they've changed to ignore anything before 5.8.


Why something would need 5.8.4

Alias on 2005-10-08T12:45:35

I don't know if they specify specifically 5.8.4, but the word on street is that if you want to use unicode, it wasn't acting sane until 5.8.4.

The big 5.8 thing in Perl::MinimumVersion is also "use utf8;". So given the diversity of applications it supports, unicode would seem an obvious one.

Hang on a second.... there's a better way of doing this. perlver to the rescue!

adam@red:~/.cpan/build$ perlver Catalyst-5.33/

      -------------------------------------------------------------------------------- -----------------
  | file | explicit | syntax | external |
  | -------------------------------------------------------------------------------- ----------------- |
  | Catalyst-5.33/Build.PL | ~ | ~ | n/a |
  | Catalyst-5.33/Makefile.PL | ~ | ~ | n/a |
  | Catalyst-5.33/t/03podcoverage.t | ~ | ~ | n/a |
  | Catalyst-5.33/t/01use.t | ~ | ~ | n/a |
  | Catalyst-5.33/t/02pod.t | ~ | ~ | n/a |
  | Catalyst-5.33/t/engine/response/errors.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/response/status.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/response/redirect.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/response/headers.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/response/cookies.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/request/body.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/request/headers.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/request/cookies.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/request/uploads.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/request/parameters.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/engine/setup/basics.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/inheritance.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/regexp.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/default.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/end.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/path.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/local.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/begin.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/forward.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/private.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/component/controller/action/global.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Dump.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Response/Errors.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Response/Redirect.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Response/Status.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Response/Headers.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Response/Cookies.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Engine/Request/Uploads.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/End.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Forward.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Regexp.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Global.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Inheritance.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Private.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Local.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Begin.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Default.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/Controller/Action/Path.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/View/Dump.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/View/Dump/Response.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/View/Dump/Request.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/View/Dump/False.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/t/lib/TestApp/View/Dump/Parameters.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/t/lib/Catalyst/Plugin/Test/Errors.pm | ~ | ~ | n/a |
  | Catalyst-5.33/t/lib/Catalyst/Plugin/Test/Headers.pm | ~ | ~ | n/a |
  | Catalyst-5.33/t/plugin/loaded.t | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Dispatcher.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Helper.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Request.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Response.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Build.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Setup.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Test.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Log.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Exception.pm | ~ | ~ | n/a |
  | Catalyst-5.33/lib/Catalyst/Utils.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/FastCGI.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/SpeedyCGI.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/CGI.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Test.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/HTTP.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache.pm | ~ | ~ | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/HTTP/Daemon.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/HTTP/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP13.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP19.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP20.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP13/Apreq.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP13/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP19/Base.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP19/Apreq.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP20/Base.pm | ~ | v5.6.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/Apache/MP20/Apreq.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/CGI/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/CGI/APR.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/SpeedyCGI/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/FastCGI/APR.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Engine/FastCGI/Base.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/lib/Catalyst/Request/Upload.pm | ~ | v5.5.0 | n/a |
  | Catalyst-5.33/script/catalyst.pl | ~ | ~ | n/a |
  | -------------------------------------------------------------------------------- ----------------- |
  | Minimum explicit version : ~ |
  | Minimum syntax version : v5.6.0 |
  | Minimum version of perl : v5.6.0 |
      -------------------------------------------------------------------------------- -----------------


Well, there's nothing obvious in the Catalyst source code...

Re:Why something would need 5.8.4

barbie on 2005-10-10T11:59:10

Funny you should mention Perl::MinimumVersion, as I would liked to have used it. Its another that is on my list with dependency failures. Unfortunately Test::SubCalls is failing the same tests as imacat's report, except mine fails on Windows, Perl 5.6.1.

I have been doing the checking by hand previously and noting to the authors that it really does work for 5.6.1, however I had planned to write something that can do that (using Perl::MinimumVersion) to check a distribution as soon as it produces a NA report on cpan-testing. It'll then be a filter to CPAN-YACSmoke to only report to the author. There are no official 5.6.1 testers at the moment, and so it is likely to be only me sending them for now :)

Re:Why something would need 5.8.4

jk2addict on 2005-10-10T13:47:05

And of course, there's this nugget in the wiki about 5.6.1 and Catalyst:

http://dev.catalyst.perl.org/wiki/AsidesAndOddities

Re:Why something would need 5.8.4

barbie on 2005-10-10T14:02:10

That should perhaps feature a bit more prominently in their docs I think.

However, I was only cpan-testing Catalyst and related modules, so manual intervention wasn't the plan. It just means I don't test anything Catalyst dependent anymore.

Reading the fix, I'm more inclined to get frustrated that there isn't an independent release for some core modules, so that those of us who can't upgrade past 5.6.1 can still get the benefit of fixes. If these fixes to Class::Struct work fine on 5.6.1, why is there a dependency now on 5.8.7?

Changelogs

rafael on 2005-10-10T08:51:22

For changelogs, you can either look at the extensive Changes* files found in the perl source distribution, or use perlbrowse at http://public.activestate.com/cgi-bin/perlbrowse

Re:Changelogs

barbie on 2005-10-10T11:48:58

I guess it's better than nothing, but it still requires a lot of effort to figure out what changes went into which version. There is no mention of the module version being updated in those changes files. This might be acceptable for looking up one module, but once you start trying to look at the differences for other files, it starts to become painful.

Hence why I was hoping there might actually be a Changes file for each individual file. :(

Re:Changelogs

speters on 2005-10-10T19:59:11

I think that Module::Corelist contains the Perforce revision number for each release. Also, you can use the corelist command to see which version of the module went into each release.

steve@kirk:~/perl-encode$ corelist -a File::Path

File::Path  was first released with perl 5.001
  5.001      undef
  5.002      1.01
  5.00307    1.01
  5.004      1.04

etc.

As for queries by file, the perlbrowse site will let you browse the 50 most recent changes for a particular file online. That won't get you very far with some of the important internal files, but that should get you a long way for most of the core modules.