[e-cvs] cvs commit: e/doc/download/0-8-10beta e.txt eprops.txt
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Tue, 6 Nov 2001 12:29:02 -0500
markm 01/11/06 12:29:02
Added: doc/download/0-8-10beta e.txt eprops.txt
Log:
preparing for the next release
Revision Changes Path
1.1 e/doc/download/0-8-10beta/e.txt
Index: e.txt
===================================================================
#!/bin/bash
# E Driver Script (or E Driver Script Template)
#
# If you are looking at "e-template.txt", then you are looking at a
# template to be used to construct "e".
# In this case, for some variable definitions, you should instead see
# text of the form, for example,
#
# EHOME=$<<e.home>>
#
# but with curly brackets instead of angle brackets.
#
# In the comment preceding this, you should see an example of a
# possible value of this property, such as
# "c:/Program Files/erights.org/". Were this variable to have this
# value in the "e" file, it would appear as
#
# EHOME=c:/Program Files/erights.org/
#
# All these variables come from eprops.txt. See that file for more
# complete documentation.
#
# @author Mark S. Miller
set -e
# Where is E installed? This should be the root directory of the
# installation. The definition of EJAR below assumes EHOME ends with
# a "/". XXX We should fix this to be more tolerant.
#
# For example, "c:/Program Files/erights.org/"
EHOME="c:/Program Files/erights.org/"
# What executable Java command should be used?
#
# For example, "d:/jdk1.3/bin/java.exe"
JCMD="c:/jdk1.3.1_01/bin/java.exe"
# Assumes EHOME ends in a "/". See note above.
EJAR=${EHOME}e.jar
# This function normalizes a file path so that bash will recognize it
# in command position. In the Cygwin environment (a Unix-like
# compatibility environment for MSWindows), this just uses
# "cygpath -u" to convert to Cygwin's idea of a Unix-like path.
#
# In all other environments, this is an identity function
function normalizeBashPath {
if (type -p cygpath.exe > /dev/null); then
cygpath -u "$1"
else
echo "$1"
fi
}
# This function normalizes a file path so E will recognize it. In the
# Cygwin environment, this needs to undo the funny path prefix
# maniplutaion done by cygwin, such as turning "d:" into "//d/", or
# "d:/cygwin/bin" into "/usr/bin". However, we still use only forward
# slashes, not backslashes, as path separators, in order for the
# normalized path to pass through bash without needing further escapes.
#
# In all other environments, this is an identity function
function normalizeEPath {
if (type -p cygpath.exe > /dev/null); then
path=`cygpath -w "$1"`
echo "${path//\\\\//}"
else
echo "$1"
fi
}
JCMD=`normalizeBashPath "$JCMD"`
function usage {
echo "usage: e [-options] [(e-script.e | \"-\") [args...]]"
exit -1
}
declare -a jopts
function jpush {
jopts[${#jopts[@]}]=$1
}
# These should come from props
jpush "-Xfuture"
# either zero or one long
declare -a ecmd
execflag=exec
while [ $(($# >= 1)) = 1 ]; do
case $1 in
-cp ) jpush "$1"; shift
if [ $(($# < 1)) = 1 ]; then usage; fi
jpush "$1"; shift;;
-D* ) jpush "$1"; shift;;
-J* ) jpush "${1#-J}"; shift;;
--help )
echo "e [-options] script [args...]"
echo "where options are:"
echo " -cp <classpath> Defines classpath. Passed to java."
echo " -D<name>=<value> Defines Property. Passed to java."
echo " -J<java-option> java-option passed to java."
echo " For example, \"e -J-version\" shows the Java version."
echo " --help Prints this out and exits."
echo " --show Shows the java command line, rather"
echo " than executing it"
echo "and script is one of"
echo " filename.e The E script file to execute"
echo " - Use stdin as script file"
echo " --interact An interactive command line"
exit 0;;
--show) execflag=show; shift;;
-) break;;
--interact) break;;
-*) usage;;
*)
ecmd[0]=`normalizeEPath "$1"`; shift
break;;
esac
done
cmd=("${JCMD}" -jar "${jopts[@]}" "-De.home=${EHOME}" \
"${EJAR}" "${ecmd[@]}" "$@")
if [ $execflag = exec ]; then
exec "${cmd[@]}"
else
for i in "${cmd[@]}"; do
echo $i
done
fi
1.1 e/doc/download/0-8-10beta/eprops.txt
Index: eprops.txt
===================================================================
# E Configuration File (or E Configuration Template File)
#
# If you are looking at eprops-template.txt, then you are looking at a
# template to be used to construct eprops.txt. In this case, for
# several property definitions, you should instead see text of the
# form, for example,
#
# e.version=$<<e.version>>
#
# but with curly brackets instead of angle brackets.
#
# In the comment preceding that line, you should see an example of a
# possible value of this property, such as "0.8.9". Were this
# property to have this value in the eprops.txt file, it would appear
# as
#
# e.version=0.8.9
#
# The eprops.txt file is written in a restricted form of Java's
# Properties file save/load syntax. If you are looking at an
# eprops.txt file, all property definitions should already have the
# above form. You may create an eprops.txt file manually by copying
# the eprops-template.txt file and replacing the
# dollar-double-curly-bracket form with the Java property definition.
#
# Notice that there are no quotes around the value. This is correct
# even if the property value contains spaces, since the Java property
# syntax reads all text till the end of the line.
#
# When a property value is a file or directory path name, it should be
# absolute and use forward slashes ("/"), regardless of the local
# platform's convention. If it's a non-top-level directory, a
# terminal slash is optional. Note: On MSWindows, you must specify
# drives the MSWindows/Java way ("c:...") rather than the Cygwin way
# ("//c/...").
#
# When a property value is a pathlist (a list of paths, sometimes also
# confusingly refered to as a "path", as in the PATH or CLASSPATH
# variables), then the entries should be separated by a semicolon
# (";"), independent of platform. (As opposed to the Java convention,
# which is either ";" or ":" depending on platform.)
#
# All these property definitions get loaded into an E process'
# System.properties, so long as they don't override an already present
# property. This is so command-line property settings (using
# arguments of the form "-D<name>=<value>) will take precedence over
# property settings in eprops.txt.
#
# The eprops.txt file should serve as a record of everywhere (outside
# of the install directory itself) that installation placed files and
# registry entries, so that a future uninstaller will know (fingers
# crossed) what files and registry entries to remove.
#
# @author Mark S. Miller
# What version of E is this?
#
# For example, "0.8.9".
e.version=0.8.10beta1
# Where is E installed? If this file is eprops.txt (as opposed to
# eprops-template.txt) then this eprops.txt file should be in this
# directory.
#
# For example, "c:/Program Files/erights.org/"
e.home=c:/Program Files/erights.org/
# What is the absolute path of the Java executable command? This must
# be a Java compatible with Sun's JDK >= 1.3. On MSWindows, if you
# wish to suppress the MSDOS console window, use a javaw.exe command
# rather than a java.exe command.
#
# For example, "d:/jdk1.3/bin/java.exe"
e.javacmd=c:/jdk1.3.1_01/bin/java.exe
# When E shortcuts are launched from the desktop, where should their
# current directory be? Under *nix currently, this option does
# nothing. On MSWindows, this option affects only newly generated
# shortcuts. After changing this option, rerun the setup.e
# command to generate new shortcuts.
#
# For example: "c:/WINDOWS/Desktop" or "".
e.launch.dir=C:/Documents and Settings/Administrator/Desktop
# Where does trace data go? This directory will accumulate
# debugging information provided by running E programs in order to
# facilitate a post-mortem analysis of problems. The trace system
# treats the directory as a large circular buffer giving a finite
# window into the past in exchange for a finite memory burden.
#
# For example: "c:/WINDOWS/temp/etrace" or "".
TraceLog_dir=C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/etrace
# Other trace switches
# TraceLog_causality=debug
# If this property is set, JDK1.3's EventDispatchThread's
# handleException(Throwable) will delegate exception reporting
# to a newly made instance of this class name.
#
# For example: "org.erights.e.elib.prim.FEProblemHandler"
sun.awt.exception.handler=org.erights.e.elib.prim.FEProblemHandler
# Where are copies of the "e" bash script placed? Since *.e scripts
# normally begin with the line "#!/usr/bin/env e", a *.e file won't be
# considered an executable file unless /usr/bin/env can find "e" on
# the PATH. On MSWIndows, this option is only relevant to Cygwin
# users. The "e" script should be placed somewhere on the PATH
# visible from a shell. (On MSWindows, this means Cygwin shells, but
# not the MSDOS shell).
#
# For example: "c:/WINDOWS/;/home/markm/bin"
e.put.bash.pathlist=C:/WINNT
# Where are copies of the shortcuts placed?
#
# For example: "c:/WINDOWS/Desktop;c:/WINDOWS/Start Menu/Programs/erights.org".
e.put.shortcut.pathlist=C:/Documents and Settings/Administrator/Desktop;C:/Documents and Settings/Administrator/Start Menu/Programs/erights.org
# Which of .e, .emaker, .caplet, .updoc, .vat, and .cap should be
# associated with icons, registry types, mime types, launching
# programs, and other right button menu commands? Currently, this
# definition does nothing, and setup.e simply grabs whatever
# extensions it likes (which are these 6).
#
# ".e;.emaker;.caplet;.updoc;.vat;.cap" or any subset.
e.extensionslist=.e;.emaker;.caplet;.updoc;.vat;.cap
# Name of vendor providing this E implementation
#
# For example: "ERights.org"
e.vendor=ERights.org
# URL of vendor's website
#
# For example: "http://www.erights.org/"
e.vendor.url=http://www.erights.org/
# URL bug reports should be mailed-to
#
# For example: "mailto:bugs@erights.org"
e.vendor.url.bug=mailto:bugs@erights.org
################## Other Switches #####################
# One of "report" (the default), "prompt", or "gui". <p>
#
# When E fails to launch, or when the top level script (the *.e file)
# throws a problem, how should the E interpreter report the problem
# before exiting with a non-zero error code?
#
# When this property is set to "report" (or when the property is
# absent), then E prints a problem report on stderr and exits
# immediately. <p>
#
# When set to "prompt", E still prints the problem report on stderr,
# but it then also prompts for a character to be typed in before the
# process is dismissed, and then blocks waiting for that
# character. <p>
#
# When set to "gui", E will pop up a window at least reporting the
# error and waiting to be dismissed. Later versions of E may provide
# support for diagnostics and debugging starting from this window.
# Note: "gui" is not yet implemented. If used, it will prompt
# instead.
e.onErrorExit=gui
# One of "platform" (the default), "none", or a look and feel class
# name. <p>
#
# When set to "platform" (or when the property is absent), the look
# and feel is set to the default for the platform according to
# "UIManager getSystemLookAndFeelClassName()". <p>
#
# When set to "none", this advises code that there may not be an
# available graphical display device, and that they should try, if
# possible, to avoid any operations which would fail in a pure
# character/teletype environment, such as a telnet session. <p>
#
# When set to a look and feel class name, it sets this to be the
# initial look and feel for this E process.
e.swingLnF=platform
# When set to false (the default) or if absent, then the interpreter
# acts as an interactive interpreter when it's not reading from a
# named file. When set to true, the interpreter acts as an
# interactive interpreter in both cases.
e.interp.interactive=false
# When true, the E parser outputs volunimous debugging info. Defaults
# to false.
e.interp.parseSpam=false
# In an interactive interpreter, when this is set to true, the
# expansion to Kernel-E of the entered expression is echoed along with
# the value it evaluates to. Defaults to false.
e.interp.expand=false
# When true, problem reports by default show the Java stack trace in
# addition to the E stack trace. (This is only relevant while E in
# interpreted. Once it's compiled, there will only be one stack trace
# to report, the Java stack trace, which will be reported regardless
# of the setting of this switch. Defaults to false.
e.interp.verbose=false
#
e.interp.runner=fe
################# Configuring a Vat's network presence #################
# e.VLSPath is an optional semicolon-separated list of TCP/IP
# addresses of VLSs this vat should register with. Defaults to "" --
# the null list. Doesn't actually mean anything until the VLS is
# revived.
# e.VLSPath=
# e.SearchPath is an optional semicolon-separated list of TCP/IP
# addresses for others to look for me. Defaults to the VLSPath. Once
# a vat knows its own ListenAddress, this should be added to the front
# of the list.
# e.SearchPath=
# e.ListenAddress is the optional TCP/IP address at which this vat
# should create the socket it listens to. If an IP address isn't
# given, the socket defaults to listening on all IP addresses of this
# host. If an IP address is given, it must be one of the IP addresses
# of this host. If the TCP port isn't given, it defaults to 0. A TCP
# port of 0 instructs the OS to pick any free TCP port.
# e.ListenAddress=
################# In-Pocket E Shorthands & Features #################
# To ease the transition to the new restricted syntax, you can set
# some of the switches below to "true". Note that all the features
# below are not part of the official E language as of this release.
# These are likely to be removed in the future, unless otherwise
# stated for a particular feature.
# Another reason they are left in the implementation is to allow
# experimentation. All these features were added for reasons that
# seemed good at the time. If you feel a particular feature's revival
# (making it again part of official E) is a good idea, please try it
# out and if you still think it would be a good idea, please speak up
# and explain why. If a feature is listed below, then, as of this
# release, it is considered to be "in-pocket" and is therefore still
# partly or fully implemented. Features that are still in-pocket
# would, therefore, be particularly painless to revive it if we decide
# to do so.
# If e.enable.anon-lambda is set to "true", E accepts the
# " '_' '('params...')' '{' eExpr '}' and " '_'{eExpr}" lambda
# shorthands. To turn a program using this feature into a proper
# modern E program, the first should be prefixed by "def". In the
# second, the "_" should be replaced with "thunk".
e.enable.anon-lambda=allow
# This feature of E isn't implemented yet, so its syntax is not
# accepted by default. Turn this on to allow the syntax to be
# accepted: " 'def' name '::' name (',' name)* '{' vtable '}' ". The
# list of names following the '::' are the auditors.
e.enable.auditors=allow
# Accept "define" as a synonym for "def". All occurrences of the
# "define" keyword shold instead be replaced by "def".
e.enable.define=allow
# Accept "eExpr'.'name" shorthand. "eExpr'.'name" as an expression
# should instead be "eExpr getName()". "eExpr'.'name := eExpr" should
# instead be "eExpr setName(eExpr)".
e.enable.dot-props=allow
# Accepts the experimental "meta(varName)" syntax, where varName is
# the defining name for an enclosing object definition expression.
# The value of this expression is a "meta-object" whose protocol gives
# meta-level access to the semantics of the original object. The
# implementation of this feature currently has a FATAL SECURITY BUG,
# so don't enable this feature in any system that might host actually
# untrusted local code. The bug is that it's not yet enforced that
# the name must be the defining name of an enclosing object
# definition.
e.enable.meta-object=false
# Accepts the experimental "meta scope()" expression, which reifies
# the current lexical scope into a Scope object. The proposed
# semantics of this construct only has the scope within an object
# include those variables defined outside the object that are used
# freely within the object -- the instance variables. The current
# implementation is therefore buggy, since it shows that the current
# implementation incorrectly captures the entire environment. This
# feature will remain experimental at least until this bug is fixed,
# which probably awaits the scope analysis needed for compilation.
e.enable.meta-scope=false
# Allow no-argument calls to leave out the "()". The "()" should be
# added to these calls
e.enable.no-paren-call=allow
# Allow no parameter methods to leave out the "()". The "()" should
# be added to these definitions.
e.enable.no-paren-method=allow
# Accept the " 'def' name verb(params...) {...}" definition
# shorthand. Instead, the explicit object definition syntax should be
# used, where this method is an explicit method.
e.enable.one-method-object=allow
# Accept the experimental
# " 'def' name 'match' pattern '{' eExpr '}' " kernel
# construct. This is not a shorthand, so if you need it there's
# nothing to do instead. Rather, it is an exprimental kernel feature
# mainly awaiting the precise pinning down of what its semantics
# should be. If you find you need this construct, please let us know
# since the particulars of your use may help us figure out what its
# semantics should be.
e.enable.plumbing=allow
# Accept the typedef shorthand. The typedef shorthand looks like the
# E object definition syntax, but without method bodies. (Much as
# Java interface definitions look like Java class definitions.) In
# this case, the syntax itself isn't being retired -- we expect to
# make it part of the language. However, the API of the objects it
# creates hasn't been pinned down yet, so the use of this is
# considered exprimental until then.
e.enable.typedef=allow
# Accept the transposed multi-vow when/catch syntax. The standard
# syntax lists all the vow-expressions of the left and all the
# corresponding params on the right. In this experimental variation,
# each vow-expression / pattern pair is listed in turn.
e.enable.when-clauses=allow
# Once upon a time, there was general agreement that a tab character
# in a plain text file took you to the next tab stop, which was every
# 8 characters. The Microsoft blight has not only screwed up the
# newline conventions and the filepath separator conventions (of which
# the Mac is equally guilty), but also screwed up the meaning of the
# tab key. The best path to sanity is to simply avoid the presence of
# tab characters in text files, with the one unfortunate exception of
# "Makefile"s and "*.mk" files.
#
# Unfortunately, because so many text editors put tabs into files in a
# way that's hard to turn off, E must, by default, accept tabs as a
# valid whitespace character. However, to help you prevent yourself
# from including tabs, we provide the "notabs" switch, which defaults
# to "false". If you set it to true, the tab character will not be
# considered valid whitespace.
e.enable.notabs=allow
# Enables syntax such as 'require (cond) thunk{str}' to be accepted
# and be equivalent of 'require (cond, thunk{str})'
e.enable.lambda-args=allow
# The e.enable.bind switch has been retired, since "bind" is now
# considered an official part of the language.