Mailing List Archive

Perl Portability Matrix
I'm compiling a table of perl portabliity and interoperatability
issues.

Against each of the following operating systems, I'm going to
make a matrix for each of the following questions. If you could
please mail me your report and/or any suggestions, I'd appreciate it.

thanks,

--tom


Operating Systems:

Unix VMS
AIX MacIntosh
BSD4.4 OS/2
DEC (OSF) Microsoft
HPUX MS-DOS
Linux Windows 3.1
SCO Windows 95
SGI (Irix) Windows NT
Solaris MVS
SunOS CMS

1. Core Functionality

1.1 What's the latest version of perl available for that platform?
1.2 Which version of perl, if any, comes with the standard system?
1.3 What percentage of the standard test suite runs properly?
1.4 Is there support for the perl debugger?
1.5 Is there support for the perl profiler?
1.6 Are shared and/or dynamic libraries supported?
1.7 Is there support for the h2xs and xsubpp?
1.8 Does Makemaker work properly?
1.9 Does tainting work properly?
1.10 Does embedding perl in C applications work properly?
1.11 Do s2p and a2p work?

(In all questions below, please read "supported" as "works properly")

2. System Dependent Behaviour

2.1 How many signals are supported?
2.2 Are reliable signals supported (ie. POSIX or BSD, not SysV)
2.3 Do slow system calls restart or get interrupted from a signal handler?
2.4 Is $0 usefully writable?
2.5 Does system() work properly?
2.6 Does open(PH, "cmd|") work properly?
2.7 Do `backticks` work properly?
2.8 Does fork() work properly?
2.9 Does stat() work properly?
2.10 Does flock() work properly?
2.11 Do symlink() and readlink() work properly
2.12 Are long filename supported?
2.13 Is it cheap to call other processes (internal vfork() support)?
2.14 Do alarm() and sleep() work properly?
2.15 Are files and pipes transparently equivalent?
2.16 Are binary files and text files transparently equivalent?
2.17 Are setuid scripts secure?
2.18 Is waitpid WNOHANG directly supported?

3. Standard Module Support

3.1 Is SDBM supported?
3.2 Is GDBM supported?
3.3 Is DB_File supported?
3.4 Is the socket module (Socket.pm) supported?
3.5 Is System V IPC supported?
3.6 Is Fcntl supported?
3.7 Is POSIX supported?

4. Data Base Support

4.1 Is the DBI supported?
4.2 Is DBD::Msql supported?
4.3 Is DBD::Oracle supported?
4.4 Is DBD::Sybase supported?
4.5 Is DBD::Informix supported?
4.6 What other database extensions are supported?

5. 3rd Party Module Support

5.1 Curses (and menu.pl)?
5.2 Term::Readkey, Term::ReadLine
5.3 Web stuff: CGI* and libwww (MIME, HTML, HTTP, URI, URL, etc)
5.4 TK
5.4 Safeperl and Safe CGI Perl?

--
Tom Christiansen Perl Consultant, Gamer, Hiker tchrist@mox.perl.com
There is, however, a strange, musty smell in the air that reminds me of
something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
--Larry Wall in Configure from the perl distribution
Re: Perl Portability Matrix [ In reply to ]
On Tue, 12 Dec 1995, Tom Christiansen wrote:

> Operating Systems:
>

Linux

>
> 1. Core Functionality
>
> 1.1 What's the latest version of perl available for that platform?

The latest version of perl.

> 1.2 Which version of perl, if any, comes with the standard system?

Linux doesn't work that way. Perl would be part of the distribution, not
kernel, so it differs.

Currently, 4.036 is very widespread, with 5.001(something) being present
in newer distributions.

> 1.3 What percentage of the standard test suite runs properly?

100%, ignoring DBM issues. (All tests pass successfully, but some DBM
stuff isn't necessarily tested fully.)

> 1.4 Is there support for the perl debugger?

Yes.

> 1.5 Is there support for the perl profiler?

Yes.

> 1.6 Are shared and/or dynamic libraries supported?

Yes to a.out execution format, if libdld is also used. Yes to ELF without
any accessories.

> 1.7 Is there support for the h2xs and xsubpp?

Yes.

> 1.8 Does Makemaker work properly?

I'll get back to you when 5.002 settles down. :-) (Yes.)

> 1.9 Does tainting work properly?

Untested.

> 1.10 Does embedding perl in C applications work properly?

Untested.

> 1.11 Do s2p and a2p work?

Untested.

>
> (In all questions below, please read "supported" as "works properly")
>
> 2. System Dependent Behaviour
>
> 2.1 How many signals are supported?

In some distributions including perl4.036, some signals are busted,
notably SIGPIPE. Hopefully this should go away with 5.001+. All signals
_should_ be supported.

> 2.2 Are reliable signals supported (ie. POSIX or BSD, not SysV)

Via POSIX::, they should be. The default signal() is unreliable.

> 2.3 Do slow system calls restart or get interrupted from a signal handler?

Untested.

> 2.4 Is $0 usefully writable?

Yes.

> 2.5 Does system() work properly?

Yes.

> 2.6 Does open(PH, "cmd|") work properly?

Yes.

> 2.7 Do `backticks` work properly?

Yes.

> 2.8 Does fork() work properly?

Yes.

> 2.9 Does stat() work properly?

Yes.

> 2.10 Does flock() work properly?

Untested.

> 2.11 Do symlink() and readlink() work properly

Yes.

> 2.12 Are long filename supported?

Yes.

> 2.13 Is it cheap to call other processes (internal vfork() support)?

Yes. (No vfork(), but rather an advanced C-O-W MM.)

> 2.14 Do alarm() and sleep() work properly?

Not fully tested. I believe so.

> 2.15 Are files and pipes transparently equivalent?

Yes.

> 2.16 Are binary files and text files transparently equivalent?

Yes. (Unix -- no difference)

> 2.17 Are setuid scripts secure?

Unknown. Linux has /proc/self/fd/*, which acts the same as /dev/fd/*, so
in theory they could be. I don't know if anything uses this, though.

> 2.18 Is waitpid WNOHANG directly supported?

Yes.

> 3. Standard Module Support
>
> 3.1 Is SDBM supported?

Yes.

> 3.2 Is GDBM supported?

Yes.

> 3.3 Is DB_File supported?

Yes. (Not recently tested, though.)

> 3.4 Is the socket module (Socket.pm) supported?

Yes.

> 3.5 Is System V IPC supported?

Yes.

> 3.6 Is Fcntl supported?

Yes.

> 3.7 Is POSIX supported?

Yes. (But pitifully slow to load, not that that is Linux' fault.)

> 4. Data Base Support
>
> 4.1 Is the DBI supported?
> 4.2 Is DBD::Msql supported?
> 4.3 Is DBD::Oracle supported?
> 4.4 Is DBD::Sybase supported?
> 4.5 Is DBD::Informix supported?
> 4.6 What other database extensions are supported?

All untested by me.

> 5. 3rd Party Module Support
>
> 5.1 Curses (and menu.pl)?

Yes.

> 5.2 Term::Readkey, Term::ReadLine

Hmpf. Yes.

> 5.3 Web stuff: CGI* and libwww (MIME, HTML, HTTP, URI, URL, etc)

Yes.

> 5.4 TK

Yes.

> 5.4 Safeperl and Safe CGI Perl?

Definitely yes on the former, presumambly yes on the latter.

--
Kenneth Albanowski (kjahds@kjahds.com, CIS: 70705,126)
Re: Perl Portability Matrix [ In reply to ]
On Tue, 12 Dec 1995, Tom Christiansen wrote:

> I'm compiling a table of perl portabliity and interoperatability
> issues.
[ . . . ]
> Operating Systems:
>
> Unix

A more extensive list of supported Unix systems is given in
hints/README.hints.

If nothing else, you should certainly include Interactive Unix.
It was probably the first non-SunOS platform to support perl5
(alpha 4, I think) (Jarkko may have beaten me with AIX support),
and was my primary development platform from alpha8 through 5.001m.
I'll fill in the detailed matrix later.

Andy Dougherty doughera@lafcol.lafayette.edu
Re: Perl Portability Matrix [ In reply to ]
Kenneth Albanowski writes:
>
> On Tue, 12 Dec 1995, Tom Christiansen wrote:
>
> > Operating Systems:
> >
>
> Linux

Here is OS/2, I mark only what differs from Kenneth answers.

>
> >
> > 1. Core Functionality
> >
> > 1.1 What's the latest version of perl available for that platform?
>
> The latest version of perl.
>
> > 1.2 Which version of perl, if any, comes with the standard system?
>

None.

> > 1.3 What percentage of the standard test suite runs properly?
>

91%, counting the test that suppose absolute paths as
failing. Otherwise circa 97%.

>
> > 1.4 Is there support for the perl debugger?
>
> Yes.
>
> > 1.5 Is there support for the perl profiler?
>
> Yes.
>
> > 1.6 Are shared and/or dynamic libraries supported?
>

Yes. (No fork with DLLs.)

> > 1.7 Is there support for the h2xs and xsubpp?
>
> Yes.
>
> > 1.8 Does Makemaker work properly?
>
> I'll get back to you when 5.002 settles down. :-) (Yes.)
>
> > 1.9 Does tainting work properly?
>
> Untested.

and probably N/A.

>
> > 1.10 Does embedding perl in C applications work properly?
>
> Untested.
>
> > 1.11 Do s2p and a2p work?
>
> Untested.
>
> >
> > (In all questions below, please read "supported" as "works properly")
> >
> > 2. System Dependent Behaviour
> >
> > 2.1 How many signals are supported?
>

All supported by the compiler. What does the question mean exactly?

>
> > 2.2 Are reliable signals supported (ie. POSIX or BSD, not SysV)
>
> Via POSIX::, they should be. The default signal() is unreliable.
>
> > 2.3 Do slow system calls restart or get interrupted from a signal handler?
>
> Untested.
>
> > 2.4 Is $0 usefully writable?
>
> Yes.

Full path.

>
> > 2.5 Does system() work properly?
>
> Yes.
>
> > 2.6 Does open(PH, "cmd|") work properly?
>
> Yes.
>
> > 2.7 Do `backticks` work properly?
>
> Yes.
>
> > 2.8 Does fork() work properly?
>
> Yes.

If no extensions with DLL present.

>
> > 2.9 Does stat() work properly?

You will get different inodes for the same file (inode == # of stats
before this one ;-).

> > 2.10 Does flock() work properly?
>
> Untested.
>
> > 2.11 Do symlink() and readlink() work properly

No.

> > 2.12 Are long filename supported?
>
> Yes.
>
> > 2.13 Is it cheap to call other processes (internal vfork() support)?
>
> Yes. (No vfork(), but rather an advanced C-O-W MM.)

The same with spawing.

>
> > 2.14 Do alarm() and sleep() work properly?
>
> Not fully tested. I believe so.
>
> > 2.15 Are files and pipes transparently equivalent?
>
> Yes.
>
> > 2.16 Are binary files and text files transparently equivalent?

Not clear what you mean. You need to know the access mode to the file.

> > 2.17 Are setuid scripts secure?
>

N/A or unknown.

>
> > 2.18 Is waitpid WNOHANG directly supported?

Unknown.

> > 3. Standard Module Support
> >
> > 3.1 Is SDBM supported?
>
> Yes.
>
> > 3.2 Is GDBM supported?

Unknown.

> > 3.3 Is DB_File supported?

Unknown.

> > 3.4 Is the socket module (Socket.pm) supported?
>
> Yes.
>
> > 3.5 Is System V IPC supported?

Unknown.

> > 3.6 Is Fcntl supported?
>
> Yes.
>
> > 3.7 Is POSIX supported?
>
> Yes. (But pitifully slow to load, not that that is Linux' fault.)
>
> > 4. Data Base Support
> >
> > 4.1 Is the DBI supported?
> > 4.2 Is DBD::Msql supported?
> > 4.3 Is DBD::Oracle supported?
> > 4.4 Is DBD::Sybase supported?
> > 4.5 Is DBD::Informix supported?
> > 4.6 What other database extensions are supported?
>
> All untested by me.
>
> > 5. 3rd Party Module Support
> >
> > 5.1 Curses (and menu.pl)?

Unknown.

> > 5.2 Term::Readkey, Term::ReadLine
>
> Hmpf. Yes.
>
> > 5.3 Web stuff: CGI* and libwww (MIME, HTML, HTTP, URI, URL, etc)

Unknown.

> > 5.4 TK

No.

> > 5.4 Safeperl and Safe CGI Perl?
>

Unknown.

Ilya
Re: Perl Portability Matrix [ In reply to ]
HP-UX (mostly 9.05, should also correspond to 10.01)

> 1. Core Functionality
>
> 1.1 What's the latest version of perl available for that platform?

The latest version that's been released.

> 1.2 Which version of perl, if any, comes with the standard system?

None.

> 1.3 What percentage of the standard test suite runs properly?

99%

> 1.4 Is there support for the perl debugger?
> 1.5 Is there support for the perl profiler?
> 1.6 Are shared and/or dynamic libraries supported?
> 1.7 Is there support for the h2xs and xsubpp?
> 1.8 Does Makemaker work properly?
> 1.9 Does tainting work properly?

Yes.

> 1.10 Does embedding perl in C applications work properly?

Haven't tried.

> 1.11 Do s2p and a2p work?

Yes.

> (In all questions below, please read "supported" as "works properly")
>
> 2. System Dependent Behaviour
>
> 2.1 How many signals are supported?

31.

> 2.2 Are reliable signals supported (ie. POSIX or BSD, not SysV)

No, not with standard HP-UX. If you use the BSD or POSIX semantics, yes.

> 2.3 Do slow system calls restart or get interrupted from a signal handler?

Not sure, but it would be standard SysV behaviour normally. If you use the
BSD or POSIX semantics, you get their behaviour.

> 2.4 Is $0 usefully writable?

Dunno.

> 2.5 Does system() work properly?
> 2.6 Does open(PH, "cmd|") work properly?
> 2.7 Do `backticks` work properly?
> 2.8 Does fork() work properly?
> 2.9 Does stat() work properly?

Yes.

> 2.10 Does flock() work properly?

No.

> 2.11 Do symlink() and readlink() work properly
> 2.12 Are long filename supported?

Yes.

> 2.13 Is it cheap to call other processes (internal vfork() support)?

Yes, although vfork() is mostly deprecated. The normal fork() is fast.

> 2.14 Do alarm() and sleep() work properly?
> 2.15 Are files and pipes transparently equivalent?
> 2.16 Are binary files and text files transparently equivalent?

Yes.

> 2.17 Are setuid scripts secure?

No.

> 2.18 Is waitpid WNOHANG directly supported?

Yes.

> 3. Standard Module Support
>
> 3.1 Is SDBM supported?

Yes.

> 3.2 Is GDBM supported?

I think so.

> 3.3 Is DB_File supported?

Haven't tried.

> 3.4 Is the socket module (Socket.pm) supported?
> 3.5 Is System V IPC supported?
> 3.6 Is Fcntl supported?
> 3.7 Is POSIX supported?

Yes.

> 4. Data Base Support
>
> 4.1 Is the DBI supported?
> 4.2 Is DBD::Msql supported?
> 4.3 Is DBD::Oracle supported?
> 4.4 Is DBD::Sybase supported?
> 4.5 Is DBD::Informix supported?
> 4.6 What other database extensions are supported?

Haven't tried these.

> 5. 3rd Party Module Support
>
> 5.1 Curses (and menu.pl)?

Haven't tried.

> 5.2 Term::Readkey, Term::ReadLine
> 5.3 Web stuff: CGI* and libwww (MIME, HTML, HTTP, URI, URL, etc)
> 5.4 TK

Yes.

> 5.4 Safeperl and Safe CGI Perl?

Haven't tried.

Jeff