Next:
podindex
Previous:
podtoc
 [Table of Contents][Index]

state_of_eight



The state of five point eight

Version numbers

Originally there was perl5
    perl5
        :
        5.004
        5.005
For the next release a new scheme was introduced - stable perls would have even version numbers, development perls would have odd version numbers
    Version     Pumpking
    5.6         Sarathy
    5.7         Jarkko
So 5.7 devel leads to 5.8 stable

Development perl

Development has been ongoing. Source is available continuously via rsync (the rsync://ftp.linux.activestate.com/perl-current/ entry elsewhere in this document), Jarkko issues snapshots every 2 or so days, and there are more major snapshots with version number changes just like stable. 5.7.3 was the most recent, about 3 weeks ago. This will be the last before 5.8. So we've a good idea of what's in 5.8

What's in 5.8

Unicode

To quote perldelta.pod
    Unicode in general should be now much more usable than in Perl 5.6.0
    (or even in 5.6.1).  Unicode can be used in hash keys, Unicode in
    regular expressions should work now, Unicode in tr/// should work now,
    Unicode in I/O should work now.
5.6 has bugs. It's been described as "Marketing compatible with Unicode" (I forget by whom). In 5.6, if you put Unicode into a hash key, you get the bytes out. If you put Unicode into a regular expression which wasn't expecting Unicode you get bytes out. I don't know about tr///. Output can be a mismatch of 8 bit characters and Unicode.

Two modules by SADAHIRO Tomoyuki in the core provide Unicode collation and Unicode normalization; Unicode::Collate and Unicode::Normalize.

PerlIO

Previously PerlIO was just a veneer on top of stdio (or sfio). Now PerlIO is a real stdio replacement. With it you can mark file handles as being utf8. You can actually input and output Unicode for the first time, without needing to explicitly translate your data on the way in or way out.

You can also mark file handles as being in other encodings, so you can do things like say that the file is in Greek, or Japanese in Shift-JIS, and then PerlIO will translate all the Greek or Japanese characters to the correct Unicode code points.

A module called Via lets you perform arbitrary custom data processing, and there is perl syntax to let you create automatic temporary files (open($fh,"+>", undef) || ...) and read/write scalars as memory buffers (open($fh,'>', \$variable) || ...).

Of course you can do all of these things with tied handles already, but with PerlIO you can do them in C (or get someone else to do them for you in C), which makes it much faster)

And some people start doing things like compression...

ithreads

ithreads is a whole new threading module based (I think) on the work done by Sarathy to emulate fork on Windows for perl 5.6. It's important for modperl2, which in turn is for apache2, which has a hybrid process & thread based architecture. This should give decent modperl performance on Windows. [As I understand it, apache 1.3 on Windows serves requests using multiple threads within a single process. modperl isn't threaded, hence there is only 1 modperl interpreter per apache server, and it becomes a bottleneck]

Safe signals

The long awaited safe signals patch is in.

Numbers stuff

I've said far too much about this already.

Lots more tests

There are about 5 times as many tests, so perl takes longer to build. (You do all run make test when you build perl, don't you?)

Sadly, Schwern is not poorer yet, despite a large effort to write tests for all the untested core modules. Also, core perl isn't 100% tested, as it's still possible to find coredumps, as I did on Tuesday.

Jarkko of borg

Jarkko of borg has been assimilating lots of useful new modules into the core. For example

Memoize
Make your functions faster by caching their results, to save calling them again.

Source Filters
Check out Damian's Filter::Simple.

Text::Balanced
Powerful text processing.

Switch
One of the most useful "missing" features of perl5.

Hash keys order has changed

Perl's hashing has been changed to use Bob Jenkins "One-at-a-Time" algorithm (http://burtleburtle.net/bob/hash/doobs.html) for better performance. If your code relies on the order keys, values or each iterates over the hash, then it's in for a nasty surprise. Of course, nobody is that silly. [No no no. Data::Dumper didn't do this. Not at all]

Pseudo hashes will die

Pseudo hashes (the strange things that appeared with the compiler in in 5.005-or-so) will die. They're depreciated in 5.8, and will be gone from 5.10, because they slow down all hashes and all arrays (by about 15%, Schwern calculates). The functionality which currently is implemented with pseudo-hashes (fields.pm) will remain, probably using the new restricted hashes.

What now?

5.7.3 was three weeks ago. Jarkko wants to have a code freeze for release candidate 1 on Monday (24th March).

This is where you come in.

  1. perl5-porters doesn't have time to test every module on CPAN.

  2. We definitely don't have access to your private code.

  3. So we've not tested it with 5.7.3.

  4. So we don't know if anything breaks.

  5. So we can't fix it.

  6. So it will still be broken when 5.8 comes out.

  7. You don't want that, do you?

Please, if you possibly can get perl5.7.3, build it and install it on your development systems. Test your precious programs. If they worked in 5.6 or 5.005 (or any earlier perl5) but they break in 5.7.3 then that's a bug in perl, not in your program, and we'd like to know about it. Report it as a bug with the perlbug program. And we'll try to fix it before 5.8.

Questions

Leon asked when perl 5.8 was expected to be released. Stupid me. I didn't know, and I should have been ready for that question.

Jarkko's 5.7.3 release message says:

    This is the release 5.7.3 of Perl.

    This is the last developer release (5.7.x) before the next major
    public release (5.8.0).  The current intent is to release Perl 5.8.0
    in April or May, the Release Candidate 1 is planned to be released
    Monday the 8th of April.
and he says that this plan is currently unchanged.


[Top] Generated by Pod::HTML 0.40 on Sat Mar 23 00:31:54 2002