Next Perl update, and plans beyond…

Mathieu Arnold mat at FreeBSD.org
Tue Dec 9 16:30:47 UTC 2014


Hello there,

In a few days, I'll be changing the way Perl works wrt compiled modules
it produces.  The current patch[1] is on our code review tool.

Right now, we have:

$ readelf -d /usr/local/lib/perl5/5.18/mach/CORE/libperl.so|grep SONAME
 0x000000000000000e (SONAME)             Library soname: [libperl.so.5.18]
$

That is, libperl.so has a name, and it is versionned, and the version
will change if you have 5.16 or 5.20.  If your libperl.so does not have
a SONAME, you don't have an up-to-date Perl.

Which is good, because if some app is linked with libperl.so, it has:
# readelf -d /usr/local/bin/vim|grep perl
 0x0000000000000001 (NEEDED)             Shared library: [libperl.so.5.18]
 0x000000000000000f (RPATH)              Library rpath: [/usr/local/lib:/usr/local/lib/perl5/5.18/mach/CORE]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/lib:/usr/local/lib/perl5/5.18/mach/CORE]

So if you change your Perl version, pkg will know it has to upgrade vim
too because a NEEDED shlib changed.

Now, for Perl modules, it's not like that, it reads like this:

$ readelf -d /usr/local/lib/perl5/site_perl/mach/5.18/auto/DateTime/DateTime.so|grep perl
$

So what the patch[1] does, is force linking with libperl.so.x.yy.  After
the patch, a compiled Perl module will look like this:

$ readelf -d /usr/local/lib/perl5/site_perl/mach/5.18/auto/DateTime/DateTime.so | grep perl
 0x0000000000000001 (NEEDED)             Shared library: [libperl.so.5.18]
 0x000000000000000f (RPATH)              Library rpath: [/usr/local/lib/perl5/5.18/mach/CORE]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/lib/perl5/5.18/mach/CORE]
$

So pkg will detect it needs to be reinstalled when the Perl version
change.


As for the plans beyond that I was talking about in the subject, there
will be a Perl 5.22 released next May, (and 5.24 the May after that,)
when that happens, I'll change the default Perl to be 5.20, and
deprecate 5.18 which won't, then, be supported.  Sometime at the end of
the summer, like sometime September, I'll change the default Perl to
5.22 and try to keep it that way, that is, a new Perl goes in in May,
and gets to be the default in September.


1: <https://reviews.freebsd.org/D1241>

-- 
Mathieu Arnold
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 964 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-perl/attachments/20141209/c05b33f2/attachment.sig>


More information about the freebsd-perl mailing list