I see two different situations when
permissions/capabilities are concerned: the first is
when one tries to run untrusted code, modules or parts
of code and needs some kind of sanboxing mechanism.
Safe has been built with this situation in mind,
mostly.

The second is when one builds a perl system which is
inteded to run potentialy untrustworty code from
multiple users, such as in collaborative environments,
muds, mushes and other kinds of online games. 

Restricted access to funcitions, variables and methods
is needed, and an implementation of object ownership
and user permissions, not just restrictions on code
functionality.

Perl5 has been completely usless in this field since
it does not provide workable access restrictions and
the Safe semantics (and bugs in its implementation)
prevent and object-oriented interfaces between
unrestricted and restricted code, or between two
different restricted compartments. Any attemtps of mud
writing in perl failed or provided muds with no
ability for users to add code to the system.
(Examples: http://kitenet.net/programs/perlmoo/,
http://www.boutell.com/perlmud/)

All these problems have been encountered and solved in
the classic C-like scripting language of LP-muds, LPC.
LPC is an object-oriented C derivative with heavy
string manipulation extensions and solid support for
multiuser security, running under the Muddriver (LPC
virtual machine and low-level server fucntionality,
written in C). LP muds are interesting because much of
the game engine is written in LPC, including some
interesting features, such as www interfaces,
mail/news interfaces etc.: LPC is a complete, if tiny,
language.

I think developping a LPC compiler for Parrot would be
a good exercice, it would provide a very useful little
language and insure that the core contains any
functionality that might be neede for multiuser
systems coded in Perl6. (I am only sad that my bad
coding skills do not permit me to do anything more
substantial in this direction.)

But I am completely convinced that the
permission/ownership support as required by LPC is the
minimal implementation needed in Parrot and Perl, if
Perl6 is ever to be used in multiuser collaborative
environments.

More on LPC:
http://www.lysator.liu.se/mud/lpc.html

More on LP muds:
http://www.alchar.org/~aedil/Prehistoric/lpmud.html

An example of running LP mud with intellingent coders
online:
telnet://remud.org:4000/

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

Reply via email to