I've set up a FC3 box and want to run Interchange (http://www.icdevgroup.org/) on it. The default perl on Fedora Core (and this was true with RHL since 8) has threading turned on. Interchange requires that threading be dissabled in order to run. Now, I've grabbed the source and rebuilt perl and things are basically working but out of curiosity, is the decision to enable threads in FC's perl one that anyone would be willing to reconsider? Is threaded perl required by enough people at this point to justify it? Here's a piece of a thread (admitedly it's a bit old - from April 2003) discussing the topic.
-- Begin Quoting Mike Heins -------------
Interchange doesn't use threads; but there are (as the authors of it would readily admit) quite a few bugs in Perl's threads implementation.
It appears that Perl 5.8.0's ithread implementation is much better than previous ones, which wouldn't even begin to run Interchange properly. But it is not good enough to work well under all conditions. Randy Moore of the core group discovered a case where vec() lost its map, and I am positive there are many other little problems especially in PreFork mode. Interchange pushes Perl pretty hard.
In fact, I wouldn't doubt that some of the locking problems people are now having on Red Hat weren't due to this; I run some very busy IC sites and don't see them at all.
Thus the new enforcement of the requirement. Before it was enforced by the fact that noone distributed a Perl with threads enabled, and the fact that Interchange wouldn't even start with threads enabled should someone build such a Perl.
Red Hat distributed their perl for 8.0 and 9.0 with threads enabled, which is *not* the default. This is an extremely bad decision; the number of Perl scripts and programs which use threads must be far less than one in 1,000, and anyone seriously using such a program must keep up with the latest builds and modules to fight bugs.
It is another in a long line of bad Perl distributions by Red Hat. While I like the Linux produced by my former employer and have been using it exclusively for years, I abhor their Perl builds and when I install a new system the first thing I do is build a new one.
In fact it sometimes seems as if the Python-heads there are trying to sabotage Perl. I don't think that is the case; but there is no rational reason to enable threads on Perl unless you are doing thread-based program development. I know of no such programs in the Red Hat distribution; it would surprise me greatly if there are any.
Someone made the suggestion we try to make Interchange thread-safe and actually use them. While this is a noble goal, it is simply not practical. Leaving aside the work that would need be done on Interchange itself, IC uses or can use dozens of other Perl modules, each of which would need to be vetted. The types of problems caused by defects in threadsafeness (sic) are also notoriously hard to debug.
-- End Quoting Mike Heins --------------- original here http://www.icdevgroup.org/pipermail/interchange-users/2003-April/032700. html
On Thu, Mar 03, 2005 at 11:26:50AM -0500, Henry Hartley wrote:
I've set up a FC3 box and want to run Interchange (http://www.icdevgroup.org/) on it. The default perl on Fedora Core (and this was true with RHL since 8) has threading turned on. Interchange requires that threading be dissabled in order to run. Now, I've grabbed the source and rebuilt perl and things are basically working but out of curiosity, is the decision to enable threads in FC's perl one that anyone would be willing to reconsider? Is threaded perl required by enough people at this point to justify it? Here's a piece of a thread (admitedly it's a bit old - from April 2003) discussing the topic.
[snip]
The author of that article seems to be conflating two topics; the use of a perl interpreter with thread-support compiled in, and actually making use of the thread facilities. I am not aware of any significant bugs that affect a single-threaded program running on a ithread-enabled perl interpreter that don't also appear with a 'vanilla' interpeter. Thus Interchange should work just as well on both interpeters, *unless* there is a specific reason which the article doesn't mention.
As to whether Interchange would work successfully in a multi-threaded Perl application is an entirely different matter; I can well believe that it doesn't; lots of Perl code and modules don't, as they haven't been specifically written or modified to be thread-safe.
The first version of Perl to make an ithreads API accessible to the user was version 5.8.0, released in July 2002, and yes, there were a lot of threads-related bugs in it; since then three have been 6 further releases, (current is 5.8.6; FC3 has 5.8.5), and there have been a lot of threads-related fixes during that time, many of them by me.
So I can't see any major reason for not making the default perl compiler ithread-enabled.
Dave