YAPC::EU roundup #2

Well, I'm back from from the YAPC::EU conference, so I should probably write up the rest of the happenings. On Thursday Tim Bunce arrived - I was hoping he was coming as he lives in Southern Ireland. Tim is the designer and author of the extremely widely used perl DBI module, and a really nice guy to boot. As usual, we spent time catching up with gossip and generally putting the world to rights.

On Thursday evening we all walked to the Odyssey Centre, and over dinner Tim explained a nasty UTF-8 related problem in the DBI interface. DBI allows you to bind variables to columns in a query, so that the values of each successive row are stored in the variables. The problem is if you bind a variable to one query that returns UTF-8 values, and then subsequently rebind it to another query that returns ASCII strings. The first bind/query sets the UTF-8 flag on the variable, and the subsequent bind/query doesn't clear it, so Bad Things Happen. Nick Clark (current perl pumpking) said that he thought that we'd gone about as far as we could retrofitting unicode support into the current perl5 interpreter, and that the 'Final Solution' would have to wait for parrot to be complete. Nick was saying that lots of the XS modules on CPAN aren't unicode-aware (I'm guilty of that!), not because people don't care but because as he explained "They didn't change, but perl changed underneath them".

We also talked some more about the ABI issues I mentioned in my last post. Not only does perl have the unfortunate habit of putting the libperl.so library in a different place for each micro release, it also doesn't actually have a well-defined ABI. Perl does have something that purports to define an ABI in the shape of the embed.fnc file and friends, and in fact on some platforms (e.g. Win32, AIX MacOS and others) it's used to produce files that define the interface provided by perl as it's mandatory to have such a thing to be able build perl on those particular platforms. The problem is that every platform uses a different set of exported symbols, and that's further permuted by the multitude of ways that you can build perl (threaded, multiple interpreters etc.) - see makedef.pl for the gory details - it's nasty. This makes it difficult to know exactly what symbols should be exported for Linux or Solaris - and the fact that virtually the whole of the documented interface consists of a mad macro mishmash makes this challenging to sort out, to say the least. On top of that there is nothing to actually stop XS modules using any old bit of the perl internals they choose, and some do so choose, so enforcing an ABI could well break an unknown number of CPAN XS modules. I did consider using a mapfile to version libperl.so on Solaris, but after looking at it I backed quietly away before turning on my heels and fleeing. Nick opined that we should probably fix this for perl 5.10 (that should please Rod), but it's a gnarly problem. On a brighter note, I asked Dan Sugalski on IRC this morning if parrot was going to suffer from the same problems, and he assured me it wouldn't. Yay for Dan :-)

Allison Randal was also at dinner with us on Thursday, and at one point Tim asked her "I hear you've just stared working for O'Reilly, what exactly are you doing for them?", to which the immediate riposte was "Well Tim, I'm your new editor!" Tim is currently writing the second revision of the perl DBI book, a process which he memorably described as "Like having your teeth drawn out with pliers, very slowly over the course of a year". Any distant thoughts I ever had of writing a book disappeared at that point!

After dinner we went and found the rest of the mob in the bar, and I had a bit more of a chat with Leo Toetsch about how I could help out with parrot. People have been trying to get hold of machines (including sparc) for Leo, and in fact he's just got a new iBook, courtesy of TPF. However it's clear what he actually needs is help with the other platforms - he just doesn't have time to test/build on all the variants. Leo told me that the threading support in parrot is pretty rudimentary at the moment, and Dan has also been saying that work needs to be done on making parrot less dependent on the perl5 that is already on the platform for configuration information. As I mentioned before, the Solaris sparc and x86 JITs needs work. plus it would be nice if it it worked with the Forte compilers as well. Both Dan and Leo said that dtrace looked interesting, especially as it is now possible to embed your own probes in an application, so there's some obvious synergy with Solaris 10 there as well. There's certainly a whole lot of stuff to be done, now all I have to do is to find the time and support to do it ;-)

On Friday the conference finished off with the traditional auction, where donated items are auctioned off to help fill the TPF coffers. The general idea is to see who can pay the most outrageous amount for the most worthless piece of tat. A set of fridge magnets with perl code statements printed on them went for 50 pounds, and a signed copy of the Perl 6 book went for something approaching 300 pounds, as far as I can remember. The very last item is the chance to choose the colour of the conference organiser's t-shirts for the next year's conference. This year with the conference being in Belfast, the colour was naturally orange. Next year it's in Portugal, and for some reason I still can't fathom, the winning bid was for black fishnet. Ewwwww....

Tags : , ,
Categories : Tech, Perl, Work