On 9/4/04 11:42 PM, chromatic wrote:
> On Sat, 2004-09-04 at 18:44, John Siracusa wrote:
>> To bring it home, I think packaging and distribution is important enough to
>> warrant a standard, core-supported implementation.
> 
>> I think the "specially structured dir of files" and its single-file packaged
>> (and precompiled) variants are important enough to be standardized, or
>> "core", or whatever you want to call it.
> 
> ... you can find almost anyone arguing this point for almost any
> feature.  I'm inclined to distrust it.

Yes, this is a hard aspect to get consensus on, but that doesn't mean it's
not important.  Totally avoiding this kind of question is not the solution,
IMO.  That said...

>> I just don't see a way to achieve this level of transparency and
>> elegance without core support.
> 
> That's a much better gauge for whether a feature should go into the
> core.  I don't know how this particular case fares with that metric, but
> it's one of the right questions to ask.

I think the most important question was at the end of my last message: is
something even *possible* without core support?  Taking a set of scripts and
libs and making single-file, compiled (or "precompiled" bytecode or
whatever) executable that will run on all platforms that merely have a perl6
executable installed is something that *requires* core support, as far as I
can see.

On 9/5/04 3:02 AM, Simon Cozens wrote:
> [EMAIL PROTECTED] (John Siracusa) writes:
>> there's an official way, you'll certainly see less wheel reinvention than in
>> Perl 5.  This is a good thing.
> 
> That is only true if you accept the fundamentalist principle that one should
> never reinvent wheels. If that were true, then we wouldn't be working on Perl
> 6.

Perl 6 will do many things that Perl 5 can't, so its more aptly described as
an upgrade :)

>> The standardized "class", "method", "submethod", and so on in Perl 6 will be
>> an absolute breath of fresh air.
> 
> Don't worry; people will soon create their own helper modules anyway. There'll
> still be More Than One Way To Do It, like it or not.

Maybe, but I'll wager there'll be a lot less variety since the standard
system is more than capable enough for most purposes.  Even if it's tweaked
a little, if you know the standard system then you have a huge head start on
whatever a particular program is doing.  Wholesale reinvention will likely
be confined to Damians.

>> Furthermore, every "non-core" implementation will necessarily be uglier than
>> the built-in system.
> 
> Again, this is dogma. If the core specifies every minute detail of what
> you can do with the language, it's going to be far uglier than any module or
> implementation you can come up with.

It's not specifying what you can do, it's providing one (good) way to do it.

This brings up (again) the issue of "core" vs "standard lib" and all that.
Some features are naturally library functions, but some things either can't
or shouldn't be done without core support.  The packaging issue spans the
whole range:

1. The special dir of files (SDoF).  Ignoring, for now, the argument for a
standard way to do this, all the core needs to do to bootstrap an entire
ecosystem of app packagers is support some standard starting point.  Maybe
it's a file names main.pl inside a *.pmx dir, or whatever.  But there needs
to be something, otherwise every SDoF system will have to bootstrap itself
using some executable other than perl (e.g. PAR/parl)  I think that's much
less elegant.

2. The single-file, packaged version of the SDoF (SDoF Package).  Too
boostrap this, the core needs to know what to make of such a file.  Maybe
nothing needs to be done if a #! line and some plain old perl code at the
start of the file is sufficient.  But something tells me that a bit more is
needed to unzip/untar/whatever the rest of the stuff in the package file
before execution.  Trying to inline pure perl unzip/untar at the header of
each SDoF Package file doesn't seem elegant to me, but it could be
technically possible to bootstrap that way using only the perl 6 executable.

3. The single-file, platform independent, non-source executable (P6exe).
This is bytecode or some other platform neutral representation of the SDoF.
I just don't see how to do this at all without core support.  (Well, I
suppose it could try to #! boostrap as well, but then you'd have to inline a
bytecode interpreter or find some way to feed the bytecode to the right part
of perl 6, which seems like it also leads to some sort of core support.)
The B:: family of modules in Perl 5 are fun, but Perl 6 is supposed to do
this better.  The perl 6 core needs to be designed with this type of stuff
in mind.

Regardless of whether it's "core" or "stdlib", I think Java benefited
greatly from having the JAR format.  Perl 6 should one-up Java here like it
does everywhere else :)

Based on the little I know of JAR, the three features listed above seem to
extend a bit beyond JAR in both directions, and each either require or
should have some amount of core support, even if only to bootstrap community
implementations.

But I think a "blessed" family of packaging systems is a big win for the
language overall.  Just think about how having a standard like CPAN has
helped Perl 5.  Would it be better to have 20 different CPAN-like thingies?
CPAN is certainly not "core", and it has its flaws, the the benefits of its
ubiquity are great.

I think packaging has the same characteristics.  But unlike CPAN, packaging
does require some minimum amount of core support to meet what I consider to
be the minimum standard of elegance.

-John


Reply via email to