<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>docs/engines.md</filename>
    </added>
    <added>
      <filename>engines/browser/inline.js</filename>
    </added>
    <added>
      <filename>engines/browser/lib/binary.js</filename>
    </added>
    <added>
      <filename>engines/browser/lib/modules.js</filename>
    </added>
    <added>
      <filename>engines/browser/lib/reactor.js</filename>
    </added>
    <added>
      <filename>engines/browser/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/array.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/binary-engine.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/binary.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/date.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/file-engine.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/function.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/global.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/io-engine.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/json.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/object.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/os-engine.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/reactor.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/string.js</filename>
    </added>
    <added>
      <filename>engines/default/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/helma/bin/narwhal-helma</filename>
    </added>
    <added>
      <filename>engines/helma/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/jaxer/README.md</filename>
    </added>
    <added>
      <filename>engines/jaxer/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/jaxer/lib/logger.js</filename>
    </added>
    <added>
      <filename>engines/k7/bin/narwhal-k7</filename>
    </added>
    <added>
      <filename>engines/k7/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/k7/lib/binary.js</filename>
    </added>
    <added>
      <filename>engines/k7/lib/file-engine.js</filename>
    </added>
    <added>
      <filename>engines/k7/lib/io-engine.js</filename>
    </added>
    <added>
      <filename>engines/k7/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/rhino/bin/narwhal-rhino</filename>
    </added>
    <added>
      <filename>engines/rhino/bin/narwhal-rhino.cmd</filename>
    </added>
    <added>
      <filename>engines/rhino/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/rhino/jars/jline.jar</filename>
    </added>
    <added>
      <filename>engines/rhino/jars/js.jar</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/binary-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/file-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/http-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/io-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/md5.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/os-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/packages-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/process.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/sandbox-engine.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/rhino/lib/zip.js</filename>
    </added>
    <added>
      <filename>engines/secure/lib/file.js</filename>
    </added>
    <added>
      <filename>engines/secure/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/template/bin/narwhal-engine-name</filename>
    </added>
    <added>
      <filename>engines/template/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/template/lib/file-engine.js</filename>
    </added>
    <added>
      <filename>engines/template/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/v8cgi/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/.gitignore</filename>
    </added>
    <added>
      <filename>engines/xulrunner/LICENSE</filename>
    </added>
    <added>
      <filename>engines/xulrunner/README.md</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/application.ini</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/branding/about.png</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/branding/aboutCredits.png</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/branding/aboutFooter.png</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/branding/icon48.png</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/branding/icon64.png</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/chrome.manifest</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/content/main.xul</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/locale/branding/brand.dtd</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/chrome/locale/branding/brand.properties</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/defaults/preferences/prefs.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/extensions/mozrepl@hyperstruct.net</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/extensions/narwhal@narwhaljs.org</filename>
    </added>
    <added>
      <filename>engines/xulrunner/apps/firenarwhal/firenarwhal</filename>
    </added>
    <added>
      <filename>engines/xulrunner/bin/narwhal-xulrunner</filename>
    </added>
    <added>
      <filename>engines/xulrunner/bootstrap.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/chrome.manifest</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/chrome/content/narwhal.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.idl</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.xpt</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/defaults/preferences/prefs.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/install.rdf</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/modules/narwhal.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/extensions/narwhal@narwhaljs.org/narwhal</filename>
    </added>
    <added>
      <filename>engines/xulrunner/lib/file-engine.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/lib/io-engine.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/lib/os-engine.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/lib/system.js</filename>
    </added>
    <added>
      <filename>engines/xulrunner/post-commit</filename>
    </added>
    <added>
      <filename>lib/narwhal/tusk/engine.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -4,9 +4,9 @@ Narwhal
 A general purpose JavaScript platform
 -------------------------------------
 
-Narwhal is a cross-platform, multi-interpreter, general purpose JavaScript platform. It aims to provide a solid foundation for building JavaScript applications, primarily outside the web browser. Narwhal includes a package manager, module system, and standard library for multiple JavaScript interpreters. Currently Narwhal's [Rhino](http://www.mozilla.org/rhino/) support is the most complete, but [other platforms](platforms.html) are available too.
+Narwhal is a cross-platform, multi-interpreter, general purpose JavaScript platform. It aims to provide a solid foundation for building JavaScript applications, primarily outside the web browser. Narwhal includes a package manager, module system, and standard library for multiple JavaScript interpreters. Currently Narwhal's [Rhino](http://www.mozilla.org/rhino/) support is the most complete, but [other engines](engines.html) are available too.
 
-Narwhal's standard library conforms to the [ServerJS standard](https://wiki.mozilla.org/ServerJS). It is designed to work with multiple JavaScript interpreters, and to be easy to add support for new interpreters. Wherever possible, it is implemented in pure JavaScript to maximize reuse of code among platforms.
+Narwhal's standard library conforms to the [ServerJS standard](https://wiki.mozilla.org/ServerJS). It is designed to work with multiple JavaScript interpreters, and to be easy to add support for new interpreters. Wherever possible, it is implemented in pure JavaScript to maximize reuse of code among engines.
 
 Combined with [Jack](http://jackjs.org/), a [Rack](http://rack.rubyforge.org/)-like [JSGI](http://jackjs.org/jsgi-spec.html) compatible library, Narwhal provides a platform for creating server-side JavaScript web applications and frameworks such as [Nitro](http://www.nitrojs.org/).
 
@@ -37,7 +37,7 @@ Documentation
 * [How to Build Packages](packages-howto.html)
 * [Modules](modules.html)
 * [Virtual Environments / Seas](sea.html)
-* [How to Build Platforms](platforms.html)
+* [How to Build Engines](engines.html)
 * [How Narwhal Works](narwhal.html)
 
 </diff>
      <filename>README.md</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ fi
 
 if [ -f &quot;$PACKAGE_HOME&quot;/narwhal.conf ]; then
     source &quot;$PACKAGE_HOME&quot;/narwhal.conf
-    export NARWHAL_DEFAULT_PLATFORM
+    export NARWHAL_DEFAULT_ENGINE
 fi
 
 if [ &quot;$NARWHAL&quot; ]; then</diff>
      <filename>bin/activate.bash</filename>
    </modified>
    <modified>
      <diff>@@ -14,35 +14,35 @@ done
 NARWHAL_HOME=$(dirname -- &quot;$(dirname -- &quot;$SELF_PATH&quot;)&quot;)
 
 # use Rhino as the default if none is specified in narwhal.conf
-NARWHAL_DEFAULT_PLATFORM=&quot;rhino&quot;
+NARWHAL_DEFAULT_ENGINE=&quot;rhino&quot;
 
 # load narwhal.conf if it exists
 if [ -f &quot;$NARWHAL_HOME/narwhal.conf&quot; ]; then
     source &quot;$NARWHAL_HOME&quot;/narwhal.conf
 fi
 
-# if NARWHAL_PLATFORM isn't yet set, set it to the default platform, and export it
-if [ -z &quot;$NARWHAL_PLATFORM&quot; ]; then
-    NARWHAL_PLATFORM=$NARWHAL_DEFAULT_PLATFORM
+# if NARWHAL_ENGINE isn't yet set, set it to the default engine, and export it
+if [ -z &quot;$NARWHAL_ENGINE&quot; ]; then
+    NARWHAL_ENGINE=$NARWHAL_DEFAULT_ENGINE
 fi
 export NARWHAL_HOME
 
-# build the executable name for the platform
-EXECUTABLE_NAME=&quot;narwhal-$NARWHAL_PLATFORM&quot;
+# build the executable name for the engine
+EXECUTABLE_NAME=&quot;narwhal-$NARWHAL_ENGINE&quot;
 
-# search for the platform home directory
+# search for the engine home directory
 # try narwhal.conf setting
-if [ &quot;$NARWHAL_PLATFORM_HOME&quot; ]; then
-	export NARWHAL_PLATFORM_HOME
+if [ &quot;$NARWHAL_ENGINE_HOME&quot; ]; then
+	export NARWHAL_ENGINE_HOME
 # try relative
-elif [ -f &quot;$NARWHAL_HOME/platforms/$NARWHAL_PLATFORM/bin/$EXECUTABLE_NAME&quot; ]; then
-	export NARWHAL_PLATFORM_HOME=&quot;$NARWHAL_HOME/platforms/$NARWHAL_PLATFORM&quot;
+elif [ -f &quot;$NARWHAL_HOME/engines/$NARWHAL_ENGINE/bin/$EXECUTABLE_NAME&quot; ]; then
+	export NARWHAL_ENGINE_HOME=&quot;$NARWHAL_HOME/engines/$NARWHAL_ENGINE&quot;
 # try $PATH
 elif which -s &quot;$EXECUTABLE_NAME&quot;; then
-	export NARWHAL_PLATFORM_HOME=$(dirname -- &quot;$(dirname -- &quot;$EXECUTABLE_NAME&quot;)&quot;)
+	export NARWHAL_ENGINE_HOME=$(dirname -- &quot;$(dirname -- &quot;$EXECUTABLE_NAME&quot;)&quot;)
 else
-	echo &quot;Can't find executable for $NARWHAL_PLATFORM&quot;
+	echo &quot;Can't find executable for $NARWHAL_ENGINE&quot;
 	exit 1
 fi
 
-exec &quot;$NARWHAL_PLATFORM_HOME&quot;/bin/&quot;$EXECUTABLE_NAME&quot; &quot;$@&quot;
+exec &quot;$NARWHAL_ENGINE_HOME&quot;/bin/&quot;$EXECUTABLE_NAME&quot; &quot;$@&quot;</diff>
      <filename>bin/narwhal</filename>
    </modified>
    <modified>
      <diff>@@ -5,25 +5,25 @@ setlocal
 set NARWHAL_HOME=%~dp0..
 
 :: use Rhino as the default if none is specified in narwhal.conf
-set NARWHAL_DEFAULT_PLATFORM=rhino
+set NARWHAL_DEFAULT_ENGINE=rhino
 
 :: TODO: load narwhal.conf if it exists
 
-:: if NARWHAL_PLATFORM isn't yet set, set it to the default platform, and export it
-if &quot;%NARWHAL_PLATFORM%&quot; == &quot;&quot; (
-	set NARWHAL_PLATFORM=%NARWHAL_DEFAULT_PLATFORM%
+:: if NARWHAL_ENGINE isn't yet set, set it to the default engine, and export it
+if &quot;%NARWHAL_ENGINE%&quot; == &quot;&quot; (
+	set NARWHAL_ENGINE=%NARWHAL_DEFAULT_ENGINE%
 )
 
-:: build the executable name for the platform
-set EXECUTABLE_NAME=narwhal-%NARWHAL_PLATFORM%.cmd
+:: build the executable name for the engine
+set EXECUTABLE_NAME=narwhal-%NARWHAL_ENGINE%.cmd
 
-:: search for the platform home directory
+:: search for the engine home directory
 :: TODO: look for more, including &quot;.exe&quot;?
-if exist %NARWHAL_HOME%\platforms\%NARWHAL_PLATFORM%. (
-	set NARWHAL_PLATFORM_HOME=%NARWHAL_HOME%\platforms\%NARWHAL_PLATFORM%
+if exist %NARWHAL_HOME%\engines\%NARWHAL_ENGINE%. (
+	set NARWHAL_ENGINE_HOME=%NARWHAL_HOME%\engines\%NARWHAL_ENGINE%
 ) else (
-	echo &quot;Can't find executable for %NARWHAL_PLATFORM%&quot;
+	echo &quot;Can't find executable for %NARWHAL_ENGINE%&quot;
 	exit
 )
 
-call %NARWHAL_PLATFORM_HOME%\bin\%EXECUTABLE_NAME% %*
+call %NARWHAL_ENGINE_HOME%\bin\%EXECUTABLE_NAME% %*</diff>
      <filename>bin/narwhal.cmd</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-All platforms must support two types for interacting with binary data: ByteArray and ByteString.  The ByteArray type resembles the interface of Array in that it is mutable, extensible, and indexing will return number values for the byte in the given position, zero by default, or undefined if the index is out of bounds.  The ByteString type resembles the interface of String in that it is immutable and indexing returns a ByteString of length 1.  These types are exported by the 'binary' top-level module and both types are subtypes of Binary, which is not instantiable but exists only for the convenience of referring to both ByteArray and ByteString.  (The idea of using these particular two types and their respective names originated with Jason Orendorff in the [http://groups.google.com/group/serverjs/msg/89808c05d46b92d0 Binary API Brouhaha] discussion.)
+All engines must support two types for interacting with binary data: ByteArray and ByteString.  The ByteArray type resembles the interface of Array in that it is mutable, extensible, and indexing will return number values for the byte in the given position, zero by default, or undefined if the index is out of bounds.  The ByteString type resembles the interface of String in that it is immutable and indexing returns a ByteString of length 1.  These types are exported by the 'binary' top-level module and both types are subtypes of Binary, which is not instantiable but exists only for the convenience of referring to both ByteArray and ByteString.  (The idea of using these particular two types and their respective names originated with Jason Orendorff in the [http://groups.google.com/group/serverjs/msg/89808c05d46b92d0 Binary API Brouhaha] discussion.)
 
 = Philosophy =
 
@@ -6,7 +6,7 @@ This proposal is not an object oriented variation on pack and unpack with notion
 
 This proposal also does not provide named member functions for any particular subset of the possible charsets, codecs, compression algorithms, or consistent hash digests that might operate on a byte string or array.  Instead, convenience member functions are provided for interfacing with any named charset, with the IANA charset name space, and with the possibility of eventually employing a system of modular extensions for other codecs or digests, requiring that the given module exports a specified interface. (As supported originally by Robert Schultz, Davey Waterson, Ross Boucher, and tacitly myself, Kris Kowal, on the [http://groups.google.com/group/serverjs/browse_thread/thread/be72ef3d8146731d/06c27162b698eef5?lnk=gst First proposition] thread on the mailing list).  This proposal does not address the need for stream objects to support pipelined codecs and hash digests (mentioned by Tom Robinson and Robert Schultz in the same conversation).
 
-This proposal also reflects both group sentiment and a pragmatic point about properties.  This isn't a decree that properties like &quot;length&quot; should be consistently used throughout the ServerJS APIs.  However, given that all platforms support properties at the native level (to host String and Array objects) and that byte strings and arrays will require support at the native level, pursuing client-side interoperability is beyond the scope of this proposal and therefore properties have been specified.  (See comments by Kris Zyp about the implementability of properties in all platforms, comments by Davey Waterson from Aptana about the counter-productivity of attempting to support this API in browsers, and support properties over accessor and mutator functions by Ionut Gabriel Stand and Cameron McCormack on the [http://groups.google.com/group/serverjs/browse_thread/thread/be72ef3d8146731d/06c27162b698eef5?lnk=gst mailing list]).
+This proposal also reflects both group sentiment and a pragmatic point about properties.  This isn't a decree that properties like &quot;length&quot; should be consistently used throughout the ServerJS APIs.  However, given that all engines support properties at the native level (to host String and Array objects) and that byte strings and arrays will require support at the native level, pursuing client-side interoperability is beyond the scope of this proposal and therefore properties have been specified.  (See comments by Kris Zyp about the implementability of properties in all engines, comments by Davey Waterson from Aptana about the counter-productivity of attempting to support this API in browsers, and support properties over accessor and mutator functions by Ionut Gabriel Stand and Cameron McCormack on the [http://groups.google.com/group/serverjs/browse_thread/thread/be72ef3d8146731d/06c27162b698eef5?lnk=gst mailing list]).
 
 The byte types provide functions for encoding, decoding, and transcoding, but they are all shallow interfaces that defer to a charset manager module, and may in turn use a system level charset or use a pair of pure JavaScript modules to transcode through an array or stream of canonical Unicode code points.  This behavior may be specified further in the future.
 </diff>
      <filename>docs/lib/binary.wiki</filename>
    </modified>
    <modified>
      <diff>@@ -140,7 +140,7 @@ The current working directory is used by all routines that resolve relative path
 :numeric id of the owner user
 ;; rdev Number
 :the device identifier for special files
-;; size NUmber
+;; size Number
 :total size in bytes
 ;; blockSize Number
 :preferred block size for file system IO, in bytes</diff>
      <filename>docs/lib/file.wiki</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ This document provides information on how to use `bin/narwhal`
 through its command line options, environment variables,
 and configuration files, then descends into the exact
 maddenning details of how it goes about bootstrapping
-and configuraing itself.
+and configuring itself.
 
 
 Glossary
@@ -100,22 +100,22 @@ Command Line Options
 Environment Variables
 ---------------------
 
-*   `NARWHAL_DEFAULT_PLATFORM` may be set in `narwhal.conf` to a
-    platform name like `rhino`, `v8`, or `xulrunner`.  Use
-    `tusk platforms` for a complete list and consult the `README` in
-    that platform directory for details about its function and
+*   `NARWHAL_DEFAULT_ENGINE` may be set in `narwhal.conf` to a
+    engine name like `rhino`, `v8`, or `xulrunner`.  Use
+    `tusk engines` for a complete list and consult the `README` in
+    that engine directory for details about its function and
     readiness for use.
 
-*   `NARWHAL_PLATFORM` may be set at the command line, but is
-    otherwise set to `NARWHAL_DEFAULT_PLATFORM` by `bin/narwhal`
-    and exposed in JavaScript as `system.platform`.  This
+*   `NARWHAL_ENGINE` may be set at the command line, but is
+    otherwise set to `NARWHAL_DEFAULT_ENGINE` by `bin/narwhal`
+    and exposed in JavaScript as `system.engine`.  This
     is the name of the JavaScript engine in use.
 
 *   `NARWHAL_HOME` is the path to the `narwhal` directory and
     is available in JavaScript as `system.prefix`.
 
-*   `NARWHAL_PLATFORM_HOME` is the path to the narwhal
-    platform directory, where `bootstrap.js` may be found,
+*   `NARWHAL_ENGINE_HOME` is the path to the narwhal
+    engine directory, where `bootstrap.js` may be found,
     and is set by `bin/narwhal`.
 
 *   `NARWHAL_PATH` and `JS_PATH` can be used to add
@@ -164,10 +164,10 @@ Configuration Files
 
 *   `narwhal.conf` may be provided to configure site-specific
     or virtual-environment (sea) specific environment
-    variables like `NARWHAL_DEFAULT_PLATFORM`.  You can
-    also opt to specify `NARWHAL_PLATFORM`, but that obviates
+    variables like `NARWHAL_DEFAULT_ENGINE`.  You can
+    also opt to specify `NARWHAL_ENGINE`, but that obviates
     the possibility of allowing the user to override
-    the narwhal platform at the command line.  `narwhal.conf`
+    the narwhal engine at the command line.  `narwhal.conf`
     follows the BSD convention of using shell scripts as
     configuration files, so you may use any `bash` syntax
     in this file.  A `narwhal.conf.template` exists for 
@@ -211,7 +211,7 @@ Configuration Files
 Bootstrapping Narwhal
 ---------------------
 
-Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash` script, a platform specific `bash` script, a platform specific JavaScript, then the common JavaScript.
+Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash` script, an engine specific `bash` script, an engine specific JavaScript, then the common JavaScript.
 
 *   `bin/narwhal`
 
@@ -219,44 +219,44 @@ Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash`
     for configuration.  This script discovers its own
     location on the file system and sources `narwhal.conf`
     as a shell script to load any system-level configuration
-    variables like `NARWHAL_DEFAULT_PLATFORM`.  From there,
-    it discerns and exports the `NARWHAL_PLATFORM` and
-    `NARWHAL_PLATFORM_HOME` environment variables.
+    variables like `NARWHAL_DEFAULT_ENGINE`.  From there,
+    it discerns and exports the `NARWHAL_ENGINE` and
+    `NARWHAL_ENGINE_HOME` environment variables.
     It then executes the
-    platform-specific script,
-    `$NARWHAL_PLATFORM_HOME/bin/narwhal-$NARWHAL_PLATFORM`.
+    engine-specific script,
+    `$NARWHAL_ENGINE_HOME/bin/narwhal-$NARWHAL_ENGINE`.
 
-*   `platforms/{platform}/bin/narwhal-{platform}`
+*   `engines/{engine}/bin/narwhal-{engine}`
 
-    This `bash` script performs some platform-specific
+    This `bash` script performs some engine-specific
     configuration, like augmenting the Java `CLASSPATH`
-    for the Rhino platform, and executes the
-    platform-specific bootstrap JavaScript using the
-    JavaScript engine for the platform.
+    for the Rhino engine, and executes the
+    engine-specific bootstrap JavaScript using the
+    JavaScript engine for the engine.
 
-    Some platforms, like `k7` require the JavaScript engine
-    to be on the `PATH`.  The Rhino platform just expects
+    Some engines, like `k7` require the JavaScript engine
+    to be on the `PATH`.  The Rhino engine just expects
     Java to be on the `PATH`, and uses the `js.jar` included
     in the repository.
 
-*   `platforms/{platform}/bootstrap.js`
+*   `engines/{engine}/bootstrap.js`
 
-    This platform-specific JavaScript uses whatever
+    This engine-specific JavaScript uses whatever
     minimal mechanisms the JavaScript engine provides
     for reading files and environment variables to
     read and evaluate `narwhal.js`.  `narwhal.js` evaluates
     to a function expression that accepts a zygotic
     `system` `Object`, to be replaced later by loading
     the `system` module proper.  `bootstrap.js` provides a
-    `system` object with `global`, `evalGlobal`, `platform`,
-    a `platforms` Array, `print`, `fs.read`, `fs.isFile`,
+    `system` object with `global`, `evalGlobal`, `engine`,
+    a `engines` Array, `print`, `fs.read`, `fs.isFile`,
     `prefix`, `packagePrefixes`, and optionally `evaluate`,
     `debug`, or `verbose`.
 
     *   `global` is the `global` `Object`.  This is
         passed explicitly in anticipation of times
         when it will be much harder to grab this
-        object in platforms where its name varies
+        object in engines where its name varies
         (like `window`, or `this`) and where it will
         be unsafe to assume that `this` defaults
         to `global` for functions called anonymously.
@@ -269,8 +269,8 @@ Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash`
         it will be harder to call `eval` in a pristine
         scope chain.
 
-    *   `platform` is a synonym for the `NARWHAL_PLATFORM`
-        environment variable, the name of the platform.
+    *   `engine` is a synonym for the `NARWHAL_ENGINE`
+        environment variable, the name of the engine.
         This variable is informational.
 
     *   `prefix` is a synonym for the `NARWHAL_HOME`
@@ -288,18 +288,18 @@ Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash`
         prefix appears first so that virtual environments
         can load their own package versions.
 
-    *   `platforms` is an Array of platform names, used
+    *   `engines` is an Array of engine names, used
         to extend the module search path at various stages
-        to include platform specific libraries.  There will
-        usually be more than one platform in this Array.
+        to include engine specific libraries.  There will
+        usually be more than one engine in this Array.
         For Rhino, it is `['rhino', 'default']`.  The
-        `default` platform contains many &quot;catch-all&quot; modules
-        that, while being platform-specific, are also 
+        `default` engine contains many &quot;catch-all&quot; modules
+        that, while being engine-specific, are also 
         general enough to be shared among almost all
-        platforms.  Other platforms are likely to share
-        dynamically linked C modules in a &quot;c&quot; platform,
-        and the &quot;rhino&quot; platform itself is useful for
-        the &quot;helma&quot; platform.
+        engines.  Other engines are likely to share
+        dynamically linked C modules in a &quot;c&quot; engine,
+        and the &quot;rhino&quot; engine itself is useful for
+        the &quot;helma&quot; engine.
 
     *   `print` is a temporary shortcut for writing a line to
         a logging console or standard output, favoring
@@ -309,10 +309,10 @@ Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash`
         which will be loaded later.  The module loader
         uses `read` and `isFile` to load the initial modules.
 
-    *   `evaluate` is a module evaluator.  If the platform
+    *   `evaluate` is a module evaluator.  If the engine
         does not provide an evaluator, the `sandbox` module
-        has a suitable default, but some platforms provide
-        their own.  For example, the &quot;secure&quot; platform
+        has a suitable default, but some engines provide
+        their own.  For example, the &quot;secure&quot; engine
         injects a safe, hermetic evaluator.  `evaluate`
         accepts a module as a String, and optionally
         a file name and line number for debugging purposes.
@@ -341,15 +341,15 @@ Narwhal launches in stages.  On UNIX-like systems, Narwhal starts with a `bash`
 *   `narwhal.js`
 
     This is the common script that creates a module loader,
-    makes the global scope consistent across platforms,
+    makes the global scope consistent across engines,
     finishes the `system` module, parses command line arguments,
     loads packages, executes the desired program, and
     finally calls the unload event for cleanup or running
     a daemon event loop.
 
-When Narwhal is embedded, the recommended practice is to load the `bootstrap.js` platform script directly, skipping the shell script phases.
+When Narwhal is embedded, the recommended practice is to load the `bootstrap.js` engine script directly, skipping the shell script phases.
 
-Some platforms, like Helma or GPSEE, may provide their own module loader implementation.  In that case, they may bypass all of this bootstrapping business and simply include Narwhal as if it were a mere package.
+Some engines, like Helma or GPSEE, may provide their own module loader implementation.  In that case, they may bypass all of this bootstrapping business and simply include Narwhal as if it were a mere package.
 
 No system has been constructed for Windows systems yet.
 
@@ -363,7 +363,7 @@ The `narwhal.js` script is the next layer of blubber.
     provides the means to construct a `require` function
     so all other modules can be loaded.
 *   `global` module, monkey patches the transitive globals
-    so that every platform receives the same ServerJS
+    so that every engine receives the same ServerJS
     and EcmaScript 5 global object, or as near to that
     as possible.
 *   `system` module, including the `file` and `logger`
@@ -371,7 +371,7 @@ The `narwhal.js` script is the next layer of blubber.
     variable in all modules.
 *   `narwhal` module parses arguments.
 *   `packages` module loads packages.
-    *   `packages-platform` loads jars for Java/Rhino.
+    *   `packages-engine` loads jars for Java/Rhino.
 *   run command
 *   `unload` module sends an `unload` signal to any
     observers, usually for cleanup or to kick off event loops.
@@ -394,11 +394,11 @@ only go to disk when the underlying module text has changed.
 Global Module
 -------------
 
-The global module is platform-specific, and there is sharable
-version in the default platform.  The purpose of the global
+The global module is engine-specific, and there is sharable
+version in the default engine.  The purpose of the global
 module is to load modules like &quot;json&quot;, &quot;string&quot;, &quot;array&quot;, and
 &quot;binary&quot;, that monkey patch the globals if necessary to
-bring every platform up to speed with EcmaScript 5 and
+bring every engine up to speed with EcmaScript 5 and
 the ServerJS standard.
 
 
@@ -427,7 +427,7 @@ for Narwhal, and an Easter egg.
 Packages Module
 ---------------
 
-The packages module analyzes and installs packages, such that their libraries are available in the module search path, and also installs some platform-specific package components like Java archives at run-time.  The package loader uses a five pass algorithm:
+The packages module analyzes and installs packages, such that their libraries are available in the module search path, and also installs some engine-specific package components like Java archives at run-time.  The package loader uses a five pass algorithm:
 
 *   find and read package.json for every accessible package,
     collating them into a catalog.  This involves a breadth
@@ -444,13 +444,13 @@ The packages module analyzes and installs packages, such that their libraries ar
     in the module search path.
 *   &quot;analyze&quot; the packages in order.  This involves finding
     the library directories in each package, including
-    platform-specific libraries for all of the
-    `system.platforms`, and performing platform-specific
+    engine-specific libraries for all of the
+    `system.engines`, and performing engine-specific
     analysis like finding the Java archives (`jars`) installed
     in each package.
 *   &quot;synthesize&quot; a configuration from the analysis.  This
     involves setting the module search path, and performing
-    platform-specific synthesis, like installing a Java
+    engine-specific synthesis, like installing a Java
     class loader for the Java archives, and creating a new,
     global `Packages` object.
 </diff>
      <filename>docs/narwhal.md</filename>
    </modified>
    <modified>
      <diff>@@ -13,16 +13,16 @@ A package directory might have the following files and directories:
 * &quot;src&quot; for all buildable source code, including C and Java source code.
 * &quot;jars&quot; for Java class trees and archives.
 * &quot;packages/{name}&quot; for installed sub-packages.
-* &quot;platforms/{platform}&quot; for platform-specific packages.
+* &quot;engines/{engine}&quot; for engine-specific packages.
 * &quot;parent&quot; for an inherited package tree, like the &quot;narwhal&quot; package installed by the system administrator or OS package management system.
 
 &quot;package.json&quot; and &quot;local.json&quot; may contain the following attributes:
 
 * &quot;name&quot; - the name of the package.  The package system will only load one package with a given name.  The name defaults to the name of the parent directory.
 * &quot;lib&quot; - a path or array of paths to top-level module directories provided in this package.  Defaults to [&quot;lib&quot;].
-* &quot;jars&quot; - for Rhino platforms, a path or array of paths to directories to add to the Java CLASSPATH (uses a Java URLClassLoader, so accepts &quot;.jar&quot; paths and directory paths ending with &quot;/&quot;).
+* &quot;jars&quot; - for Rhino engines, a path or array of paths to directories to add to the Java CLASSPATH (uses a Java URLClassLoader, so accepts &quot;.jar&quot; paths and directory paths ending with &quot;/&quot;).
 * &quot;packages&quot; - a path or array of paths to directories containing additional packages, defaults to [&quot;packages&quot;].
-* &quot;platforms&quot; - a path or array of paths to directories containing platform-specific packages, defaults to [&quot;platforms&quot;].  These platform packages will be loaded if and in the prioritized order they appear in the &quot;system.platforms&quot; array, and with higher priority that those in this package's generic &quot;js&quot; path so that they can override platform-specific modules.
+* &quot;engines&quot; - a path or array of paths to directories containing engine-specific packages, defaults to [&quot;engines&quot;].  These engine packages will be loaded if and in the prioritized order they appear in the &quot;system.engines&quot; array, and with higher priority that those in this package's generic &quot;js&quot; path so that they can override engine-specific modules.
 * &quot;main&quot; - a path to a main program if the package is run with &quot;bin/narwhal&quot; and its directory instead of a specific script.
 * &quot;author&quot; - may be a comment on the package's author and email in angle brackets.
 * &quot;contributors&quot; - may be an array of additional author names and email addresses in angle brackets.</diff>
      <filename>docs/packages-howto.md</filename>
    </modified>
    <modified>
      <diff>@@ -15,5 +15,5 @@ Check out the [quick start guide](http://narwhaljs.org/quick-start.html) for ins
 * Complete [securable modules](https://wiki.mozilla.org/ServerJS/Modules/SecurableModules) implementation, in JavaScript, with hooks for native module loading.
 * Various modules, including `file`, `binary`, `os`, `system`, `args`, and many others.
 * The &quot;tusk&quot; package manager, currently using [Github](http://github.com/) as a package repository.
-* Full support for the Rhino interpreter, and partial support for numerous other [platforms](http://narwhaljs.org/platforms.html).
+* Full support for the Rhino interpreter, and partial support for numerous other [engines](http://narwhaljs.org/engines.html).
 * Full support for Mac OS X, Linux, and other Unixes. Preliminary support for Windows.</diff>
      <filename>docs/posts/2009-07-29-hello-0.1.md</filename>
    </modified>
    <modified>
      <diff>@@ -10,9 +10,9 @@ Download Narwhal.
 Put Narwhal on your PATH environment variable.
 
 * `export PATH=$PATH:~/narwhal/bin`, or
-* execute `narwhal/bin/sea` for a quick Narwhal subshell
+* `source narwhal/bin/activate`
 
-Run `narwhal` or `js` (they're equivalent).
+Run `narwhal` or `js` (they are equivalent).
 
 * `js narwhal/examples/hello`
 
@@ -30,8 +30,9 @@ Create a project &quot;hello-web&quot;.
     tusk init hello-web
     cd hello-web
 
-Enter your project as a &quot;virtual environment&quot; using `sea` so that its libraries, binaries, and packages get automatically installed when you run Narwhal.
+Enter your project as a &quot;virtual environment&quot; using `activate` or `sea` so that its libraries, binaries, and packages get automatically installed when you run Narwhal.
 
+    source bin/activate
     bin/sea
 
 Install some packages you will need, like Jack, the JSGI standard library for interoperable web services.</diff>
      <filename>docs/quick-start.md</filename>
    </modified>
    <modified>
      <diff>@@ -2,13 +2,13 @@
 Narwhal, Tusk, and Sea
 ======================
 
-Narwhal is your JavaScript interpreter.  It is executable with &quot;narwhal&quot; or &quot;js&quot;.  See &quot;narwhal --help&quot; for a list of its options.  It is comparable to your shell, Python or Ruby/IRB.
+Narwhal is your JavaScript interpreter.  It is executable with `narwhal` or `js`.  See `narwhal --help` for a list of its options.  It is comparable to your shell, Python or Ruby/IRB.
 
-Tusk is your package manager.  Tusk by default installs packages whereever &quot;narwhal&quot; is installed.  See &quot;tusk help&quot; for a list of options.  It is comparable to &quot;apt&quot; or &quot;gem&quot;.  You can also use &quot;tusk&quot; to create new &quot;packages&quot;, application project scaffolds, or &quot;virtual environments&quot;, which are all the same thing.
+Tusk is your package manager.  Tusk by default installs packages whereever `narwhal` is installed.  See `tusk help` for a list of options.  It is comparable to `apt` or `gem`.  You can also use `tusk` to create new &quot;packages&quot;, application project scaffolds, or &quot;virtual environments&quot;, which are all share a common structure.
 
-&quot;sea&quot; is a tool for entering a Narwhal &quot;virtual environment&quot;.  It executes a command or reexecutes your shell inside a &quot;virtual environment&quot;.  There is a version of &quot;sea&quot; that comes packed with &quot;Narwhal&quot;, which you can use to &quot;enter&quot; your system &quot;narwhal&quot; environment, which is handy if &quot;narwhal/bin&quot; is not on your path.  You can also source &quot;activate.sh&quot; if your current working directory is the package root you want to use for your Sea.
+`sea` is a tool for entering a Narwhal &quot;virtual environment&quot;.  It executes a command or reexecutes your shell inside a &quot;virtual environment&quot;.  There is a version of `sea` that comes packed with &quot;Narwhal&quot;, that you can use to &quot;enter&quot; your system `narwhal` environment, which is handy if `narwhal/bin` is not on your path.  You can also `source bin/activate`, as long as your version of bash supports the `${BASH_ARGV[0]}` notation, or if your current working directory contains `bin/activate`.
 
-You can use &quot;narwhal&quot;, &quot;tusk&quot;, and &quot;sea&quot; to create multiple, independent, reproducable Narwhal project installations.  Assuming that &quot;narwhal&quot; and &quot;tusk&quot; are on your path, you can use &quot;tusk init&quot; to create two application projects.
+You can use `narwhal`, `tusk`, and `sea` to create multiple, independent, reproducable Narwhal project installations.  Assuming that `narwhal` and `tusk` are on your path, you can use `tusk init` to create two application projects.
 
     $ tusk init foo
     $ tusk init bar
@@ -36,13 +36,13 @@ You can use &quot;narwhal&quot;, &quot;tusk&quot;, and &quot;sea&quot; to create multiple, independent, reprod
 
 When you are in a Sea, Narwhal loads all of the packages installed in that Sea and Tusk installs packages in your Sea.  While you can manipulate the NARWHAL_PATH and JS_PATH environment variables manually, Seas obviate the need.
 
-Each sea can also have a different JavaScript engine.  Edit narwhal.conf in your Sea to use a different engine.
+Each sea can also have a different JavaScript engine.  Edit `narwhal.conf` in your Sea to use a different engine.
 
-    $ js -e 'print(system.platform)'
+    $ js -e 'print(system.engine)'
     rhino
     $ cat bar/narwhal.conf
     NARWHAL_DEFAULT_PLATFORM=v8
-    $ bar/bin/sea 'js -e &quot;print(system.platform)&quot;'
+    $ bar/bin/sea 'js -e &quot;print(system.engine)&quot;'
     v8
     PATH=/bin
     SEALVL=0</diff>
      <filename>docs/sea.md</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 
-// NOTE: portions of the &quot;file&quot; module are implemented in &quot;file-bootstrap&quot; and &quot;file-platform&quot;,
+// NOTE: portions of the &quot;file&quot; module are implemented in &quot;file-bootstrap&quot; and &quot;file-engine&quot;,
 // which are loaded at the bottom of this file to allow for overriding default implementations
 
 var io = require('io');
@@ -84,7 +84,7 @@ exports.open = function (path, mode, options) {
     // abstraction
 
     var lineBuffering = buffering == 1 || buffering === undefined &amp;&amp; raw.isatty &amp;&amp; raw.isatty();
-    // leaving buffering undefined is a signal to the platform implementation
+    // leaving buffering undefined is a signal to the engine implementation
     //  that it ought to pick a good size on its own.
     if (buffering &lt; 0) {
         throw new Error(&quot;invalid buffering size&quot;);
@@ -441,7 +441,7 @@ for (var i = 0; i &lt; trivia.length; i++) {
     })(name);
 }
 
-// load &quot;file-bootstrap&quot; and &quot;file-platform&quot;, which in turn load &quot;file&quot; and modify it's module object.
-// &quot;platform&quot; gets priority so it's loaded last.
+// load &quot;file-bootstrap&quot; and &quot;file-engine&quot;, which in turn load &quot;file&quot; and modify it's module object.
+// &quot;engine&quot; gets priority so it's loaded last.
 require(&quot;file-bootstrap&quot;);
-require(&quot;file-platform&quot;);
+require(&quot;file-engine&quot;);</diff>
      <filename>lib/file.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 
-var implementation = require('http-platform');
+var implementation = require('http-engine');
 
 exports.open = function (url, mode, options) {
     // todo mode negotiation, particularly for binary vs text buffering</diff>
      <filename>lib/http.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
-// IO: platform independent
+// IO: engine independent
 
-var implementation = require(&quot;io-platform&quot;);
+var engine = require(&quot;io-engine&quot;);
 
-for (var name in implementation) {
-    if (Object.prototype.hasOwnProperty.call(implementation, name)) {
-        exports[name] = implementation[name];
+for (var name in engine) {
+    if (Object.prototype.hasOwnProperty.call(engine, name)) {
+        exports[name] = engine[name];
     }
 };
 </diff>
      <filename>lib/io.js</filename>
    </modified>
    <modified>
      <diff>@@ -12,10 +12,10 @@ exports.Bundler = function (system) {
     var self = {};
 
     system = util.copy(system);
-    system.platforms = util.copy(system.platforms);
-    system.platforms.unshift('browser');
+    system.engines = util.copy(system.engines);
+    system.engines.unshift('browser');
     var paths = util.copy(require.paths);
-    paths.unshift(system.prefix + '/platforms/browser/lib');
+    paths.unshift(system.prefix + '/engines/browser/lib');
 
     var loader = AttenuatedLoader(Loader({&quot;paths&quot;: paths}));
     var sandbox = Sandbox({'loader': loader, 'system': system});
@@ -79,12 +79,12 @@ exports.Bundler = function (system) {
     };
 
     self.bundle = function (id) {
-        var bootstrap = fs.path(module.path).resolve('../../platforms/browser/bootstrap.js').read();
+        var bootstrap = fs.path(module.path).resolve('../../engines/browser/bootstrap.js').read();
         return exports.jsmin(bootstrap).replace(/\s*$/, '') + '.call(this,' + self.factories(id) + ')';
     };
 
     self.inline = function (id, path) {
-        var inline = fs.path(module.path).resolve('../../platforms/browser/inline.js').read().replace(/\s*$/, '');
+        var inline = fs.path(module.path).resolve('../../engines/browser/inline.js').read().replace(/\s*$/, '');
         var ids = self.transitiveDependencies(id).concat(['sandbox']);
         util.sort(ids, util.by(function (id) {
             return -self.factory(id).length;</diff>
      <filename>lib/narwhal/server.js</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,7 @@ parser.command('search', null)
 
 parser.command('init', module.id + '/init');
 
-parser.command('platform', module.id + '/platform');
+parser.command('engine', module.id + '/engine');
 
 parser.command('freeze', null)
     .help('writes a freeze.json file');</diff>
      <filename>lib/narwhal/tusk.js</filename>
    </modified>
    <modified>
      <diff>@@ -28,9 +28,9 @@ parser.action(function (options, parentOptions) {
     path.join('.tusk').mkdirs();
     path.join('bin').mkdirs();
     path.join('lib').mkdirs();
-    system.platforms.forEach(function (platform) {
-        platform = path.join('platforms', platform);
-        platform.join('lib').mkdirs();
+    system.engines.forEach(function (engine) {
+        engine = path.join('engines', engine);
+        engine.join('lib').mkdirs();
     });
     path.join('packages').mkdirs();
 
@@ -45,7 +45,7 @@ parser.action(function (options, parentOptions) {
 
     path.join('README').touch();
     path.join('narwhal.conf')
-        .write('NARWHAL_DEFAULT_PLATFORM=' + system.platform);
+        .write('NARWHAL_DEFAULT_ENGINE=' + system.engine);
     var packagePath = path.join('package.json');
     if (packagePath.isFile())
         util.complete(</diff>
      <filename>lib/narwhal/tusk/init.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 
-var platform = require('os-platform');
-for (var name in platform) {
-    if (Object.prototype.hasOwnProperty.call(platform, name)) {
-        exports[name] = platform[name];
+var engine = require('os-engine');
+for (var name in engine) {
+    if (Object.prototype.hasOwnProperty.call(engine, name)) {
+        exports[name] = engine[name];
     }
 }
 </diff>
      <filename>lib/os.js</filename>
    </modified>
    <modified>
      <diff>@@ -9,13 +9,13 @@ exports.main = function main() {
     // to the loader and system.
     // this involves a breadth first search for packages
     // and packages within packages (readPackages),
-    // and performing platform-specific analysis and
+    // and performing engine-specific analysis and
     // synthesis.
 
     if (system.packagePrefixes === undefined)
         throw new Error(
             &quot;system.packagePrefix is undefined in packages loader. &quot; +
-            &quot;(platform=&quot; + system.platform + &quot;)&quot;
+            &quot;(engine=&quot; + system.engine + &quot;)&quot;
         );
 
     exports.load(system.packagePrefixes);
@@ -24,11 +24,11 @@ exports.main = function main() {
 
 exports.load = function (packagePrefixes) {
 
-    // the packages platform module, if it exists,
-    //  performs platform-specific actions on each package.
-    var packagesPlatform;
+    // the packages engine module, if it exists,
+    //  performs engine-specific actions on each package.
+    var packagesEngine;
     try {
-        packagesPlatform = require('packages-platform');
+        packagesEngine = require('packages-engine');
     } catch (exception) {
     }
 
@@ -39,22 +39,22 @@ exports.load = function (packagePrefixes) {
     exports.verify(catalog);
 
     // a topological sort of the packages based on their
-    // stated dependencies and contained platform-specific
+    // stated dependencies and contained engine-specific
     // components
     var packageOrder = exports.sortedPackages(catalog);
 
     // analysis
     var analysis = {};
     exports.analyze(analysis, packageOrder);
-    // platform-specific analysis
-    if (packagesPlatform)
-        packagesPlatform.analyze(analysis, packageOrder);
+    // engine-specific analysis
+    if (packagesEngine)
+        packagesEngine.analyze(analysis, packageOrder);
 
     // synthesis
     exports.synthesize(analysis);
-    // platform-specific synthesis
-    if (packagesPlatform)
-        packagesPlatform.synthesize(analysis);
+    // engine-specific synthesis
+    if (packagesEngine)
+        packagesEngine.synthesize(analysis);
     
     // preload modules
     analysis.preloadModules.forEach(function(id) {
@@ -291,18 +291,18 @@ exports.analyze = function analyze(analysis, catalog) {
         if (!packageData.lib)
             packageData.lib = ['lib'];
 
-        // platforms
-        var platforms = 'platforms';
-        var platformLibs = [];
-        if (packageData.platforms)
-            platforms = packageData.platforms;
-        system.platforms.forEach(function (platform) {
-            var platformDir = packageData.directory.join(platforms, platform, 'lib');
-            if (platformDir.isDirectory()) 
-                platformLibs.push(platformDir);
+        // engines
+        var engines = 'engines';
+        var engineLibs = [];
+        if (packageData.engines)
+            engines = packageData.engines;
+        system.engines.forEach(function (engine) {
+            var engineDir = packageData.directory.join(engines, engine, 'lib');
+            if (engineDir.isDirectory()) 
+                engineLibs.push(engineDir);
         });
 
-        packageData.lib = platformLibs.concat(packageData.lib);
+        packageData.lib = engineLibs.concat(packageData.lib);
         for (var i = 0; i &lt; packageData.lib.length; i++) {
             packageData.lib[i] = packageData.directory.resolve(packageData.lib[i]);
         }</diff>
      <filename>lib/packages.js</filename>
    </modified>
    <modified>
      <diff>@@ -165,7 +165,7 @@ parser.command('search', exports.search)
 
 parser.command('init', module.id + '/init');
 
-parser.command('platform', module.id + '/platform');
+parser.command('engine', module.id + '/engine');
 
 parser.command('freeze', exports.freeze)
     .help('writes a freeze.json file');</diff>
      <filename>lib/tusk.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
 
 # Rhino
-NARWHAL_DEFAULT_PLATFORM=&quot;rhino&quot;
+NARWHAL_DEFAULT_ENGINE=&quot;rhino&quot;
 
 # k7
-#NARWHAL_DEFAULT_PLATFORM=&quot;k7&quot;
+#NARWHAL_DEFAULT_ENGINE=&quot;k7&quot;
 
-#NARWHAL_PLATFORM_HOME=&quot;.&quot;
+#NARWHAL_ENGINE_HOME=&quot;.&quot;
 </diff>
      <filename>narwhal.conf.template</filename>
    </modified>
    <modified>
      <diff>@@ -46,58 +46,58 @@ Gem::Specification.new do |s|
         &quot;lib/uri.js&quot;,
         &quot;lib/util.js&quot;,
         &quot;lib/xregexp.js&quot;,
-        &quot;platforms&quot;,
-        &quot;platforms/browser&quot;,
-        &quot;platforms/browser/lib&quot;,
-        &quot;platforms/browser/lib/reactor.js&quot;,
-        &quot;platforms/default&quot;,
-        &quot;platforms/default/lib&quot;,
-        &quot;platforms/default/lib/array.js&quot;,
-        &quot;platforms/default/lib/file-platform.js&quot;,
-        &quot;platforms/default/lib/function.js&quot;,
-        &quot;platforms/default/lib/global.js&quot;,
-        &quot;platforms/default/lib/io-platform.js&quot;,
-        &quot;platforms/default/lib/object.js&quot;,
-        &quot;platforms/default/lib/reactor.js&quot;,
-        &quot;platforms/default/lib/system.js&quot;,
-        &quot;platforms/k7&quot;,
-        &quot;platforms/k7/bin&quot;,
-        &quot;platforms/k7/bin/narwhal-k7&quot;,
-        &quot;platforms/k7/bootstrap.js&quot;,
-        &quot;platforms/k7/lib&quot;,
-        &quot;platforms/k7/lib/file-platform.js&quot;,
-        &quot;platforms/k7/lib/system.js&quot;,
-        &quot;platforms/rhino&quot;,
-        &quot;platforms/rhino/bin&quot;,
-        &quot;platforms/rhino/bin/narwhal-rhino&quot;,
-        &quot;platforms/rhino/bootstrap.js&quot;,
-        &quot;platforms/rhino/jars&quot;,
-        &quot;platforms/rhino/jars/jline.jar&quot;,
-        &quot;platforms/rhino/jars/js.jar&quot;,
-        &quot;platforms/rhino/lib&quot;,
-        &quot;platforms/rhino/lib/binary.js&quot;,
-        &quot;platforms/rhino/lib/file-platform.js&quot;,
-        &quot;platforms/rhino/lib/http-platform.js&quot;,
-        &quot;platforms/rhino/lib/io-platform.js&quot;,
-        &quot;platforms/rhino/lib/os.js&quot;,
-        &quot;platforms/rhino/lib/packages-platform.js&quot;,
-        &quot;platforms/rhino/lib/process.js&quot;,
-        &quot;platforms/rhino/lib/sandbox-platform.js&quot;,
-        &quot;platforms/rhino/lib/system.js&quot;,
-        &quot;platforms/rhino/lib/zip.js&quot;,
-        &quot;platforms/secure&quot;,
-        &quot;platforms/secure/lib&quot;,
-        &quot;platforms/secure/lib/file.js&quot;,
-        &quot;platforms/secure/lib/system.js&quot;,
-        &quot;platforms/template&quot;,
-        &quot;platforms/template/bin&quot;,
-        &quot;platforms/template/bin/narwhal-platform-name&quot;,
-        &quot;platforms/template/bootstrap.js&quot;,
-        &quot;platforms/template/lib&quot;,
-        &quot;platforms/template/lib/file-platform.js&quot;,
-        &quot;platforms/template/lib/system.js&quot;,
-        &quot;platforms/v8cgi&quot;,
-        &quot;platforms/v8cgi/bootstrap.js&quot;
+        &quot;engines&quot;,
+        &quot;engines/browser&quot;,
+        &quot;engines/browser/lib&quot;,
+        &quot;engines/browser/lib/reactor.js&quot;,
+        &quot;engines/default&quot;,
+        &quot;engines/default/lib&quot;,
+        &quot;engines/default/lib/array.js&quot;,
+        &quot;engines/default/lib/file-engine.js&quot;,
+        &quot;engines/default/lib/function.js&quot;,
+        &quot;engines/default/lib/global.js&quot;,
+        &quot;engines/default/lib/io-engine.js&quot;,
+        &quot;engines/default/lib/object.js&quot;,
+        &quot;engines/default/lib/reactor.js&quot;,
+        &quot;engines/default/lib/system.js&quot;,
+        &quot;engines/k7&quot;,
+        &quot;engines/k7/bin&quot;,
+        &quot;engines/k7/bin/narwhal-k7&quot;,
+        &quot;engines/k7/bootstrap.js&quot;,
+        &quot;engines/k7/lib&quot;,
+        &quot;engines/k7/lib/file-engine.js&quot;,
+        &quot;engines/k7/lib/system.js&quot;,
+        &quot;engines/rhino&quot;,
+        &quot;engines/rhino/bin&quot;,
+        &quot;engines/rhino/bin/narwhal-rhino&quot;,
+        &quot;engines/rhino/bootstrap.js&quot;,
+        &quot;engines/rhino/jars&quot;,
+        &quot;engines/rhino/jars/jline.jar&quot;,
+        &quot;engines/rhino/jars/js.jar&quot;,
+        &quot;engines/rhino/lib&quot;,
+        &quot;engines/rhino/lib/binary.js&quot;,
+        &quot;engines/rhino/lib/file-engine.js&quot;,
+        &quot;engines/rhino/lib/http-engine.js&quot;,
+        &quot;engines/rhino/lib/io-engine.js&quot;,
+        &quot;engines/rhino/lib/os.js&quot;,
+        &quot;engines/rhino/lib/packages-engine.js&quot;,
+        &quot;engines/rhino/lib/process.js&quot;,
+        &quot;engines/rhino/lib/sandbox-engine.js&quot;,
+        &quot;engines/rhino/lib/system.js&quot;,
+        &quot;engines/rhino/lib/zip.js&quot;,
+        &quot;engines/secure&quot;,
+        &quot;engines/secure/lib&quot;,
+        &quot;engines/secure/lib/file.js&quot;,
+        &quot;engines/secure/lib/system.js&quot;,
+        &quot;engines/template&quot;,
+        &quot;engines/template/bin&quot;,
+        &quot;engines/template/bin/narwhal-engine-name&quot;,
+        &quot;engines/template/bootstrap.js&quot;,
+        &quot;engines/template/lib&quot;,
+        &quot;engines/template/lib/file-engine.js&quot;,
+        &quot;engines/template/lib/system.js&quot;,
+        &quot;engines/v8cgi&quot;,
+        &quot;engines/v8cgi/bootstrap.js&quot;
     ]
     s.require_paths = [&quot;lib&quot;]
     s.rubygems_version = %q{1.3.3}</diff>
      <filename>narwhal.gemspec</filename>
    </modified>
    <modified>
      <diff>@@ -48,9 +48,9 @@ system.fs = fs;
 
 // construct the initial paths
 var paths = [];
-for (var i = 0; i &lt; system.platforms.length; i++) {
-    var platform = system.platforms[i];
-    paths.push(system.prefix + '/platforms/' + platform + '/lib');
+for (var i = 0; i &lt; system.engines.length; i++) {
+    var engine = system.engines[i];
+    paths.push(system.prefix + '/engines/' + engine + '/lib');
 }
 paths.push(system.prefix + '/lib');
 </diff>
      <filename>narwhal.js</filename>
    </modified>
    <modified>
      <diff>@@ -9,5 +9,5 @@
     ],
     &quot;main&quot;: &quot;examples/narwhal&quot;,
     &quot;lib&quot;: [&quot;lib&quot;],
-    &quot;lean&quot;: [&quot;lib&quot;, &quot;platforms&quot;] 
+    &quot;lean&quot;: [&quot;lib&quot;, &quot;engines&quot;] 
 }</diff>
      <filename>package.json</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>docs/platforms.md</filename>
    </removed>
    <removed>
      <filename>lib/narwhal/tusk/platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/browser/inline.js</filename>
    </removed>
    <removed>
      <filename>platforms/browser/lib/binary.js</filename>
    </removed>
    <removed>
      <filename>platforms/browser/lib/modules.js</filename>
    </removed>
    <removed>
      <filename>platforms/browser/lib/reactor.js</filename>
    </removed>
    <removed>
      <filename>platforms/browser/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/array.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/binary-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/binary.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/date.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/file-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/function.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/global.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/io-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/json.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/object.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/os-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/reactor.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/string.js</filename>
    </removed>
    <removed>
      <filename>platforms/default/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/helma/bin/narwhal-helma</filename>
    </removed>
    <removed>
      <filename>platforms/helma/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/jaxer/README.md</filename>
    </removed>
    <removed>
      <filename>platforms/jaxer/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/jaxer/lib/logger.js</filename>
    </removed>
    <removed>
      <filename>platforms/k7/bin/narwhal-k7</filename>
    </removed>
    <removed>
      <filename>platforms/k7/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/k7/lib/binary.js</filename>
    </removed>
    <removed>
      <filename>platforms/k7/lib/file-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/k7/lib/io-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/k7/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/bin/narwhal-rhino</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/bin/narwhal-rhino.cmd</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/jars/jline.jar</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/jars/js.jar</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/binary-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/file-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/http-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/io-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/md5.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/os-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/packages-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/process.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/sandbox-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/rhino/lib/zip.js</filename>
    </removed>
    <removed>
      <filename>platforms/secure/lib/file.js</filename>
    </removed>
    <removed>
      <filename>platforms/secure/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/template/bin/narwhal-platform-name</filename>
    </removed>
    <removed>
      <filename>platforms/template/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/template/lib/file-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/template/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/v8cgi/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/.gitignore</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/LICENSE</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/README.md</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/application.ini</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/branding/about.png</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/branding/aboutCredits.png</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/branding/aboutFooter.png</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/branding/icon48.png</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/branding/icon64.png</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/chrome.manifest</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/content/main.xul</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/locale/branding/brand.dtd</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/chrome/locale/branding/brand.properties</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/defaults/preferences/prefs.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/extensions/mozrepl@hyperstruct.net</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/extensions/narwhal@narwhaljs.org</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/apps/firenarwhal/firenarwhal</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/bin/narwhal-xulrunner</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/bootstrap.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/chrome.manifest</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/chrome/content/narwhal.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.idl</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/components/nsINarwhal.xpt</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/defaults/preferences/prefs.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/install.rdf</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/modules/narwhal.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/extensions/narwhal@narwhaljs.org/narwhal</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/lib/file-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/lib/io-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/lib/os-platform.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/lib/system.js</filename>
    </removed>
    <removed>
      <filename>platforms/xulrunner/post-commit</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>82e7d5932eeefd9c5b52dd639dd51aff52da5a42</id>
    </parent>
  </parents>
  <author>
    <name>kriskowal</name>
    <email>kris.kowal@cixar.com</email>
  </author>
  <url>http://github.com/tlrobinson/narwhal/commit/a18eaf5eb105fb5a93957e2950962a6aa3decbd7</url>
  <id>a18eaf5eb105fb5a93957e2950962a6aa3decbd7</id>
  <committed-date>2009-07-30T21:50:42-07:00</committed-date>
  <authored-date>2009-07-30T21:50:42-07:00</authored-date>
  <message>s/platform/engine/gi</message>
  <tree>7ef313e0126c115a6c97bd95473a876c589605de</tree>
  <committer>
    <name>kriskowal</name>
    <email>kris.kowal@cixar.com</email>
  </committer>
</commit>
