	 "Safe" extension module (release beta1) for Perl5.
		  Copyright (C) Malcolm Beattie 1995

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version. You can also distribute under the terms of the
Artistic License detailed in the perl5 distribution itself.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This software is licensed under the GNU General Public License


INTRODUCTION

This is the beta2 release of a Safe extension to perl5. Since the
extension attempts to provide a safe environment in which to execute
possibly unsafe perl code, you should (re)read the paragraphs above
concerning lack of warranty.

This extension requires that your version of perl5 supports
operator masks. There are three possibilities, depending on
how recent your version of perl5 is.
(1) If you have a version earlier than perl5.001m then you need to
    apply the patch file opmask.patch file from this distribution.
    You also need to include the compilation option -DUSE_OP_MASK
    when you configure perl to be built. Versions of perl5 earlier
    than perl5.001e will not work at all with this extension and
    you should upgrade.
(2) If you are using perl5.001m or later and there is still a line
        #ifdef USE_OP_MASK
    in op.c then you just need to include the compilation option
    -DUSE_OP_MASK when you configure perl to be built.
(3) If you are using a newer version of perl then it's possible that
    either the #ifdef USE_OP_MASK is absent (and hence the #define
    CHECKOP code is always used) or else #define USE_OP_MASK may be
    included by default. In either case, you would not need to do
    anything special to get your copy of perl to use operator masks.

INSTALLATION

Apply the above mentioned patch, if necessary, to get an op_mask-aware
version of perl. Then proceed as with any other perl5 extension: unpack
the distribution *away from* the main perl source hierarchy and type
    perl Makefile.PL
Then type
    make
provided dynamic extensions are supported on your platform. There is a
bug in the version of make supplied with OSF/1. For OSF/1 you'll need
to type "make dynamic" or else use GNU make.

If you don't want to use dynamic loading, then
    make perl
should do the trick. Try it out with
    make test
If the t/mask.t test fails then you should check that your version of
perl has the necessary code in op.c to understand operator masks.
Re-read the introduction section above to check what needs to be done.

CHANGES

There are only two differences between beta1. One is a slight change
to Safe.pm which corrects the way $_ and @_ are shared with new Safe
compartments. Formerly, code in a compartment which used the "package"
statement to switch packages failed to pick up the correct magic $_
and @_ in the new package. The other change was to Safe.xs and made
END { } blocks be ignored when evaluated in Safe compartments.
Formerly, END { } blocks written in Safe compartments were executed
when the whole program finished in a context which potentially left
some access to code outside the compartment. Since this is a security
hole, I've made a new release of the Safe distribution for safety's sake.

Malcolm Beattie
mbeattie@sable.ox.ac.uk

pre-release	26 April 1995
alpha1		26 May 1995
alpha2		19 June 1995
beta1		22 August 1995
beta2		31 August 1995
