The summary: request for architectural analysis. The motivation: there are certain languages, possibly including perl 6, that will benefit from the ability to flow from one parrot interpreter to another. For example:
#!//googlestorage/programs/perl7.08032005 use remote qw( :googlecompute-shared :ibmgrid1 compute.delictis.com ); sub remote_num_of_users { on remote { use local settings; return $hostname, $current_users }; } my $values = remote_num_of_users; foreach my $i (keys %{ $values }) { print join ('\t', ($i, values->{$i}, "\n")); } felix-ipod1 $ ./remote_users.pl googlecompute1.google.com 588345 googlecompute2.google.com 249382 googlecompute3.google.com 291991 googlecompute4.google.com 188126 googlecompute5.google.com 328340 googlecompute6.google.com 49392 ibm-compute-public1.grid.ibm.com 38289 ibm-compute-public2.grid.ibm.com 39482 ibm-compute-public3.grid.ibm.com 6004 ibm-compute-public4.grid.ibm.com 493 compute.delictis.com 2 Trivial enough. However, for security reasons permissioning has to exist at the bytecode/interpreter level, because you may wish to assign per-user permissions on the following axes: cpu time (ulimit style) clock time (ulimit style) disk (ulimit style) memory (ulimit style) namespace access PMC (user-level functions, variables (e.g., %ENV, etc.) individual builtins (looping, 'my', assignment, etc.) Is anyone aware of any reason why the straightforward approach -- implementing a per-thread 'running restricted' flag, an extra if branch in the bytecode interpreter code paths, a bytecode to flip into restricted mode*, and a per-PMC permission 3-bit (rwx) permission bitmask -- would not be the best solution? Are there any early concerns or optimizations anyone can envisage? Thanks -- Felix