On Wed, Jun 08, 2005 at 11:04:30PM +0300, Gaal Yahas wrote:
: On Wed, Jun 08, 2005 at 12:29:33PM -0700, Larry Wall wrote:
: > There will certainly be an event manager for all sorts of events floating
: > around in Perl 6. The main trick will be to hide this from the people
: > who aren't interested. The other trick will be to actually spec it,
: > since up till now I've assumed that it should be specced by the people
: > who are actually into that sort of thing. Looks like you're one of
: > them. :-)
: There's the touchy issue of what minimum compatibility level we're
: promising to deliver on all platforms. This is an issue in pugs already,
: where Windows GHC isn't compiled with POSIX libraries so we're stumped on
: the interface for even relatively basic things, such as how (or whether)
: File.open might offer O_EXCL.
Pugs might require a Parrot back end to support this. But let's remember
that we're viewing Pugs primarily as a bootstrap and reference compiler,
not necessarily a production compiler/interpreter. The production compiler
will be in Perl 6, and the production VM will have a Parrot interface,
even if it's not Parrots all the way down.
: Is part of the vision something like the explicit cross-platform nature
: of Java?
It would be nice to do that as good as or better than Java does, except
when we want to do it worse on purpose.
: Will I be able to write Perl6 code with a certain flag that
: possibly limits my choice of modules/builtins, but which promises me
: identical behavior on all supported platforms?
It's possible to set up such a flag, but I don't know how useful
it'll be. In the coming age of parallelism it is going to be close to
impossible for any machine (virtual or real) to make any such promise.
We are designing several kinds of parallelism right into Perl 6 to take
advantage of the new hardware. Algorithms that rely on reproducible
ordering where none is guaranteed will be considered vaguely erroneous.
: To take a notorious example, you mentioned fork() -- if this event manager
: becomes part of Perl6, does that mean we're required to emulate fork()
: on win32?
Perl 5 manages it, and Perl 6 is expected to emulate Perl 5 when fed
Perl 5 code. It's one of the reasons Parrot is aiming to support an
ithreads model in some fashion or other, I expect. But it's okay if
the Pugs interpreter punts on this for now.