
************************* Beta 1.0.5384.19912 RELEASE *************************

BUGFIX: *MAJOR* prevent undefined global and namespace variables from being
        improperly removed from their call frame when a procedure uses either
        the [global] or [variable] command to create a link to an undefined
        variable and returns from the enclosing procedure without performing
        any action that would result in the variable being defined.

BUGFIX: when namespace support is enabled, make sure the ::Eagle namespace is
        translated to the fully qualified global namespace name and not simply
        an empty string.

BUGFIX: remove improper caching of parsed lists when processing nested indexes
        used for accessing elements in a list.

BUGFIX: produce better error messages when an attempt to invoke a nested member
        somehow fails method overload resolution.

BUGFIX: correct handling for negative array bounds in the core marshaller.

BUGFIX: prevent multi-dimensional arrays with simple element types from being
        converted to a list of strings by the core marshaller.

BUGFIX: prevent the [array copy] sub-command from throwing an exception if the
        target variable is present (but not defined) in the call frame.

BUGFIX: the [namespace1 which] and [namespace2 which] sub-commands should not
        consider undefined variables.

BUGFIX: the interactive #restv command should hold the interpreter lock while
        restoring the core script variables.

BUGFIX: fix option bounds handling in the [clock buildnumber], [clock days],
        and [file glob] sub-commands as well as the [split] command.

BUGFIX: add missing lock statement to the AddTrace method overload responsible
        for adding global traces.

BUGFIX: use snapshot semantics for the current policy collection when executing
        policy callbacks.

BUGFIX: set the SkipNullSetupValue flag when the -arrayasvalue option is used
        with the Utility.InvokeDelegate method.

BUGFIX: make it possible, at a glance, to determine if the interactive #sresult
        command succeeded or failed.

BUGFIX: fix [interp set] result when reading a variable value from an isolated
        interpreter.

BUGFIX: make sure the ConsoleCancelEventHandler method can handle interpreters
        from multiple application domains (e.g. isolated slave interpreters).

BUGFIX: use the correct box name in the _Hosts.Default.WriteTokenInfo method.

BUGFIX: add several recently added option types to the Option.ToString method.

BUGFIX: the Engine.ReadScriptStream and Engine.ReadScriptFile methods should
        check the interpreter for null prior to accessing its ValidateXml or
        AllXml properties.

BUGFIX: if the Name property of an INamespace gets changed, make sure to update
        all references to it in the parent and children, if any.

BUGFIX: for the Eagle Package for Tcl (Garuda), make sure that running the test
        suite from the TEA makefile uses the selected configuration suffix.

BUGFIX: *BREAKING CHANGE* do not attempt to dispose of object instances if the
        associated opaque object handle was not created by an [object] related
        sub-command that is primarily designed to result in the creation of new
        object instances.

REFACTOR: make the processTestArguments test library procedure more robust in
          the face of unrecognized command line arguments.

REFACTOR: make the [unset -zerostring] option work better for arrays and cached
          results.

REFACTOR: centralize and streamline handling of all core marshaller related
          sub-commands, including all [object] sub-commands taking options.

REFACTOR: improve handling of command tokens by the [namespace enable] command.

REFACTOR: modify handling of the NET_20_ONLY compile-time option so that it is
          handled consistently by all applicable sub-projects.

REFACTOR: improvements and corrections to the interactive shell help content.

REFACTOR: update Fossil tool w/source to version e061a675e69cf8.

REFACTOR: revise usage of [uri softwareupdates] by the script library to permit
          the software updates SSL certificate to remain trusted.

REFACTOR: callers to the internal ObjectOps.DefaultSynchronous field should now
          use the ObjectOps.GetDefaultSynchronous accessor method instead.

REFACTOR: when enabled, initialize namespace support earlier in the interpreter
          setup process.

REFACTOR: streamline usage of CreateFlags values for use by applications and
          plugins embedding the core library.  also, in the OptionOriginFlags
          enumeration, rename the NoOverride value to NonOverride.

REFACTOR: cleanup use of the NativeOps.GetErrorMessage method.

REFACTOR: add preliminary support for the .NET Framework 4.5.2.

REFACTOR: cleanup and modularize handling for the ResetFlags and Reset methods
          of the IHost interface.

REFACTOR: centralize all output style handling performed by the default host.

REFACTOR: revise all the StringOps.Match method overloads, which now require an
          Interpreter (or null) as the first parameter.

REFACTOR: improve registry key handling in the SetupOps class, including better
          diagnostics and per-user support.  fix style issues with the registry
          key handling in the TclWrapper class.

REFACTOR: *BREAKING CHANGE* simplify interface for the Parser.SplitList method,
          by completely removing the boolean clear parameter and renaming the
          cache parameter to readOnly.

REFACTOR: *BREAKING CHANGE* enhance list index value processing to support the
          syntax variations "integer-end" and "end-end".

REFACTOR: *BREAKING CHANGE* add Stop method overload with no parameters to the
          ScriptThread class.

REFACTOR: *BREAKING CHANGE* in the official release builds, disable the script
          debugger integration and notifications for all expression operators
          and functions.

REFACTOR: *BREAKING CHANGE* rename several of the core library test files (e.g.
          bad-subst.eagle, bigdir.eagle, debugops.eagle, and delayout.eagle).

REFACTOR: *BREAKING CHANGE* add an ArgumentList parameter to the GetIdentifier
          method of the IEntityManager interface.

REFACTOR: *BREAKING CHANGE* for the TryParseFlagsEnum method of the EnumOps and
          Utility classes, add a boolean strict parameter.

REFACTOR: *BREAKING CHANGE* the Value.GetMatchMode2 method now requires an
          Interpreter (or null) as the first parameter.

REFACTOR: *BREAKING CHANGE* revise handling of options with the MustBeMatchMode
          flag set to use full flags enumeration handling (i.e. for MatchMode).

REFACTOR: *BREAKING CHANGE* all Engine.EvaluateScript method overloads that
          accept an IScript now perform script policy checking.

REFACTOR: *BREAKING CHANGE* make sure policies are passed a valid encoding when
          applicable.

REFACTOR: *BREAKING CHANGE* check BeforeScript policies when the script being
          read by the ReadScriptStream and ReadScriptFile methods did not come
          from an XML script block.

REFACTOR: *BREAKING CHANGE* revise handling of the encoding when dealing with
          XML documents from within the Engine class.

REFACTOR: *BREAKING CHANGE* pass the original script text to the script policy
          callback, not the line-ending translated script text.

REFACTOR: *BREAKING CHANGE* add WriteDebug/WriteError method overloads to the
          IDebugHost interface that require an integer character count and a
          boolean newline indicator as well as the foreground and background
          colors.

REFACTOR: *BREAKING CHANGE* revise output of the RuntimeOps.PluginFlagsToPrefix
          method and re-order the PluginFlags enumeration to improve clarity.

REFACTOR: *BREAKING CHANGE* rename the IAlias.InterpreterDisposed property to
          PostInterpreterDisposed.  add internal PreInterpreterDisposed event
          handling.

REFACTOR: *BREAKING CHANGE* rename existing ConsoleOps class to NativeConsole.
          add new (and different) ConsoleOps class that only deals with various
          (internal) aspects of the System.Console class.  streamline, cleanup,
          and robustify all managed and native console integration code.  also,
          show the MustBeOpenCount value in the default host.

REFACTOR: *BREAKING CHANGE* the -nocase option is always honored by the various
          [library] and [object] sub-commands that also have an option of type
          BindingFlags.

REFACTOR: *BREAKING CHANGE* move remaining tool data files into the tool data
          sub-directory.  also, move test data files into the new test data
          sub-directory.

REFACTOR: *BREAKING CHANGE* add EntityManager and InterpreterManager properties
          to the IInterpreter interface.

REFACTOR: *BREAKING CHANGE* move all slave interpreter support methods from the
          IEntityManager interface to the new IInterpreterManager interface.

REFACTOR: *BREAKING CHANGE* move all callback queue support methods from the
          IEntityManager interface to the new ICallbackQueueManager interface.

REFACTOR: *BREAKING CHANGE* revise usage of the HeaderFlags enumeration by the
          default host.

REFACTOR: *BREAKING CHANGE* changes related to [object invokeraw], including:
          modifying several IScriptThread.AddObject method overloads to remove
          the aliasAll parameter and add an ObjectOptionType parameter.  also,
          modify the Utility.GetInvokeOptions and Utility.FixupReturnValue
          method overloads in a similar fashion.

FEATURE: make the ByteList class more helpful when dealing with byte arrays.

FEATURE: add support for adding/modifying settings that originate from array
         variables in the ScriptOps.LoadSettingsViaFile method.

FEATURE: add -limit option to the [regexp] command in order to limit the number
         of matches returned when the -all option is used.

FEATURE: add -raw option to the [hash] command to return a list of byte values
         instead of a hexadecimal string.

FEATURE: add -repeatCount option to the [test2] command.

FEATURE: add -novariables option to the [interp create] sub-command.

FEATURE: add -nocore and -nolibrary options to the [info commands] sub-command.

FEATURE: add -arrayaslink option to the core marshaller related sub-commands.
         this option and the associated trace callback allow a script variable
         to be tied directly to a System.Array object instance.

FEATURE: add sub-pattern support to [string match] and its associated methods.

FEATURE: add support for dictionary options to the universal option parser.

FEATURE: add [glob] command that is 99% compatible with the one in Tcl 8.4.

FEATURE: for the compileCSharp script library procedure, use the value of the
         global array element eagle_platform(csharpOptions) when building the
         list of C# compiler options.

FEATURE: support looking for script files to be evaluated via the list of files
         and/or directories contained in the auto_source_path script variable.

FEATURE: add [string cat] sub-command that implements most of the semantics
         described by TIP #429.

FEATURE: add -asynchronous option to the [debug shell] sub-command.  when this
         option is used, all other options are ignored.

FEATURE: support the Eagle Package for Tcl (Garuda) being loaded into TclKit
         shells and other statically linked Tcl environments.  also, allow a
         newly created (a.k.a. "isolated") Eagle interpreter to be used for
         each native Tcl interpreter, when using the new protocol version.

FEATURE: add support for an optional fifth argument to the [for] command that
         allows a script to be evaluated after the loop has exited.

FEATURE: enable the core library to automatically setup a Win32 console for the
         process when necessary, if the new OpenConsole interpreter creation
         flag is specified.

FEATURE: add -matchnameonly option to the [object members] sub-command to allow
         for matching against the simple name of the member while retaining all
         requested data regarding it.

FEATURE: add DatabaseVariable class to enable linking a script variable to the
         specified database column and row.

FEATURE: add an interpreter flag to prevent execution of interactive commands
         via the interactive loop.

FEATURE: enhance the updater tool to make it capable of performing a first-time
         installation.  also, allow skipping all extra strong name verification
         checks just in case the underlying platform does not properly support
         them.  finally, add the -reCheck command line option to the updater in
         order to support automatically checking for subsequent updates.

FEATURE: add [object invokeraw] sub-command and associated functionality.  this
         sub-command is primarily designed to be used for automating late-bound
         COM classes.

FEATURE: add GetAssemblyPublicKeyToken method to the Utility class.

FEATURE: add ScriptClientData class to make it easier to pass name/value data
         between components.

FEATURE: add -pluginArguments command line option.  this option requires two
         arguments, the name of a plugin that will be loaded at some point in
         the future and the argument string to pass during its initialization
         (i.e. via the "wrapped" IClientData it will receive).

FEATURE: support the MustBeLevel option flag, where the value is an ICallFrame
         instance.

FEATURE: add the ObjectFlagsAttribute class, which is used to declare the flags
         that should be added by the core marshaller when handling instances of
         classes marked with the attribute.

FEATURE: *BREAKING CHANGE* when available, keep track of the whole command that
         created every opaque object handle.  in order to make this new feature
         work properly, it is necessary to add an ArgumentList parameter to the
         appropriate IEntityManager.AddObject method overload.

FEATURE: *BREAKING CHANGE* add NewWebClientCallback property to the IInterpreter
         interface to allow third-party applications and plugins to override the
         default WebClient handling.  modify the DownloadData and DownloadFile
         methods of the Utility class by adding an Interpreter parameter.

FEATURE: *BREAKING CHANGE* adjust result format of [debug memory] and include
         the GCSettings.IsServerGC and GCSettings.LatencyMode property values,
         when available.

FEATURE: *BREAKING CHANGE* add the -startFile and -stopFile options to the test
         suite.  also, modify the [runAllTests] script library procedure to
         require two extra arguments which must contain either the starting and
         ending test file names or empty strings.

************************* Beta 1.0.5217.20046 RELEASE *************************

BUGFIX: *PERF* the IExecute cache should always be be used when looking up
        IExecute objects to execute, even when the ExactMatch engine flag is
        used.

BUGFIX: make the Variant class handle IOption values for use with the universal
        option parser.

BUGFIX: the ArgumentList constructor taking a variable number of arguments must
        correctly handle a string array of zero or more elements.

BUGFIX: make the methods of the ITclEntityManager interface honor the Validate
        lookup flag.

BUGFIX: the result of [file normalize ~] should be non-empty even if the value
        of $::env(HOME) is not a valid directory.

BUGFIX: if test suite usage of the [exec] command has been disabled, skip all
        tests that require it.

BUGFIX: make sure the MethodImplOptions.NoOptimization value is used only when
        it is available.

BUGFIX: fix the interactive #help command when a built-in interactive command
        has been overridden.

BUGFIX: for the console host, only display the Authenticode certificate subject
        in the console title if it is identical for the Eagle core library and
        the Eagle Shell.

BUGFIX: the IExecute cache should always contain the various wrapper objects.
        later, when the cache entry is fetched, it should be unwrapped if the
        caller specifies the appropriate lookup flag.

BUGFIX: the ErrorLine and PreviousResult properties should not be used within
        the core library from any place where the interpreter might have just
        been disposed.

BUGFIX: the LoadHostProfile method should support properties with the char and
        HostStreamFlags types.

REFACTOR: *PERF* for the ContextManager class, remove all superfluous uses of
          the ContainsKey method.

REFACTOR: when using methods of the Monitor class, make sure the value of the
          syncRoot field is not null.

REFACTOR: add private readyFlags field to the Interpreter class and revise the
          semantics associated with them.

REFACTOR: change the interpreter properties ParserLevels, ExpressionLevels,
          UnknownLevels, TraceLevels, WatchpointLevels, NotifyLevels,
          PolicyLevels, TestLevels, and _History to private.

REFACTOR: make handling of interactive extension command more extensible, via
          careful use of the IIdentifier and ISyntax interfaces.

REFACTOR: cleanup PlatformOps class and move some methods out of the CommonOps
          class into it.

REFACTOR: cleanup Debugger class and move some methods out to the DebuggerOps
          class.

REFACTOR: streamline the GetDelegate and GetModule methods of the Interpreter
          class.

REFACTOR: cleanup usage of the Interpreter.ArraySearches property.

REFACTOR: move all object related OptionDictionary definitions into the static
          ObjectOps class.

REFACTOR: revise the tests basic-1.54 and object-2.4 so that they can pass on
          Mono 2.10.

REFACTOR: optimize the line-ending translations performed via the engine when
          reading a script file.

REFACTOR: centralize all option processing related to the core FixupReturnValue
          method.

REFACTOR: add IEventManager instances to the list of well-known objects handled
          by the core marshaller.  revise handling of the Runtime object flag.

REFACTOR: revise the updater tool to improve support for automatic updating via
          silent mode.

REFACTOR: make the interactive #check command send the current patch level to
          the web server via the query string.

REFACTOR: make the updater tool send the current patch level to the web server
          via the query string.  also, make sure it always sends a user agent.

REFACTOR: display the RuntimeOptions property of the interpreter in the default
          host output.

REFACTOR: display the globalNamespace and pendingNamespaces fields of the
          interpreter in the default host output.  also, include the result of
          the AreNamespacesEnabled method as well.

REFACTOR: *BREAKING CHANGE* disallow creation of Event objects by third-party
          applications and plugins.

REFACTOR: *BREAKING CHANGE* add boolean force parameter to the PreInitialize,
          Initialize, and InitializeShell methods.

REFACTOR: *BREAKING CHANGE* include the InitializeShell method only if support
          for the interactive shell is being included as well.

REFACTOR: *BREAKING CHANGE* revise default values for options with the types
          X509RevocationMode, X509RevocationFlag, and X509VerificationFlags.

REFACTOR: *BREAKING CHANGE* rename the UpdateFile engine attribute to
          UpdatePathAndQuery.

REFACTOR: *BREAKING CHANGE* modify result formatting for [version] command.

REFACTOR: *BREAKING CHANGE* add a boolean argument to the interactive #check
          command to permit optional automatic updating.

REFACTOR: *BREAKING CHANGE* mark the -objectflags option to [object invoke] as
          "unsafe".

REFACTOR: *BREAKING CHANGE* evaluate finally blocks even if the script argument
          to the [try] command exits the interpreter.

REFACTOR: *BREAKING CHANGE* move all the MSBuild related files to their own
          directory.

REFACTOR: *BREAKING CHANGE* move all the strong name key files to their own
          directory.

REFACTOR: *BREAKING CHANGE* rename the IHost.Write method overload that takes a
          StringPairList to WriteFormat.

REFACTOR: *BREAKING CHANGE* rename HostTestFlags.TestCustomInfo to CustomInfo.

REFACTOR: *BREAKING CHANGE* revise the default header flags used by the #show
          command and reorder some of the flag values.

REFACTOR: *BREAKING CHANGE* add boolean argument to the WriteEngineInfo method
          of the IInformationHost interface to control whether information
          related to native code should be displayed.

FEATURE: add interactive #init command to initialize the script library for the
         interpreter or the shell.

FEATURE: add -setLoop command line option to allow control over whether or not
         the interactive loop will be entered.

FEATURE: add -setInitialize and -forceInitialize command line options to allow
         for finer grained control over script library initialization.

FEATURE: add support for the IdentifierKind.Ensemble value in the GetIdentifier
         method.

FEATURE: add ScriptBlocks class to permit third-party applications and plugins
         to easily process all scripts embedded within other content, such as
         web pages.

FEATURE: add DefaultTraceStack and TraceStack environment variables to enable
         the inclusion of managed call stack information with selected trace
         listener output.

FEATURE: add -arrayasvalue option to core marshaller related sub-commands that
         handle output arguments (i.e. those that use FixupByRefArguments).

FEATURE: add -full option to the [tcl find] sub-command to return full details
         for all results.

FEATURE: add ZeroMemory, IsUnixOperatingSystem, IsWindowsOperatingSystem,
         ProcessFixupReturnValueOptions, and GetFixupReturnValueOptions methods
         to the Utility class.

FEATURE: add -noPass to the [test2] command to suppress output showing that the
         test passed.

FEATURE: add an experimental and unsupported way to change default values for
         the object related -alias, -create, -nodispose, -synchronous, -trace,
         and -verbose options.

FEATURE: enhance the updater so that it is capable of updating and re-launching
         itself prior to checking for other updates.

FEATURE: modify the universal option parser to support resolving absolute and
         relative namespace names to their INamespace values.

FEATURE: add -namespace option to the [object load] sub-command that is used to
         set the namespace where any related command alias is to be created.

FEATURE: add the [object aliasnamespaces] sub-command to return the list of
         matching assembly namespace mappings.

FEATURE: add the [object unaliasnamespace] sub-command to remove the matching
         assembly namespace mappings.

FEATURE: add the [namespace info] sub-command to return diagnostic information
         about the specified namespace, command, or variable name.

FEATURE: *MAJOR* add full support for Tcl 8.4 compliant namespaces, including
         tests, with the exception of creative reading/writing.  in addition,
         the [namespace unknown] sub-command from Tcl 8.5 has been implemented.
         currently, namespace support is disabled by default (i.e. the legacy
         namespace behavior is used).  to enable, use the UseNamespaces flag
         when creating an interpreter.

FEATURE: add the [namespace enable] sub-command to query, enable, or disable
         namespace support for the current interpreter.

FEATURE: add -namespaces command line option to enable or disable namespace
         support for the shell interpreter.

FEATURE: add reversed color support to the built-in interpreter hosts for both
         the border and text output.

FEATURE: make it possible to execute the built-in (system) interactive commands
         even if they have been overridden.

************************* Beta 1.0.5173.31244 RELEASE *************************

BUGFIX: *PERF* major engine performance improvements, especially in handling of
        lists and list variables.

BUGFIX: for the [error] command, report the correct error line number when the
        optional errorInfo argument is supplied.

BUGFIX: when ending an external execution context, cleanup any namespaces that
        are pending deletion.

BUGFIX: return -1 for the [string first] and [string last] sub-commands when an
        empty string is used.

BUGFIX: in the [configureTcltest] procedure, also copy over the test names to
        match and/or skip.

BUGFIX: when creating an isolated application domain using the base path, make
        sure the assembly path is located underneath it prior to attempting to
        use the assembly path as part of the PrivateBinPath property.

BUGFIX: make sure the correct error message is returned upon failure to create
        an isolated slave interpreter.

BUGFIX: modify the commands-1.1.3 test so that it requires the Tcl library and
        default shell versions to match (i.e. they must both be 8.6).  several
        changes to the test suite infrastructure were also necessary.

BUGFIX: fix missing test constraint for the sample plugin assembly file in the
        load-1.6 and load-1.7 tests.

BUGFIX: fix test portability with the package-1.1 and sql-1.12 tests.

BUGFIX: when searching for available native Tcl libraries, for use with the
        native Tcl integration subsystem, allow all the environment variables
        checked to specify either a file name or a directory name.  previously,
        only a file name could be specified successfully.

BUGFIX: use the full patch level of native Tcl libraries, if available, when
        picking the "best" native Tcl library for use with the native Tcl
        integration subsystem.

BUGFIX: fix missing return statement in the GetHostSize method for the default
        host.

BUGFIX: fix the [file glob], [file isdirectory], [file isfile], and [file size]
        sub-commands so that they will work properly with relative paths.

BUGFIX: prevent NullReferenceException being thrown by the GetLength methods of
        the Argument and Result classes.

BUGFIX: for the [lindex] command, fix error handling for bad indexes when the
        bad index is not the final index.

BUGFIX: grab and hold the interpreter lock while resolving type names, object
        names, and member names in the Value class.

BUGFIX: prevent the Eagle Package for Tcl (Garuda) from trying to call the
        configured shutdown method when the Tcl interpreter is not available.

BUGFIX: in the Eagle Package for Tcl (Garuda), save and restore the interpreter
        result when evaluating the Tcl logging script.

BUGFIX: in the Eagle Package for Tcl (Garuda), when cleaning up after a package
        load failure, unlock the Tcl mutex prior to calling the unload function
        to perform the actual cleanup.

BUGFIX: make sure the Eagle Package for Tcl (Garuda) exit handler gets called
        if the [unload] command was used with the -keeplibrary option.

BUGFIX: normalize usage of WinForms related test constraints.  add checking for
        the WinForms compile-option test constraint.

BUGFIX: the result of the [tcl module] sub-command should be a fully qualified
        file name.

BUGFIX: when using the interpreter host, the ShellMainCore method should honor
        the quietness semantics for the interpreter.

BUGFIX: correct the OptionFlags.Ignored enumeration value.

BUGFIX: the Eagle Native Utility Library (Spilornis) must support the same set
        of backslash escape sequences as the managed parser.  previously, the
        \\, \B, and \o backslash escape sequences were only implemented in the
        managed parser.

BUGFIX: fix the result of [file normalize /] on Windows.

BUGFIX: avoid potential deadlocks in various DebugOps and HostOps methods that
        accept an interpreter parameter while that interpreter is locked by
        another thread (e.g. it is being disposed).

BUGFIX: avoid potential deadlock when attempting to synchronously wait via the
        EventOps.Wait method.

BUGFIX: when variable object instances are reused, make sure all the reserved
        variable flags are unset.

BUGFIX: when splitting type names during a type search, take into account the
        type parameters (i.e. for generic types) and skip over them.

REFACTOR: streamline the PrivateGet* methods of the Interpreter class.

REFACTOR: add an optional boolean argument to the [interp aliases] sub-command
          to return all aliases.  by default, aliases reserved for library use
          are not returned.

REFACTOR: make sure that execution of the native Tcl shell and Fossil by the
          test suite can be completely disabled.

REFACTOR: add support for WiX version 3.8.

REFACTOR: for the default host, change output semantics for array variables to
          be more consistent, correct, and robust.

REFACTOR: cleanup handling of the InterpreterFlags property.

REFACTOR: via HostFlags, allow a host to declare that it does not handle calls
          to emit error and/or debug information (e.g. via DebugOps.Complain).

REFACTOR: modify the VariablesToString method to permit returning a list of
          undefined variables present in the current call frame.

REFACTOR: improve automatic detection of the test path when an embedded script
          library is in use.

REFACTOR: make the optional argument handling of all the interactive commands
          consistent.

REFACTOR: revise how the [parray] and [pdict] script library procedures query
          the host size.

REFACTOR: add a confirmation dialog to the updater project.  also, make the log
          messages more consistent and emit details when an invalid release or
          configuration is detected.

REFACTOR: use native delegates to bind to the native utility library, making it
          possible to dynamically load/unload it.  also, verify it was compiled
          with options that match the managed wrapper class.

REFACTOR: the interactive help subsystem now supports reporting the available
          interactive extension commands, including the associated syntax and
          descriptions, where available.

REFACTOR: change all methods in the GlobalState class that are not called from
          outside of it to private.

REFACTOR: break out most of the GlobalState.GetAutoPathList method into two
          methods; one that handles querying the interpreter path list and one
          that handles the master path list.

REFACTOR: make sure all environment variables cause diagnostic messages to be
          printed during interpreter creation.

REFACTOR: move a lot of methods out of the RuntimeOps class into new classes.
          the new classes include AppDomainOps, DataOps, DebuggerOps, EventOps,
          HistoryOps, HostOps, ObjectOps, ProfileOps, ResultOps, ScriptOps,
          ShellOps, and TraceOps classes.

REFACTOR: the core marshaller should avoid using the ToString method of the
          Argument and Result classes.

REFACTOR: update Fossil tool w/source to version 1.28 (20140127173344).

REFACTOR: add GlobalUnknown and NamespaceUnknown properties to the IInterpreter
          interface.

REFACTOR: *BREAKING CHANGE* move Tcl entity management methods to the new
          ITclEntityManager interface.

REFACTOR: *BREAKING CHANGE* modify the [namespace unknown] sub-command so that
          it no longer changes the global unknown command handler.

REFACTOR: *BREAKING CHANGE* modify parameter order for flags arguments to the
          AddCommands, RemoveCommands, and RemoveFunctions methods.

REFACTOR: *BREAKING CHANGE* modify the Utility.Wait method to take a boolean
          parameter indicating if the call should timeout if the interpreter
          lock cannot be obtained before the specified time period elapses.

REFACTOR: *BREAKING CHANGE* modify IInformationHost.WriteVariableInfo method to
          take yet another boolean parameter that controls whether or not array
          search details are included.  modify [debug variable] and interactive
          #vinfo commands accordingly.

REFACTOR: *BREAKING CHANGE* in the Value class, all method overloads of the
          GetSingle, GetDouble, GetByte2, GetInteger2, and GetVariant methods
          that took a parameter of type Argument now take a parameter of type
          IGetValue instead.

REFACTOR: *BREAKING CHANGE* change the ShellMainCore arguments parameter to the
          IEnumerable<string> type.

REFACTOR: *BREAKING CHANGE* the Utility.SetEnvironmentVariable method now takes
          three parameters.

REFACTOR: *BREAKING CHANGE* modify the PathOps.CombinePath method in an attempt
          to honor the existing directory separator characters found within the
          paths to be combined.  also, modify all callers to pass null instead
          of false.

REFACTOR: *BREAKING CHANGE* move all delegates not that should not be needed by
          external callers to a private namespace and mark them as internal.

REFACTOR: *BREAKING CHANGE* revise how missing version components are handled
          when the native Tcl integration subsystem searches for installed Tcl
          library builds.

REFACTOR: *BREAKING CHANGE* rename the osBits element of the tcl_platform array
          to platformBits.

REFACTOR: *BREAKING CHANGE* replace the -maximum option of the [host size]
          sub-command and with the -sizetype option, which takes a HostSizeType
          enumeration value.  add the -sizetype option to the [host reset]
          sub-command.

REFACTOR: *BREAKING CHANGE* change the ResetSize, GetSize, and SetSize methods
          of the IHost interface to require a HostSizeType as their first (or
          only) parameter.  also, remove the GetMaximumSize and SetMaximumSize
          methods.

REFACTOR: *BREAKING CHANGE* modify the order of the optional arguments for the
          interactive #check command.

REFACTOR: *BREAKING CHANGE* cleanup interpreter readiness checking and remove
          the NoReady and StackOnly interpreter flags.

FEATURE: expose SignalVariableDirty method via the Utility class for use when
         implementing custom variable trace callbacks.

FEATURE: add experimental [interp readylimit] sub-command to limit the full
         readiness checks performed by the engine to every N readiness checks.

FEATURE: add -noready option to all [parse] sub-commands.

FEATURE: add optional boolean argument to the [info previouspid] sub-command to
         force the previous process Id to be reset.

FEATURE: add -processid option to the [exec] command in order to specify the
         name of a variable that should be modified to contain the Id of the
         started process or zero if the process was not started.

FEATURE: add the [callback count] and [callback list] sub-commands to allow for
         introspection of the callback queue.

FEATURE: add -unlinkonly option to the [unset] command to remove the specified
         link to the target variable instead of the target variable itself.
         this option only works with the variables links themselves and has no
         effect when unsetting normal variables.

FEATURE: add break-on-leak support to the test suite infrastructure.

FEATURE: add interactive #seflags command to display or set the shared engine
         flags for the interactive interpreter.  rename interactive #eflags
         command to #ceflags.

FEATURE: add the [interp enabled] sub-command and the Enabled property to the
         IInterpreter interface to control whether or not an interpreter will
         accept evaluation and substitution requests.

FEATURE: add GetTclPatchLevel method to the ITclManager interface.

FEATURE: add _Hosts.Wrapper class, which wraps an IHost implementation and then
         allows it to be easily customized, via inheritance and delegation.

FEATURE: add Restricted flag to the ScriptThread class that prevents any method
         other than Queue or Send from being invoked successfully.

FEATURE: add FinallyTimeout property to the IInterpreter interface in order to
         support runaway finally blocks being canceled automatically after the
         specified number of milliseconds.  also, add [interp finallytimeout]
         sub-command to query or set this value easily via scripts.

FEATURE: add "y" length modifier to [format] to permit formatting byte values.

FEATURE: support disabling selected diagnostic messages during library startup
         using the NoVerbose environment variable.

FEATURE: add -argv and -text options to the [test2] command, used when creating
         isolated test interpreters.

FEATURE: add -anyInitialize command line option to evaluate a script whether or
         not the script library has been initialized.

FEATURE: add -library command line option to manually override the core script
         library path.

FEATURE: add -interactive option to the [info commands] sub-command to return
         procedures that were intended for use with the interactive shell.

FEATURE: add GetPackageAssemblyName and GetProcessorArchitecture methods to the
         Utility class.

FEATURE: add the [tcl versionrange] sub-command to return a list of versions
         that fall within the specified minimum and maximum versions.

FEATURE: in the Eagle Package for Tcl (Garuda), add the [garuda bridgerunning]
         sub-command, which returns non-zero if the bridge has been started.

FEATURE: add preliminary support for running on the ARM processor architecture,
         paying special attention to the native stack checking.

FEATURE: support overriding the base directory for the core library via the
         EAGLE_BASE environment variable.

FEATURE: add [interp readorgetscriptfile] sub-command to read and return the
         textual content of the local or remote script file.

FEATURE: support the evaluation of matching update scripts via the interactive
         #check command.

FEATURE: for the [test1] and [test2] commands, support the pseudo-constraints
         "fail.false" and "fail.true" to support declaring that a test cannot
         cause the current test run to return an overall failure result.

FEATURE: *BREAKING CHANGE* attempt to increase security when handling options
         of type SecureString.  this will not work on all platforms nor in all
         situations.  also, allow such options to refer to an existing opaque
         object handle with a value of type SecureString.

FEATURE: *BREAKING CHANGE* modify the MakeSafe and MakeStandard methods of the
         ISecurityManager interface to take a MakeFlags parameter instead of a
         second boolean parameter.

FEATURE: *BREAKING CHANGE* add ExtraStackSpace property to the IInterpreter
         interface.

FEATURE: *BREAKING CHANGE* add support for the \U backslash escape in the core
         script parser.  code points exceeding 16-bits will be returned as
         two characters.

FEATURE: *BREAKING CHANGE* for the [lindex] command, support returning multiple
         elements by attempting to interpret each index specifier as an index
         list if it cannot be parsed as a simple index.

************************* Beta 1.0.5000.25377 RELEASE *************************

BUGFIX: *MAJOR* prevent a script error from being generated when using [unset]
        with the -nocomplain option on a non-existing array element within an
        existing array.

BUGFIX: make sure that CommandCallback object instances cannot be created nor
        used while the associated interpreter is being disposed.

BUGFIX: prior to iterating over the hidden commands for an interpreter, make
        sure they are still available.

BUGFIX: make sure that freeing the context manager instance does not throw an
        ObjectDisposedException.

BUGFIX: by default, always flag opaque object handles for the event parameters
        used by the CommandCallback class as NoDispose.

BUGFIX: in the TclWrapper.DoOneEvent method, always verify that the module is
        not null before attempting to call the VerifyModule method on it.

BUGFIX: fix use of the SETLOCAL command by the fn_UnquoteVariable subroutine in
        the various batch tools.

BUGFIX: modify classes implementing the IDisposable pattern to set the disposed
        flag after their base classes have been disposed.

BUGFIX: fix the ticks-per-microsecond calculation for [clock microseconds].

BUGFIX: when resolving commands using prefix matching, check for an exact match
        first to avoid situations where an approximate match of a command would
        override an exact match of a hidden command.

BUGFIX: for the PowerShell cmdlet, make sure the CheckDisposed method is called
        by all public members.  also, do not catch all exceptions thrown by the
        WriteDebug and WriteVerbose methods.

BUGFIX: fix detection of excess arguments by the [tcl resetcancel] sub-command.

BUGFIX: the [file executable], [file readable], and [file writable] sub-commands
        should never return an error result, even if the file permissions cannot
        be determined.

BUGFIX: make sure the effective plugin flags are passed to the interpreter from
        the [load] and [unload] commands.

BUGFIX: cleanup the command aliases used by the test suite to help emulate the
        Tcltest package.

BUGFIX: allow parameters declared as object to support conversion to and from
        array script variables as well as to scalar script variables that are
        either null or empty.

BUGFIX: make sure the ScriptBinder gets a chance to perform ToString conversion
        operations on its registered types (e.g. DateTime) as well as the types
        provided by third-party applications and/or plugins.

BUGFIX: in the ScriptBinder, fix detection of types that can be automatically
        converted from a string.  this issue caused the FixupReturnValue method
        to create opaque object handles when it should have simply returned the
        string representation of the object for some non-primitive types.  this
        issue has been present since the beta 7 release in late 2010.

BUGFIX: prevent the interactive #vinfo command from being used from a different
        application domain.

BUGFIX: never dispose of any contexts for an interpreter on non-primary threads
        if the interpreter is still active (i.e. it has entries on the active
        interpreter stack for the thread).

BUGFIX: attempt to prevent any private field from being accessed directly from a
        different application domain.

BUGFIX: fix cross-application domain marshalling issue in the engine when parse
        tokens containing variable references.  also, the engine should be able
        to handle null result values when attempting to query a variable value.

BUGFIX: stop stripping off trailing slashes when normalizing root paths.

BUGFIX: all interactive commands should make sure the interactive host is valid
        prior to using it.

BUGFIX: fix incorrect AssemblySourceId and AssemblySourceTimeStamp values being
        produced by the build version tagging tool when dealing with plugin
        source code checkouts that just so happen to be nested within the main
        Eagle source code checkout directory.  also, fix missing trailing tab
        characters in UpdateMode when dealing with multiple lines of output.

BUGFIX: in the core marshaller, stop treating any string that can be converted
        to a StringList as one for the purposes of method overload matching.

BUGFIX: prevent a FormatException caused by an incorrect format string used to
        implement the -debug option to [exec].

BUGFIX: add missing call to CheckDisposed in one of the QueueTclThreadEvent
        method overloads of the ITclManager interface.

BUGFIX: add several possible NuGet staging directories to the clean tool.

BUGFIX: for the [host writebox] sub-command, enforce having the correct number
        of non-option arguments.

BUGFIX: skip prompting the user to cancel the running script when the host is
        actively trying to read user input.

BUGFIX: improve open/closed detection in the built-in console host.

BUGFIX: for the default host, when attempting to retry a WriteBox operation due
        to an out-of-space condition, make sure that the number of BeginBox and
        EndBox method calls match.

BUGFIX: prevent the interactive loop from raising exceptions when accessing the
        interactive host to read input.

BUGFIX: the [sql close] sub-command should return an empty string upon success.

BUGFIX: avoid using the syncRoot field of the interpreter from outside its own
        instance.  add a new internal property InternalSyncRoot to minimize the
        impact of this fix.  also, avoid using private interpreter fields from
        the static Interpreter.Ready method.

BUGFIX: modify the Interpreter.GetPluginCommands method so that it takes hidden
        commands into account.

BUGFIX: modify the ".args" file processing to append all the arguments read to
        the end of the existing command line.

BUGFIX: fix method name handling used by the DebugOps.GetMethodName method.

BUGFIX: stop using IntPtr.ToInt32 in the diagnostic messages related to native
        module handles.

BUGFIX: the TclWrapper.AddModuleReference method should use try/finally to get
        transactional semantics when loading the native Tcl module.

BUGFIX: the TclWrapper.DoOneEvent method should verify that the native Tcl
        module is still loaded prior to each call into the native Tcl API.

BUGFIX: make it so the InteractiveLoop method works properly for an interpreter
        in a different application domain.

BUGFIX: honor the pattern argument to the [info policies] sub-command.

BUGFIX: lock access to the private data fields of the console host.

BUGFIX: *BREAKING CHANGE* when compiled with support for isolated application
        domains, make the CallFrame class derive from ScriptMarshalByRefObject
        class, to fix script evaluation between application domains when a call
        frame is already active.

BUGFIX: *BREAKING CHANGE* the [try] command now calls the Engine.ResetCancel
        method, by default, just prior to evaluating the finally block script.

BUGFIX: *BREAKING CHANGE* do not cache any XmlSchema objects used for XML schema
        validation in the XmlOps class.  remove the namespaceUri parameter from
        the Utility.Validate method and add a serializerNamespaces parameter to
        the Utility.Serialize method.

REFACTOR: optimize access to the script text in the Engine.EvaluateTokens and
          Engine.SubstituteTokens methods.

REFACTOR: improve consistency of the interactive command help text. also, add
          optional arguments to the interactive #usage and #version commands to
          allow finer control over their output.

REFACTOR: update Fossil tool w/source to version c107d5059640b0ee.

REFACTOR: modify the [debug paths] sub-command to accept an optional boolean
          argument that controls whether only the auto-path components are
          returned.

REFACTOR: add beta NuGet package to be used for feature prototyping and release
          testing.

REFACTOR: prevent interactive command exceptions from causing problems with the
          interactive loop.

REFACTOR: add experimental code to protect against using a System.Console that
          has been closed without being reopened.

REFACTOR: update the [format] and [lmap] Tcl tests from upstream.

REFACTOR: keep track and log the name of the test suite being run.  also, keep
          track of and report the total count of each object type leaked by the
          test files included in the current test suite run.

REFACTOR: various enhancements to the updater project, including logging and
          handling of in-use files.

REFACTOR: move database connection creation logic into the RuntimeOps class and
          call it from the [sql] command implementation.

REFACTOR: modify the test suite to better support alternative database types.

REFACTOR: add support for the EllipsisLimit environment variable, which can be
          used to override the length limit for elided text that would otherwise
          use the default length limit.

REFACTOR: carefully eliminate all remaining usage of private interpreter fields
          from within the core library, adding internal properties and methods
          where necessary.

REFACTOR: modify the ReadInteractiveInput method in an attempt to cleanly handle
          thread abort exceptions received from other threads while waiting for
          input in the interactive loop.

REFACTOR: for the interactive #version command, output the version information
          for system plugins first and add visual indicators for the important
          plugin flags.

REFACTOR: cache the certificate subject result queried by the console host.

REFACTOR: modify the IDebugger interface to require an Interpreter parameter on
          all the breakpoint related methods.

REFACTOR: in the sample project, add quick demonstration of augmenting and/or
          overriding the script binder used by the interpreter.

REFACTOR: make test suite count and timestamp reporting more consistent.  also,
          report the elapsed time taken by the tests being run.

REFACTOR: modify the [fcopy] command to better support writing binary data.
          also, any error from the Engine.CheckEvents method should result in
          the copy operation being aborted.

REFACTOR: make sure all executable files to be released have their Authenticode
          signatures checked by the release preparation tool.

REFACTOR: *BREAKING CHANGE* for the IValue interface, move the Value, String,
          and Length properties to the new IGetValue and ISetValue interfaces.
          also, move the ClientData, ValueData, and ExtraData properties to the
          new IValueData interface.

REFACTOR: *BREAKING CHANGE* modify the Value property of the Argument class to
          be read-only.

REFACTOR: *BREAKING CHANGE* add two parameters to the WriteCallFrame method of
          the IInformationHost interface.

REFACTOR: *BREAKING CHANGE* rename the ICallFrame.Link property to Next.  also,
          add Other, Previous, and FrameLevel properties to the ICallFrame
          interface.

REFACTOR: *BREAKING CHANGE* modify the [parse script] sub-command so that it
          emits a separator token between each set of parsed command tokens.

REFACTOR: *BREAKING CHANGE* rename the -start option of the [parse command],
          [parse expression], and [parse script] sub-commands to -startindex.

REFACTOR: *BREAKING CHANGE* modify public static methods of the ScriptLocation
          class to require an Interpreter parameter.  also, add static factory
          methods, make all the constructors private, and fix private member
          accessibility.

REFACTOR: *BREAKING CHANGE* add HostStreamFlags parameter to the GetStream
          method of the IEngineHost interface.  add StreamFlags property to the
          IEngineHost interface.

REFACTOR: *BREAKING CHANGE* rename the method Utility.GetInteractiveCommandHelp
          to Utility.GetInteractiveCommandHelpItem.

REFACTOR: *BREAKING CHANGE* modify the error raised by [encoding system] when
          the optional encoding argument is supplied.

REFACTOR: *BREAKING CHANGE* modify the implementation of the [encoding names]
          sub-command to allow encodings from the interpreter to replace system
          encodings in the returned list.

REFACTOR: *BREAKING CHANGE* modify Interpreter.ShellMainCore method to accept
          optional delegates that allow the script evaluation and interactive
          loop semantics used by the shell to be overridden.  add IShellManager
          interface to expose these delegates via properties of the Interpreter
          class.  also, rename the old ShellArgumentCallback delegate type to
          ArgumentCallback.

REFACTOR: *BREAKING CHANGE* add UseAttach property to the IHost and IHostData
          interfaces and add a UseAttach flag to the CreateFlags enumeration.
          also, support the UseAttach environment variable.

REFACTOR: *BREAKING CHANGE* add Flush method to the IInteractiveHost interface.

REFACTOR: *BREAKING CHANGE* add new IExecuteRequest interface to the IPlugin
          interface.  also, add TypeName to the IPluginData interface.

FEATURE: add new TCL_EVAL_SOURCE_IN_FRAME and TCL_EVAL_NORESOLVE flag values
         from the native Tcl project for use with the native Tcl integration
         subsystem.

FEATURE: the Eagle Package for Tcl (Garuda) testing infrastructure now supports
         setting the -baseDirectory option, which is used to skip the automatic
         detection of the base directory.  also, check for the test suffix when
         determining the file name of the native package DLL during testing.

FEATURE: add -noArgumentsFileName command line option to skip processing of the
         arguments file name, if it exists.

FEATURE: add the Eagle Native Utility Library (Spilornis) to provide for faster
         joining and splitting of list elements.

FEATURE: add [info cmdtype] sub-command that implements most of the semantics
         described by TIP #426.

FEATURE: add tcl_platform(processorAffinityMasks) element that will contain the
         processor affinity masks for the process.

FEATURE: support the SecureString type in the Option and Variant classes.

FEATURE: add -domainname, -username, and -password options to the [exec]
         command.

FEATURE: add [clock start] and [clock stop] sub-commands for the high-precision
         measurement of elapsed time.

FEATURE: add [downlevel] command to evaluate a script using the call frame that
         was in use prior to the latest [uplevel] command being executed.  this
         idea was borrowed from the downeval function in the LIL language.

FEATURE: add -newnamevar option to the [rename] command.

FEATURE: add -roundtrip option to the [parse script] sub-command.

FEATURE: for the PowerShell cmdlet, add [cmdlet] meta-command to help interact
         with the PowerShell environment during script evaluation.

FEATURE: add [host redirected] sub-command to return a boolean indicating
         whether or not the specified standard channel is currently redirected.

FEATURE: add [host query] sub-command to return an implementation defined list
         of internal state information.

FEATURE: add [info programextension] sub-command to return the file extension
         for the assembly that started the process.

FEATURE: import word.tcl file verbatim from the native Tcl 8.4 script library
         and integrate it into the Eagle script library.

FEATURE: add [tcl queue] sub-command to allow Tcl scripts to be evaluated using
         isolated Tcl threads.

FEATURE: add -nested option to the [parse command] and [parse script]
         sub-commands.  add -filename, -currentline, -syntax, and -strict
         options to the [parse script] sub-command.

FEATURE: add [debug purge] sub-command to remove all undefined variables from
         the current call frame.

FEATURE: add -streamflags option to the [open] command.

FEATURE: enhance interactive command help to support logically grouping related
         interactive commands together into their own help topics, to make it
         easier to discover the functionality provided by the interactive shell.

FEATURE: add -break command line option to force a managed debugger break prior
         to processing any further command line options.

FEATURE: add static InteractiveLoopThread method to the Interpreter class.

FEATURE: add _Commands.Ensemble base command implemenation for use by external
         applications and plugins.  this command is used to provide an easy to
         use, extensible ensemble implementation.

FEATURE: add the AsynchronousBridge class and IAsynchronousCallback interface.
         in addition, modify the AsynchronousContext class to derive from the
         ScriptMarshalByRefObject class.  these changes are necessary to allow
         asynchronous script completion callbacks to be received by components
         running in isolated application domains.

FEATURE: add [file rootpath] sub-command to return the root path associated with
         the specified file name.

FEATURE: add ByRef argument flags to make them capable of having the same level
         of control over the return value marshalling, as the individual binary
         marshalling options do.

FEATURE: add interactive #sresult command to store the last interactive command
         result into the specified script variable.

FEATURE: add EvaluateTrustedScript, EvaluateTrustedFile, EvaluateTrustedStream
         methods to the IEngineManager interface to allow easy evaluation of
         fully trusted scripts by third-party applications and/or plugins using
         "safe" interpreters.

FEATURE: add StrongNameTag to the [info engine] sub-command.  add full support
         for the strong name tag attribute.  add an official pre-release strong
         name key.

FEATURE: add the -marshalflags option to the [object create], [object invoke],
         and related commands.

FEATURE: add IScriptBuilder interface and its associated class to support
         building up scripts dynamically (i.e. from script fragments and/or
         commands).

FEATURE: add CreateDbConnection, FormatDelegateMethodName, GetAssemblyTag,
         GetAssemblyText, GetBasePath, GetErrorMessage, IsBase64, IsMono,
         LoadAssemblyFromStream, MakeRelativePath, SearchForFile, and Wait
         methods to the Utility class.

FEATURE: support random ordering of files evaluated by the test suite.

FEATURE: add [xml validate] sub-command to validate an XML document against an
         XML schema.

FEATURE: add [package info] sub-command to return the properties of a package.
         also, keep track of which script file (i.e. package index) was active
         when a package was added to the interpreter via the [package ifneeded]
         or [package provide] sub-commands.

FEATURE: add [sql types] sub-command to return the combined list of primary and
         auxiliary database connection types.

FEATURE: add -nested option to the [sql execute] sub-command for use with the
         list and dictionary formats.

FEATURE: add -trimall option to the [exec] command to remove all surrounding
         whitespace from the captured output.

FEATURE: add [debug cleanup] sub-command to perform general cleanup of the
         interpreter and/or garbage collect unused managed memory.

FEATURE: add [encoding getstring] sub-command to convert and return the string
         that corresponds to the specified byte array opaque object handle.

FEATURE: add interactive #toldvalue command to allow the TraceInfo old value to
         be set during debugger watchpoints.

FEATURE: *BREAKING CHANGE* rename interactive #tvalue command to #tnewvalue.

FEATURE: *BREAKING CHANGE* add QueryState method to the IInteractiveHost
         interface to return an implementation defined list of internal state
         information (e.g. as name/value pairs) or null if no such information
         is available.

FEATURE: *BREAKING CHANGE* add eagle_paths script variable to help control how
         path resolution for script-visible files takes place within the context
         of an interpreter.  this variable is ignored for "safe" interpreters.

FEATURE: *BREAKING CHANGE* add LoadPlugin method overload to the IPluginManager
         interface that supports loading a plugin from an array of bytes.  this
         works with the isolated plugins feature as well.

FEATURE: *BREAKING CHANGE* add NoPackageUnknown interpreter flag and enable it
         by default.

FEATURE: *BREAKING CHANGE* add IsMasterInterpreter method to the IEntityManager
         interface.

FEATURE: *BREAKING CHANGE* add FindPlugin method to the IPluginManager
         interface.

FEATURE: *BREAKING CHANGE* add DateTimeFormat and DateTimeKind properties to the
         IInterpreter interface.  these properties can be used to influence the
         automatic DateTime type conversions performed by the core marshaller.

FEATURE: *BREAKING CHANGE* add AddStandardTclBridge method to the ITclManager
         interface.

FEATURE: *BREAKING CHANGE* add GetTclVariableValue, SetTclVariableValue, and
         UnsetTclVariableValue methods to the ITclManager interface.

FEATURE: *BREAKING CHANGE* add GetMaximumSize and SetMaximumSize methods to the
         IHost interface.  technically, this is a breaking change; however, for
         all hosts that derive from the default host, implementing these new
         methods is purely optional because the base class provides suitable
         default implementations.  also, add -maximum option to the [host size]
         sub-command.

************************* Beta 1.0.4807.22448 RELEASE *************************

BUGFIX: *MAJOR* fix the [array set] command so that it only replaces the entire
        array value for a variable when no existing array values exist.  also,
        when firing the variable traces for the array, make sure the dictionary
        of new elements includes all the old elements as well.

BUGFIX: modify handling of flags for array elements to prevent throwing needless
        OutOfMemoryException instances.

BUGFIX: prevent the [getFiles] test package helper procedure from returning any
        directories or non-regular files.

BUGFIX: gracefully handle exceptions thrown when dealing with the native stack
        checking LocalDataStoreSlot objects.  this applies primarily when using
        the Thread.GetData and Thread.SetData methods.

BUGFIX: prevent procedures flagged as read-only from being redefined.

BUGFIX: make sure errors that occur when creating the isolated interpreter are
        returned properly when using the [debug setup] sub-command.

BUGFIX: modify argument count checking for the [invoke] command to take into
        account that the level is an optional argument.

BUGFIX: using [string is list -strict] on an empty string should return true.

BUGFIX: fix typo in the syntax error message for the [sql connection] command.

BUGFIX: fix typo in the RuntimeOps.GetArgumentsFileName method.  also, add help
        text for the ".args" file processing performed by the shell.

BUGFIX: make sure the BreakpointType.All value includes all possible breakpoint
        types.

BUGFIX: prevent the per-thread TraceInfo object from being used accidentally
        when system variables are modified due to interpreter properties being
        changed.  also, prevent it from being used by the reference counting
        plugin when any traces or watchpoints are active.

BUGFIX: fix the [::Eagle::testPuts] shim procedure in the Eagle test package so
        that it will emit a line-feed when only one argument is supplied by the
        caller.

BUGFIX: support resetting the Tcl script cancellation flags for Tcl interpreters
        associated with TclThread objects.

BUGFIX: prevent a superfluous error message about native Tcl resource disposal
        being on the wrong thread when it is not actually the wrong thread.

BUGFIX: fix the error messages returned by the TclWrapper.Load method when no
        child error messages are returned from the Find and/or Select methods.

BUGFIX: revise reference counting (and locking) semantics for the TclModule
        collection to prevent some subtle race conditions between the DoOneEvent
        and Unload methods of the TclWrapper class.

BUGFIX: make sure the event wait handle names are unique within the application
        domain.

BUGFIX: make sure the threads created for the TclThread class have names unique
        within the application domain.

BUGFIX: make sure the dynamically created assembly, module, and type names are
        unique within the application domain.

BUGFIX: add missing call to CheckDisposed in the Interpreter.ClearCache method.

BUGFIX: make sure the NoPostProcess variable flag is honored for all calls into
        the script variable subsystem.

BUGFIX: the RuntimeOps.IsHostOpen method should return true when input is being
        redirected.

BUGFIX: *BREAKING CHANGE* fix race condition in the TclThread class when events
        are sent using the native Win32 API.  this required adding a Delegate
        property to the IEvent interface.

BUGFIX: *BREAKING CHANGE* rework the native Tcl resource disposal pipeline in
        the Interpreter class to avoid holding locks when dealing with TclThread
        objects.  unfortunately, as a consequence of this, the UnloadTcl method
        can no longer be guaranteed to be thread-safe.

BUGFIX: *BREAKING CHANGE* remove the alias and its associated command from the
        source interpreter if the target interpreter is disposed first.  this
        fix required adding a SourceInterpreter property to the IAliasData
        interface.

REFACTOR: make the [file executable], [file readable], and [file writable]
          sub-commands work when running on Mono.

REFACTOR: enhance handling of the machine and platform by the test suite.

REFACTOR: add a third element containing the method name to the errorCode when
          an exception is caught and/or handled by the script engine.

REFACTOR: add host size to the default host output.  also, revise handling of
          out-of-space conditions in the WriteBox method of the default host.

REFACTOR: modify [string format] sub-command implementation to detect Mono and
          work around the MissingMethodException being thrown if the three (or
          more) argument overload of the String.Format method is invoked via
          reflection.

REFACTOR: modify various tests to be more compatible with legacy versions of
          Mono (e.g. 2.0 and 2.2).  add the MONO_LEGACY compile-time option to
          allow code that is problematic for Mono 2.0 and/or 2.2 to be omitted
          when compiling.

REFACTOR: add a test constraint for those tests that stress the native stack
          checking code.

REFACTOR: make calls into the DebugOps.Complain method consistently use any
          available interpreter context.  also, make the two parameter overload
          of the DebugOps.Complain method fetch the interpreter from the active
          interpreter stack.

REFACTOR: add built-in method parameter type conversions from string to types
          List<string>, IList<string>, ICollection<string>, IEnumerable<string>,
          and IStringList.

REFACTOR: make the Complaint property of the Interpreter per-thread, via the
          engine context.

REFACTOR: comment and style cleanup for the Example and TclSample projects.

REFACTOR: add a one parameter overload for the ReturnCodeToExitCode method of
          the Utility class.

REFACTOR: in the TclThread.EventCallback method, make sure the interpreter and
          tclApi fields are not null prior to using them.

REFACTOR: make sure the immutable and read-only properties of the Interpreter
          class are applied consistently.

REFACTOR: error messages originating from the DebugOps.Complain method will no
          longer cause a message box to show up on secondary threads.

REFACTOR: when possible, use the TclApi.GetTclApi and TclApi.SetTclApi methods
          to access the tclApi field, especially from the TclBridge class, the
          TclThread class, and the [tcl] command implementation.

REFACTOR: cleanup the main loop code in the TclThread class.  move duplicated
          code to the new DoOneEvent and WasAnyEventSignaled methods.  signal
          the "start" event when the new thread is ready to receive events and
          add a WaitForStart method to allow callers to wait for this new event.
          skip calling the Shutdown method during object disposal if the target
          thread has already been shutdown.  add Dispose EventType to properly
          dispose of all associated bridged Tcl commands as well as delete the
          associated Tcl interpreter (this also required adding the ability for
          a TclBridge object to know that it belongs to a TclThread object).
          improvements to diagnostic messages.

REFACTOR: modify how the [time] command handles the Break and Continue return
          codes.  also, a negative number of iterations other than -1 will run
          only once; however, its absolute value will be used when calculating
          the final result.

REFACTOR: make logging in the updater project more consistent, especially for
          the property values of the Configuration and Release classes.  also,
          for the F1 help, only display shortcut keys that will actually work
          based on the current configuration.

REFACTOR: modify the Argument and Result classes to support implicit conversions
          from the StringDictionary class.

REFACTOR: modify the custom strong name signing related MSBuild targets allow
          them to work properly without the .NET Framework 2.0 SDK installed
          when the MSBuild property StrongNameWithoutSdk is set to true.

REFACTOR: add an overload of the StringDictionary.Add method that allows the
          dictionary provided by the caller to be null (i.e. if the strict
          parameter is false).

REFACTOR: modify the GetAllTestInformation method to support returning only the
          names of the test array elements.

REFACTOR: modify the [debug break] sub-command so that it will not break into
          the debugger unless the BreakpointType.Demand flag is present in the
          IDebugger.Types property value.

REFACTOR: stop using the C# break statement and move the interactive #go, #run,
          #break, and #halt commands to the InteractiveOps class.

REFACTOR: in the interactive loop, only display the local error line number if
          it has been set by the current command.

REFACTOR: move the GetDefaultPrompt method to the RuntimeOps class.

REFACTOR: support building the Eagle Package for Tcl (Garuda) using TEA for the
          Visual C++ 6.0 or later build environment, including 64-bit versions,
          where applicable.  also, add the necessary tooling support to allow
          the package test suite to be easily run in this environment.  also,
          support building and/or downloading Eagle via the TEA makefile, for
          the purpose of integration with the Eagle Package for Tcl (Garuda).

REFACTOR: move several path fragment constants from the EnvVars class to the
          _Path class.  also, remove two path fragment constants that are now
          obsolete.  add help text for the environment variables related to the
          finding the script library directory and the native Tcl integration
          subsystem.

REFACTOR: permit "safe" interpreters to use the [info appdomain] sub-command.

REFACTOR: on the IDebugger interface, add the CheckInterruptCallback method and
          move all properties to the new IDebuggerData interface and then add
          the CallbackArguments property.

REFACTOR: remove superfluous calls to the RuntimeOps.SplitVariableName method
          from within the script variable subsystem in the Interpreter class.

REFACTOR: make sure the list of script library procedures exported to Tcl are
          consistent and include all compatible procedures.

REFACTOR: simplify the implementation of the [list] command.

REFACTOR: optimize common usage patterns for the [lappend] command.  also, add
          -variable option to the [lsearch] command to optimize searching for a
          list element in a list contained within a named script variable.

REFACTOR: use save/restore semantics for the flags in the Variable.FireTraces
          method.  also, show the type of variable values in the default host.

REFACTOR: update Fossil tool w/source to version ab9b449190c7da30.

REFACTOR: add undocumented, internal parameter capable of manually overriding
          the default initial capacity for all newly created array element
          dictionaries.

REFACTOR: *BREAKING CHANGE* add EngineData property to the ICallFrame interface
          for future use by the core library only.

REFACTOR: *BREAKING CHANGE* add ExtraData property to the IValue interface.

REFACTOR: *BREAKING CHANGE* rename values in the VariableFlags enumeration to
          include the word mask when they are used in that context.

REFACTOR: *BREAKING CHANGE* on the ICallback interface, move all properties to
          the ICallbackData interface and then add the ObjectFlags property.

REFACTOR: *BREAKING CHANGE* remove all the unused interpreter parameters from
          methods in the Value class.

REFACTOR: *BREAKING CHANGE* remove all the boolean strict, verbose, noCase, and
          noNested parameters from methods in the Value class.

REFACTOR: *BREAKING CHANGE* add ToString method overloads to the IStringList
          interface that include the empty boolean parameter and modify the
          other ToString method overloads to make use of them.

REFACTOR: *BREAKING CHANGE* add cached boolean parameter to the WriteTraceInfo
          method of the IInformationHost interface.

REFACTOR: *BREAKING CHANGE* add an InterpreterDisposed property to the IAlias
          interface.  this is necessary to facilitate being able to remove the
          referenced delegate from the list of interpreter disposal callbacks
          for the target interpreter during alias removal.

REFACTOR: *BREAKING CHANGE* add an AdjustColors method to the IHost interface.

REFACTOR: *BREAKING CHANGE* add an IsCanceled method to the IEngineManager
          interface.

REFACTOR: *BREAKING CHANGE* on the IScriptEventArgs interface, rename the Types
          property to NotifyTypes and the Flags property to NotifyFlags and add
          an InterruptType property.

FEATURE: add TargetFramework to the [info engine] sub-command to query the
         target framework of the library.  also added the associated element to
         the platform array.

FEATURE: add [array random] sub-command to return a random element name and/or
         value from an array.

FEATURE: add [file rmdir] sub-command to delete one or more empty directories.

FEATURE: add the ability to trace interactive command matching and execution.

FEATURE: add experimental support for private procedures (i.e. they may only be
         executed from within the context of the script file that created them).
         this feature is experimental and is subject to change and/or removal.
         also, add NoReplace, NoRename, and NoRemove flags to silently ignore
         attempts to replace, rename, or remove a procedure, respectively.

FEATURE: add [interp set] and [interp unset] sub-commands to get, set, and unset
         variables in slave interpreters.

FEATURE: add byte, guid, interpreter, number, object, single, type, uri, value,
         variant, and version string classes to the [string is] sub-command.

FEATURE: add GetAssemblyVersion, GetEagleVersion, and GetTclPatchLevel methods
         to the Utility class.

FEATURE: add [debug complaint] sub-command to return the complaint currently
         stored for the current thread.

FEATURE: add [debug invoke] sub-command to lookup and invoke a command in the
         isolated interpreter with the exact arguments specified.

FEATURE: add [debug callback] sub-command to allow the isolated interpreter to
         be notified via a script when the parent interpreter is interrupted in
         some way.

FEATURE: add optional options variable name argument to the [catch] command,
         compatible with TIP #90 (e.g. for Tcl 8.5).

FEATURE: add optional encoding argument to the [string bytelength] sub-command.

FEATURE: add [object search] sub-command to search for the specified type name
         among the currently imported namespaces and loaded assemblies.

FEATURE: add [string is dict] sub-command to verify that a string conforms to
         the structure of a dictionary.

FEATURE: add -isolated option to the [interp create] sub-command to allow slave
         interpreters to be created in an isolated application domain.  modify
         the [interp alias] subsystem to support aliases where the target is in
         a different application domain.

FEATURE: allow the Tcl shell executable used by the test suite to be overridden
         via either the -tclsh command line option or the Tcl_Shell environment
         variable.

FEATURE: add -fixed option to the [file version] sub-command to return the fixed
         file version information (i.e. language and code page independent).

FEATURE: modify the TclBuild and TclWrapper classes to take into account the
         release level when attempting to determine the best available native
         Tcl library.  rename the Tcl_ReleaseType enum to Tcl_ReleaseLevel.

FEATURE: add [tcl recordandeval] sub-command to evaluate a Tcl script using the
         Tcl_RecordAndEvalObj native Tcl API.

FEATURE: add Exceptions property to the ITclApi interface and TclExceptions
         property to the ITclManager interface.  also, add [tcl exceptions]
         sub-command to enable script-level access to this new property.

FEATURE: add LoadSettingsViaScriptFile method to the Utility class to provide
         the ability to load settings from the global variables set by a script
         file, evaluated in an isolated interpreter.

FEATURE: add -nocomplain option to the [tcl update] sub-command to suppress the
         error message caused by the inability to release the module reference
         count (e.g. because the native Tcl library was unloaded).

FEATURE: add IsTclThread method to the ITclManager interface.  this method will
         return non-zero if the current thread was responsible for loading the
         native Tcl library.

FEATURE: add callback, IClientData, and wait parameters to the CreateTclThread
         method of the ITclManager interface.  the first two parameters allow
         the caller to be notified after each event has been processed by the
         TclThread.  the wait parameter allows the caller to block until the
         TclThread is ready to receive events.

FEATURE: add an error line parameter to the TclThread.QueueEvent method.  add an
         error line parameter to the GetResult and SetResult methods of the
         IEvent interface.

FEATURE: add -inverse option to the [lsearch] command to support checking the
         specified text against a list of patterns.

FEATURE: add experimental [array copy] sub-command to copy an array, optionally
         making a deep copy.

FEATURE: add optional boolean argument to the [time] command to enable tracking
         and reporting of the minimum and maximum number of microseconds taken
         for an iteration of the script.

FEATURE: add -noStart option to the [test2] command and NoTestStart interpreter
         flag to allow the "start" indicators for tests to be omitted from the
         output of the [test2] and [test1] commands, respectively.

FEATURE: add -unicode option to the [exec] command to support capturing output
         in the UTF-16 encoding.

FEATURE: support overriding the Eagle "safe" interpreter creation behavior of
         the Eagle Package for Tcl (Garuda) via an environment variable and/or a
         Tcl variable in the package namespace.  when enabled, this forces the
         creation of an Eagle "safe" interpreter even if the Tcl interpreter the
         package is being loaded into is "unsafe".

FEATURE: modify the [host writebox] sub-command to work with non-standard hosts
         by adding the -noboxcolors, -nocolors, and -noposition options.

FEATURE: add ExecuteArguments property to the IDebugger interface, set it from
         within the evaluation engine, and display it with the other debugger
         information in the default host.

FEATURE: add [object lmap] sub-command to collect the [object foreach] results
         into one final result.  also, add -collect option to [object foreach]
         to do the same thing.

FEATURE: add [host flags] sub-command to allow the flags for the interpreter
         host to be queried.

FEATURE: add [array foreach] and [array lmap] sub-commands to allow for very
         efficient iteration over the element names and values in the array.

FEATURE: add [interp immutable] sub-command to allow the interpreter to operate
         in a mode where adding entities and setting new variables is allowed;
         however, existing entities cannot be modified or removed and variables
         cannot be modified or unset.

FEATURE: add interactive #done command to allow for the interactive loop to be
         unconditionally exited, optionally with a specific return code and
         result.

FEATURE: add interactive #tcancel, #tcode, and #tvalue commands to allow the
         TraceInfo output properties to be set during debugger watchpoints.

FEATURE: *BREAKING CHANGE* add MakeVariableFast method to the IVariableManager
         interface.  this method can be used to disable (or reenable) all the
         extra extensibility steps taken in the script variable subsystem (e.g.
         traces, watches, notifications, post-processing, etc) in order to speed
         up access to a specific script variable.

************************* Beta 1.0.4691.37889 RELEASE *************************

BUGFIX: fix the handling for out-of-range tcl_precision values in the expression
        evaluator subsystem.  prior to this fix, an out-of-range tcl_precision
        value could cause the interpreter call stack to become imbalanced if an
        expression was evaluated resulting in a decimal or double value.

BUGFIX: fix error line handling for certain Evaluate* method overloads in the
        Engine and Interpreter classes.

BUGFIX: make sure to deserialize the return code in the ScriptException class.

BUGFIX: resolve the Tcl module file name when a TclApi object is created via the
        NativePackage class, used by the Eagle Package for Tcl (Garuda).

BUGFIX: for test debug-1.4, if the initially saved DebugTextWriter is null, make
        sure that it gets restored properly.

BUGFIX: for tests infoCommands-1.1, infoCommands-1.3, and infoCommands-1.5, add
        support for passing when obsolete commands [getf], [setf], and [unsetf]
        are defined.

BUGFIX: skip adding "unsafe" and non-standard functions to "safe" and standard
        interpreters, respectively.  also, skip adding non-standard operators to
        standard interpreters.

BUGFIX: add the missing COM_TYPE_CACHE and TYPE_CACHE compile-time options to
        the list maintained by the core library.

BUGFIX: cleanup opaque object handles in the global call frame when the global
        namespace is deleted via the [namespace delete ::] command.

BUGFIX: prevent nested package index searches from the [package scan] command
        and/or other mechanisms that do not modify the auto-path variable.

BUGFIX: centralize and fix the semantics for the directory separator character
        trimming performed by the PathOps class to prevent removing the one and
        only character, even if it happens to be a directory separator (e.g.
        when running on Unix).

BUGFIX: make sure that the release preparation tool uses the correct patch level
        for all built binaries, even when the default build configuration is not
        enabled.

BUGFIX: prevent orphaned engine, interactive, test, and variable contexts from
        being leaked, especially via the ScriptThread class and from threads
        created by scripts.

BUGFIX: skip setting the auto_path, tcl_library, and null variables when the
        NoVariables interpreter creation flag is used.

BUGFIX: prevent "dead" native Tcl resources from being transferred to nested
        interpreters created via the [interp create] sub-command.

REFACTOR: *MAJOR* add extensive protections for an interpreter being disposed
          during the execution of any executable entity (e.g. a command) to the
          Engine class, call frame management throughout the core library, the
          interactive loop code, and all supporting methods.

REFACTOR: make the ContextManager class more robust against disposal issues and
          any potential race conditions regarding the static LocalDataStoreSlot
          fields.  add Purge*Contexts methods to the IContextManager interface
          to support cleaning up after orphaned contexts.  revise key comparison
          semantics for the Interpreter*ContextDictionary classes via a custom
          implementation of the IEqualityComparer<IInterpreter> interface.

REFACTOR: modify implementation of the Interpreter.GetHashCode method to allow
          for complete use of the long integer id field.  add IdNoThrow property
          to the IInterpreter interface for use by the InterpreterDictionary
          class.  add GetHashCodeNoThrow method to the IInterpreter interface.

REFACTOR: add Broadcast and Safe flags to the NotifyFlags enumeration.  these
          flags may be used to send notifications to interpreters from other
          threads and "safe" interpreters, respectively.  also, by default,
          interpreters from other threads will no longer receive any global
          notifications.

REFACTOR: add ThreadFlags.NoAbort flag.  also, modify the ScriptThread class to
          support it by forbidding use of the Thread.Abort method when the flag
          has been set.

REFACTOR: revise the delegate type detection performed by the core marshaller
          conversion methods to allow for short-circuiting in the common cases.

REFACTOR: make sure all unsupported command and sub-command options are listed
          and flagged as such, regardless of build configuration.

REFACTOR: consistently use the CommandFlags.NativeCode value only when needed.

REFACTOR: make the Eagle._Cmdlets.Script and Eagle._Tasks.Script constructors
          protected instead of public.

REFACTOR: make the P/Invoke delegates for the GetWindowTextLength, GetClassName,
          and GetWindowText Win32 APIs are marked as Unicode.

REFACTOR: if necessary, reset the current procedure call frame when popping a
          procedure call frame marked as automatic.

REFACTOR: modify the [test1] and [test2] commands to handle exceptions escaping
          from the Engine class, even though such an occurrence is extremely
          rare (e.g. out of memory, hard stack overflow, etc).  this change is
          necessary in order to enable testing of these types of exceptional
          conditions.

REFACTOR: make sure all non-standard commands, functions, and operators are
          flagged as being non-standard.

REFACTOR: enhance the assembly path search performed by the Eagle Package for
          Tcl (Garuda) so that it will look inside the generic LKG directory.
          also, allow the associated tests to be run from the source checkout
          directory even when the EAGLE environment variable is not set.

REFACTOR: revise how the property accessor prefix matching is performed by the
          core marshaller.

REFACTOR: enhance the release archive verification tool to allow it to verify
          the contents of the setup archives created with Inno Setup.

REFACTOR: internally, allow a timeout to be specified for interpreter readiness
          checking.

REFACTOR: make the [debug eval] and [debug subst] commands handle errors like
          the [interp eval] command does.

REFACTOR: all the core functions and operators now implement the IExecute
          interface in addition to the IExecuteArgument interface.  however,
          third-party functions need not follow this pattern.  also, the core
          operators are now marked with any extra operator flags they may
          require using the new OperatorFlagsAttribute class.

REFACTOR: allow policy tracing to be globally enabled via the new PolicyTrace
          property of the GlobalState class.

REFACTOR: modify the FormatOps.WrapOrNull method overloads to handle disposed
          objects with more grace.

REFACTOR: keep track of whether an external execution context is active for the
          interpreter using the new ExternalExecution engine flag.

REFACTOR: add Disposed property to the IDebugger interface.  also, add a new
          exception class named InterpreterDisposedException to indicate an
          object has been disposed that is critical to the operation of the
          interpreter containing it, including the interpreter itself.  this
          new exception class is reserved for use by the core library and it
          should not be used by any third-party code.

REFACTOR: when the PrivateRemove* methods call the WrapperDictionary.Remove
          method, pass the token of the entity to be removed in addition to the
          name.  doing this prevents a potentially disposed entity from being
          accessed by the WrapperDictionary object itself.

REFACTOR: display the ErrorInfo property of the interpreter in the default host
          output.

REFACTOR: centralize logic for comparing file names in the new IsEqualFileName
          and CompareFileNames methods of the PathOps class.

REFACTOR: allow individual operators to be disabled (i.e. where the engine will
          refuse to execute them).  this was already possible for functions.

REFACTOR: add ParentBinder property and experimental SelectMethodIndex method to
          the IScriptBinder interface.  also, promote the ObjectArrayList class
          to public in support of this change.

REFACTOR: specially flag all procedures and variables added for the core script
          library, making it easier to determine which procedures and variables
          are third-party.

REFACTOR: improve output produced by the interactive #version command.

REFACTOR: centralize test configuration and suffix handling to allow the tests
          for the Eagle Package for Tcl (Garuda) to run properly under a wider
          variety of test setups.

REFACTOR: make sure the EagleShell project is selected by default as the startup
          project in Visual Studio.  add solution files containing only the core
          library and shell projects.

REFACTOR: update Fossil tool w/source to version 19ca7c6c54d685ac.

REFACTOR: *BREAKING CHANGE* remove public constructors for the ParseToken and
          ExpressionToken classes.  instances of these classes may be created
          via their static factory methods.

REFACTOR: *BREAKING CHANGE* add a boolean strict parameter to the AddFunction
          method of the IEntityManager interface.

REFACTOR: *BREAKING CHANGE* add a second boolean parameter to the MakeSafe and
          MakeStandard methods of the ISecurityManager interface.

REFACTOR: *BREAKING CHANGE* rename all the *Watch enumeration values and their
          related methods to be *Watchpoint.

REFACTOR: *BREAKING CHANGE* rename/reorder values in the OptionBehaviorFlags
          enumeration.

REFACTOR: *BREAKING CHANGE* remove the wrapper and validate boolean parameters
          and add a LookupFlags parameter to all overloads of the following
          methods on the IEntityManager interface: GetAlias, GetCallback,
          GetCommand, GetDbConnection, GetDbTransaction, GetFunction,
          GetIExecute, GetIdentifier, GetObject, GetPackage, GetPlugin,
          GetPolicy, GetProcedure, GetScope, GetSlaveInterpreter, GetTrace,
          MatchCommand, MatchIExecute, MatchPlugin, MatchProcedure.  modify the
          IResolve.GetIExecute, IResolveManager.GetIExecuteViaResolvers,
          ITclManager.GetTclInterpreter, and ITclManager.GetTclThread methods in
          the same manner.

FEATURE: in ShellMainCore, support automatically reading and adding command line
         arguments from an optional file named after the process executable with
         the string ".args" appended to it.  the arguments added from the "args"
         file, if any, are processed before any arguments passed on the command
         line itself.

FEATURE: add -channels option to the [host reset] sub-command to allow the
         standard channels for the interpreter to be forcibly reset.

FEATURE: add [info sysvars] sub-command to return the list of all variables that
         were added for use by the script library.

FEATURE: add [lmap] command that is 100% compatible with the one described in
         TIP #405 (e.g. for Tcl 8.6).

FEATURE: add interactive #prflags command to get or set the procedure flags for
         the interpreter.  also, add -library option to the [info commands]
         sub-command in support of this change.

FEATURE: add [package relativefilename] sub-command to allow a fully qualified
         file name to be converted into a package relative file name, based on
         the package index file names known to the interpreter.  also, modify
         the core host to be capable of getting scripts based on their package
         relative file names.

FEATURE: add -noinitialize option to the [interp create] command to allow the
         script library initialization to be skipped for the new interpreter.

FEATURE: add -standard and -nonstandard options to the [info commands],
         [info functions], and [info operators] sub-commands.  allow the
         [info functions] and [info operators] sub-commands to be used from a
         "safe" interpreter.

FEATURE: add -standard option to the [interp create] sub-command.

FEATURE: add [interp expr] and [interp subst] commands to evaluate expressions
         and perform string substitutions using slave interpreters.

FEATURE: add [debug shell] command to allow the shell to be invoked, using any
         arbitrary interpreter, including the current interpreter.  this may
         cause the shell to be invoked recursively.

FEATURE: dramatically improve concurrency when using the native Tcl integration
         classes.  also, add -timeout option to the [tcl update] command.

FEATURE: enhance the universal option parser to allow the processing behavior
         for unexpected non-option arguments to be modified.

FEATURE: support overriding the CLR loading behavior of the Eagle Package for
         Tcl (Garuda) to favor using the minimum supported version of the CLR
         rather than the latest supported version via an environment variable
         and/or a Tcl variable in the package namespace.  this feature only
         applies when the Eagle Package for Tcl (Garuda) is compiled for the
         .NET Framework 4.0.  also, support looking for an Eagle assembly file
         name that contains the major version of the CLR (e.g. Eagle_CLRv4.dll).

FEATURE: add support for Visual Studio 2012 and the .NET Framework 4.5.  modify
         the console host to support the newly available Is*Redirected methods
         of the System.Console class.

FEATURE: add [info frameworkextra] command to return supplementary information
         about the version of the .NET Framework being used.

FEATURE: add round2 and round3 math functions to allow for greater control over
         the rounding of numbers decimal and double values.

FEATURE: add -preFile and -postFile command line options to allow a script file
         to be evaluated before and/or after the script library is initialized,
         respectively.

FEATURE: *BREAKING CHANGE* rename the #eval and #subst interactive commands to
         #deval and #dsubst, respectively.  also, add a new #eval interactive
         command to allow for evaluation of one or more arguments using the
         interactive interpreter (i.e. not the isolated debugger interpreter).

************************* Beta 1.0.4629.29317 RELEASE *************************

BUGFIX: *MAJOR* fix incorrect handling of variable change detection for [vwait]
        when operating on array elements.

BUGFIX: fix an access violation in the Eagle Package for Tcl (Garuda) while the
        Tcl library is being finalized via the TclWrapper class.

BUGFIX: when creating an IntPtr instance to represent an address based on an
        integer value, always use the 64-bit overload, not the 32-bit one.

BUGFIX: fix variable event for the interpreter not getting reset when using
        [vwait] on a variable that does not yet exist after using [vwait] on a
        variable that does exist.

BUGFIX: in the TestScriptStream method of the Eagle._Tests.Default class, the
        end-of-line sequence used must start with a carriage-return, even on
        non-Windows systems.  this allows the test basic-1.47 to run and pass
        on non-Windows systems.

BUGFIX: for test exec-1.1, do not attempt to access the ::env(ComSpec) variable
        on systems where it may not exist (e.g. Unix).

BUGFIX: when the Eagle test package is loaded by native Tcl, make sure the test
        constraint overrides are copied over to the Tcltest package.

BUGFIX: fix error message returned by the [tcl load] command when the Tcl_Init
        function fails.

BUGFIX: make sure all the variables used by the test prologue and epilogue are
        unset prior to using any of them.

REFACTOR: update Fossil tool w/source to version 2b56641fb941a72a.

REFACTOR: improve the [checkForTiming] script library helper procedure to allow
          it to check the timing accuracy of queued scripts as well.

REFACTOR: for test socket-1.3, work around SF bug #3545363 (i.e. random hangs
          when using [socket]) by forcing the use of IPv4.

REFACTOR: for now, disable test socket-2.2 when running on Mono; otherwise, the
          test suite may hang.

REFACTOR: enhance the [parray] script library procedure to allow matching modes
          other than glob to be used.  also, modify the [pdict] script library
          procedure to pretty print the passed dictionary.

REFACTOR: the CommandCallback class now formally implements the IGetInterpreter
          interface.

REFACTOR: add AliasFlags property to the IAliasData interface.

REFACTOR: cleanup and modularize the title building/handling logic in the stock
          interpreter hosts.  also, fix a cosmetic issue with spacing.

REFACTOR: *BREAKING CHANGE* add InteractiveMode property to the
          IInteractiveManager interface and modify the #tclsh interactive
          command to set this property based on the current interactive
          evaluation mode.

REFACTOR: *BREAKING CHANGE* add RefreshTitle method to the IInteractiveHost
          interface.  this method may be called to inform the interpreter host
          that its title may need to be updated.

REFACTOR: *BREAKING CHANGE* move all alias-related values from the CommandFlags
          enumeration to the new AliasFlags enumeration.

REFACTOR: *BREAKING CHANGE* the underlying types for the IVariable.ArrayValue,
          ITraceInfo.OldValues, and ITraceInfo.NewValues properties have been
          changed from ObjectDictionary to ElementDictionary.

REFACTOR: *BREAKING CHANGE* modify the GetDateTime2 method of the Value class to
          accept an optional format argument (i.e. it may be null).  also, make
          the remaining public GetDateTime method overload private.

FEATURE: add -aliasreference option to all commands that make use of the
         MarshalOps.FixupByRefArguments and/or MarshalOps.FixupReturnValue
         methods, including [object create], [object invoke], etc.

FEATURE: add -format option to the [clock scan] command (COMPAT: Tcl).

FEATURE: add [uri upload] sub-command to allow uploading of name/value pairs or
         files, synchronously or asynchronously.

FEATURE: add -inline option to the [uri download] command to support downloading
         data and returning it without using a file.  by default, the encoding
         is UTF-8; it may be changed by specifying an encoding name using the
         second argument (i.e. the argument that would have been the file name).

FEATURE: add -evaluateEncoded command line option to allow one or more base64
         encoded strings to be evaluated.  this is useful for strings that may
         contain complex quoting constructs that would otherwise conflict with
         the operating system command line quoting.

FEATURE: *BREAKING CHANGE* add aliasReference parameter to the several AddObject
         method overloads in the IScriptThread interface.

FEATURE: *BREAKING CHANGE* add aliasReference parameter to the several overloads
         of the Utility.FixupReturnValue method.

************************* Beta 1.0.4567.36231 RELEASE *************************

BUGFIX: fix issue with [interp alias] being unable to create linked aliases
        between two interpreters if the names just so happen to be the same.

REFACTOR: modify [calculateBogoCops] script library procedure so that it can
          work in native Tcl as well.

REFACTOR: improve error messages returned by the [object foreach] sub-command
          when the call to the GetEnumerator method on the object throws an
          exception.

REFACTOR: for the [calculateBogoCops] and [evalWithTimeout] script library
          procedures in the test package, make sure the [after] event queue is
          empty.

REFACTOR: add an overload of the Script.Create method that takes one parameter
          (i.e. the script to be evaluated).

REFACTOR: the NullEnumerator class should follow the IDisposable pattern.

REFACTOR: *BREAKING CHANGE* rename [info id] sub-command to [info identifier].
          also, modify the GetIdentifier method of the IEntityManager interface
          to support CallFrame, IExecute, Host, and Resolve identifier kinds.

FEATURE: add experimental ScriptEnumerator class to allow implementation of the
         IEnumerator interface via three scripts (i.e. one per method).

FEATURE: keep count of all entities executed by the engine.  also, modify the
         IFunction and IOperator interfaces to add the IUsageData interface.

FEATURE: add [namespace qualifiers], [namespace tail], and [namespace which]
         sub-commands.  for now, only the global namespace is supported.

FEATURE: add -typeidentity option to the [object invoke] sub-command to return
         the type of any object.  also, add TypeIdentity method to the Utility
         class.

FEATURE: add Yield method to the IEventManager and IEngineHost interfaces.

************************* Beta 1.0.4511.33815 RELEASE *************************

BUGFIX: *MAJOR* fix incorrect parsing of the "?" conditional expression operator
        that can cause some nested conditional expression constructs to produce
        incorrect results.

BUGFIX: a non-static method must be used when the core marshaller attempts to
        automatically choose one of the supported delegates types (for a command
        callback); otherwise, delegate types with exactly one argument may match
        up incorrectly with the ThreadStart delegate type.

BUGFIX: all primary entry points into the engine should combine their flags with
        those of the interpreter in a consistent manner.

BUGFIX: the [info commands] sub-command should show hidden commands for "unsafe"
        interpreters when the -hidden flag is used.

BUGFIX: add missing host type test constraints to tests host-1.*.

BUGFIX: support the NoColor environment variable without the need to load a host
        profile.

BUGFIX: modify test remotingServer-1.3 to prevent it from creating a variable.
        this is necessary because the target interpreter may be different from
        the current one.

BUGFIX: only use the String.Compare method overload that takes a cultureInfo
        parameter when compiled for the .NET Framework 2.0 SP2 or higher.

BUGFIX: the updater project needs to detect when it is being compiled for the
        .NET Framework 4.0.

BUGFIX: fix error message for the #tclshrc interactive command when the file
        cannot be found.

BUGFIX: the test benchmark-1.14 should save and restore the current directory.

BUGFIX: fix intermittent race condition in test object-10.24 that can result in
        the interpreter for the created script thread being disposed prior to
        the Send method being called.

BUGFIX: honor the ForceSoftEof flag and perform end-of-line translations in the
        Engine.ReadScriptStream method when reading a predetermined number of
        characters.

BUGFIX: add missing ObjectGroup attributes to various [expr] functions.

BUGFIX: when handling errors during command line processing, report the original
        argument as it was passed to the shell.  also, prevent any command line
        argument consisting only of "-" or "/" characters from being matched.

BUGFIX: always set the name of threads created by the ScriptThread class, even
        when they will not be started upon creation.

BUGFIX: add special handling for test constraints needed when running the test
        suite in Tcl (e.g. the NETWORK compile-time option).

BUGFIX: *BREAKING CHANGE* for [info script], stop automatically resolving full
        paths for script files that may not exist on the local file system.

REFACTOR: prevent tests expr-3.99, function-2.16, function-3.1, parser-20.*,
          parser-2.1, and parser-5.* from running on Mono due to differences in
          stack size and the string representations of flag Enum values.  also,
          fork test clock-1.1 to account for formatting differences in locale
          specific long date and time between the DateTime framework class and
          the GetDateFormat function of the Win32 API.

REFACTOR: allow boolean strings (e.g. false, true, etc) to be used for index
          arguments to any commands that use the Value.GetIndex method.

REFACTOR: cleanup style issues in the expression handling classes.  also, check
          the expression and parse state objects upon entry into each method.

REFACTOR: add end-of-options support to the [uri create] sub-command.

REFACTOR: add GetBaseException method to the RuntimeOps class and modify the
          Engine class to call it instead of performing the same logic inline.

REFACTOR: revise how the default capacity for StringBuilder objects created by
          the core library is calculated.

REFACTOR: update Fossil tool w/source to version b22cc4eb73c34401.

REFACTOR: add support for NeverGC and NeverWaitForGC environment variables to
          prevent the core library from manually collecting garbage and/or
          waiting for pending finalizers to finish, respectively.  also, add
          another optional boolean argument to the [debug collect] command to
          override this new behavior.

REFACTOR: make test interp-1.12 clear the cached interpreter reference from the
          core host, in case a core host derived class has external references
          that may keep it alive, which would prevent the parent interpreter
          from being disposed via the GC (i.e. which is the whole point of the
          test).

REFACTOR: enhance ability to troubleshoot the batch tools that call other batch
          tools using the CALL command and/or use the PUSHD/POPD commands.

REFACTOR: enhance the release archive verification tool to make it more useful
          to other projects.

REFACTOR: adjust the regular expression pattern for the directory extracted from
          the fossil info command result used by the test prologue.  this seems
          to be necessary when running on Mono due to differences in the regular
          expression implementations.

REFACTOR: in the default implementation of the WriteBox method, make sure to
          validate the configured box character set.

REFACTOR: remove GetCallOptions and GetOptions methods from the implementation
          of the [library] command.

REFACTOR: mark [expr] ParseState objects to be cached as immutable.

REFACTOR: make sure the interpreter field of the ScriptThread class is set to
          null prior to actually disposing of the interpreter it refers to.

REFACTOR: *PERF* adjust the initial capacity calculations for the StringBuilder
          objects used in the Parser.SplitList, Parser.Quote, and Parser.Brace
          methods to improve their performance.

REFACTOR: *BREAKING CHANGE* add boolean resolve parameter and fullPath output
          parameter to the GetStream method of the IEngineHost interface.  when
          the resolve parameter is non-zero, the full path for the stream, if
          applicable, should be placed in the fullPath output parameter by the
          interpreter host.  if the interpreter host cannot determine the full
          path for requested stream, the fullPath output parameter should be set
          to null instead.

REFACTOR: *BREAKING CHANGE* rename the NoPolicies engine flag to NoPolicy.

REFACTOR: *BREAKING CHANGE* revise how the Variant class converts its values to
          the DateTime type.  the default IFormatProvider, DateTimeStyles, and
          DateTimeKind should all be used.  also, move the DefaultDateTimeKind
          variable from the RuntimeOps class to the Value class.

REFACTOR: *BREAKING CHANGE* add IsDisposable property to IWrapper interface.
          this property is never allowed to throw an ObjectDisposedException
          because it is used by the CheckDisposed method of the default wrapper
          to determine if an ObjectDisposedException should be thrown when the
          wrapper itself is accessed after having been disposed.  these changes
          prevent an Interpreter that is being disposed via the finalizer from
          generating superfluous exceptions.

REFACTOR: *BREAKING CHANGE* rename the plugin flags Unsafe, Native, and Safe to
          UnsafeCode, NativeCode, SafeCommands, respectively.  also, rename the
          command flag Native to NativeCode.

REFACTOR: *BREAKING CHANGE* add verbose parameter to the RefreshAutoPathList
          method of the Utility class.

FEATURE: add WaitForStart method to the IScriptThread interface to allow callers
         to wait for the thread event loop to start, optionally with a timeout.

FEATURE: add tqputs and tqlog script library helper procedures to allow test log
         output to be queued until the test log file has been setup by the test
         package.

FEATURE: add removeConstraint script library helper procedure to test package.

FEATURE: add BooleanToInteger expression flag to enable automatic conversion of
         boolean results from the expression engine to their equivalent integer
         values.

FEATURE: support the AsyncCallback delegate type in the core marshaller.  this
         allows scripts to more easily interact with the various asynchronous
         methods provided by the .NET Framework.

FEATURE: add DEBUG_TRACE and DEBUG_WRITE compile-time options to allow most of
         the non-essential runtime diagnostic messages to be disabled.  also,
         revise all usage of the Debug and Trace framework classes by the core
         library.

FEATURE: add ShouldTraceToHost method to the Utility class and the TraceToHost
         interpreter flag to support third-party code sending trace listener
         output to the interpreter host.  also, add ArrayEquals method to the
         Utility class to allow third-party applications and plugins to easily
         compare two byte arrays for equality.

FEATURE: support setting and/or resetting the argc and argv script variables
         when the supplied argument array is null by adding an overload of the
         SetArguments method to the IInterpreter interface.  also, support the
         same semantics during interpreter creation using a new CreateFlags
         value named SetArguments.

FEATURE: add -traceToHost command line option and TraceToHost environment
         variable to enable writing trace listener output to the interpreter
         host.  this option is currently supported by custom shells only.  the
         default shell does not make use of the interpreter flag set by this
         option.

FEATURE: add two optional boolean arguments to the [info body] sub-command to
         enable formatting of the returned body with its corresponding line
         numbers.

FEATURE: add -core option to the [info commands] sub-command to limit the list
         of returned commands to only those provided by the core library.

FEATURE: add -stdin option to the [exec] command to have the value of specified
         variable written to the standard input stream of the created process.

FEATURE: add -nocommands, -nofunctions, -nopolicies, -notraces, -noprovide,
         -noresources, and -noisolated options to the [load] command to allow
         for fine-grained control over the plugin loading process.

FEATURE: add -callback and -callbackflags options to the [uri download]
         sub-command to allow downloads to be completed asynchronously.  also,
         add -trusted option to enable trusting the custom software updates SSL
         certificate for the duration of synchronous downloads.  the -trusted
         option cannot be used with the -callback option and the -callbackflags
         option is ignored if the -callback option itself is not present.

FEATURE: add flags math function to allow the interpreter expression flags to be
         modified while an expression is being evaluated.  this function cannot
         be used by a "safe" interpreter.

FEATURE: support loading managed assemblies via an opaque object handle that
         refers to a readable and seekable Stream object.

FEATURE: *BREAKING CHANGE* make the [invoke] command compatible with TIP #284.

FEATURE: *BREAKING CHANGE* add FunctionFlags attribute and use it to mark all
         included functions as "safe", "unsafe", and/or "standard".  the script
         engine will enforce the "safe" and "unsafe" flags for functions unless
         the NoSafeFunction engine flag is used.  also, add -safe and -unsafe
         options to the [info functions] sub-command.  add two overloads of the
         GetFunctionFlags method to the Utility class.

************************* Beta 1.0.4472.20308 RELEASE *************************

BUGFIX: *MAJOR* fix integral type promotion rules with wide integers in the
        expression parser and type conversion subsystems.

BUGFIX: *MAJOR* fix formatted event names not being unique enough, which could
        result in race-condition like behavior for certain operations involving
        the Event, ScriptThread, and TclThread classes.

BUGFIX: the string representations for the float (System.Single) and double
        (System.Double) versions of the positive and negative infinity values
        should be obtained using the invariant culture.

BUGFIX: the signed-byte type should not be listed in the list of non-integral
        types maintained by the Value class.

BUGFIX: check the return code prior to evaluating the pre-init script, if any.

BUGFIX: in the [configureTcltest] procedure, only try to create the aliases to
        the Tcltest shim commands if they are not already present.

BUGFIX: for test garuda-1.2, make sure the active test configuration and suffix
        are passed into the child test shell so that Garuda can locate the Eagle
        core library in non-default build configurations.

BUGFIX: stop returning the wrong full path name for scripts found by the core
        host on the file system.

BUGFIX: fix issue with [source] command argument handling related to file names
        that look like options.

BUGFIX: prevent ArgumentException from being thrown by [string map] when there
        are duplicate entries in the map.

BUGFIX: avoid throwing ObjectDisposedException from inside the Dispose method of
        the Interpreter class (EventManager).

BUGFIX: avoid throwing ObjectDisposedException from inside the ShellMainCore
        method of the Interpreter class.

BUGFIX: make sure calls to PushActiveInterpreter and PopActiveInterpreter match
        in the Interpreter.Create method, even when exceptions are thrown.

BUGFIX: add missing compile option test constraints to tests basic-1.36,
        debug-1.3, and object-2.8.

BUGFIX: add missing [error] command calls in tests interp-1.10 and interp-1.11.

BUGFIX: when running on Mono, skip the hack for Mono bug #471359 if the wanted
        type is System.Object because everything is assignable to System.Object
        and we always want to lookup opaque object handles.

BUGFIX: for tests basic-1.38, object-14.7, and object-14.8, use the correct
        option name to control the expected return codes (e.g. use -returnCodes
        instead of -returnCode).

BUGFIX: consistently use [info exists] when checking tcl_platform for the test
        constraints.

BUGFIX: add the correct culture and compile-time option test constraints when
        running the test suite in native Tcl.

BUGFIX: for test object-4.10, avoid a superfluous warning from candle.exe when
        using WiX version 3.5 or higher with an Eagle library compiled for WiX
        version 3.0.

BUGFIX: in the release preparation tool, always avoid trying to delete the log
        file that is currently in use.

BUGFIX: for the interactive #cmd (and related) commands, skip the command name
        itself when building the argument string to pass to the child shell.
        also, use the correct (engine) event flags while waiting for the child
        shell to exit.

BUGFIX: make the interactive loop tolerant of null command input.  also, add
        comments to clarify the processing of overridden interactive commands.

BUGFIX: fix compilation issues with the HISTORY compile-time option when the
        core library is being compiled with the THREADING compile-time option.

BUGFIX: the debugger variable in the Interpreter class should be private.  also,
        make sure all context members are reset during disposal whether or not
        the core library was compiled with the THREADING compile-time option.

BUGFIX: synchronize access to the private static data in the NativeOps class
        when compiled for Unix.  also, generally cleanup the code.

BUGFIX: when calling the GetScript, GetStream, and QueueWorkItem methods of the
        IEngineHost interface, check if the interpreter host is in an isolated
        application domain and fallback to using the saved core host instead in
        that case.  this is done to avoid problems when marshalling types that
        are not easily serializable between application domains.

REFACTOR: add support for the UInt16, UInt32, and UInt64 types to the Number
          and Variant classes.

REFACTOR: make tests library-2.1, lsort-9.2, lsort-9.3, lsort-9.4, lsort-9.5,
          and lsort-9.7 more resilient to differences in runtime implementation
          details.

REFACTOR: change how BuildInfo.cs, PatchLevel.cs, and pkgVersion.h files are
          handled by the release preparation tool to make it more flexible.

REFACTOR: move some of the "synthetic" test constraints dealing with native Tcl
          to better homes within the test constraints package.  also, make sure
          the global "no" array is obeyed when adding these test constraints.

REFACTOR: for now, stop using the IInterpreter interface for the IObjectType
          interface.

REFACTOR: add support for the test_statistics global variable to keep track of
          certain statistical information about the current test run.  for now,
          this variable is not used by the test suite; however, it will be used
          in the near future.

REFACTOR: add NoTrusted and NoVerified environment variables to support the
          ability to disable assembly file trust checking and assembly strong
          name signature verification, respectively, during the interpreter
          creation process.

REFACTOR: add IsDefaultAppDomain method to the RuntimeOps and Utility classes.

REFACTOR: cleanup and unify naming of all threads created by and/or used with
          the core library.

REFACTOR: by default, skip waiting for all pending finalizers to complete when
          collecting garbage if called from a non-default application domain
          context.  this appears to be necessary due to a deadlock in the GC
          when using remoting from a thread that contains a user-interface and
          that happens to be running in a non-default application domain.  the
          deadlock be may be limited to circumstances where the user-interface
          thread is synchronously waiting for a call into the core library to
          complete (and is therefore unable to service the GC because it is
          blocked in a synchronous call to GetMessage, etc?).

REFACTOR: add test constraint for checking the current test configuration.

REFACTOR: expose the four argument overload of the Value.GetInteger2 method.

REFACTOR: modify how the test suite handles the -preTest and -postTest command
          line options.  now, elements of the new test_script global variable
          are used instead of using the test_flags elements directly.

REFACTOR: rename the FormatOps.Process method to FormatOps.ProcessName.

REFACTOR: export the machineToPlatform script library procedure from the test
          package to Tcl scripts.

REFACTOR: rename all the local variables and paramters of the CreateFlags type
          from flags to createFlags.

REFACTOR: display the LibraryPath, AutoPathList, and ScriptFlags properties of
          the interpreter in the default host output.

REFACTOR: modify the EagleCopyConfigurations and EagleCleanConfigurations build
          targets to use the OutputPath build property and then rename them to
          CopyConfigurations and CleanConfigurations, respectively.

REFACTOR: modify the CopyLibrary build target to recursively copy the library
          files of the project while maintaining their directory structure.
          also, modify the EagleCleanPackage build target to handle cleaning the
          copied files recursively.

REFACTOR: modify the EventManager.WaitForEventEnqueued method to more closely
          follow the pattern of the EventManager.WaitForEmptyQueue method.

REFACTOR: modify the EventManager.HandleBackgroundError method to check if the
          interpreter has been disposed (i.e. so that none of its callers,
          including the EventManager.ProcessEvents method, need to perform this
          check anymore).

REFACTOR: rename and revise the semantics of the TraceMethodName methods of the
          FormatOps class.

REFACTOR: add commercial plugins to the binary archive exclusion lists.

REFACTOR: more code cleanup for the included BinaryEditor build tool.

REFACTOR: add INTERACTIVE_COMMANDS compile-time option to allow all interactive
          commands to be enabled (or disabled).

REFACTOR: move code for the interactive #check command out of the Interpreter
          class and into the RuntimeOps class.

REFACTOR: move all interactive command implementations out of the Interpreter
          class into the InteractiveOps class.

REFACTOR: move various private static members out of the Interpreter class to
          the EntityOps, RuntimeOps, SetupOps, and SocketOps classes.

REFACTOR: modify release preparation tool to avoid using the reserved character
          escaping hacks that were necessary when constructing the various test
          suite arguments.  also, always rely on the targets file containing the
          build types and their associated build properties instead of embedding
          those build properties in the release preparation tool itself.

REFACTOR: improve compatibility with custom command processors by using __ECHO
          instead of _ECHO in the batch tools.  skip the tests bigDirectory-1.*
          when not using the default Windows Command Processor (i.e. cmd.exe).

REFACTOR: add support for the upcoming WiX version 3.6 and Mono version 2.12.

REFACTOR: revise the semantics for figuring out the default stack size for new
          threads, especially on Unix or when running on Mono.

REFACTOR: replace all usage of the DateTime.Now and DateTime.UtcNow properties
          with the TimeOps.GetNow and TimeOps.GetUtcNow methods, respectively.

REFACTOR: revise how the default value of the Quiet property is computed during
          the creation of interpreters (i.e. it used to be hard-coded).

REFACTOR: stop setting the global ThrowOnDisposed flag from the NativePackage.

REFACTOR: allow the EagleTest package to load successfully in both safe Tcl and
          Eagle interpreters.

REFACTOR: for test object-2.3, use the newly created TestToHexadecimalString
          wrapper method instead of using the ArrayOps class directly.

REFACTOR: for the [test2] command, when test isolation is enabled, treat any
          application domain or interpreter creation errors as a test failure.

REFACTOR: in the default host, revise display formatting for the CultureInfo
          property of the interpreter.

REFACTOR: in the updater, revise display formatting for CultureInfo objects.

REFACTOR: tweak the updater to work around the broken WinForms sizing on Mono.

REFACTOR: remove unused build property from the release preparation tool.

REFACTOR: modify the timing loop in the [time] command.

REFACTOR: add values to the ExecutionPolicy enumeration to support more robust
          X509 certificate checking, XSD schema validation, and several modes.

REFACTOR: per request, update all copyright dates to 2012.

REFACTOR: use the new [tresult] script library procedure to report the overall
          test result messages in the test epilogue and elsewhere.

REFACTOR: support overriding the VERBOSE compile-time option based on the
          EagleVerbose build property.

REFACTOR: add the DefaultQuiet, GetDefaultQuiet, and ShouldBeQuiet values to the
          control output of the default host.

REFACTOR: update WinRAR support in build tools to version 4.10.

REFACTOR: enhance the test path initialization in the EagleTest package in order
          to better support the embedded script library scenario.

REFACTOR: search architecture and platform specific directories for sqlite3.dll
          in the test prologue, if necessary.

REFACTOR: add ScriptFlags property to the IInterpreter interface to control how
          the engine searches for scripts that cannot be found by their path
          information alone.  also, add support for the new property to both the
          InterpreterHelper and InterpreterSettings classes.

REFACTOR: in the Engine.GetScriptFile method, make sure the interpreter passed
          in is valid.  also, use the new ScriptFlags interpreter property to
          control exactly how the search for the script is conducted.

REFACTOR: resize the button text in the updater user interface.  allow the core
          directory to be retargeted at runtime.  report the number of bytes and
          characters received in the HTTP response.

REFACTOR: modify the [namespace inscope] command to use a tracking call frame.

REFACTOR: add ResolveData property to the ICallFrame interface for use by custom
          resolvers only.  also, add GetCallFrame method to the IResolveManager
          interface.

REFACTOR: move all the OptionDictionary building static methods for the [object]
          command to the RuntimeOps class.

REFACTOR: revise plugin resource handling done by the interpreter and move the
          methods responsible to the RuntimeOps class.

REFACTOR: add NoBinder flag to the ObjectFlags enumeration to have the core
          marshaller skip querying the Binder property of the interpreter.

REFACTOR: update Fossil tool w/source to version a15214e83c3adb3e.

REFACTOR: update MsgGen tool w/source (from the WiX project) to beta version
          3.6.2221.0.  also, update the core library components to accommodate
          all the changes.

REFACTOR: *PERF* slight performance improvement to Parser.ScanElement method.

REFACTOR: *PERF* only track non-[source] script locations if a special flag is
          set in the interpreter.

REFACTOR: *BREAKING CHANGE* add IExecute property to the ICallFrame interface.

REFACTOR: *BREAKING CHANGE* rename the Eagle library and test packages to allow
          for future package hierarchy changes.

REFACTOR: *BREAKING CHANGE* add ICallFrame parameter to the GetIExecute method
          of the IResolve interface.

REFACTOR: *BREAKING CHANGE* change the utc parameter of the Value.GetDateTime*
          methods to DateTimeKind.

REFACTOR: *BREAKING CHANGE* add GetString method to the IPlugin interface.
          technically, this is a breaking change; however, for all plugins that
          derive from the default plugin, implementing this new method is purely
          optional because the base class provides a default implementation that
          simply does nothing.

REFACTOR: *BREAKING CHANGE* add both OptionDictionary and IClientData parameters
          and/or members to the ChangeTypeCallback and ToStringCallback delegate
          types and to the IChangeTypeData interface.  also, modify the various
          InvokeChangeTypeCallback, InvokeToStringCallback, and ToString methods
          of the IScriptBinder interface with similar changes.

REFACTOR: *BREAKING CHANGE* revise semantics of the command line help options.
          also, generally improve the interactive help.

REFACTOR: *BREAKING CHANGE* add an interpreter parameter to the About method of
          the IPlugin interface.

REFACTOR: *BREAKING CHANGE* add name (input) and text (output) parameters to all
          the Engine.ReadScriptStream method overloads to support stream policy
          checking.  also, add a name parameter to all the Engine.EvaluateStream
          and Engine.SubstituteStream method overloads in addition to all the
          EvaluateStream, EvaluateGlobalStream, SubstituteStream, and
          SubstituteGlobalStream method overloads of the IEngineManager
          interface.  finally, unify the now common TextReader reading logic
          into a new method named ReadScriptTextReader.

REFACTOR: *BREAKING CHANGE* modify the internals of the Engine.ReadScriptStream
          method to be more consistent with the Engine.ReadScriptFile method.
          by default, the Engine.ReadScriptStream method will now read beyond a
          soft end-of-file.  the old (legacy) behavior can be restored by using
          the ForceSoftEof engine flag when calling the method.  also, modify
          the Engine.ReadScriptFile method to support policy checking after the
          content of the file has been read.

REFACTOR: *BREAKING CHANGE* modify the behavior of [info script] with an empty
          string argument.  it will now reset the script file name to null.

REFACTOR: *BREAKING CHANGE* modify semantics for the Copy method of the Result
          class.

REFACTOR: *BREAKING CHANGE* for the [sql execute] command, rename the rarely
          used -type option to -commandtype.

FEATURE: add MatchPlugin method to the IEntityManager interface.

FEATURE: add ICacheManager interface, which is implemented by the Interpreter
         class.  the ClearCaches method on this interface allows one or more of
         the internal caches for the interpreter instance to be cleared by the
         caller.  also, allow the internal caches to be disabled via the cache
         flags field of the interpreter.

FEATURE: add -debug option to the [exec] command to help troubleshoot issues
         encountered with executing external commands.

FEATURE: add full support for returning an IDataReader opaque object handle from
         the [sql execute] command when the -execute option is set to Reader and
         the -format option is set to DataReader (which is a newly added value).

FEATURE: add FormatOption method to the Option class.

FEATURE: add a new build target named CopyArchitectureExternals to copy the
         architecture specific external files to the build output directory.

FEATURE: display the static NewHostCallback property of the Interpreter class
         from the WriteEngineInfo method of the default host.

FEATURE: add InteractiveLoopCallback property to the IDebugManager interface to
         allow the debugger to call into a custom interactive loop whenever
         breaking into debug mode is necessary.  also, display this property in
         the default host output when called in the same application domain.

FEATURE: also search for library (and other) scripts using the interpreter to
         attempt and resolve them via the various resource managers of all the
         loaded plugins.

FEATURE: add Text, HashValue, and HashAlgorithm properties to the IPolicyContext
         interface.  also, add StreamDecision property to the ISecurityManager
         interfaces.

FEATURE: add ExtractPolicyContextAndText method to the Utility class to support
         custom stream policy implementations.  also, add GetAssemblyDescription
         method to query the description attribute of the specified assembly.

FEATURE: add Validate method to the Utility class to allow third-party plugins
         access to simple XSD schema validation.  also, add FormatWrapOrNull
         method overloads to the Utility class to help format diagnostic output.

FEATURE: add the release archive verification tool to the source distribution.

FEATURE: modify the interactive #show command to optionally show empty content.

FEATURE: add combineFlags script library helper procedure to combine two flags
         enumeration values into a string suitable for parsing by Enum.Parse.

FEATURE: support embedding an extra user-defined resource in the core library.

FEATURE: add -full option to the [clock format] command, for use with the -iso
         option, to return an ISO8601 DateTime string that includes the number
         of fractional seconds and the UTC indicator.

FEATURE: add NowCallback property to the IEventManager interface to allow the
         concept of the current time to be overridden (i.e. to support virtual
         time).

FEATURE: add DemandStrongName method to the IInterpreter interface to force a
         security demand for the StrongNameIdentityPermission based on the
         strong name key that was used to sign the Eagle core library.

FEATURE: add DemandCertificate method to the IInterpreter interface to force a
         security demand for the PublisherIdentityPermission based on the X509
         certificate that was used to sign the Eagle core library.

FEATURE: add test constraint checking for Visual Studio 2005, 2008, and 2010.

FEATURE: create a targets file that contains the necessary build properties for
         all the standard (both official and unofficial) build types.

FEATURE: add -reconfigure command line option to recreate the interpreter based
         on the specified interpreter settings file.

FEATURE: add DefaultQuiet environment variable to automatically enable quiet
         mode for all interpreters created after it has been set.

FEATURE: add -verifiedonly and -trustedonly options to the [load] command to
         check and enforce the strong name signature and Authenticode signatures
         and certificates on the plugin file prior to loading it, respectively.

FEATURE: add [debug onexit] command to toggle whether or not the script debugger
         is entered upon exiting an engine context.

FEATURE: add [file objectid] command to return the object Id of the specified
         file or directory, if available.

FEATURE: add #tclshrc interactive command to launch the configured text editor
         to edit the configured shell startup file.

FEATURE: add #scflags interactive command to get or set the script flags for the
         interactive interpreter.

FEATURE: *BREAKING CHANGE* add ScriptFlags parameter to the Interpreter.Create
         method overload that previously took 16 parameters (i.e. the one in
         which every possible creation parameter was fully specified).

FEATURE: *BREAKING CHANGE* add an Options method to the IPlugin interface.
         technically, this is a breaking change; however, for all plugins that
         derive from the default plugin, implementing this new method is purely
         optional because the base class provides a default implementation that
         simply does nothing.  also, enhance the [info plugin] sub-command to
         include the options returned by it.

FEATURE: *BREAKING CHANGE* change the [info source] command and allow it to take
         two, three, or four arguments.  when invoked with two arguments, it
         will work just as before.  when invoked with three arguments, it will
         now return only the file name of the specified procedure.  when invoked
         with four arguments, it will either return only the file name (if the
         value of the fourth argument is zero) or all available information
         about the source location of the specified procedure (if the value of
         the fourth argument is non-zero).

************************* Beta 1.0.4375.38149 RELEASE *************************

BUGFIX: in the updater, recognize the literal string "invariant" to represent
        the invariant culture.

REFACTOR: update Fossil tool w/source to version cb52442608ce154d.

************************* Beta 1.0.4375.30934 RELEASE *************************

BUGFIX: the ObjectTraceCallback method should manage reference counts for array
        element names that represent opaque object handles, please see ticket
        #b31de3de14.

BUGFIX: the [array set] command should fire traces so that reference counts for
        opaque object handles can be managed, please see ticket #ba63bb559a.

BUGFIX: the [unset -nocomplain] command should work on the global env array.

BUGFIX: make sure that opaque object handles contained in the global env array
        are handled properly.

BUGFIX: the traces for an individual variable, if any, must execute before those
        that are for the entire interpreter.

BUGFIX: fix compilation issues with the Eagle Package for Tcl (Garuda) on 64-bit
        platforms.

BUGFIX: allow the Eagle Package for Tcl (Garuda) tests to pass on machines where
        the Tk package is not available.

BUGFIX: make sure to use the -success option to [exec] throughout the entire
        test suite, wherever applicable.

BUGFIX: in the SetExceptionErrorCode method, the syncRoot field must be used
        instead of the SyncRoot property just in case the interpreter has been
        disposed.  also, skip setting the error code if the interpreter has been
        disposed or deleted.

BUGFIX: release ITypeInfo COM object references via Marshal.ReleaseComObject.

BUGFIX: always check the return value of the various Engine.CreateThread method
        overloads to make sure the thread was created successfully.

BUGFIX: prevent infinite recursion in the MarshalOps.IsSimpleListType method if
        a type contains generic arguments that refer to itself.  also, rename
        the method to IsSimpleGenericType.

BUGFIX: in the core marshaller, implicit conversions of a generic object to a
        string should be restricted to those deriving from the List<T> type.

BUGFIX: stop assuming that package version numbers can be parsed correctly as a
        number in double format.

BUGFIX: when creating an interpreter, never automatically fallback to using the
        current culture; instead, use the invariant culture.

BUGFIX: adjust the wait slop microseconds value to half the maximum wait time;
        otherwise, the potential exists for the actual wait time to exceed the
        requested wait time by an excessive amount.  also, adjust the wait slop
        divisor to match up with the minimum wait time.

BUGFIX: correct argument lists for String.Format used by various DebugTrace
        method calls in the Engine and Interpreter classes.  without this fix,
        an unhandled exception may be thrown if another exception is raised and
        caught during certain method calls into the Interpreter and/or Engine
        classes.

BUGFIX: stop the settings.xml test file being excluded from the binary release
        archives.

BUGFIX: harden percent calculations in the runAllTests script library procedure
        against divide by zero errors when there are no non-skipped test files.

BUGFIX: when building package paths, skip adding the package version unless the
        package name itself is also being used (i.e. it is not null or empty).

BUGFIX: resolve various style and correctness issues as revealed by FxCop.

BUGFIX: add missing compile option test constraints for Windows.  also, correct
        regular expression patterns for various test results where the escaped
        period should have been used (i.e. to match a literal period).

BUGFIX: in the InterruptCancelThread method, make sure to always clear the
        cancelThread field of the interpreter if the thread is no longer alive.
        also, in the CancelThreadStart method, do not blindly catch exceptions,
        like ThreadInterruptedException, while sleeping.

BUGFIX: *BREAKING CHANGE* when running in an isolated application domain, use
        the directory containing the Eagle core library for the binary path to
        be used by scripts (e.g. when locating packages, [info binary], etc).

BUGFIX: *BREAKING CHANGE* raise an error when an attempt is made to read from an
        undefined write-only variable.

REFACTOR: adjust the test prologue to allow the checking for test suite files,
          fields, and properties to be skipped.

REFACTOR: add a Condition attribute to most calls of the Delete task used by the
          custom build targets.  this is not strictly required, even when there
          are no files; however, it makes the intent clearer.

REFACTOR: add several overloads of the IErrorManager.CopyErrorInformation method
          to support different result handling semantics.

REFACTOR: revise build infrastructure to more easily support its use by external
          projects.  these changes are primarily focused on the location and
          name of the strong name key files used for signing output assemblies.

REFACTOR: query the ITypeInfo of a COM object using both the IProvideClassInfo
          and IDispatch interfaces and allow either one to match the interface
          type name being sought.

REFACTOR: when running on Mono, do not use a default stack size of zero for new
          threads as it seems to cause problems for some older versions of Mono,
          preventing them from creating the thread.

REFACTOR: the [info culture] command and the eagle_platform(culture) variable
          will no longer use an empty string to represent the invariant culture.

REFACTOR: add detailed comments in the all.eagle file used to run the test suite
          for the core library.

REFACTOR: modify the compileCSharp script library procedure to add the DEBUG and
          TRACE defines to the compilation options if the core library was also
          compiled with them.

REFACTOR: fix error checking when attempting to create directories in the batch
          tools.

REFACTOR: add Fossil versionable setting files for the file patterns to ignore
          when detecting extra files and/or files that contain carriage-returns.

REFACTOR: exclude more files generated automatically by Visual Studio 2010 and
          Komodo 6.x from the source release archives.

REFACTOR: improve source location tracking for all tokens created by the script
          and expression parsers.  change the active script file name stack to
          an active script location stack.  for Argument objects, keep track of
          their original source location.  the IScript interface now inherits
          from the IScriptLocation interface.  add a ViaSource property to the
          IScriptLocation interface to keep track of whether the source location
          was pushed because of the [source] command or some similar mechanism.

REFACTOR: report counts of test files that failed and/or leaked when reporting
          the percent of test files completed.

REFACTOR: *BREAKING CHANGE* modify the compileCSharp script library procedure to
          accept arguments to enable in-memory assembly generation, debug symbol
          generation, and strict compiler error checking (i.e. treat warnings as
          errors).

REFACTOR: *BREAKING CHANGE* revise how the opaque database object handles
          returned by the [sql] command are constructed.

REFACTOR: *BREAKING CHANGE* add an IHost parameter to the ScriptThread.Create
          method.

REFACTOR: *BREAKING CHANGE* create a formal interface named IScriptThread for
          use with the ScriptThread class.  this is considered a breaking change
          because using the ScriptThread class type itself for field, property,
          and parameter declarations is now formally deprecated.

FEATURE: add -vendorPath command line option to set the vendor path environment
         variable to the specified value.

FEATURE: add SetVariableLink method to the IVariableManager interface.  this new
         method is used to create variables in the interpreter linked to a field
         or a non-indexed property of an instance or class.  conceptually, this
         feature is very similar to the concept of linked variables as they are
         implemented by native Tcl.

FEATURE: for the [sql execute] command, add a -valueflags option and support
         optional per-parameter value flags.  also, skip trying to process empty
         strings for the paramType and paramSize fields of the command parameter
         arguments.

FEATURE: add the getReturnType and getDefaultValue script library procedures to
         return the effective return type for an object member and the default
         value for a given type, respectively.

FEATURE: add [debug procedureflags] command to return or set the flags for the
         specified procedure.

FEATURE: add [info windows] command to return the list of top-level windows on
         the current desktop, optionally matching the specified pattern.

FEATURE: add Visual Studio 2008/2010 settings files to the source repository
         suitable for working with the official NuGet.org and SymbolSource.org
         packages as well as the .NET Framework source code itself.

FEATURE: add -type option to the [object members] command to override the type
         used when looking up members.

FEATURE: add NewHostCallback static property to the Interpreter class to allow
         external applications and plugins to provide custom interpreter host
         implementations if one is not explicitly specified by the caller during
         the interpreter creation process.

FEATURE: add -clientdata and -data options to the [load] and [unload] commands
         to control the IClientData instance passed to the plugin constructor
         and/or the Initialize method.  also, support loading and unloading
         plugins into/from slave interpreters.

FEATURE: *BREAKING CHANGE* change the [info source] command and allow it to take
         two or three arguments.  when invoked with two arguments, it will now
         return the current source location (i.e. previously, this would have
         been an error).

FEATURE: *BREAKING CHANGE* add About method to the IPlugin interface.  also, add
         FormatPluginAbout method to the Utility class.  technically, this is a
         breaking change; however, for all plugins that derive from the default
         plugin, implementing this new method is purely optional because the
         base class provides a default implementation that simply does nothing.

************************* Beta 1.0.4312.34328 RELEASE *************************

BUGFIX: prevent subtle race condition in the ScriptThread.Send method when the
        event wait handle used to synchronize the primary thread with the script
        thread could be closed prior to being signaled.

BUGFIX: fix elapsed microsecond calculations when either the NATIVE or WINDOWS
        compile-time options are disabled.

BUGFIX: make sure that the Excel integration tests do not require the NATIVE
        compile-time option to pass.

BUGFIX: the [after] command should not block for more than a minimal amount of
        time per iteration; otherwise, it is unsuitable for certain use cases
        with the ScriptThread class.

BUGFIX: the [exportAndImportPackageCommands] script library procedure should be
        able to handle Tcl namespaces other than the current one.

BUGFIX: fix an exception in the [do] command when used with an empty while/until
        clause.

BUGFIX: add strong-name verification skipping registry file for use on 64-bit
        Windows.  ideally, this would not be necessary; however, it appears that
        MSBuild is always a 32-bit process (i.e. EXE flagged 32BITREQUIRED).

BUGFIX: the setup creation tool should always attempt to create the releases
        directory if it does not already exist.

BUGFIX: in the event manager subsystem, check for the interpreter being deleted
        as well as disposed prior to attempting to use it for event processing.

BUGFIX: avoid deadlocks related to global notifications (e.g. when disposing of
        any object that also contains an interpreter to dispose, such as a
        script thread).

BUGFIX: close all events created by the event manager when it is being disposed.

BUGFIX: when disposing an interpreter, make sure that all pending calls to the
        Wait and WaitVariable methods are complete prior to disposing of the
        event manager and/or the master variable event.  this avoids a race
        condition where event(s) being used are disposed prematurely.

BUGFIX: make sure calls to the DebugOps.Complain method use the overload that
        includes an interpreter parameter if one is readily available.

BUGFIX: if an exception is thrown while creating an interpreter, make sure that
        the partially created interpreter gets disposed.  also, suppress the
        exception unless the ThrowOnError flag is set.

BUGFIX: when building the auto-path list for the interpreter, avoid attempting
        to add duplicate directories (i.e. merge the global auto-path list with
        the one from the interpreter).

BUGFIX: when running the test suite in native Tcl, prevent the format.eagle test
        file from cleaning up (via ::tcltest::cleanupTests in format.test),
        except from the test epilogue.

BUGFIX: the [file normalize] command should remove trailing slashes.

BUGFIX: fix handling of the -logFile test suite option in spawned test shells.

BUGFIX: when starting the interactive loop from ShellMainCore, make sure to use
        the original command line arguments (as provided by the caller).

BUGFIX: add missing detection of leaked TclThread objects in the test suite.

BUGFIX: make sure the assembly related plugin flags are set for the static core
        plugins.

BUGFIX: the test object-10.4 needs to be constrained by the availability of
        symbols for the core library.

BUGFIX: avoid repeated calls to the AttributeOps.GetAssemblyTitle method from
        the GlobalState class.

REFACTOR: make sure that all exception diagnostic messages include the current
          thread Id.

REFACTOR: update Fossil tool w/source to version 20111021125253.

REFACTOR: modify the [cleanupThread] script library procedure to be more verbose
          and robust when dealing with stale threads.

REFACTOR: if necessary, retry the precision timing test constraint check to get
          a more accurate reading.

REFACTOR: improve console integration in the updater by attempting to attach to
          an existing console instead of always opening a new one (i.e. when run
          via the command line).

REFACTOR: when running tests via the [runAllTests] script library procedure,
          track and report all file names where any resources are leaked.

REFACTOR: add basic diagnostic messages to the Create, PrivateInitialize, and
          PrivateInitializeShell methods of the Interpreter class.

REFACTOR: when waiting on a variable, detect STA threads and act accordingly
          (i.e. pump messages if necessary).

REFACTOR: while waiting for a variable, make sure to wake-up immediately upon
          emptying the event queue [managed by the event manager] or an event
          being enqueued to the event queue [managed by the event manager].

REFACTOR: revise and enhance the handling of assembly related plugin flags (e.g.
          for strong-name and Authenticode signature checking), keeping track of
          whether a signature and/or certificate is present and whether it is
          valid and/or trusted using different flags.

REFACTOR: modify the #test and #ptest interactive commands so that they handle
          the full set of meta-characters supported by [string match].

REFACTOR: various refinements to unit tests and infrastructure, including test
          command line support for populating the "no" array.

REFACTOR: attempt to return a meaningful result for [info nameofexecutable] on
          Mono even when running in an isolated application domain.

REFACTOR: add [testClrExec] script library procedure to help execute a managed
          executable, taking into account whether it needs to be executed via
          Mono.

REFACTOR: if the TYPE_CACHE compile-time option is enabled, cache all successful
          Type.GetType and Assembly.GetType lookups based on the actual name
          used to resolve the type, fully qualified or otherwise.

REFACTOR: *BREAKING CHANGE* reform usage patterns for string constants included
          in the Eagle Package for Tcl (Garuda), including the ones exposed in
          the public header file.

REFACTOR: *BREAKING CHANGE* major internal changes to the event manager.  all
          events are now sorted by priority in addition to date and time.  the
          normal events and idle events are now stored in two different queues
          internally for much faster access.  track the maximum event count
          (both idle and non-idle) that an event manager has seen.  add an
          EventPriority parameter to all the QueueScript and QueueEvent method
          overloads on the IEventManager interface.  also, add EventPriority
          parameter to the DequeueAnyReadyEvent, DoOneEvent, ProcessEvents, and
          ServiceEvents methods on the IEventManager interface.  make sure that
          the "current" time advances despite the fact that the system clock has
          a resolution typically limited to 10 milliseconds.  also, add the the
          following properties to the IEventManager interface: IdleEventCount,
          TotalEventCount, MaximumEventCount, and MaximumIdleEventCount.

REFACTOR: *BREAKING CHANGE* avoid using String.Format to construct the error
          messages when a variable is undefined or not present because these
          conditions occur a lot on the hot path when waiting for a variable to
          be created or [re-]defined.

REFACTOR: *BREAKING CHANGE* add args parameter to the GetStartupCreateFlags and
          ProcessStartupOptions methods of the Interpreter class.

REFACTOR: *BREAKING CHANGE* make sure that no XML serialization functionality is
          referenced or used if either the XML or SERIALIZATION compile-time
          options are disabled.

REFACTOR: *BREAKING CHANGE* prevent the ApplicationObject, PolicyObject,
          ResolverObject, and UserObject of the InterpreterSettings class from
          being serialized.  also, add unit tests for the InterpreterSettings
          class.

REFACTOR: *BREAKING CHANGE* Modify the ShellArgumentCallback delegate to accept
          a list of strings instead of an array of strings.  Also, modify the
          PopFirstArgument and PopLastArgument methods of the Utility class in
          the same fashion.

REFACTOR: *BREAKING CHANGE* Modify WaitVariable method of the IVariableManager
          interface to accept an event wait handle and a boolean indicating
          whether or not messages should be pumped during the wait operation.

REFACTOR: *BREAKING CHANGE* Modify the DoOneEvent and ServiceEvents methods of
          the IEventManager interface to accept a boolean indicating whether or
          not messages should be pumped during the wait operation.

FEATURE: add -trace option to the [test2] command to emit diagnostic messages
         before and after the startup, body, and cleanup blocks of the test.

FEATURE: add [haveEagle] script library procedure to the Eagle Package for Tcl
         (Garuda).  it will return non-zero if the Eagle core library has been
         loaded and is available for use.  optionally, it will return the full
         version of the Eagle core library using a variable nominated by the
         caller.

FEATURE: add GetInteractiveCommandNames and GetInteractiveCommandHelp methods to
         the Utility class to support external applications and plugins looking
         up interactive commands.

FEATURE: add [after counts] and [after dump] commands to return diagnostic
         information about the event queues for the interpreter.

FEATURE: add AddObject method to the ScriptThread class to add objects to the
         contained interpreter.  add WaitForEvent method to the ScriptThread
         class to wait for an event to be enqueued.  add WakeUp method to the
         ScriptThread class to force the event queue to be processed.  add Name
         property to the ScriptThread class to help identify the thread in the
         debugger.

FEATURE: add static IsPendingWait method to the Interpreter class.  this method
         will return non-zero if the interpreter has any outstanding calls to
         the Wait or WaitVariable methods pending.

FEATURE: add [debug pluginflags] command to get or set the current plugin flags
         for the interpreter.

FEATURE: add -allownull option to [sql execute] to control whether or not NULL
         column values are returned.  if so, they are converted to an empty
         string.  by default, this option is disabled (i.e. legacy behavior).
         also, add and revise unit tests for the [sql] command.

FEATURE: new -arguments command line option to read command line arguments from
         the specified file (the string "-" or "stdin" may be used to specify
         that arguments should be read from the standard input stream).

FEATURE: add -current option to [exit] to use the exit code currently stored in
         the ExitCode property of the interpreter.

************************* Beta 1.0.4291.26291 RELEASE *************************

BUGFIX: *MAJOR* fix issue with the [if] command that can cause a script ending
        with it, including a procedure body, to return the value of the command
        immediately preceeding it, if no scripts are evaluated for any of the
        then/else clauses associated with the [if] command invocation.

BUGFIX: when the event manager encounters an error via a dispatched event,
        really ignore it when the stopOnError parameter is false.

BUGFIX: make sure [info binary] returns the correct path even when running in an
        isolated application domain.

BUGFIX: the value for EngineAttribute.RuntimeOptions should not be an [octal]
        value of 010000 (typo).

BUGFIX: revise core marshaller handling for Enum parameters.  previously, it was
        impossible to call any methods having nullable parameters of enumerated
        types, ByRef or otherwise.

BUGFIX: make the build tool use the base project configuration (i.e. without the
        optional All/Dll suffix) when the COREONLY environment variable is
        defined.

BUGFIX: fix the [tsource] script library procedure so that it saves and restores
        the [tcltest::test] procedure using the correct (i.e. global) namespace.

BUGFIX: fix tests infoPlugin-1.1.* and object-6.1, allowing them to pass even if
        strong-name signing has been disabled for the built assemblies.

BUGFIX: fix tests library-3.1 and library-3.2 on 64-bit operating systems when
        32-bit Tcl DLLs are detected (i.e. avoid trying to load them).

BUGFIX: when processing command line arguments, make sure to refresh the cached
        host after processing any argument that can potentially execute external
        code.

BUGFIX: the DoOneEvent method of the Interpreter class needs to use a try/catch
        block in case the interpreter has been disposed.

BUGFIX: the IsVariableNameDirty method of the Interpreter class needs to check
        if the interpreter has already been disposed while holding the lock.

BUGFIX: the Sleep method overload called by the WaitVariable method in the
        Interpreter class needs to check if the interpreter has been disposed
        prior to grabbing the current host while holding the interpreter lock.

BUGFIX: the engine should only reset the script cancellation flags once upon
        entry at level zero, not once for each command executed at level zero.

BUGFIX: use the syncRoot field instead of the SyncRoot property in the Ready
        method of the Interpreter class (i.e. bypass the disposal checking for
        the interpreter because that is one of the checks that the Ready method
        itself performs).  also, since the Engine.IsCanceled and Engine.IsHalted
        methods are called directly by the Interpreter.Ready method, modify them
        to use the field as well.

BUGFIX: in the event manager, do not attempt to handle any background errors if
        the interpreter has been disposed.

BUGFIX: in WaitVariable, skip clearing the variable wait flags if the parent
        interpreter has been disposed.

BUGFIX: avoid deadlocks when an interpreter calls the ClearEvents or QueueScript
        methods of its own event manager.

BUGFIX: during interpreter disposal, do not attempt to dispose objects with the
        NoDispose flag set (i.e. objects not owned by the interpreter).

BUGFIX: prevent the methods related to introspecting the current stack trace
        from being inlined by the CLR (e.g. DebugOps.GetMethod).

BUGFIX: refresh the cached interactive host in the interactive loop after each
        command is processed.

BUGFIX: do not attempt to update the last interactive input if the interpreter
        is invalid.

BUGFIX: correct shutdown logic for the GC test thread by the interactive loop.
        it will now be shutdown only by the interactive loop that started it.

BUGFIX: in the execShell script library procedure, wrap the name of the Eagle
        shell executable in quotes when running on Mono (i.e. since it is then
        the first formal argument and not the file name itself, which is simply
        "mono").

BUGFIX: for the result of test error-1.5, truncate the name of the file being
        evaluated using ellipsis.

BUGFIX: when adding the file name of a ParseToken to the result of the ToList
        method, convert null to empty string.

BUGFIX: in the PowerShell cmdlet, make sure the interpreter gets disposed if it
        is still valid upon entry into the Dispose method.

BUGFIX: in Garuda, make the GarudaObjCmd function static.  also, when running on
        the .NET Framework 4.0, release the ICLRMetaHost and ICLRRuntimeInfo
        interface pointers only if the ICLRRuntimeHost interface pointer is
        being released as well.

BUGFIX: fixup time measurements to microseconds for non-native or non-Windows
        builds of the core library.

BUGFIX: fix test tclLoad-1.12.4 to use the native package Tcl interpreter for
        the nested call to [tcl eval].

BUGFIX: in the Garuda test suite, check for the testBinaryPath variable before
        trying to read it.

BUGFIX: fix nesting of [regsub -eval] invocations.  remove the RegsubClientData
        property from the IEngineContext interface and the Interpreter class.
        modify the active interpreter stack to allow any IClientData (i.e. in
        this case, a RegsubClientData) to accompany each interpreter in the
        stack.  also, modify the [regsub] command implementation itself to use
        this new stack-based RegsubClientData passing technique.

BUGFIX: fix the [getDictionaryValue] script library procedure to avoid returning
        the wrong value when a previous value could match the name being sought.

BUGFIX: *BREAKING CHANGE* the engine should not assume that all threads require
        the same maximum stack size, especially since the default stack size is
        normally 16MB.

REFACTOR: revise call frame cleanup code to be generally more robust.

REFACTOR: add an AssemblyRelease attribute to allow each public release to carry
          additional information about its nature.

REFACTOR: the ShellMainCore method will now honor the quiet mode for the current
          interpreter by not directly emitting any error messages after it has
          been enabled.

REFACTOR: revise handling of command resolution errors in the background error
          handler (i.e. report any command resolution error).  also, allow the
          default background error handling to be disabled.

REFACTOR: remove the CommandFlags.Native value from the [after] command as this
          command does not actually call into any native code.  also, add the
          CommandFlags.Native value to the [sql] and [test2] commands as they
          may call into native code.

REFACTOR: add Virtual value to the VariableFlags enumeration.  variables with
          this flag are assumed to be handled by custom trace callbacks and
          cannot be handled directly by the core marshaller or used with most
          of the [array] sub-commands.

REFACTOR: for the test suite, issue a warning if the Eagle core library is not
          strong-name signed OR is strong-name signed with an unrecognized key.

REFACTOR: move code for adding and removing scopes from the Scope command class
          into the Interpreter class, preserving the existing locking semantics.

REFACTOR: allow the test configuration to be unset via a -preTest option to the
          test suite.

REFACTOR: make sure all the example commands are tagged with an ObjectGroup
          attribute.

REFACTOR: add expression parser tests related to parsing function names that
          start with NaN, Inf[inity], or a number.

REFACTOR: double the default thread join timeout when running on Mono because
          its threading is much slower.

REFACTOR: add [getGarudaDll] script library procedure to return the full path
          and file name for the Garuda DLL.

REFACTOR: add test garuda-1.2 to test Eagle to Garuda integration.  also, rename
          the garuda-1.0 test to garuda-1.1.

REFACTOR: rename the scope-* tests so that their ordering is consistent with
          their file names.

REFACTOR: rename the try-* tests to avoid duplicate names.

REFACTOR: check for and display any duplicate test names that are found while
          running the test suite (or individual test files).  also, keep more
          careful track of skipped tests (i.e. by name).

REFACTOR: when running the interactive #test and #ptest commands with a specific
          pattern, make sure the sort ordering of the files is consistent with
          running the entire test suite.

REFACTOR: fine-tune the expected times for the stack overflow benchmark tests.

REFACTOR: for now, disable testing Tk 8.4/8.5 integration when running in Eagle.

REFACTOR: attempt to support running the Excel integration tests using expired
          trial versions of the product.  also, enhance cleanup and diagnostics
          for the tests excel-1.* and excel-2.*.

REFACTOR: modify the test suite to output periodic reports on the percentage of
          test files completed.

REFACTOR: add [formatDecimal] script library procedure to the test package and
          remove inline formatting hacks from the benchmark test file and the
          test epilogue.

REFACTOR: set the global errorCode variable to the type of the exception thrown.
          currently, this is done at key points in the engine and for all core
          commands, functions, and operators that catch their own exceptions.
          the key points in the engine include any place where an exception is
          thrown from the Execute method of the IExecute or IExecuteArgument
          interfaces and subsequently caught by the engine itself.

REFACTOR: in the test suite, replace uses of the [lappendArgs] script library
          procedure with [list].

REFACTOR: in the test exec-1.1, use env(ComSpec).

REFACTOR: avoid using the C# keyword __arglist when running on Mono as it does
          not appear to work.

REFACTOR: skip test basic-1.28 when running on Mono (Mono bug #710567).

REFACTOR: for the tests basic-1.32 and basic-1.33, allow NullReferenceException
          and/or NotSupportedException in the results of the method calls due to
          implementation differences between the default binders on the .NET
          Framework and Mono.

REFACTOR: skip tests clock-1.17, clock-1.18, and parser-3.2 when running on Mono
          (Mono bugs #710522, #710512, #710537).

REFACTOR: when adding directories to the auto_path, make them Unix style (i.e.
          with forward slashes).

REFACTOR: in the updater, when using the WinVerifyTrust API, only prompt the
          user for files downloaded from the Internet.

REFACTOR: show variable names when displaying the information for a call frame.

REFACTOR: skip breaking into the debugger (or writing an error message) when
          termination or resource disposal failures are detected while exiting
          unless the BREAK_ON_EXITING compile-time option is enabled.

REFACTOR: add a simpler overload of the Create method to the Script class.

REFACTOR: add diagnostic messages to the ScriptEventCallback method of the
          EventManager class.  these messages are enabled only when the event
          being processed has the debug flag set.

REFACTOR: add diagnostic messages to the WaitVariable method of the Interpreter
          class.  also, add a new variable flag, WaitTrace, to enable these
          diagnostic messages.

REFACTOR: allow ThreadOps.CreateEvent to create auto-reset events if requested.
          also, move the default join timeout constant to the ThreadOps class.

REFACTOR: swap test numbers for tests tclLoad-1.12.2 and tclLoad-1.12.3.

REFACTOR: update the Tcl headers and library included with the Garuda project to
          Tcl 8.6 beta 2.

REFACTOR: remove workaround for the MSBuild Exec task error detection from the
          winForms-5.2 test and add it to the release preparation tool instead.

REFACTOR: update Fossil tool w/source to version 9bfa186be09f3f95.

REFACTOR: *BREAKING CHANGE* rename the NewTraceListener method of the Utility
          class to NewDefaultTraceListener.

REFACTOR: *BREAKING CHANGE* in FixupReturnValue, do not use an existing opaque
          object handle if the opaque object handle name has been specified by
          the caller unless the AllowExisting object flag has been specified.

REFACTOR: *BREAKING CHANGE* rename TestGenericList to GenericList.

REFACTOR: *BREAKING CHANGE* move the [tsource] and [testShim] script library
          procedures to the EagleTest package.

REFACTOR: *BREAKING CHANGE* add noCancel parameter to the WaitVariable method.
          this allows for the wait operation to continue even if a running
          script is canceled or unwound.  also, add a NoCancel engine flag and
          change the Ready method of the Interpreter class to support bypassing
          script cancellation checking during the interpreter readiness checks.

REFACTOR: *BREAKING CHANGE* add maxStackSize and isBackground paremeters to all
          the CreateThread method overloads of the Engine and the corresponding
          methods of the IEngineHost interface.  also, add the ThreadStackSize
          property to the IInterpreter interface.

FEATURE: add -packagePath option to [test2] to control the the sub-directories
         probed for private assemblies in the isolated application domains.

FEATURE: add support for per-vendor customizations during interpreter creation
         via a new VendorPath environment variable and a vendor.eagle script.

FEATURE: add DoesScopeExist method to the IEntityManager interface.

FEATURE: add -datetimebehavior and -datetimeformat options to the [sql execute]
         command to control how DateTime values are converted to strings prior
         to being added to the results.

FEATURE: add -procedure and -shared options to the [scope create] and
         [scope open] commands.  the -procedure option can be used create or
         open a scope based on the innermost active procedure body (e.g. a named
         procedure or lambda expression).  if there is no active procedure body,
         an error is raised.  for lambda expressions, all scopes created with
         the -procedure option will be shared by all lambda expressions.  scopes
         created and/or opened without the -shared option will be per-thread and
         per-interpreter; otherwise, they will be per-interpreter only (i.e.
         shared by all threads).

FEATURE: add -preTest and -postTest command line options to the test suite.
         these options can be used to evaluate a script before and/or after any
         tests are run, respectively.

FEATURE: add -time option to the [test2] command.  this option can be used to
         enable the output of timing information for the test setup, body, and
         cleanup scripts.

FEATURE: add [info hwnd] sub-command to return information about the specified
         window.

FEATURE: add [garuda dumpstate] sub-command to allow full introspection of the
         internal state of the Garuda package.

FEATURE: add [garuda clrexecute] sub-command to execute an arbitrary managed
         method via the ICLRRuntimeHost::ExecuteInDefaultAppDomain CLR API.

FEATURE: add DebugTextWriter and TraceTextWriter properties to the IDebugManager
         interface.  the DebugTextWriter property is used by the core library
         when reporting serious runtime errors (i.e. via DebugOps.Complain).
         the TraceTextWriter is reserved for future use by the core library.

FEATURE: add an EmptyEvent property and a WaitForEmptyQueue method to the
         IEventManager interface.  the WaitForEmptyQueue method allows an
         application or plugin to wait until there are no events in the queue
         (i.e. all previously queued events have been canceled, discarded, or
         dequeued).

FEATURE: add various overloads of the EvaluateGlobal* and SubstituteGlobal*
         methods to the IEngineManager interface.

FEATURE: add public ScriptThread class to allow applications and plugins to
         create and manipulate dedicated scripting threads.

FEATURE: include a simple PowerShell script that can install the cmdlet.

FEATURE: add #rlimit interactive command to display or set the recursion limit
         for the interactive interpreter.

FEATURE: add NoLoop environment variable to support the ability to skip entering
         the interactive loop.

FEATURE: expose FormatBreakpoint, FormatErrorVariableName, GetStringFromObject,
         HasFlags(BreakpointType), SetVariableDirty, and SetVariableUndefined
         methods via the Utility class for use when implementing custom variable
         trace callbacks.

FEATURE: *BREAKING CHANGE* by default, when using the -commandline option to
         [exec], only surround arguments with quotes if they contain at least
         one reserved command line character (e.g. a space).  also, add a new
         -quoteall option to force the legacy behavior of surrounding every
         argument with quotes.

FEATURE: *BREAKING CHANGE* allow applications and plugins to process custom
         shell arguments to ShellMainCore via a supplied callback.  also, expose
         the MatchSwitch, PopFirstArgument, and PopLastArgument methods via the
         Utility class for use when processing shell arguments.

************************* Beta 1.0.4221.27588 RELEASE *************************

BUGFIX: *PERF* for the CacheDictionary class, prevent the TrimExcess method from
        doing its expensive work more than once per minute.  also, remove some
        unnecessary uses of the ContainsKey method.

BUGFIX: fix updater bug in handling of non-existent directories in the target
        file names.

BUGFIX: make sure the release preparation tool sets the PACKAGE_PATCHLEVEL
        environment variable prior to building the Garuda binary packages.

BUGFIX: make sure the release preparation tool modifies the default build type
        used by the updater project (i.e. in the BuildInfo.cs file).

REFACTOR: update Fossil tool w/source to version ba15af450d33b2fd.

REFACTOR: make the Engine.SetThrowOnDisposed method public.  this method can be
          used to disable exceptions caused by accessing previously disposed
          objects; however, it is provided only as a last resort and its use is
          not recommended.

FEATURE: support running the test suite with/via the NCover code coverage tool.

************************* Beta 1.0.4215.24284 RELEASE *************************

BUGFIX: fix bug in how the updater synchronizes the lists of source and target
        files.

BUGFIX: prevent master and slave interpreters from being disposed by the
        interpreter associated with them via the [object dispose] command.

BUGFIX: if the global auto_path or tcl_precision variables are unset, make sure
        they are purged immediately so that they cannot be recreated with their
        original trace callbacks in place.

BUGFIX: the Garuda release files should not be named based on the version of the
        Eagle binaries, even when they are built at the same time.

BUGFIX: fix [rename] of a procedure with leading colons in the original name.

BUGFIX: fix removal of a command or procedure after it has been renamed.  also,
        cleanup and modularize the methods responsible for renaming commands and
        procedures.

BUGFIX: fix [interp alias] to remove leading colons from the alias name prior to
        adding the associated command.

BUGFIX: fix the reported line number when an error is raised while evaluating a
        file.

BUGFIX: check for custom variable resolvers returning a null variable with a
        successful return code.

BUGFIX: the interactive #hcancel and #hexit commands must now use the GetAny
        method of the Interpreter class to grab the current instance.

BUGFIX: prevent the various pkgIndex.tcl files from providing packages to Eagle.

BUGFIX: allow [sql] to use provider assemblies loaded via LoadFrom.

BUGFIX: when unquoting parameters passed to the batch tools, use a more robust
        technique that avoids data-dependant bugs.

BUGFIX: make sure all use of the FOR /F command in the batch tools prevents tabs
        and spaces from being used as delimiters if they could be present in the
        returned values.

REFACTOR: revise initialization of test_path variable so that the lib\Test1.0
          sub-directory inside of the Eagle root directory will also be checked.

REFACTOR: cleanup and simplify the implementation of the [bgerror] command.

REFACTOR: eliminate the use of "new ClientData(null)" by creating an immutable
          static instance of ClientData called Empty.

REFACTOR: make the test numbering in library.eagle more consistent with the rest
          of the test suite.

REFACTOR: track and report the original expected times in the benchmark tests.

REFACTOR: rename the files unbalanced-brace*.eagle to unbalanced_brace*.eagle.

REFACTOR: cleanup test numbering and constraints in the basic.eagle file.

REFACTOR: improve the diagnostic messages from TestOps.Match.

REFACTOR: revise the result of [version] to include the source identifier and
          timestamp information from Fossil.  also, report the assembly build
          timestamp in UTC.

REFACTOR: add the ability for the engine to reserve extra native stack space via
          an internal field.  this can be used to assist in testing the native
          stack overflow checking.

REFACTOR: modify the addConstraint procedure for better Tcl compatibility and to
          prevent duplicate test constraints from being added.  also, add new
          haveOrAddConstraint procedure and compatibility shims to mimic the Tcl
          behavior of the tcltest::testConstraint command.  also, configure the
          Tcltest package using the new configureTcltest procedure.

REFACTOR: add support for userInteraction test constraint and modify the tests
          that require it.

REFACTOR: various test suite changes to assist in running unmodified Tcl test
          files in both Eagle and Tcl via the [tsource] shim.

REFACTOR: remove unnecessary bool-to-int conversions from round(), all bitwise
          operators except "not", and the numeric equality operators.

REFACTOR: cleanup and modularize the methods responsible for disposing and/or
          removing aliases, commands, functions, objects, packages, plugins,
          policies, procedures, traces, etc.

REFACTOR: remove the unused RemoveObjectReference method from the Interpreter
          class.  also, remove the unnecessary UpdateErrorLine method from the
          Engine class.

REFACTOR: *BREAKING CHANGE* remove the -copy option from the [rename] command as
          it violates internal assumptions about the one-to-one relationship
          between command names and tokens.

REFACTOR: *BREAKING CHANGE* add the ability to disable traces, notifications,
          watches, etc when the engine itself needs to set the global errorCode
          and errorInfo variables, via the FAST_ERRORCODE and FAST_ERRORINFO
          compile-time options, respectively.  technically, this is a breaking
          change because, in theory, third-party code may rely on the legacy
          behavior (i.e. being able to trace writes on the global errorCode and
          errorInfo variables).  also, add a VariableFlags argument to the
          CopyErrorInformation method of the IInterpreter interface to be used
          when fetching the global errorCode and errorInfo variable values.

REFACTOR: *BREAKING CHANGE* when handling a stack overflow error generated by a
          script, skip appending excess information to the global errorInfo
          variable while the evaluation stack is being unwound.  also, add the
          concept of nested execution to the engine.  in this context, nested
          execution means that a command, such as [test1] or [test2], wishes to
          evaluate a script and have it treated like the outermost evaluation
          level.  currently, this only affects the new stack overflow handling;
          however, the concept itself is fairly generic and may be used for
          other purposes in the future.

FEATURE: add -format, -pairs, and -names options to the [sql execute] command.
         these options can be used to control how the data reader results are
         returned.  currently, only the list, dictionary, and array formats are
         supported and the array format is the default.

FEATURE: add -commandline option to the [exec] command.  this option causes the
         arguments to be built using the quoting rules required by the shell and
         is useful when the command line may contain quotes and/or backslashes.

FEATURE: add -resolve option to the [package scan] command.  also, modularize
         the package index processing subsystem.

FEATURE: add better support for options that use custom enumerated types from
         plugins loaded into isolated application domains.

FEATURE: new [format] command, compatible with Tcl 8.4.

FEATURE: new -runtimeOption command line option to change user-defined runtime
         options.  also, add the ClearRuntimeOptions and ChangeRuntimeOption
         methods to the IPropertyManager interface.

************************* Beta 1.0.4173.01269 RELEASE *************************

BUGFIX: *MAJOR* fix processing of scalar and array variable names that contain
        characters reserved by the script parser, including the opening and
        closing parenthesis.

BUGFIX: the dir variable used when package indexes are being processed is not
        necessarily guaranteed to be in the global scope; therefore, remove the
        GlobalOnly flag from the associated variable management method calls.

BUGFIX: fix syntax error messages for all commands that, in theory, can take any
        number of arguments.

BUGFIX: the error line number and stack trace should be captured and reported
        when evaluating the scripts for the -preInitialize and -postInitialize
        command line options.

BUGFIX: correct some syntax error messages for [expr].

BUGFIX: the SQLite-related build targets should use the Eagle root directory as
        the source for external files, not the project directory.

BUGFIX: the Tcltest package cannot handle test constraint names containing the
        colon character; therefore, all "file:" and "network:" constraint names
        have been changed to "file_" and "network_", respectively.  also, rename
        the file tcl-unload.tcl to tcl_unload.tcl.

BUGFIX: fix addToPath and removeFromPath detection of the path separator.

BUGFIX: fix locking for callers of the GetVariableViaResolvers method.  the fix
        is that all code that wishes to modify an IVariable object must acquire
        and hold the interpreter lock while doing so.

BUGFIX: remove unnecessary use of the [fixConstraints] procedure in tests where
        there is only one test constraint.

BUGFIX: split and rename tests, as appropriate, where different variations are
        required for Tcl, Eagle, Mono, etc.

BUGFIX: do not use the ToInt64 method of the Enum class as it has the wrong type
        signature, see CodePlex bug #8877.

BUGFIX: revise core marshaller handling for null array parameters.  previously,
        it was impossible to pass a null array parameter via [object invoke].
        also, skip second pass for output-only parameters.

BUGFIX: make the RuntimeOps.BuildCommandLine method compatible with Windows
        command line handling.

BUGFIX: the CreateThread methods of the Engine class should not attempt to use
        the IEngineHost if the interpreter is running in an isolated AppDomain.

BUGFIX: the AutoPathTraceCallback method must save the information from the
        traceInfo object prior to scanning for any package indexes and restore
        it immediately afterwards.  this is necessary because the traceInfo
        object is now shared on a per-thread basis (for performance reasons) and
        the scanning process may cause scripts to be evaluated, thereby causing
        the object to be modified out from under the calling method if any
        variables are accessed during those scripts.

BUGFIX: asynchronous Engine methods should check the result of QueueWorkItem.

BUGFIX: make the syntax error messages returned by the [apply] command match
        those returned in Tcl 8.5 and/or 8.6.

BUGFIX: during the [load] command, only try to unload a plugin upon failure if
        it was at least partially loaded.  also, the UnloadPlugin method must
        validate that the plugin is not null.

BUGFIX: fork test proc-1.5 into Tcl 8.4, Tcl 8.5, and Tcl 8.6 versions due to
        differences in returned syntax error messages.  Eagle runs and passes
        the Tcl 8.6 version.

BUGFIX: modify tests uplevel-13.1 and uplevel-13a.1 to honor the stop-on-error
        test option.

BUGFIX: modify the internals of the WaitVariable method to allow it to be used
        on threads that must pump the message queue.

BUGFIX: for the PowerShell cmdlet, the custom command policy must explicitly
        deny access to all commands if the user does not choose to allow script
        execution to continue; otherwise, the built-in command policies will
        permit "safe" commands to be executed.

BUGFIX: preserve original argument values when resolving method overloads in the
        core marshaller.  also, keep track of the resolved arguments for each
        method overload separately and use the appropriate one when invoking the
        target method.

BUGFIX: disable IIS integrated-pipeline mode detection for Mono (crashes on
        startup when running on Mono 2.6).

BUGFIX: modify test constraint on test object-7.1 so that it will run on Mono
        version 2.6 or later.

BUGFIX: fix core marshaller handling for the System.Delegate parameter type.

BUGFIX: modify the #lrinfo, #mrinfo, and #rinfo interactive commands so that
        they fulfill their stated goal of never modifying the local result.

BUGFIX: the AttributeFlags.Have method should return true if the flags are valid
        and there are no flags to be checked for.

BUGFIX: the [object members] command should return the type for field members
        when the -signatures option is used.

BUGFIX: the [info engine objectids] command should return an empty GUID if null
        or empty strings are used when applying the ObjectId attribute.

BUGFIX: the GetHiddenIExecute method of the Interpreter class should be private.

BUGFIX: the WriteHistoryInfo method of the default host should not hold the
        interpreter lock while calling the virtual method(s) to write the
        history.

BUGFIX: modify the xaml-1.1 and xaml-1.2 tests so they can pass when run in
        application domains that are already running a WPF application.

BUGFIX: add missing destructors to the IHost implementations provided by the
        library (e.g. Console, Core, and Diagnostic).

BUGFIX: on Windows, grab a global mutex in addition to the normal one to prevent
        setup from running if Eagle is being used in a different user session.

BUGFIX: parser methods [where an interpreter is optional] must not try to check
        the readiness of null interpreters.

BUGFIX: fix incorrect handling of the -exitcode option to [exec].

BUGFIX: the procedures [execShell], [testExec], and [execTestShell] in the
        script library should use [uplevel], not [eval].

BUGFIX: when running tests in Tcl, do not mask errors from [tcltest::test].

BUGFIX: modify logic in the Select method of the TclWrapper class so that it
        prefers to retain the best build seen so far unless there is some
        compelling reason not to do so (i.e. better version, higher priority,
        debug affinity, or threaded status).

BUGFIX: fix the internal event wait loops of the [exec] and [socket -server]
        commands to be far less processor intensive.  added another test.

BUGFIX: fix [array] with variables that are redefined after being undefined.

BUGFIX: when end-of-file is encountered using the three argument form of [gets],
        return -1, not 0.

BUGFIX: fix OutOfMemoryException when using [gets] with huge files.

BUGFIX: fix formatting of long command history items by the default host.

BUGFIX: the icon and title related private fields of the console host should no
        longer be static.

BUGFIX: remove improper caching of the command history flag for the interpreter
        by the engine.

BUGFIX: do not try to setup the console title, icon, and mode unless the console
        window is actually available.  also, only try to use the native console
        APIs on Windows.

BUGFIX: make sure variable names never contain array element references when an
        explicit array element index has been specified by the caller in methods
        directly involved in variable management (e.g. GetVariableValue2,
        SetVariableValue2, UnsetVariable2, and ResetVariable2).

BUGFIX: for the [library certificate] sub-command, make sure to check the result
        of the CertificateOps.GetCertificate method even if the -verify option
        is not used.

BUGFIX: for [sql execute -execute reader], make sure the variable name where the
        row data will be stored does not represent an array element name.

BUGFIX: make sure [string compare] always returns -1, 0, or 1 even though the
        return value from the String.Compare method is not restricted to these
        values (COMPAT: Tcl).

BUGFIX: add missing test constraints for the test data files bad_subst.txt,
        garbage.txt, file.dat, test.xls, client.tcl, and tcl-unload.tcl.

BUGFIX: do not try to read the test_cops and test_base_cops variables in the
        benchmark test file if they are not set.

BUGFIX: add missing Eagle test constraint to the parser-3.2 test.

BUGFIX: do not use the !eagle test constraint (use tcl instead).

BUGFIX: fork tests fileIO-1.9, fileIO-1.10, and fileIO-1.11 into Tcl and Eagle
        versions due to differences in how the underlying encoding subsystems
        treat invalid ASCII, UTF-8, and Unicode code points.

BUGFIX: fork test expr-3.2 into Tcl and Eagle versions due to major differences
        in the required test constraints.

BUGFIX: fix network test constraints for the tests basic-1.24.1, basic-1.24.2,
        basic-1.25, basic-1.26, basic-1.27, and basic-1.28.

BUGFIX: constrain the tests commands-1.1, commands-1.2, and commands-1.3 to run
        only in the Eagle Shell.

BUGFIX: constrain the test object-4.2.1 to run only in the Eagle Shell.  this is
        necessary because the dynamically generated assembly assumes the Eagle
        library assembly is located in the application directory (i.e. it fails
        to load properly, causing spurious test failures).

BUGFIX: constrain the WPF tests to run only if the test thread is running as a
        single-threaded apartment (STA).

BUGFIX: in the interactive loop, mark the debugger as active when evaluating the
        shell initialization script.  also, if the shell initialization script
        causes the interpreter to be marked as exited, skip the main loop.

BUGFIX: when checking for token breakpoints from the Engine.EvaluateTokens
        method, make sure the debugger is not already active.

BUGFIX: return an appropriate error message when the -eval argument to [regsub]
        cannot not be parsed as a list.

BUGFIX: fix the binding flags for the MarshalOps.Identity method so that the
        -identity option to [object invoke] works again.

BUGFIX: the GetResult, SetResult, and ResetResult methods of the Event class
        should close the event wait handles they open; also, they should not
        open an event wait handle unless it is going to actually be used.

BUGFIX: the EventCallback method of the TclThread class should close the idle
        event wait handle that it opens.

BUGFIX: fix subtle race condition in test tclLoad-1.5 where the Cancel event may
        be received and completed before the asynchronous Evaluate event has
        started evaluating the script.

BUGFIX: fix race condition in tests object-10.2 and object-10.3 by making sure
        the global result variable is created prior to starting the threads.

BUGFIX: fix failure of test sql-1.2 when the global result variable is already
        set.

BUGFIX: add constraint to test string-97.1 to prevent it from running on Mono
        (Mono bug #636939).

BUGFIX: missing escapes for parenthesis characters in batch file tools.

BUGFIX: all token breakpoint related classes should be serializable.

BUGFIX: prevent custom IHost implementations from triggering remoting and/or
        serialization exceptions in the default host and the interactive loop.

BUGFIX: make sure to copy TraceInfo objects prior to passing them on to the
        interactive loop (e.g. for variable watches).

BUGFIX: fix console positioning issue when displaying information in non-boxed
        output styles.

BUGFIX: in the GlobalState class, fix ThreadStatic performance issue by reducing
        the number of accesses to the cached current thread Id.  thanks to Eric
        Eilebrecht of Microsoft for pointing this out.

BUGFIX: *BREAKING CHANGE* in the subSpec argument to the [regsub] command, treat
        all backslashes as literal when they are not followed by an ampersand, a
        decimal digit, or another backslash (COMPAT: Tcl).

REFACTOR: *PERF* rewrite the implementation for the [array set] command to avoid
          using SetVariableValue2 in a tight loop.

REFACTOR: miscellaneous cleanup of the Example and TclSample projects.

REFACTOR: cleanup and robustify library path handling in the GlobalState class.

REFACTOR: add getPluginPath procedure to the script library to return the fully
          qualified path for the first plugin matching the specified pattern.

REFACTOR: reform internal and external use of the ExitCode enumeration.

REFACTOR: add checkForPathFile constraint checker for finding a file along the
          PATH.

REFACTOR: revise conditionals for the GetEnumerator method of the ArraySearch
          class.

REFACTOR: make sure the scalar value for a variable is set to null prior to
          converting it into an array variable.

REFACTOR: make sure the original command line ends up in the log file for the
          test suite.

REFACTOR: permit the script arguments to be set via new overloads of the web
          service methods.  add methods for evaluating an expression.  also,
          support automatically detecting the library path to use via the
          Utility.DetectLibraryPath method.

REFACTOR: modify the TclWrapper.Find method to accept an optional callback used
          to find additional Tcl library builds (presumably from locations that
          would otherwise be unknown to and/or unsearched by this method).  make
          the comments in this method accurate again.

REFACTOR: modify the Argument and Result classes to support implicit conversions
          from the Uri class.

REFACTOR: uniformly wrap usage for the ShouldProcess and ShouldContinue methods
          of the Cmdlet class.

REFACTOR: add NotifyGlobal property to the IInterpreter interface.  this can be
          used to disable multi-interpreter notifications for an interpreter.

REFACTOR: modify handling for unknown processor architectures and/or operating
          systems and in the NativeStack class.

REFACTOR: update Fossil tool w/source to latest release version 20110512145652.
          this is a custom built binary that supports SSL and has been signed
          with an Authenticode certificate.

REFACTOR: in the Parser.ConvertElement method, avoid superfluous calls to the
          StringBuilder.Append method by appending common character pairings in
          one step instead of two.  also, optimize the initial capacity for the
          StringBuilder objects used by the Parser.SplitList method.

REFACTOR: modify the RuntimeOps.ExtractPolicyContextAndCommand method to enable
          a null command type to simply skip command type matching.

REFACTOR: revise handling of the _Commands.Alias class when looking for commands
          in the core library to add automatically.

REFACTOR: factor common script cancellation code out of the CancelThreadStart
          and ConsoleCancelEventHandler methods into the CancelAnyEvaluate
          method.  expose the CancelAnyEvaluate method via the IEngineManager
          interface.

REFACTOR: add ListCommands, ListProcedures, ListIExecutes, and ListFunctions
          methods to the IEntityManager interface.  also, modify the code for
          [info commands], [info procs], and [info functions] to use these new
          methods.

REFACTOR: add ListOperators method to the Interpreter class.  also, modify the
          code for [info operators] to use this new method.

REFACTOR: expose two overloads of the GetProcedure method in the Interpreter
          class.

REFACTOR: add ListChannels method to the IEntityManager interface and modify the
          [file channels] and [info channels] commands to use it.

REFACTOR: add IsStreamForChannel, AddChannel, and RemoveChannel methods to the
          IEntityManager interface and modify the [open], [close], and [socket]
          commands to use them.

REFACTOR: allow custom IHost implementations to force the host output and error
          channels to be flushed per call to [puts].

REFACTOR: add test to verify that there are no duplicate ObjectIds present in
          the core library.

REFACTOR: add tests to verify the correct static and non-static members are
          exposed by the Interpreter class.

REFACTOR: split shell argument processing into a new method named ShellMainCore,
          which is designed to be used by both the standard shell and external
          applications.

REFACTOR: the private DiagnosticStream class should implement the IDisposable
          pattern.

REFACTOR: modularize the setup build process to allow for multiple setups to be
          built using common idioms [and Pascal routines].

REFACTOR: expose Complain, DebugTrace, GetCurrentThreadId, IsSameAppDomain, and
          InvokeDelegate, GetAssemblyConfiguration, GetAssemblyTitle, NextId,
          GetTclVersion, DownloadData, DownloadFile, and RefreshAutoPathList
          methods via the Utility class.

REFACTOR: add the PrivateIsDebuggerActive method to the interpreter class for
          use in performance critical code paths through the engine.

REFACTOR: allow custom IHost implementations to access and/or override the
          SetupCancelKeyPressHandler method of the console host.  by default,
          this method is used to hookup [or unhook] the integration between the
          script cancellation functionality provided by the interpreter and the
          CancelKeyPress event of the System.Console class.

REFACTOR: add BeginSection and EndSection methods to the IHost interface.  for
          now, these methods are used to notify custom IHost implementations
          when the header or footer is being written.

REFACTOR: revise handling of interactive input to allow custom hosts to force
          the interactive prompt to be displayed even when the input for the
          host is being redirected.

REFACTOR: change the plugin flags for the _Plugins.Object class to mark it as
          not containing any functions or traces.

REFACTOR: make sure that the two argument form of [after] never blocks longer
          than two seconds at a time.

REFACTOR: add an overload of Interpreter.DisposeTclBridges to delete all bridges
          associated with a specific Tcl interpreter.

REFACTOR: modify [tcl master] to check for and return Tcl interpreters provided
          by the Eagle Package for Tcl (Garuda) as well.  also, modify the Tcl
          library module reference count management to deal with the possibility
          of the Tcl library module being loaded without Eagle doing the actual
          loading (i.e. when Eagle is loaded via Garuda).  finally, modify the
          test suite to support running selected tests using an external Tcl
          shell (i.e. tclsh) as this is necessary to fully test this new native
          Tcl integration functionality.

REFACTOR: modify the checkForShell constraint to account for the Eagle Package
          for Tcl scenario.

REFACTOR: enhance error reporting by the tclLoad-1.5 and tclLoad-1.6 tests.

REFACTOR: when running on Windows, use the native WinVerifyTrust API to verify
          Authenticode signatures on executable files.  unfortunately, the only
          way to accomplish this in pure managed code is to take a dependency on
          the .NET Framework 3.5 and use the AuthenticodeSignatureInformation
          class and this project must support the .NET Framework 2.0 or higher.

REFACTOR: the Create and InteractiveLoop methods of the Interpreter class should
          take an IEnumerable of string instead of a string array for the args
          parameter.

REFACTOR: more minor improvements to the user interface for the updater.  also,
          improvements to the file copying, security, code modularity, and the
          overall readability of the code.

REFACTOR: modify the SQLite build integration to copy the native DLL appropriate
          to the current processor architecture.

REFACTOR: augment, cleanup, and rename various methods in the DebugOps class
          (e.g. Debug -> WriteDebug, Trace -> WriteTrace, etc).

REFACTOR: move static GetHostColors, HostSleep, IsHostOpen, and Sleep methods to
          the RuntimeOps class.

REFACTOR: cleanup and make uniform the usage of [appendArgs] in the test suite.

REFACTOR: add !monoDebugger test constraint to all tests that pass when running
          on Mono and that fail when running under the Mono debugger (e.g.
          basic-1.20, basic-1.21, object-10.2, object-10.3, socket-1.2, and
          tclLoad-1.5).  these test failures [when running under the Mono
          debugger] all involve threads, either directly or indirectly;
          therefore, the Mono debugger may have serious threading issues.

REFACTOR: revise the semantics behind closing event handles in the TclThread
          class.

REFACTOR: revise the tests tclLoad-1.5 and tclLoad-1.6 for more specific failure
          reporting.

REFACTOR: use the strongly typed pair and triplet classes in the EventCallback
          method of the TclThread class for clientData passed to the Substitute
          and SetVariable event types.

REFACTOR: add diagnostic messages to all the methods in the ThreadOps class.

REFACTOR: make the naming of constants and variables of the enumerated type
          StringComparison consistent with each other and the .NET Framework.

REFACTOR: for tests basic-1.20 and basic-1.21, work around a timing issue in the
          Mono debugger that causes timeouts.

REFACTOR: make output of memory, stack, and drive information in the test suite
          prologue and epilogue easier to read.  also, make output of the test
          constraints and compile-time options easier to read.

REFACTOR: embed the source timestamp from the Fossil checkout into the primary
          assembly via the new AssemblySourceTimeStamp attribute.

REFACTOR: cleanup and move all Pascal code out of the setup script and simply
          #include it from the setup script.

REFACTOR: remove the parse token and expression related breakpoint types from
          the default setting used by the debugger.

REFACTOR: add the BeginProcessing, EndProcessing, and DoneProcessing methods to
          the IInteractiveHost interface.

REFACTOR: when running on the .NET Framework 4.0, use the RunAndCollect flag for
          dynamically created assemblies containing delegate types that do not
          require P/Invoke.

REFACTOR: add NoConsole interpreter creation flag.  when this flag is used, the
          console host will not be used as the fallback interpreter host during
          interpreter creation.

REFACTOR: *BREAKING CHANGE* replace the -fast option to the [object create],
          [object invoke], and related commands with the new -argumentflags
          option.

REFACTOR: *BREAKING CHANGE* break out various methods from the IInterpreter
          interface to the IDebugManager, IErrorManager, IInteractiveManager,
          INotifyManager, IPropertyManager, IScriptManager, and ISynchronize
          interfaces.

REFACTOR: *BREAKING CHANGE* the IdentityEncoding class should be sealed.

REFACTOR: *BREAKING CHANGE* rename the EvaluateContext class and interface to
          AsynchronousContext.

REFACTOR: *BREAKING CHANGE* an interpreter path argument is now required for the
          [interp queue], [interp resetcancel], and [interp service] commands.

REFACTOR: *BREAKING CHANGE* rename the ConsoleChannel enum to ChannelType.

REFACTOR: *BREAKING CHANGE* rename the existing WriteResultInfo methods of the
          IInformationHost interface to WriteAllResultInfo and add new methods
          in their place that are designed to write one named result.

REFACTOR: *BREAKING CHANGE* revise results for the commands [host color],
          [host namedcolor], [host position], and [host size].  these commands
          now return the previous values for those values that were modified, if
          any; otherwise, the current values are returned.

REFACTOR: *BREAKING CHANGE* modify the SystemEncoding and DefaultEncoding fields
          of the Interpreter class to prevent them from ever emitting byte order
          marks.

REFACTOR: *BREAKING CHANGE* revise IHistoryManager interface to keep track of
          metadata associated with the command execution history.  add
          LoadHistory and SaveHistory methods to the IHistoryManager interface.
          add HistoryData and HistoryFilter classes to facilitate easy loading,
          saving, and filtering of history data.  gathering of command execution
          history is still disabled by default.  to enable it, use the command
          [debug history true].  also, modify WriteHistoryInfo methods of the
          IInformationHost interface to accept an IHistoryFilter argument for
          filtering the output.  finally, rename the #hisinfo interactive
          command to #histinfo.

REFACTOR: *BREAKING CHANGE* move [debug result] to [host result].

REFACTOR: *BREAKING CHANGE* rename the -verify option for [library certificate]
          and [object certificate] to -chain.  this is being done to clarify
          that it enables verification of certificate chains, not Authenticode
          signatures.  originally, the name -verify was chosen to resemble the
          Verify method of the X509Certificate2 class; however, the original
          name has proved to be too confusing.

REFACTOR: *BREAKING CHANGE* add Core procedure class and move default procedure
          implementation of the Execute method to it.

REFACTOR: *BREAKING CHANGE* add Core resolver class and move default resolver
          implementations of the GetIExecute and GetVariable methods to it.

REFACTOR: *BREAKING CHANGE* change the default string comparison type for the
          [string compare], [string equal], and [string map] sub-commands to
          ordinal.

REFACTOR: *BREAKING CHANGE* rename the _Constants.Position and _Constants.Size
          static classes to _Position and _Size, respectively.

FEATURE: add -autopath option to the [package scan] command.  this option will
         force the auto-path for the interpeter to be rebuilt from scratch.

FEATURE: add ResetErrorInformation method to the Engine class to reset the error
         information for the specified interpreter in a thread-safe manner.

FEATURE: add support for the TimeSpan data type to the core marshaller and to
         the value, expression, and option subsystems.

FEATURE: add support for marshalling array objects via scalar script variables
         containing opaque object handles that refer to array objects of the
         appropriate type.  this functionality only makes sense for method
         parameters that are input-only (i.e. because there would be nowhere to
         store the subsequent output without overwriting the contents of the
         variable, thereby destroying the underlying array object); otherwise,
         an error is raised.

FEATURE: add -copy option to the [rename] command.  using this option will cause
         the command or procedure to be associated with the old name and the new
         name.

FEATURE: add [clock isvalid] and [string is datetime] sub-commands to check if a
         string contains something that can be interpreted as a date.

FEATURE: add EvaluateExpression engine mode.  also, add support for evaluating
         expressions to the MSBuild, PowerShell, and WiX integration projects.

FEATURE: add the ability to restrict the permitted token types during expression
         evaluation (i.e. operators and functions only, etc).  this feature has
         the potential to slow down the whole engine a bit; therefore, it may be
         disabled using the EXPRESSION_FLAGS compile-time option.

FEATURE: add -noTrace command line option and NoTrace environment variable to
         allow tracing to be disabled.

FEATURE: add the PolicyObject and ResolverObject properties to the IInterpreter
         interface.  these properties are reserved for use by custom policies
         and resolvers, respectively.

FEATURE: add [object exists] sub-command to determine if an opaque object handle
         represents a currently valid object.

FEATURE: add _Commands._Delegate base command implemenation for use by external
         applications and plugins.  this command is used to wrap an arbitrary
         delegate, making it easily callable from the script engine.  there are
         two modes.  the first is "raw" mode (i.e. method calls do not go
         through the core marshaller and the only supported type conversions are
         those that can be performed via Type.DefaultBinder).  the second is
         "normal" mode (i.e. method calls go through the core marshaller, using
         techniques very similar to [object invoke]).

FEATURE: add and expose the WriteViaIExecute method from the Utility class.
         this method is designed to be used by external applications and plugins
         for the sole and express purpose of writing to the standard output
         channel (or another channel of their choosing) via the [puts] command
         (or another command of their choosing).  this functionality could have
         been accomplished before by using the GetIExecuteViaResolvers and
         ExternalExecuteWithFrame methods of the Interpreter and Engine classes,
         respectively; however, the WriteViaIExecute method provides a far more
         convenient way to perform this task.

FEATURE: add -strictmember option to [object create], [object invoke], and
         [library call].

FEATURE: add -index and -trace options to [library call] for the sake of parity
         with the other commands that use the method overload resolution engine.

FEATURE: add Quiet environment variable to support the ability to disable user
         notifications for non-fatal errors even if the originating interpreter
         is unknown or has been disposed.

FEATURE: add eagle_platform(wow64) element that will be non-zero if the current
         process is running in the Win32-on-Win64 subsystem.

FEATURE: add -objectflags option to [object create], [object invoke], and all
         related commands that use FixupReturnValue.

FEATURE: add interactive #tclsh and #tclinterp commands to control native Tcl
         evaluation mode.  when native Tcl evaluation mode is enabled, all
         scripts entered interactively will be evaluated using the selected
         native Tcl interpreter, if available.

FEATURE: add interactive #histclear, #histfile, #histload, and #histsave
         commands to manage the command history for the interpreter.

FEATURE: add SourceTimeStamp to the [info engine] sub-command to query the
         source timestamp of the Fossil checkout for the assembly, if any.

FEATURE: add [after active] to check if the event loop is active.

FEATURE: add native Tcl package project (Garuda) to allow the Eagle library to
         be loaded and used from a Tcl interpreter via the native CLR API.  add
         the NativePackage class to Eagle to facilitate seamless integration.
         add setup that is capable of installing it into the installed ActiveTcl
         library location.

FEATURE: add -erroronempty option to [interp service] and to the IEventManager
         interface to cause an error to be returned when there are no more
         events to process (i.e. the event queue is empty).

FEATURE: add -nocomplain option to [tcl create] and [tcl command create] to
         prevent exceptions from being thrown during the disposal of bridged
         commands.

FEATURE: add -time option to [tcl cancel], [tcl eval], [tcl expr], [tcl source],
         and [tcl subst] to measure and report how long each operation takes.

FEATURE: add -time and -timevar options to [sql execute] to allow profiling of
         queries against a database connection.

FEATURE: add -args option to [regsub] to enable special handling of \P (i.e. the
         original "exp" argument), \I (i.e. the original "string" argument), and
         \S (i.e. the original "subSpec" argument) backslash escape sequences in
         the subSpec argument (these are typically used with [regsub -eval] to
         provide additional context).

FEATURE: add -nostrict option to [regsub] to enable alternative handling of
         backslashes in the subSpec argument.  if enabled, causes any backslash
         not followed by an ampersand, a decimal digit, or another backslash to
         be ignored (i.e. the character following the backslash will be inserted
         verbatim into the output string).

FEATURE: add -options option to the [string compare] and [string equal]
         sub-commands to help control the string comparison when the -culture
         option is used.

FEATURE: add -comparison option to the [string compare], [string equal],
         [string first], and [string last] sub-commands to control the string
         comparison type used when the -culture option is not used.  also, add
         -nocase option to the [string first] and [string last] sub-commands.

FEATURE: add -policies, -deny, and -preInitialize options to the PowerShell
         cmdlet.

FEATURE: *BREAKING CHANGE* add LibraryPath and AutoPathList properties to the
         IInterpreter interface.  modify several overloads of the Create method
         for the Interpreter class to permit these values to be specified at
         creation time.  modify auto-path handling to take these new properties
         into account.

FEATURE: *BREAKING CHANGE* add InterpreterSettings class to for streamlined
         interpreter creation with exactly the required options and settings.

FEATURE: *BREAKING CHANGE* add -exceptions option to the [tcl eval], [tcl expr],
         [tcl source], and [tcl subst] commands.

FEATURE: *BREAKING CHANGE* add -qualified option to [object members] to return
         assembly qualified type names when returning type signatures.

FEATURE: *BREAKING CHANGE* add a pre-init script argument to the Create method
         of the Interpreter class.  this script, if not null, is guaranteed to
         be evaluated prior to the init script.  also, add the PreInitialize
         method to the IInterpreter interface.

************************* Beta 1.0.4093.38850 RELEASE *************************

BUGFIX: when checking for breakpoints from the Engine.IsCanceled method, make
        sure the debugger is not already active.

BUGFIX: make the PathOps.GetBinaryPath method work under integrated-pipeline
        mode (IIS7+).  also, do general cleanup and add diagnostic messages.

BUGFIX: the [string first] and [string last] sub-commands should always use
        ordinal string comparisons.

BUGFIX: fix truncated backslash escape sequence handling in the parser, see SF
        bug #3200987.

BUGFIX: when [flush] is called for a channel (including stdout and stderr) that
        does not yet have any writers created (i.e. because [puts] has not been
        called on it first), it fails.

BUGFIX: in the engine, reset error information for non-error return codes while
        unwinding the evaluation stack.

BUGFIX: the interpreter nesting level should not be modified when executing
        interactive commands via the ExecuteInteractiveCommand method.

BUGFIX: the [tcl load] command should skip searching alternate locations when a
        file name is specified.  in this case, the find flags were not being
        honored by the LoadTcl method of the Interpreter class.  also, both the
        per-user and per-machine registry keys are checked for Tcl installs.

BUGFIX: the file name patterns used to find installed Tcl libraries on Mac OS X
        should not be case-sensitive.  also, cleanup the naming and scoping
        conventions used by the pattern-related static data.

BUGFIX: the debugger should be set active prior to the execution of interactive
        commands since they can now cause the evaluation engine to be used.

BUGFIX: modify the Mono runtime version checking to account for minor versions
        with more than one digit.

BUGFIX: manage commands and hidden commands in a way that allows commands to use
        the same names as hidden commands (COMPAT: Tcl).

BUGFIX: fix typo in PrivateGetProcedure where the name was being used instead of
        the token.

BUGFIX: hold the interpreter lock during the [interp hidden] command.

BUGFIX: the test tclLoad-1.2 cleanup script should not assume the setup script
        was successful.

BUGFIX: add missing refCount test constraints to the library-1.1.*, library-3.*,
        library-4.1, and object-6.1 tests.

BUGFIX: return the full test output as the result of [test1] and [test2] even
        when handling nested tests.

BUGFIX: fix incorrect errorInfo being reported by the engine when error handling
        related flags are passed to the EvaluateScript method.

BUGFIX: the updater should ignore the in-use copy of itself when performing an
        update.

BUGFIX: prevent the updater from raising an exception when a duplicate release
        is encountered in the parsed release data.

BUGFIX: when a project file sets the SignAssembly property to false it should
        set the DelaySign property to false as well.

BUGFIX: when compiling for Mono, disable all compiler warnings that are known to
        be false alarms.  technically, the warnings are valid; however, the code
        is correct and the warnings are known to be harmless.

BUGFIX: when compiling for Mono, work around the goto related compiler bug (Mono
        bug #671488).

BUGFIX: the updater should not report an exception when the update process has
        simply been canceled.

BUGFIX: the updater should properly support UAC (User Account Control) when
        running on Windows Vista or later.  this includes having an embedded
        manifest that requires full administrator rights and detecting when
        these rights are actually present.  we need these rights because Eagle
        will typically be installed per-machine (i.e. either in %ProgramFiles%
        or a similarly privileged location).

BUGFIX: fix help for the interactive #subst command.  also, fix error message
        for the interactive #vinfo command.

BUGFIX: fix value of the $eagle_platform(culture) variable.  it should be the
        culture for the assembly, not the current culture.

BUGFIX: the SSL certificate checking used by the software update checking
        mechanisms [in the library and the updater] should allow for any valid
        certificate (i.e. one that would have been seen as trusted without the
        custom SSL certificate checking in place) in addition to the custom
        software updates SSL certificate.

BUGFIX: support checking for administrator rights when built without the NATIVE
        compile-time option.  unfortunately, Mono does not handle UAC elevation
        checking in their WindowsPrincipal class implementation and [as of Mono
        2.8.2] does not correctly handle P/Invoke using an ordinal entry point
        (Mono bug #636966); therefore, checking for administrator rights never
        works correctly on Mono for Windows.

BUGFIX: remove unnecessary optional argument handling for the interactive #iinfo
        command.

BUGFIX: exclude the proper files from the Core and Runtime binary SFX archives.

BUGFIX: *BREAKING CHANGE* modified how the local flags are managed by the code
        in the interactive loop.  previously, the interactive commands used to
        change the local engine, substitution, and event flags were not useful
        because the flags would always be reset prior to the evaluation of the
        next interactive command or script.

REFACTOR: update Fossil tool w/source to latest release version 20110316111914.
          this is a custom built binary that supports SSL and has been signed
          with an Authenticode certificate.

REFACTOR: modify the interactive #clearr, #copyr, #fresr, #lrinfo, #mover,
          #mrinfo, #nullr, #resr, #rinfo, and #setr commands to prevent the
          local result from being displayed because they either already show it
          or set it to some predefined state.

REFACTOR: modify the interactive #show command to avoid modifying the local
          result (even in the event of an error).

REFACTOR: revise empty result checking logic in the WriteResultInfo method of
          the default host.  the result should not be considered empty if the
          return code does not indicate success.

REFACTOR: make the naming of internal EventWaitHandle variables more consistent
          and correct.

REFACTOR: modify [info varlinks] to prevent undefined links being returned.

REFACTOR: rename some local variables and private methods in the TclWrapper
          class to be consistent.  also, revise logic in the Select method to
          avoid deeply nested if statements.

REFACTOR: add unsupported third-party hooks into the Tcl library recognition
          algorithm via optional extra regular expressions.

REFACTOR: the ResultList class needs a ToString method overload with a custom
          separator.  also, the semantics of the ToRawString method should be
          consistent accross the ArgumentList, ResultList, StringList, and
          StringPairList classes.

REFACTOR: modularize and reorganize the settings management code in the
          EagleServices project.

REFACTOR: keep track of the primary thread (i.e. the thread that the library was
          actually initialized on).

REFACTOR: make the sizing and spacing of controls consistent for the updater
          form.  also, modify the form title text to include the version of the
          updater.  finally, modify the default log file name to include the
          assembly name of the updater.

REFACTOR: for formal parameters and variable declarations, use IPair, IAnyPair,
          ITriplet, and IAnyTriplet instead of Pair, AnyPair, Triplet, and
          AnyTriplet, respectively.  also, use IPair<string>, IPair<object>,
          ITriplet<object> instead of StringPair, ObjectPair, and ObjectTriplet,
          respectively.  finally, add IMutableAnyPair, IMutableAnyTriplet,
          MutableAnyPair, and MutableAnyTriplet (i.e. mutable versions of the
          *AnyPair and *AnyTriplet interfaces and classes).

REFACTOR: revise result handling for the Initialize and InitializeShell methods
          of the Interpreter class.  now, the result will be modified only upon
          failure.

REFACTOR: classes should only derive from the ScriptMarshalByRefObject class
          when the ISOLATED_INTERPRETERS and/or ISOLATED_PLUGINS compile-time
          options are enabled.

REFACTOR: the RemoteAuthorizer and RemoteObject nested classes within the
          Eagle._Tests.Default class should be sealed.

REFACTOR: revise the return value handling of the core marshaller for nested
          generic lists of simple types (e.g. IList<IList<T>>, where T is byte,
          int, string, etc).  add the TestGenericList nested class within the
          Eagle._Tests.Default class to aid in verifying this functionality.

REFACTOR: make the [button] and [toplevel] commands in the EagleToolkit project
          thread-safe.  also, fix the missing ObjectId attribute to the public
          delegate declared in the Toplevel form.

REFACTOR: revise the custom command policy implementation in the sample project.

REFACTOR: cleanup the custom WM_PAINT message handling in the TextProgressBar
          control used by the updater.

REFACTOR: add an optional delay before the updater checks to see if Eagle is
          running.

REFACTOR: clarify the prompt for test xaml-1.1.

REFACTOR: reorganize all members of the Interpreter class into appropriate
          categorized regions within the source file.

REFACTOR: move the GetFileScript, GetLibraryScript, GetStartupScript, and
          LinkVariable methods from the Interpreter class to the RuntimeOps
          class.

REFACTOR: move the TraverseCallStack method from the Interpreter class to the
          CallFrameOps class and rename it to Traverse.

REFACTOR: rename the ReturnCodeMessages property of the Interpreter class to
          TestReturnCodeMessages.

REFACTOR: cleanup resolver related flags and their associated semantics.  also,
          rename the Resolve* methods of the IResolveManager interface (and
          their associated identifiers) to Match*.

REFACTOR: make handling of the compile-time option list more robust.

REFACTOR: update the Tcl TIP #285 integration functionality.

REFACTOR: update System.Data.SQLite integration and add tests.

REFACTOR: add stack reserve and commit to the result of [debug stack].

REFACTOR: cleanup extraneous using statements in the updater code.  also, reset
          the maximum value for the progress bar after using the animation hack
          [on Windows Vista or later].

REFACTOR: the updater status display should not be reset after the process has
          completed.

REFACTOR: revise handling of the WhatIf option to the updater.  when an attached
          debugger is present, this option will still default to true; however,
          it can now be overridden via the command line.

REFACTOR: make all header section colors uniform by default.

REFACTOR: skip the winForms-8.1 tests when running on Mono (Mono bug #665981).

REFACTOR: add IGetClientData, IHaveClientData, and ISetClientData interfaces to
          manage the clientData for an entity.

REFACTOR: cleanup and modularize display handling of variable (IVariable) and
          object (IObject) information by the default host.

REFACTOR: cleanup and modularize the interactive input processing code, removing
          the code duplication with the #queue interactive command.  also, add
          more diagnostics to the help troubleshoot any issues that may arise,
          especially on Mono.

REFACTOR: rename the Cancel method of the IDebugger interface to Reset.  add an
          Initialize method to the IDebugger interface to reset the internal
          debugging state to its initial default (i.e. enabled and inactive).

REFACTOR: revise handling of root registry keys by the SetupOps and TclWrapper
          classes.

REFACTOR: *BREAKING CHANGE* modify argument handling for the [parse command],
          [parse expression], and [parse script] sub-commands.  the substitution
          flags are now an option.  also, add options for the starting index and
          the number of characters to consume.

REFACTOR: *BREAKING CHANGE* remove the obsolete prefix parameter from the
          WriteFlagInfo methods of the IInformationHost interface.

REFACTOR: *BREAKING CHANGE* rename WriteHistory methods of the IInformationHost
          interface to WriteHistoryInfo.  also, these methods should validate
          the interpreter and history list prior to accessing them.

REFACTOR: *BREAKING CHANGE* add the assembly name, assembly culture, release
          notes, and protocol Id to the update.txt file.  also, modify the build
          tools and the updater to handle these changes.  unfortunately, this
          will break the interactive #check command in all previous versions of
          Eagle.  the final format of the update.txt file will be locked down
          prior to RTM.

REFACTOR: *BREAKING CHANGE* rename the CopyReturnInformation method of the
          IInterpreter interface to CopyErrorInformation.

REFACTOR: *BREAKING CHANGE* the LoadPlugin method should not attempt to actually
          add the newly loaded plugin to the interpreter.  add another overload
          of the UnloadPlugin method that unloads a plugin without requiring it
          to be present in the interpreter.

REFACTOR: *BREAKING CHANGE* start cleanup work on the IInterpreter interface by
          breaking various pieces off into their own sub-interfaces.  the new
          IEngineManager interface is for executing commands and evaluating
          scripts.  the new IEntityManager interface is for checking, fetching,
          adding, and removing entities.  the new IHistoryManager interface is
          for managing the per-thread execution history.  the new
          IPackageManager interface is for high-level package management (e.g.
          present, provide, and require).  the new IPluginManager interface is
          for loading, unloading, and interfacing with plugins.  the new
          IResolveManager interface is for managing and interfacing with the
          list of resolvers.  the new IResourceManager interface is for fetching
          needed resources (e.g. error message strings).  the new
          ISecurityManager interface is for managing the security settings of
          "safe" interpreters.  the new ITclManager interface is for loading,
          unloading, and interfacing with native Tcl libraries.  the new
          IVariableManager interface is for adding, checking, getting, setting,
          and unsetting variables and their values.

FEATURE: add interactive #prevr command to set the local result to previous
         result for the interpreter.

FEATURE: add interactive #nextr command to set the previous result for the
         interpreter to the local result.

FEATURE: add interactive #overr command to set the local return code and result
         to the specified value.

FEATURE: add [debug function] and [debug operator] sub-commands to enable the
         ability to set breakpoints on functions and operators.

FEATURE: add -verbatim option to [sql execute].  using this option prevents the
         parameter value string from being automatically converted to another
         type via the Value.GetValue method.

FEATURE: add -string option to [split].  this option is useful when a delimiter
         consists of multiple characters.

FEATURE: support finding Tcl stardlls created by the KitCreator tool.  special
         thanks goes to Roy Keene for providing these valuable resources to the
         Tcl community.

FEATURE: add interactive #reset command to reset the debugger to its default
         initial state (i.e. enabled and inactive).

FEATURE: add official shortcut keys to the updater for viewing the log file
         (Ctrl-L), launching an external shell (Ctrl-E), or starting an internal
         shell (Ctrl-F2).  in order to start an internal shell successfully, the
         -shell command line option must have been specified on startup.

FEATURE: support overriding the interpreter instance flags through the use of an
         environment variable named InterpreterFlags.

FEATURE: add support to the build tools for tagging and building the official
         NuGet.org and SymbolSource.org packages.

FEATURE: add [info ptid] sub-command to return the primary thread Id for the
         library.

FEATURE: expose the Utility.FormatId method for use by applications and plugins.

FEATURE: add interactive #lfinfo command to display the local flags.  changed
         the #finfo command to display the flags passed to the interactive
         debugging session.

FEATURE: add interactive #oinfo command to display detailed information about
         the specified object.  also, add WriteObjectInfo methods to the
         IInformationHost interface.

FEATURE: add -index option to [object create] and [object invoke].  this option
         is used to select a method index from the list of method overloads
         matching the arguments specified in the call; otherwise, the first
         matching method overload is selected (previously, this was the only
         behavior possible).

FEATURE: add Culture to the [info engine] sub-command to query the culture for
         the assembly, if any.

FEATURE: add -noStatistics option to [test2] to prevent any test statistics for
         the interpreter from being modified.

FEATURE: new -version command line option and #version interactive command to
         display detailed version information.

************************* Beta 1.0.4031.13865 RELEASE *************************

BUGFIX: modify the source arhiving tool to exclude the redundant web service
        configuration file created during the build process.

BUGFIX: modify the release preparation tool to enable isolated interpreters by
        default in the appropriate build configurations.

BUGFIX: report the correct result from the [host reset] sub-command.

REFACTOR: add ResetFlags method to the IHost interface.

REFACTOR: *BREAKING CHANGE* rename the STRICT_VERBS compile-time option to
          APPROVED_VERBS.  also, enable it by default and make it easy to change
          via the MSBuild command line using the EagleApprovedVerbs property,
          see CodePlex bug #8009.

REFACTOR: *BREAKING CHANGE* modify the IInterpreter and IScriptBinder interfaces
          to expose their binder members as IBinder interfaces instead of using
          the Binder abstract type.

FEATURE: add -flags option to the [host reset] sub-command.

************************* Beta 1.0.4010.41132 RELEASE *************************

BUGFIX: skip trying to normalize the file name returned by [info script] if it
        is a remote URI.

BUGFIX: make sure the updater avoids file locking issues when trying to update
        itself.

BUGFIX: use correct default regular expression options for [test1] and [test2].

BUGFIX: the AttributeFlags.Have method should match any of the specified flags
        when the have-all option is false.  also, modify the behavior slightly
        for invalid flag characters when the new strict option is true.

BUGFIX: the [object interfaces] and [object namespaces] sub-commands should make
        sure their respective data is actually available before attempting to
        use it.

BUGFIX: test excel-2.2 should cleanup after itself even after failing.

BUGFIX: unload the previously loaded native module, if any, when Resolve method
        of the NativeDelegate class is called.  also, miscellaneous cleanup to
        several methods of this class.  revise and enhance the library-1.* tests
        to check for this behavior.

BUGFIX: add missing directories to the clean tool.

BUGFIX: the DelegateDictionary, EnumDictionary, and ExecuteCallbackDictionary
        classes should be serializable.

BUGFIX: *BREAKING CHANGE* the DecimalDictionary, DoubleDictionary, and
        SingleDictionary classes should not be public.  also, these classes
        should be serializable.

BUGFIX: *BREAKING CHANGE* the Script class now derives from MarshalByRefObject;
        otherwise, isolated script policies cannot work correctly.

REFACTOR: the IsNowClean and IsNowDirty methods of the Variable class should be
          static.  the GetHostColors method of the Interpreter class should also
          be static.

REFACTOR: change the default command history display limit from 3 to 20.

REFACTOR: move static AppDomain management methods from the Interpreter class to
          the RuntimeOps class.

REFACTOR: revise internal handling for the ObjectInterfaces and ObjectNamespaces
          properties of the Interpreter class.

REFACTOR: revise ScriptBinder workaround for redundant type conversion requests
          when running on Mono (Mono bug #471359).

REFACTOR: centralize the default regular expression options for [regexp],
          [regsub], [test1], and [test2].

REFACTOR: for the updater, improve handling of the WhatIf option.  also, enable
          the WhatIf option automatically when running under a debugger.

REFACTOR: revise the [tcl] usage example script in the Example project to use
          [vwait] instead of [update].  also, cancel any pending events when
          exiting.

REFACTOR: revise error message for [after cancel].

REFACTOR: support non-default build types in the updater.

REFACTOR: add an event notification for objects disposed via the RemoveObject
          methods of the Interpreter class.

REFACTOR: revise how COM objects that implement multiple interfaces are handled
          by the core marshaller.

REFACTOR: rename various private container classes, including all the classes
          that derive from the WrapperDictionary class.

REFACTOR: *BREAKING CHANGE* rename the public classes StringEnumDictionary,
          StringIntDictionary, StringLongDictionary, and StringObjectDictionary
          to remove the word String.

REFACTOR: *BREAKING CHANGE* include the assembly text attribute value in the
          result of [version].

REFACTOR: *BREAKING CHANGE* revise the results of the [object interfaces] and
          [object namespaces] sub-commands to be name/value pairs (the value
          being the name of the logical container, which is typically the name
          of the containing assembly).  also, add -bycontainer option to both
          sub-commands to restrict the matches based on the logical container
          name.

REFACTOR: *BREAKING CHANGE* replace the -isolated option of [test2] with the new
          -isolationLevel option.  see the IsolationLevel enumeration for a list
          of supported values.

FEATURE: support creation of interpreters in isolated application domains via
         the new InterpreterHelper class.  the test xaml-1.2 exercises this new
         functionality.

FEATURE: add the -container option to [object import] to specify the logical
         container name (e.g. the name of the containing assembly) for any
         manually imported namespaces.

FEATURE: add [object type], [object types], and [object untype] sub-commands to
         manage type name lookups.  the [object type] sub-command can be used to
         associate an arbitrary string with a type name.  the [object types]
         sub-command returns the list of type name associations.

FEATURE: add the ExecutionPolicy enumeration for use by external file and script
         policies.

FEATURE: expose the IsSoftwareUpdateTrusted and SetSoftwareUpdateTrusted methods
         to external applications and plugins via the Utility class.  also, add
         verbose diagnostic output to the IsSoftwareUpdateCertificate and
         SetSoftwareUpdateTrusted methods.

FEATURE: add Text to the [info engine] sub-command to query the arbitrary text
         embedded within the assembly at compile-time, if any.

************************* Beta 1.0.3993.40193 RELEASE *************************

BUGFIX: inside the interactive loop, re-check the exit flag for the interpreter
        after read a line of input just in case another thread modified it (i.e.
        do not try to process a command, interactive or otherwise, for an
        interpreter that should no longer be used).

BUGFIX: make sure the test suite can run successfully on a secondary thread.
        also, make sure all created threads that need a user interface are
        created as single-threaded apartments.

BUGFIX: make sure that opaque object handle names are not looked up more than
        once per value during method overload resolution.

BUGFIX: the ChangeType method of the ScriptBinder should check for redundant
        type conversion requests and simply ignore them when running on Mono
        (Mono bug #471359).

BUGFIX: properly dispose of HashAlgorithm objects used by the [hash] command.

BUGFIX: make sure the ReturnCodeMessages property of the TestContext class gets
        initialized for each thread in use.

BUGFIX: the [exit] command should dispose of the active interpreter when the
        -force option is used.

BUGFIX: avoid throwing ObjectDisposedException from inside the Dispose method of
        the Interpreter class (ContextManager).

BUGFIX: fix incorrect usage of the Interpreter.Interactive property by the form
        in the EagleTest project.

BUGFIX: when using [after] to sleep, an empty result must be returned.

BUGFIX: fix some MarshalByRefObject-related issues with the Interpreter class.
        also, make the FixupReturnValue method work properly in an isolated
        AppDomain.

BUGFIX: the CommandCallback class should not dispose thread-specific interpreter
        state when running on the primary thread.

BUGFIX: the encodings provided by the core library should be serializable.

BUGFIX: the FixupReturnValue method should not attempt to dispose objects when
        it has been forbidden from doing so via the NoDispose flag.

BUGFIX: the ObjectTraceCallback method should not attempt to decrement any
        reference counts for old opaque object handle names contained within
        undefined variables.

BUGFIX: single-element lists should be shimmered when [expr] needs to interpret
        an argument as a numeric value.

BUGFIX: only cache StringList, ParseState, and ExpressionState objects below an
        acceptable size threshold.

BUGFIX: catch and report failures of the IInformationHost methods initiated by
        interactive commands.  also, make the host feature error messages more
        consistent.

BUGFIX: make sure that [after] does not return immediately for small wait times.

BUGFIX: all [package ifneeded] scripts must be evaluated in the global scope.

BUGFIX: terminate packages instead of simply clearing them (i.e. they are not
        necessarily simply data objects).

BUGFIX: fix the ObjectFlags checking in overloads of the Interpreter.GetObject
        method that accept an object value and return the associated opaque
        object handle name and IObject.

REFACTOR: correct the handling of script cancellation notifications in the
          EagleTest project (i.e. restart processing of asynchronous events
          after the script cancellation has been processed).  also, modify the
          user interface to work on screens with less vertical space.

REFACTOR: add overload of the QueueEvent method that provides access to the
          created IEvent objects to the IEventManager interface.  add similar
          overloads of the QueueScript method for both the IEventManager and
          IInterpreter interfaces.  also, change the minimum wait time for the
          EventManager class to 50 milliseconds.

REFACTOR: mark all commands in the core command set with the Core command flag.

REFACTOR: when the target .NET Framework property has been forced to version 2,
          define the NET_20_ONLY compile-time option.

REFACTOR: reduce the use of the interpreter lock by the engine.  also, revise
          the use of the interpreter engine flags by the engine.  all the stack
          checking and error handling related engine flags are now handled on a
          per-thread basis when the THREADING compile-time option is enabled.

REFACTOR: cleanup and move core package handling from the _Packages.Default
          class to the _Packages.Core class.  also, in the Interpreter class,
          cleanup and limit the places that access the private collection of
          packages directly.

REFACTOR: slightly revise handling of the binary and package paths in the test
          suite.  also, detect and test isolated plugin support.

REFACTOR: add overloads of the Substitute* methods that accept a substitution
          flags argument to the Interpreter class.

REFACTOR: allow use of the [exit] command by "safe" interpreters; however, the
          -force and -fail options are disallowed.

REFACTOR: modify the handling of variable traces and event notifications.  there
          are now separate flags to disable tracing and/or event notifications
          on a per-variable or per-call basis.

REFACTOR: make sure that none of the supporting code for isolated plugins gets
          compiled unless the ISOLATED_PLUGINS compile-time option is enabled.

REFACTOR: fix performance issue in the list element building algorithm.

REFACTOR: the WiX extension now uses the Evaluate* and Substitute* methods
          provided by the Interpreter class.

REFACTOR: prevent global event notifications for active-interpreter related
          events from being compiled into the library unless the NOTIFY,
          NOTIFY_GLOBAL, and NOTIFY_ACTIVE options are enabled at compile-time.

REFACTOR: add simpler overload of GlobalState.GetPackageName and cleanup usage.

REFACTOR: make [test2] usage of the OptionFlags.NoCase flag consistent.

REFACTOR: cleanup usage of all serialization related attributes (i.e. only use
          them when the SERIALIZATION compile-time option is enabled).

REFACTOR: cleanup test suite usage of the [after flags] sub-command.

REFACTOR: modify the package output path to include the package version, if any.

REFACTOR: revise handling of interactive loop input that consists entirely of
          whitespace.

REFACTOR: make the GetAny method of the Interpreter class check the active
          interpreter for the thread first.  also, promote it to public.

REFACTOR: modify the Argument and Result classes to support implicit conversions
          from the byte and ByteList types.

REFACTOR: add support for low-priority command and variable resolvers.

REFACTOR: move the script debugger to engine context data when the THREADING
          compile-time option is enabled.

REFACTOR: add Plugin property to the private IOperatorData interface.  modify
          the AddOperator methods of the Interpreter class accordingly.

REFACTOR: remove use of new for byte and char arrays where it is not required.

REFACTOR: cleanup command line argument handling for the shell.

REFACTOR: *BREAKING CHANGE* avoid creating a TraceInfo object each time a
          variable is read, set, or unset.  there is now one TraceInfo object
          per-thread and it will be re-used as necessary.  any trace callback
          that needs to evaluate scripts or access [other] variables MUST now
          save and restore the traceInfo object; otherwise, the results are
          undefined.

REFACTOR: *BREAKING CHANGE* revise handling of event notification types and
          flags to make per-thread notifications more robust.

REFACTOR: *BREAKING CHANGE* modify the EventFlags.Service flag value to exclude
          [after] events.  going forward, applications and plugins should use
          the ServiceEventFlags property of the interpreter instead of using
          constant flag values.

REFACTOR: *BREAKING CHANGE* make the event notification data for entity removal
          events more consistent (i.e. always include the entity being removed
          along with the name or token).

REFACTOR: *BREAKING CHANGE* add FunctionTokens property to the IFunctionData
          interface.  also, keep the list of function tokens updated when a
          function is added or removed.

REFACTOR: *BREAKING CHANGE* add Plugin property to the IFunctionData interface.
          modify the AddFunction methods of the Interpreter class accordingly.

REFACTOR: *BREAKING CHANGE* rename the SetupCallback method of the IPolicy
          interface to Setup and move it to a new interface named ISetup.

REFACTOR: *BREAKING CHANGE* revise termination semantics for all entities that
          implement the IState interface.  if a call to the Initialize method
          fails, the Terminate will now be called.

REFACTOR: *BREAKING CHANGE* procedures no longer support state management via
          the IState interface.  this feature was never fully implemented and
          should not be necessary.

REFACTOR: *BREAKING CHANGE* completely revise entity management for traces.
          this is a necessary prerequisite to allowing isolated plugins to
          contain and manage traces.  all methods of the Interpreter class that
          took a TraceCallbackList now take a TraceList instead.

REFACTOR: *BREAKING CHANGE* rename the -types option for [object invoke] and
          [object members] to -membertypes in order to avoid confustion.

REFACTOR: *BREAKING CHANGE* rename the RestoreCommands method of the Interpreter
          class to RestoreCorePlugin.

FEATURE: add [parse options] sub-command to expose the universal option parser
         to scripts.

FEATURE: add experimental support for using the [object] command in a "safe"
         interpreter.  for now, only the [object invoke] and [object invokeall]
         sub-commands are allowed and some of the options are unavailable or
         restricted (e.g. the member types and binding flags automatically mask
         off certain values that are not allowed).

FEATURE: add -type option to all commands and sub-commands that use the
         FixupReturnValue method.  add -returntype option to the [object invoke]
         sub-command.  this option allows the script to specify the type to be
         used as the basis for member lookups on the target object.  this option
         may be required to get the correct behavior if the object implements
         more than one interface.

FEATURE: add UpdateFile to the [info engine] sub-command to query the name of
         the remote file to fetch when checking for the latest release of the
         core library.

FEATURE: add updater project (Hippogriff) to make it easier to securely update
         an installed version of Eagle.  modify the necessary build tools to
         support this new project and its associated semantics.  add the
         necessary files to the setup.  modify the interactive #check command to
         launch the updater if the value 2 is used as the action argument.

FEATURE: add "Core" release type that includes only the core library itself.
         this release type is primarily for use by third-party applications.
         also, add "Runtime" release type that includes the minimal set of files
         required to use and maintain the core library and interactive shell.
         modify the necessary build tools to support these new release types.

FEATURE: add RemoveFunctions and RemoveTraces methods to the Interpreter class.
         also, make it possible to cleanly unload the core plugin.

FEATURE: add experimental -trace option to [object create] and [object invoke].
         currently, using this option causes debug output to be produced that
         pertains to the results of the method overload resolution engine.

FEATURE: add experimental -fast option to [object create] and [object invoke].
         currently, using this option causes all variable watches, traces, and
         notifications to be skipped for all ByRef arguments for the duration of
         the invocation.

FEATURE: add [object invokeall] sub-command to invoke multiple members of a type
         or object, in the specified order, with or without arguments.  the
         -invoke option can be used to force the current command to be treated
         as [object invoke] instead.  the -nocomplain option can be used to
         ignore all invocation errors.  the -keepresults option can be used to
         cause a list of return codes and results to be built and returned as
         the result.  if the -keepresults option is not specified, the result
         will be the literal string "Ok 0" if no errors were encountered;
         otherwise, it will be the literal string "Error #", where "#" is the
         number of errors that were encountered.

FEATURE: add -objectname option to [object invoke] (and friends).  if specified,
         this will override the (normally automatically assigned) name for the
         opaque object handle.

FEATURE: add -type option to [object invoke] to specify the type to be used as
         the basis for member lookup.  if specified, this type will override the
         type of the object being used.

FEATURE: add -aliasall option to [object invoke].  when used in combination with
         the -alias option, any created command aliases will refer to the
         [object invokeall] sub-command (i.e. instead of [object invoke]).

FEATURE: add -invokeall option to [object invoke] to force the current command
         to be treated as [object invokeall] instead.

FEATURE: add prototype add-in project for MonoDevelop.  at this point, it is a
         very rough proof-of-concept and will not be included with the official
         source code.

FEATURE: add [host title] sub-command to get and/or set the title of the host.

FEATURE: support custom hosts, math functions, and traces in isolated plugins.

FEATURE: support unloading isolated plugins via the UnloadPlugin method of the
         Interpreter class.  also, add new overload of the UnloadPlugin method
         that takes a plugin name.

************************* Beta 1.0.3972.10358 RELEASE *************************

BUGFIX: fix value of the $eagle_platform(shellPatchLevel) variable.

REFACTOR: constrain non-performance tests requiring precise timing to run only
          when it is actually available.

REFACTOR: *BREAKING CHANGE* rename _Constants.Timeout to _Constants._Timeout in
          order to avoid a name collision with System.Threading.Timeout.

FEATURE: add NoConsole environment variable to support the ability to disable
         the console when it has been enabled by default.

FEATURE: add example of multithreaded script evaluation to the EagleTest project
         via the new [report send] command.  the -asynchronous option can be
         used when the result of the evaluation is not required.  also, the
         -timeout option can be used to specify the script completion timeout,
         in milliseconds (synchronous mode only).

************************* Beta 1.0.3971.24908 RELEASE *************************

BUGFIX: fix [info level], etc (i.e. call frame visibility management) when the
        EvaluateGlobal engine flag is used (e.g. by the [after] command).

BUGFIX: fix stack size not being set properly on released binaries by forcing
        the .NET Framework 3.5 / Visual Studio 2008 binaries to be used when
        building via the release preparation tool.

BUGFIX: fix typo in the [interp] command class related to incorrect usage of the
        TryExecuteSubCommandFromEnsemble method.

BUGFIX: fix core marshaller handling for output parameters of enumerated types.

BUGFIX: fix typo in the [after enable] syntax error message.

BUGFIX: fix incorrect usage of the master interpreter by several sub-commands of
        [interp].

BUGFIX: when clearing events after a test, use the isolated test interpreter,
        not the main interpreter.

BUGFIX: allow the entire eagle_tests array to be unset.

BUGFIX: make [info exists] and [array] work with the global eagle_tests array.

BUGFIX: add missing NotifyFlags.Unwound flag to the NotifyFlags.All value.  add
        missing NotifyType.XmlBlock to the NotifyType.All value.

BUGFIX: fix isolated debugger interpreters not being initialized correctly.

BUGFIX: make sure the native Tcl integration tests cleanup after themselves even
        if there is a failure in the test setup script.

BUGFIX: the AddTrustedDirectories and AddTrustedUris methods of the Interpreter
        class should validate their arguments and avoid attempting to add
        duplicate entries.

BUGFIX: fix percentage faster reporting for the benchmark tests.

BUGFIX: fix [clock format -format %Z] when used with a time in UTC.

BUGFIX: fix boolean expression truth values for integer values that do not fit
        within a byte, see CodePlex bug #8141.

BUGFIX: fix [object resolve] when running on the .NET Framework 4.0 after having
        been compiled for the .NET Framework 2.0.

BUGFIX: make sure to clear the resolvers, traces, and runtime options for the
        interpreter after all the commands and plugins have been terminated.

BUGFIX: the EagleTest and EagleToolkit projects should prepare their plugins
        prior to adding them to the interpreter.

BUGFIX: the EagleTest example shell should actually do something when the Run
        button is pressed.  also, revise how the embedded script resources are
        included and used.

BUGFIX: acquire the interpreter lock prior to accessing or modifying the list of
        trusted paths.

BUGFIX: prevent any runtime option information from being leaked into "safe"
        interpreters.

BUGFIX: acquire the master lock prior to setting up the lists of "safe" variable
        names.  also, synchronize these lists with code in the SetupPlatform,
        SetupHome, and Setup methods.

BUGFIX: make the "?", "??", and "???" command line options work properly again.

BUGFIX: fix stdout/stderr output checking for the [test2] command so that a
        failure is reported if no output is produced when some is expected.

BUGFIX: prevent the clock-1.1.1 test from using the current time zone.

BUGFIX: break the infoPlugin-1.1 test into Windows and Unix variants.

BUGFIX: the addToPath script library procedure should not assume the necessary
        environment variables already exist.

BUGFIX: prevent any Windows Forms tests from running on non-Windows platforms
        unless the DISPLAY environment variable has been defined.  this is
        needed on Mono to work around an issue where it will hang when repeated
        attempts to create a form fail due to the X server being unavailable.

BUGFIX: make sure that [vwait] does not stop processing events when a background
        error is raised (COMPAT: Tcl).

BUGFIX: allow [object create] to work with non-primitive value types that have
        no constructors.

BUGFIX: if the global env or global eagle_tests array is unset, be sure to clear
        any pending waits on them.

BUGFIX: in the engine, do not assume that Environment.NewLine is a cr/lf pair.
        special thanks to Stuart Cassoff for helping me track this down.

BUGFIX: correct all the remaining MarshalByRefObject-related warnings when the
        ISOLATED_PLUGINS compile-time option is enabled.

BUGFIX: make the Compare, Equals, and GetHashCode methods of the _Comparers.Pair
        class more robust (i.e. properly check for null objects).

BUGFIX: prevent an active Debugger object from being disposed from scripts.

BUGFIX: the active interpreters need to be kept track of on a per-thread basis.

REFACTOR: prevent global event notifications (and the supporting methods) from
          being compiled into the library unless the NOTIFY and NOTIFY_GLOBAL
          options are enabled at compile-time.

REFACTOR: do not send global notifications to "safe" interpreters.

REFACTOR: remove unnecessary direct field access for the various flags fields of
          the Interpreter class (e.g. createFlags, engineFlags, etc).  also,
          cleanup the remaining direct field access for all the flags fields.

REFACTOR: remove all unnecessary inheritance from and use of the IGetInterpreter
          and IHaveInterpreter interfaces (e.g. ICallback, IParseState, IScript,
          etc).

REFACTOR: have the debug-5.* tests use the host width for the length of text to
          write.

REFACTOR: cleanup usage of threads by the test suite.

REFACTOR: cleanup usage of [catch] by the test suite.

REFACTOR: cleanup implementation and usage of the TryDisposeObject method.

REFACTOR: move all event management from the Interpreter class to the new
          EventManager class.

REFACTOR: move all context management from the Interpreter class to the new
          ContextManager class.  also, revise the related disposal semantics.

REFACTOR: use static factory methods for all the common cases of call frame
          creation.

REFACTOR: the Pair and Triplet container classes now derive from the AnyPair and
          AnyTriplet generic classes, respectively.

REFACTOR: cleanup use of internal method visibility by internal classes.

REFACTOR: revise the object group assignments for the branching, looping and
          script environment related commands.

REFACTOR: make the internal processing of unknown options more flexible, based
          on flags specified by the caller.

REFACTOR: the #ainfo interactive command can now be used even when no argument
          list is available.

REFACTOR: cleanup the getCompileInfo and getPlatformInfo procedures in the
          script library.

REFACTOR: revise the opaque object handle names for client and server sockets.

REFACTOR: add the ApplicationObject and UserObject properties to the interpreter
          display of the default host.

REFACTOR: add the ScriptDecision, PolicyTrace, and TrustedPaths properties to
          the engine display of the default host.

REFACTOR: tighten up all the performance tests based on the measured relative
          performance of the machine they are being executed on.

REFACTOR: add new MethodFlag and PolicyFlag values to support the declaration
          and use of sub-command policies.

REFACTOR: add IHaveInterpreter interface to simplify using the IGetInterpreter
          and ISetInterpreter interfaces on the same class.

REFACTOR: by default, enable use of the CacheDictionary class for the internal
          caches.

REFACTOR: rename the methods in the ConsoleOps class to remove redundant use of
          the word Console.

REFACTOR: modify how XML script block loading is handled, allowing script block
          policies to check each one as it is being loaded.  add ScriptDecision
          property to the IInterpreter interface, representing the default
          policy decision for script blocks.

REFACTOR: cleanup naming for some local DateTime and ObjectList variables.

REFACTOR: revise handling of the operating system and CLR versions.

REFACTOR: carefully rework internals of the [vwait] command to be slightly more
          precise and far less processor intensive.

REFACTOR: *BREAKING CHANGE* remove the obsolete commands [getf], [setf], and
          [unsetf].  if you require these commands, they may be restored via the
          OBSOLETE compile-time option.

REFACTOR: *BREAKING CHANGE* it is time for a huge cleanup of the Interpreter
          class.  move almost all logically-global static read-only and
          read-write data to the new GlobalState class, including all cached
          assembly metadata, all package data, and all path data.  move almost
          all static methods from the Interpreter class to various internal
          helper classes, including: AssemblyOps, AttributeOps, CallFrameOps,
          CertificateOps, EntityOps, FlagOps, GlobalState, HelpOps, RuntimeOps,
          TestOps, ThreadOps (almost all of these classes are new).  the biggest
          external breaking change is the removal of all static utility methods
          from the Interpreter class [to the Utility class], including:
          BadSubCommand, BadValue, BuildCommandLine, CustomErrorCode,
          CustomOkCode, DetectLibraryPath, ExceptionExitCode,
          ExitCodeToReturnCode, ExtractPolicyContextAndCommand,
          ExtractPolicyContextAndFileName, ExtractPolicyContextAndScript,
          FailureExitCode, FormatResult (all overloads), GetAssemblyCertificate,
          GetAssemblyUri, GetBinaryPath, GetCommandFlags (all overloads),
          GetEnvironmentVariable, GetNotifyFlags, GetNotifyTypes, GetObjectId
          (all overloads), GetPackageName, GetPackagePath, GetPluginFlags (all
          overloads), HasFlags (all overloads), IsSuccess, PrepareStaticPlugin,
          ReturnCodeToExitCode, SetBasePath, SetLibraryPath, SuccessExitCode,
          TryExecuteSubCommandFromEnsemble, and WrongNumberOfArguments.  also,
          move the static LooksLikeOption and EndOfOptions members to the Option
          class.  make the HasCancelThread, InterruptCancelThread, and
          StartCancelThread methods private.  remove the GetMasterInterpreter
          and NextGlobalId methods.  remove the AllInterpreters property.

REFACTOR: *BREAKING CHANGE* all methods of the Engine class that accept flag
          arguments now require an EventFlags argument.  authors of applications
          and plugins are now officially encouraged to use the non-static
          Evaluate* and Substitute* methods of the Interpreter class whenever
          possible, instead of using the Engine class directly.  add overloads
          for the Evaluate* and Substitute* methods to the IInterpreter
          interface to help support this.  all code in the Eagle core library
          now conforms to this convention.

REFACTOR: *BREAKING CHANGE* make the Engine.CheckEvents method private.

REFACTOR: *BREAKING CHANGE* rename the [object import -package] option to
          -assembly.

REFACTOR: *BREAKING CHANGE* rename various flags in the CreateFlags enumeration
          to be more consistent.  also, the Debug flag now means something
          totally different than before.  the Debugger flag should now be used
          where the Debug flag was used before.

REFACTOR: *BREAKING CHANGE* spell out the names of the evaluate, postInitialize,
          preInitialize, pluginTest, and testDirectory command line options.  to
          minimize the impact of this change, prefix matching is now enabled for
          all command line options.

REFACTOR: *BREAKING CHANGE* move the Token property of the IWrapper interface to
          a new interface named IWrapperData.  all classes with associated
          wrapper classes [and their associated data passing interfaces/classes]
          must now implement the IWrapperData interface.

REFACTOR: *BREAKING CHANGE* all entities with an associated wrapper class will
          now use the new WrapperDictionary class as the base class for their
          associated dictionary classes.  this allows for O(1) hash lookups
          based on the name or token.  make the Get*, Add*, and Remove* entity
          management methods of the IInterpreter interface consistent, primarily
          by reordering their parameters and/or adding missing overloads.

REFACTOR: *BREAKING CHANGE* add new overloads of the HasChangeTypeCallback,
          HasToStringCallback, and ChangeType methods to the IScriptBinder
          interface.  move all the type conversion logic into the new overload
          of the ChangeType method and have all the other methods that require
          type conversions call it.  add DoesMatchType method and Debug property
          to the IScriptBinder interface.

REFACTOR: *BREAKING CHANGE* modify the Utility.ThrowFeatureNotSupported method
          to check the new Interpreter.ThrowFeatureNotSupported property before
          throwing an exception.

REFACTOR: *BREAKING CHANGE* modify the [interp policy] sub-command to specify
          the target command via new -type or -token options instead of a type
          formal argument.  add tests for [interp policy] and [interp nopolicy].
          this functionality is now officially supported.

REFACTOR: *BREAKING CHANGE* completely revise entity management for policies.
          this is a necessary prerequisite to allowing isolated plugins to
          contain and manage policies.  all public policy helper methods now
          accept a command token in addition to a command type to allow for
          faster lookups of the command to match against.

REFACTOR: *BREAKING CHANGE* rename PolicyData to PolicyContext, everywhere.

REFACTOR: *BREAKING CHANGE* add a volatile Plugin property to the IPolicyContext
          interface.  the value of this property will always be the plugin of
          the policy currently being invoked, if any (i.e. it may be null).

REFACTOR: *BREAKING CHANGE* the PolicyContext class now derives from the
          ScriptMarshalByRefObject class.

REFACTOR: *BREAKING CHANGE* the default wrapper class now derives from the
          ScriptMarshalByRefObject class.

REFACTOR: *BREAKING CHANGE* when using an embedded script library, set the
          tcl_library variable to the path and file name of the Eagle core
          library assembly.

REFACTOR: *BREAKING CHANGE* make sure that the breakpoint name is passed to the
          WriteArgumentInfo, WriteHeader, and WriteFooter methods of the
          IInformationHost interface.

REFACTOR: *BREAKING CHANGE* make the [time] command with an iteration count of
          negative one evaluate the script forever (i.e. until canceled).

REFACTOR: *BREAKING CHANGE* the default operator when parsing enumerated flag
          values is now ":" (set/add) instead of "+" (add).

REFACTOR: *BREAKING CHANGE* for consistency, rename the CompareSystemString and
          CompareUserString methods of the Utility class to CompareSystemStrings
          and CompareUserStrings.

REFACTOR: *BREAKING CHANGE* prevent script blocks and files from being loaded
          using fallback semantics if they have been denied by policy.

REFACTOR: *BREAKING CHANGE* make secondary overloads of the ReadScriptFile and
          ReadScriptStream methods of the Engine class private because they now
          require special flag handling semantics.

REFACTOR: *BREAKING CHANGE* add a Script property to the IPolicyData interface
          and the PolicyData class to support script block policies.

REFACTOR: *BREAKING CHANGE* rename GetExecute method of the IResolve interface
          to GetIExecute.

REFACTOR: *BREAKING CHANGE* rename several PolicyFlags to be more consistent
          with their usage.

REFACTOR: *BREAKING CHANGE* rename #restore interactive command to #restc.

FEATURE: *BREAKING CHANGE* add [info source] sub-command to return the full path
         and file name where the specified procedure was defined.  add Location
         property to the IProcedureData interface to keep track of the script
         location where a procedure is defined.

FEATURE: support randomizing the initial values for all the integer unique
         identifiers via the RANDOMIZE_ID compile-time option.

FEATURE: support a shared pool of integer unique identifiers for interpreters
         and global objects via the SHARED_ID_POOL compile-time option.  this
         does not change the behavior of the interpreter-specific (i.e. local)
         integer unique identifiers.

FEATURE: support overriding the interpreter creation flags through the use of an
         environment variable named CreateFlags.  modifications from this new
         environment variable are applied to the interpreter creation flags
         after all other changes.

FEATURE: add experimental support for following variable links during [vwait].
         Tcl does not support this; therefore, this feature may be disabled by
         default in the future.

FEATURE: add #restv interactive command to restore all the built-in variables
         for the interpreter.

FEATURE: add -noEvent option to the [test2] command.  setting this option causes
         the event queue for the interpreter to be cleared after evaluating the
         setup, body, and cleanup scripts.

FEATURE: add [tsource] procedure to run an unmodified Tcl test file.  all tests
         are routed through a special shim that wraps them in the standard test
         wrapper (i.e. runTest).  various other techniques may also be used to
         bypass Tcl and/or Tcltest functionality not available in Eagle.

FEATURE: add [object hash] sub-command to return the cryptographic hashes for
         the specified assembly.

FEATURE: add PolicyTrace property to the IInterpreter interface to allow policy
         tracing to be enabled or disabled at runtime.  also, cleanup the output
         produced when this property is enabled.

FEATURE: the Console host now supports detecting if the output and/or error
         channels have been redirected.  currently, this feature is limited to
         Windows.

FEATURE: add -verify and -flags options to the [library certificate] and
         [object certificate] commands.

FEATURE: *BREAKING CHANGE* the [break] and [continue] commands can now return a
         string value (i.e. they both can now accept an optional argument, which
         is the string value to return).

************************* Beta 1.0.3936.00949 RELEASE *************************

BUGFIX: fix issue with Authenticode signatures not having the full certificate
        chain attached to them.

BUGFIX: fix race condition for the parse state and list caches.

************************* Beta 1.0.3935.30806 RELEASE *************************

BUGFIX: add missing Tcl test constraints to the benchmark-1.21 and interp-1.4
        tests.  add missing Eagle test constraint to the infoPlugin-1.1 test.

BUGFIX: skip the object-6.1 and winForms-8.1 tests when running on Mono (Mono
        bug #645189).

BUGFIX: have the [puts] command always flush the output stream when running on
        Mono (Mono bug #645193).

BUGFIX: the [getTestRunId] procedure needs to work around Mono bug #636939.

BUGFIX: disable the [file drive] command when running on Mono as it does not
        implement the DriveInfo class on Windows.

BUGFIX: correct the method visibility and IDisposable handling for the Channel
        class.

BUGFIX: when adding a procedure, if there is an existing command with the same
        name and it cannot be removed, rollback all changes to the interpreter.

BUGFIX: do not use the StringOps.TrimLeadingColons method to modify the names
        that get passed to the resolver(s).

BUGFIX: correct WiX reference assembly checking for the EagleExtensions project.

REFACTOR: avoid confusing distribution file names for the NetFx40 build
          configuration by inserting an underscore between the suffix and the
          version (i.e. to prevent the 40 portion of the suffix from being seen
          as part of the version).

REFACTOR: cleanup generation code for all the Mono test constraints.

REFACTOR: add a ScriptFlags property to the IScript interface.

FEATURE: add EvaluateScript method overloads that take an IScript object to the
         IInterpreter interface.

FEATURE: add [package loaded] sub-command to return the list of packages that
         have actually been loaded into the interpreter.

FEATURE: allow the [file system] sub-command to be used without any arguments.

************************* Beta 1.0.3933.37600 RELEASE *************************

BUGFIX: make sure that all methods of the Engine and Interpreter classes that
        call into optional host methods do not allow exceptions to escape.

BUGFIX: If an Interpreter is being explicitly disposed, make sure the Tcl module
        handle is freed instead of just disposing of the Tcl API object.

BUGFIX: fix [concat] when one or more arguments consist entirely of whitespace.

BUGFIX: report errors raised by the script code in-between the tests themselves
        when sourcing a test file.  also, make sure the error message is not
        obscured by test suite output.

BUGFIX: fix incorrect usage of command arguments by [interp exists].

BUGFIX: the TryGetKeyAtIndex and TryGetValueAtIndex methods must return true
        upon success.

BUGFIX: the TclWrapper.EvaluateExpression method was not using the locally
        (cached) copy of the Tcl_Preserve delegate.

BUGFIX: the Event class needs to support the IDisposable interface so that the
        wait handle it contains can be properly closed.

BUGFIX: when compiled without Tcl threads support enabled, the universal option
        parser should use the GetTclInterpreter method.  also, the
        GetTclInterpreterOrThread method should check to make sure that the Tcl
        thread dictionary is available prioring to accessing it.

BUGFIX: the PluginLoadHelper should not accept/expose the evidence, hashValue,
        or hashAlgorithm fields unless the CAS_POLICY option is enabled at
        compile-time.

BUGFIX: remove the unused local variable previousIndex from the Parser.SplitList
        method.

BUGFIX: skip building the WiX extension if the necessary SDK assembly is not
        available.

BUGFIX: remove incorrect usage of the Interpreter.ResolveProcedure methods.

BUGFIX: cleanup and refactor the [uri softwareupdates] sub-command and make it
        work properly on Mono.

BUGFIX: make the result of the [info library] sub-command compatible with Tcl
        when the script library path is not valid, including "safe" interpreters
        (COMPAT: Tcl).

BUGFIX: remove all "unsafe" procedures and variables when an interpreter is made
        "safe".  pursuant to this, a "safe" interpreter initialization script
        was added to the core script library.  also, this makes the errors
        returned by [package require] in a "safe" interpreter more compatible
        with Tcl (COMPAT: Tcl).

BUGFIX: fix incorrect usage of the Result.op_Implicit method by various tests.

BUGFIX: make sure the VariableFlags.NoElement flag is used in all applicable
        calls to the GetVariableViaResolvers method.

BUGFIX: make sure the #vinfo interactive command works when debugging a script
        that has been canceled.

BUGFIX: make sure the variable name arguments for the [array] sub-commands do
        not refer to array elements or aliases to array elements.

BUGFIX: fix some incorrect error messages generated by the core marshaller when
        an incorrect number of arguments is supplied for a method.

BUGFIX: file name comparisons should be case-sensitive when running on Unix.

BUGFIX: make sure the CAS_POLICY compile-time option is enabled when using
        framework method overloads that require Evidence and related parameter
        types.

BUGFIX: only "safe" slave interpreters may be created in a "safe" interpreter.

BUGFIX: clear the IExecute cache during global namespace deletion.

BUGFIX: fix incorrect use of createFlags field in the Interpreter.Setup method.

BUGFIX: prevent excess notifications by resetting the cancel flag for the
        interpreter only if it was actually set.

BUGFIX: mask off inappropriate bits in the CreateFlags for isolated debugger
        interpreters created by the engine when a debugger is not attached to
        the parent interpreter.

BUGFIX: attempt to report any failures of the libdl_close native method in
        NativeOps.UnixInitializeDynamicLoading.

BUGFIX: abstract classes should not have public constructors.

BUGFIX: assemblies containing ResX-based resources should be marked with the
        NeutralResourcesLanguage assembly attribute.

BUGFIX: modify all methods that lookup a custom attribute based on a Type object
        to accept a MemberInfo object instead.  modify the methods of the
        License class to accept an IInteractiveHost object instead of an IHost
        object.  modify the Interpreter.BadSubCommand method to accept an
        IEnsemble object instead of an ICommand object.

BUGFIX: make the CreateAppDomain, CreateAppDomainSetup, FireTraces,
        FixIntermediatePrecision, GetAliasCommand, GetObjectAliasArguments,
        GetVariableFlags, HasEnvironmentTraceCallback, HasFlags(ConsoleChannel),
        InternalGetToken, SetupHome, and UnloadAppDomain methods of the
        Interpreter class static.  make the _Hosts.Default.GetWrappedObjectType
        method static.  make the StringDictionaryComparer.GetChar method static.

BUGFIX: when comparing Uri objects, always use OrdinalIgnoreCase.

BUGFIX: always use the ToLowerInvariant method when building alias arguments in
        GetObjectAliasArguments and GetTclAliasArguments.

BUGFIX: *TODO* the PluginPropertyHelper class should be marked as serializable.
        for now, mark the interpreter fields of the AliasData, HostData, and
        ResolveData classes as not serializable.  this may change again if the
        Interpreter ends up deriving from the ScriptMarshalByRefObject class.

BUGFIX: in the ChannelStream class, do not try to dispose the contained stream
        when being called by the finalizer.

BUGFIX: make sure to use the BY_HANDLE_FILE_INFORMATION structure in a way that
        is portable to x64.

BUGFIX: fix using large values for arguments of type UInt16 or UInt32 with the
        core marshaller.  an error would would be generated if the value for a
        UInt16 or UInt32 was larger than would fit into a Int16 or Int32,
        respectively.

BUGFIX: make sure that BestFitMapping is disabled and ThrowOnUnmappableChar is
        enabled for all native methods that may end up receiving ANSI string
        parameters.

BUGFIX: the [string format] sub-command should accept opaque object handle names
        as arguments.

BUGFIX: the ScriptException class needs to implement the GetObjectData method to
        support proper serialization.

BUGFIX: apparently, the ScriptMarshalByRefObject class needs a LinkDemand for
        the Infrastructure permission because MarshalByRefObject has one.

BUGFIX: take the culture for the interpreter into account when resolving nested
        object and member names.

BUGFIX: remove the finalizers from classes deriving from a class that implements
        the IDisposable interface (e.g. the default host class).  the finalizer
        of the base class must call the virtual Dispose method when the object
        is being finalized.

BUGFIX: all the managed resources contained within the _Hosts.Diagnostic and
        _Tests.Default classes must be disposed of properly.

BUGFIX: enforce the leading switch character for command line options.

BUGFIX: fix GCHandle leak when explicitly disposing of a TclApi object.  fix
        another GCHandle leak when a TclApi object is being cleaned up via
        Tcl_Finalize, Tcl_Exit, or Tcl the [exit] command.

BUGFIX: force deletion of the Tcl command token for a TclBridge object when it
        has no activations, even if the Tcl interpreter itself is active.

BUGFIX: make sure the TclWrapper.Unload method properly finalizes and unloads
        the Tcl library even when multiple Eagle interpreters load it.  also, do
        not attempt to finalize or unload the Tcl library when being invoked via
        Tcl_Finalize, Tcl_Exit, or the Tcl [exit] command.  finally, handle the
        corner case of Tcl_Finalize only (i.e. no exit) in test library-3.2 by
        adding special support for setting the Tcl API object unload flags via
        script.  this corner case should never really be seen outside the test
        suite; therefore, modification of the Tcl API object unload flags by any
        code other than the test suite is officially unsupported.

BUGFIX: do not try to setup our Tcl exit handler before the Tcl_FindExecutable
        delegate has been called.  also, try to delete the Tcl exit handler only
        if it has been created.

BUGFIX: prevent the test suite from running if the current level is not global.

BUGFIX: free the correct GCHandle in the TclThread.QueueEventGeneric method.

BUGFIX: avoid using the Environment.FailFast method on Mono.

BUGFIX: the null host should clone itself using all the properties it received
        via its constructor.

BUGFIX: correct inconsistent result handling in the Interpreter.ProcessEvents
        method.

BUGFIX: test object-4.7 should not hard-code the name of the running executable.

BUGFIX: the [parse] command should use TryParseFlagsEnum, not TryParseEnum.

BUGFIX: the Interpreter.Invoke method should use the Engine.Execute method,
        which is designed for external callers.

BUGFIX: the HasRuntimeOption, AddRuntimeOption, RemoveRuntimeOption, GetScript,
        and AddScriptPolicy methods of the Interpreter class need to call
        CheckDisposed.  also, the AddRuntimeOption and RemoveRuntimeOption
        methods need to make sure the interpreter is not read-only.

BUGFIX: make sure that Tcl can only be loaded or unloaded on the primary thread
        of the Interpreter (i.e. using the LoadTcl and UnloadTcl methods).

BUGFIX: for methods taking a variable number of arguments (i.e. params) and that
        are not expected to throw exceptions, make sure the parameter array is
        not null.

BUGFIX: make sure [file system] uses the fully normalized path (i.e. the command
        "file system ../" should work correctly).

BUGFIX: add active interpreter push/pop handling to the Engine.Execute method so
        that its callers do not have to do it.  also, fix handling of the active
        interpreter stack by the [regsub] command (i.e. it was using the more
        verbose push/pop overloads, which should no longer be required).

BUGFIX: fix incorrect use of the strict flag to the SubCommandFromEnsemble
        method by the [encoding], [hash], [host], [scope], [uri], and [xml]
        commands.

BUGFIX: the PathOps.GetBasePath method should use the correct comparison type
        for the platform.

REFACTOR: revise handling of clientData in the engine command dispatcher.  it
          will now prefer to use the clientData provided by the caller if it is
          not null; otherwise, it will use clientData for the command.

REFACTOR: update Fossil tool w/source to latest release version 20101005035549.

REFACTOR: cleanup and update the included BinaryEditor build tool.  add more
          troubleshooting support to all the build tools.

REFACTOR: when compiling for the .NET Framework 4.0, prevent DebugOps.Complain
          from calling IDebugHost.WriteErrorLine because it can cause an
          otherwise healthy build process to fail due to how MSBuild handles
          output to the standard error stream during the Exec build task.

REFACTOR: revise and cleanup handling of WriteDebug* and WriteError* methods on
          the IDebugHost interface.  centralize the core Write* semantics and
          make them more uniform and fault tolerant.

REFACTOR: modify the Tcl library search semantics to include directories and
          environment variables used for Eagle-specific native Tcl libraries.

REFACTOR: modify the engine to support execution of sub-commands.  currently,
          none of the commands in the core command set make use of this feature;
          however, applications and plugins are encouraged to make use of it.

REFACTOR: add fields and properties to the interpreter display of the default
          host, including: afterEventFlags, AllXml, BackgroundError, Binder,
          CultureInfo, masterInterpreter, PackageUnknown, processEvents,
          serverSockets, slaveName, Unknown, and ValidateXml.

REFACTOR: implement save/restore semantics for the console title.  this can be
          disabled by using the NoTitle host property or environment variable.

REFACTOR: the [namespace unknown] command and the engine should use the Unknown
          property, not the unknown field.

REFACTOR: add policy flags to the IPolicyData and IScriptPolicy interfaces.
          modify the script policy handling to be capable of (optionally) adding
          the arguments of the command being invoked in the target interpreter
          to the policy script prior to evaluation.

REFACTOR: change the formal type of the Interpreter.ExitCode property to the
          ExitCode enumeration.

REFACTOR: by default, we no longer directly expose the Tcl wrapper and related
          functionality.  the Interpreter class now provides all the necessary
          integration functionality, please see the included TclSample project
          for details.

REFACTOR: rename the IPluginData.Tokens property to IPluginData.CommandTokens.

REFACTOR: the WriteArgumentInfo method should output the code and result to be
          useful for breakpoints.

REFACTOR: all [open] and [source] calls that require a stream are now handled by
          the IHost.GetStream method.  also, the default channel buffer size is
          now 4K.

REFACTOR: make naming of the private Interpreter and Engine methods more
          self-explanatory and more consistent.  all methods named Private* are
          only for use by the Interpreter and Engine classes, respectively.

REFACTOR: move the command count code to a new method, Engine.UpdateStatistics.

REFACTOR: revise the semantics used by the script engine for getting a script
          file from the interpreter host.  move the code to a new method named
          GetScriptFile.

REFACTOR: use a more flexible and robust method of querying the IHost properties
          in the WriteHostInfo method of the default host.

REFACTOR: make the SavePosition and RestorePosition methods of the default host
          work correctly even if the host does not support positioning.

REFACTOR: prevent the Interpreter class from assuming that the IHost has color
          support.

REFACTOR: move the public environment variable support methods to the Utility
          class.

REFACTOR: move the SubstitutionFlags checking methods to the Parser class.

REFACTOR: attempt to prompt the user prior to canceling a runaway script in the
          interactive shell.

REFACTOR: modify the Argument and Result classes to support implicit conversions
          from the Enum, Exception, Version, ResultList, and StringBuilder
          classes.

REFACTOR: support keeping track of basic usage statistics about the internal
          caches.

REFACTOR: review and revise all the custom GetHashCode implementations.

REFACTOR: modify the semantics of the Interpreter.GetExecuteViaResolvers and
          Interpreter.GetVariableViaResolvers methods to allow for simplified
          errors and/or subsequent resolvers to be skipped through the use of
          the standard exceptional return codes (i.e. the Return, Break, and
          Continue values).  currently, the default resolver never uses these
          return codes.

REFACTOR: eliminate all the unnecessary uses of both the Array.GetLength and
          Array.GetLowerBound methods.  remove superfluous array rank checking.
          arrays declared as one-dimensional at compile-time do not need their
          ranks checked at runtime.

REFACTOR: modularize the logic for querying the active script file name and move
          it from [info script] to the Interpreter.GetScriptFileName method.

REFACTOR: centralize the default match modes for all StringOps.Match calls.

REFACTOR: cleanup custom comparer implementations to make them more robust and
          uniform.  also, add new custom comparer implementation that wraps the
          StringOps.Match method.

REFACTOR: make the names of the console color settings more consistent with the
          naming scheme of the related methods.

REFACTOR: revise handling of the header flags by the interactive loop.  now, the
          interpreter header flags are never automatically modified.  they are
          copied upon entry to local header flags for use by the interactive
          loop.

REFACTOR: add public APIs for managing a Tcl library using an Eagle interpreter.
          These changes remove the need for external projects to rely on the
          private classes supplied by the TCL_WRAPPER compile-time option.
          also, modified the TclSample project to use only the newly provided
          public APIs for Tcl library management.

REFACTOR: cleanup, modularize, and reorganize the DebugOps class to make it more
          flexible and robust.

REFACTOR: use [object invoke] for [parray] to work around Mono bug #636939.

REFACTOR: some bulk cleanup of dead code.

REFACTOR: the [object dispose] sub-command now accepts a variable number of
          objects to dispose.  in addition, a -nocomplain option has been added.

REFACTOR: the core host now supports multiple profiles.

REFACTOR: modularize the KeysAndValues method used by various custom containers
          and make it totally generic and general purpose.

REFACTOR: move the zero argument overload of the ToList method from the IToken
          interface to the IScriptLocation interface.  it is now common to both
          interfaces and needs to be defined at the lowest level.

REFACTOR: move all methods common to the StringList and StringPairList custom
          containers into their own interface, IStringList.  add new method
          implementations when necessary to achieve feature parity between these
          two classes.  add implicit conversions from StringPairList to Argument
          and Result objects.  modify most callers of the StringList.MakeList
          method to use new overloads that take objects instead of strings to
          reduce the necessity of explicit ToString calls.

REFACTOR: *PERF* targeted expression performance optimizations.  cache the
          current thread Id on a per-thread basis in thread static data to avoid
          permission demands.  when compiled for the .NET Framework 4.0, cache
          the Enum.TryParse method for each type as it is used.  when resolving
          variables, prevent interpreter readiness checks from being performed
          by the parser via SplitVariableName.

REFACTOR: make sure the eagle_platform(sourceId) element is not set for "safe"
          interpreters.

REFACTOR: remove incorrect uses of the SecurityPermission attribute.  also, use
          the SecurityCritical attribute instead when compiling for the .NET
          Framework 4.0.  the documentation seems unclear; however, based on my
          current understanding, when a type is marked with a LinkDemand or
          SecurityCritical attribute, it can only be called [directly] from code
          that is fully trusted (e.g. other managed code within the Eagle core
          library itself).  the Eagle core library is specifically designed to
          shield all native methods from all untrusted inputs and/or malicious
          intent by applications, plugins, and [non-administrative] users.
          however, this protection will only work if my understanding of the
          SecurityCritical and LinkDemand attributes is 100% correct.  when in
          doubt, disable the NATIVE compile-time option (e.g. using the command
          line argument /property:EagleNative=false to MSBuild).

REFACTOR: revise semantics of the WindowWidth, ContentWidth, and ContentMargin
          properties for the default host.  improve output of host information.

REFACTOR: cleanup integration points for the debugger subsystem.

REFACTOR: make sure all the test context members are marked as private in
          non-threaded builds.

REFACTOR: revise and reform usage of the NET_40 and MONO compile-time options.

REFACTOR: cleanup the way Windows and Unix native APIs are declared and used.

REFACTOR: make variable name formatting in error messages more consistent.

REFACTOR: mark the [getf], [setf], and [unsetf] commands as obsolete.

REFACTOR: support limiting the width of boxes via the BoxWidth property of the
          default host.  by default, this limit is disabled.

REFACTOR: cleanup usage of the IPair<T> interface.

REFACTOR: cleanup and modularize the command and expression parser subsystems.

REFACTOR: cleanup and modularize the ScriptBinder class and usage of it.  add
          IScriptBinder public interface to expose custom binding functionality
          to applications and plugins.  add an IBinder interface to formalize
          the functionality provided by the Binder class.  the IScriptBinder
          interface now inherits from the IBinder interface.

REFACTOR: modify the path scrubbing semantics used by [info script] in "safe"
          interpreters to preserve full path information when the script being
          evaluated resides underneath the base directory.

REFACTOR: adjust the window dimensions required for the FullSize host size and
          add a new size host size SuperFullSize.

REFACTOR: simplify the creation of an interpreter with the default options.

REFACTOR: removed the unused list field from all the String*Comparer classes.

REFACTOR: add a ClientData property to the Channel class and a GetOptions method
          to the ChannelStream class.

REFACTOR: bypass multiple Mono compiler bugs by moving the CommonOps.Generic<T>,
          CommonOps.Generic<T1, T2>, and ArrayOps.Generic<T> inner classes to
          their own file (GenericOps.cs) and making them outer classes (Mono bug
          #635720).

REFACTOR: disable the sample custom build tasks by default when building with
          XBuild (Mono bug #635767).

REFACTOR: modify the Script class to accept a group and description.  modify the
          XML schema accordingly.

REFACTOR: enhance the robustness of the benchmark tests.  also, report the
          percentage differences between the actual and expected elapsed time
          values.

REFACTOR: cleanup all the sample ICommand and IPlugin implementations.

REFACTOR: cleanup, extract, and modularize common code from all the default
          policy implementations.

REFACTOR: in a "safe" interpreter, the [info interps] sub-command should only
          return the slave interpreters of that interpreter.

REFACTOR: make the In, Out, and Error properties for the console host work on
          Mono.

REFACTOR: *BREAKING CHANGE* rename all non-flag enumerations to their singular
          form, including ReturnCodes.

REFACTOR: *BREAKING CHANGE* cleanup implementation of the [debug memory] and
          [file information] commands, isolating the use of native code to the
          low-level APIs.  also, the [debug memory] command now returns the
          status of GC memory as well as the status of system memory, when
          available.

REFACTOR: *BREAKING CHANGE* the ICommand, IProcedure, and ISubCommand interfaces
          now inherit from the new IDynamicExecute interface.  the engine will
          detect and use the delegate provided by this interface instead of
          simply calling the Execute method if it is provided.

REFACTOR: *BREAKING CHANGE* cleanup implementation of the SubCommandFromEnsemble
          method.  also, support returning the matching ISubCommand in addition
          to the name. finally, replace all usage of the SubCommandFromEnsemble
          method with the new TryExecuteSubCommandFromEnsemble method.

REFACTOR: *BREAKING CHANGE* remove the obsolete interactive commands #flags and
          #result.  please use the #finfo and #rinfo interactive commands
          instead.

REFACTOR: *BREAKING CHANGE* move all internal and external TraceListener support
          methods to the DebugOps and Utility classes, respectively.

REFACTOR: *BREAKING CHANGE* rename all methods of the Engine and Interpreter
          classes that deal with IExecute objects from <verb>Execute to
          <verb>IExecute.  also, rename the enumeration values associated with
          IExecute objects.

REFACTOR: *BREAKING CHANGE* rename the Unmanaged command and plugin flag values
          to Native.

REFACTOR: *BREAKING CHANGE* move the GetFlags method from the IHost interface to
          the IInteractiveHost interface.  rename some overloads of the
          WriteResult method to WriteResultLine or WriteResultInfo, depending on
          their actual functional role.

REFACTOR: *BREAKING CHANGE* further cleanup of the IHost interface by breaking
          more pieces off into their own sub-interfaces.  the new IEngineHost
          interface is designed to support the minimal subset of functionality
          required by the script engine.  the new IDebugHost interface is
          designed to support the minimal subset of functionality required by
          the script debugger.  the new IStreamHost interface is designed to
          group all the Stream related properties and methods in one place.

REFACTOR: *BREAKING CHANGE* rename the global tests variable to eagle_tests.
          test constraints are accessed via the addConstraint, getConstraints,
          and haveConstraint procedures from now on.

REFACTOR: *BREAKING CHANGE* rename the IInfoHost interface to IInformationHost.

REFACTOR: *BREAKING CHANGE* move [info tclcommands], [info tclinterps], and
          [info tclthreads] to the [tcl command list], [tcl interps], and
          [tcl threads].

REFACTOR: *BREAKING CHANGE* rename the Expression class to ExpressionParser and
          break out the expression evaluation methods into a new
          ExpressionEvaluator class.

REFACTOR: *BREAKING CHANGE* for [clock format], rename the -timezone option to
          -isotimezone.

REFACTOR: *BREAKING CHANGE* remove the [info env] sub-command.  now that
          [info exists] can be used on the global env array, this sub-command is
          useless.

FEATURE: add Engine.EvaluateScript method overloads that take an IScript object.

FEATURE: support strict output parameter type checking for the [library] and
         [object] commands using the new -strictargs option.

FEATURE: allow [package require NativeTcl] to load the Eagle-specific native Tcl
         library (i.e. the one located in the Eagle library directory, if any).

FEATURE: add AddExecuteCallback method to the IInterpreter interface to allow
         delegates to be used for command implementations.

FEATURE: add [host reset -interface] sub-command and the IHost.Reset method to
         facilitate a cooperative reset of the interpreter host interface.

FEATURE: add ImageRuntimeVersion to the [info engine] sub-command to query the
         version of the CLR the assembly was compiled against.

FEATURE: add Disposed property to the IInterpreter interface.  this property is
         required for certain scenarios where the validity of the interpreter
         needs to be determined (e.g. from a secondary thread) to avoid throwing
         exceptions from inside the Engine and/or Interpreter classes.

FEATURE: add [file drive] sub-command to return drive information for the given
         path.

FEATURE: add [debug sysmemory] sub-command to query the system memory status.
         currently, this feature is limited to Windows.

FEATURE: add IsTclReady method to the IInterpreter interface.  this method is
         used to determine if the specified Tcl library and interpreter are
         ready for use.

FEATURE: add QueueTclThreadEvent method to the IInterpreter interface.  this
         method is used to queue events to the specified Tcl worker thread.

FEATURE: add -isolated option to the [test2] command.  this option allows the
         test setup, body, and cleanup scripts to be evaluated in an isolated
         interpreter created just for the test.  the interpreter creation flags
         that affect command visibility (e.g. "safe" mode flags) are inherited
         by the isolated interpreter.

FEATURE: add overloads of the Engine.EvaluateScript and Engine.SubstituteString
         methods that do not require engine flags (i.e. the default flags are
         used).

FEATURE: support simple integration with SQL Server stored procedures via the
         new Engine.EvaluateOneScript and Engine.SubstituteOneString methods.

FEATURE: expose the Profile and NoColor properties via the IHost interface.  all
         custom host implementations are expected to honor the values of these
         properties when displaying information.

FEATURE: expose the Unknown property of the IInterpreter interface.  the value
         of this property is the name of the command or procedure to be called
         when a command cannot be found by any resolvers.  setting this property
         to null causes all unknown command resolution to be skipped.

FEATURE: add the ResetResolvers, GetResolver, and AddResolver resolver API
         methods to the IInterpreter interface.

FEATURE: add the -default option to the [object create], [object invoke], and
         [library call] sub-commands to allow names of non-existent variables to
         be specified for output parameters when calling methods.

FEATURE: add [info processors] sub-command for compatibility with Tcl TIP #377.

FEATURE: add eagle_platform(permissionSet) element to hold the effective CAS
         policy permissions.  this element is only available if the CAS_POLICY
         option was enabled at compile-time.

FEATURE: add [debug ontoken] and [debug token] sub-commands to allow token-level
         breakpoints to be set.  each breakpoint is based on a source file name
         and a line number range.  add [debug breakpoints] sub-command to allow
         these breakpoints to be queried.

FEATURE: add -microseconds option to the [clock clicks] sub-command.

FEATURE: add [interp target] sub-command to get the relative target path for an
         alias (COMPAT: Tcl).

FEATURE: add the [debug onexecute] sub-command to toggle whether or not named
         commands and procedures can trigger a breakpoint.  add the
         [debug ontest] sub-command to toggle whether or not named tests can
         trigger a breakpoint.  add the [debug test] sub-command to control or
         return the named tests that can trigger a breakpoint.

FEATURE: expose -quote option to [regsub] and revise the list quoting rules for
         the substitution specification.  the new rule is that only portions of
         the match value itself are quoted.

FEATURE: the [info cmdcount] sub-command now accepts an optional argument that
         will return the number of times the specified command or procedure has
         been executed.

FEATURE: add support for official release binaries configured to run on the .NET
         Framework 4.0.

FEATURE: new #trustdir and #trustclr interactive commands to display, add to, or
         clear the list of trusted directories for the interpreter.

FEATURE: add [interp nopolicy] and [interp policy] sub-commands to allow full
         script-level control of command policies in nested slave interpreters.

FEATURE: the default policy for the [source] command now has preliminary support
         for the concept of trusted directories.

FEATURE: tool enhancements that allow only the core library project to be built
         and/or only the build portion of the release preparation tool to be
         performed.

FEATURE: add the Engine.ExecuteExternalWithFrame method for use by applications
         and plugins.  this method can be used to execute a command directly
         without having to evaluate a script.  it is intended to be used after
         the command has been resolved by the Interpreter.GetExecuteViaResolvers
         method.

FEATURE: add support for creating and using "attribute flags" for use by
         applications and plugins.

************************* Beta 1.0.3893.34342 RELEASE *************************

BUGFIX: fix global namespace prefix being ignored by [info vars], see CodePlex
        bug #6975.

BUGFIX: fix global namespace prefix not being returned in [info vars] results,
        see CodePlex bug #6995.

BUGFIX: fix incorrect handling of the default header flags by the interactive
        loop when entering debug mode for the first time.  also, indicate more
        clearly when the interactive loop is in debug mode via the text in the
        header announcement section.

BUGFIX: make sure the default command/variable resolver honors the flags passed
        by the caller.

BUGFIX: make sure [object dispose] returns correct results when an object cannot
        actually be disposed (i.e. when it is simply removed instead).

BUGFIX: restore the ability to evaluate fully trusted scripts in a "safe"
        interpreter using the new IgnoreHidden engine flag.

BUGFIX: *BREAKING CHANGE* fix long-standing typo that prevented the background
        error handling from ever being used.  also, eliminate all usage of the
        DoesAnyExecuteExist method and remove it completely.

REFACTOR: completely remove the Engine.HasFlags method with two EngineFlags
          arguments and replace the usages of it with the appropriate single
          flag checking methods.

REFACTOR: allow limited usage of the [info script] sub-command by "safe"
          interpreters.

REFACTOR: allow the [source] command to evaluate files from trusted URIs in
          "safe" interpreters.

REFACTOR: skip issuing notifications for an interpreter when the engine flags
          for the interpreter prohibit it.

REFACTOR: add a Group property to the IIdentifier interface.  using this new
          property, mark all commands based on the type of functionality they
          provide (e.g. string, list, control, variable, introspection, channel,
          etc).  also, mark most expression functions based on the type of
          functionality they provide (e.g. constant, conversion, trigonometric,
          rounding, random, etc).

REFACTOR: modify script library search semantics when the compiled with the
          embedded script library option (i.e. always search on the native file
          system first, then fallback to the embedded script library).

REFACTOR: cleanup the IHost interface by breaking it into several interfaces and
          having one inherit the other.  the IHost interface itself is still a
          superset of all the others.  the interactive loop now requires only
          the minimal subset of the IHost interface functionality to work
          properly (i.e. all the other methods are now officially optional).

REFACTOR: reform the use of the interpreter exit flag by the interactive loop.

REFACTOR: allow previous result tracking to be disable at compile-time.

REFACTOR: *BREAKING CHANGE* completely remove the SubstituteOnly engine flag and
          replace the one and only usage of it with the engine mode enumeration
          instead.

REFACTOR: *BREAKING CHANGE* remove the GetAnyExecute and ResolveAnyExecute
          methods from the IInterpreter interface.  all external callers should
          use the newly exposed GetExecuteViaResolvers method instead.

FEATURE: add a setting to the web service configuration that allows a script to
         be evaluated in the created interpreter prior to its remote use.

FEATURE: add support for interactive extension commands (i.e. custom interactive
         commands).  these can override built-in interactive commands as well as
         add entirely new interactive commands.

FEATURE: add experimental support for nested slave interpreters (i.e. traversal
         of nested slave interpreters is now performed as required).

************************* Beta 1.0.3887.34777 RELEASE *************************

BUGFIX: the host argument to [uri ping] was being validated as an absolute URI
        when it is also allowed to be a simple host name or address.

BUGFIX: the -format option to the [clock format] did not support all the format
        strings used by Tcl, see CodePlex bug #6842.

BUGFIX: make sure appropriate error messages are displayed for the interactive
        #break command.

BUGFIX: when setting the console host input, output, and error streams, preserve
        the current encodings.  also, make sure AutoFlush is enabled for the
        stream writers.

BUGFIX: when displaying the previous result for the interpreter the wrong colors
        could be used.  also, the default foreground and background colors used
        for displaying results might be changed when it should not be.

BUGFIX: skip trying to display empty trace and variable information in the
        default debugger output (i.e. the debugger header) to conserve space on
        the screen.

BUGFIX: always use the property, not the variable, when attempting to determine
        the current output style of the host.

BUGFIX: correct the error message when invalid ConsoleColor values are detected
        during the loading of the host profile.

BUGFIX: prevent the current IHost for the Interpreter from being disposed via a
        script.

BUGFIX: fix incorrect stickiness of the HeaderFlags.Invalid flag when the local
        and/or interpreter header flags are being set by the user.

BUGFIX: by default, the core marshaller should support calling static members
        inherited by the target type, except those marked as private.

REFACTOR: make the object member constraint checking more uniform throughout the
          test suite.

REFACTOR: remove some redundant return code assignments.

REFACTOR: revise the semantics used by the default host for displaying the
          interpreter call stack.  by default, only call frames accessible via
          script (e.g. [info level], [uplevel], and [upvar]) are displayed.
          both the #frinfo and #stack interactive commands now have an optional
          boolean argument that can be used to force old behavior.

REFACTOR: enable callers of the IHost.WriteBox method to specify the foreground
          and background colors for the borders of the box.  also, the host is
          now notified when a box is about to be written or completed via the
          IHost.BeginBox and IHost.EndBox methods, respectively.  modified the
          [host writebox] sub-command to allow for finer grained control.

REFACTOR: cleanup the display of interpreter related information by the default
          host.  move the display logic for the result, complaint, and history
          information into separate methods.  also, make the naming and argument
          passing conventions for host display methods more consistent.

REFACTOR: cleanup the FormatOps class by removing unused code, marking methods
          as private, and other tidying.

REFACTOR: the IOperatorData interface and the OperatorClass class should be in
          private namespaces.

REFACTOR: insert tracking call frames when running tests to aid in debugging.

REFACTOR: add DefaultIn, DefaultOut, and DefaultError read-only properties to
          the IHost interface to query the original host streams in case they
          cannot be easily recreated.

REFACTOR: add ResetIn, ResetOut, and ResetError methods to the IHost interface
          to reset the host streams to their initial values.

REFACTOR: the [parray] procedure should accept an optional pattern argument
          (COMPAT: Tcl).  also, cleanup handling of really long array element
          values.

REFACTOR: cleanup the ReturnCodes enumeration by removing values that are not
          used directly by the library.

REFACTOR: expose the ability to parse an entire script at once via the method
          Utility.ParseScript.

REFACTOR: when using the Engine.Execute method from outside the engine, always
          use an extra interpreter nesting level.

REFACTOR: *BREAKING CHANGE* rename the Empty method of the QueueList and
          StackList classes to IsEmpty.  this is more consistent with the best
          practices for naming methods which simply return a boolean value
          without modifying any of the internal state of the object.

REFACTOR: *BREAKING CHANGE* move utility routines designed for external use out
          of the Interpreter class into the new Utility class.

FEATURE: add base26 utility methods for use by applications and plugins.

FEATURE: the core marshaller now supports automatically converting an opaque
         interpreter handle argument into an Interpreter object.

FEATURE: add support for an IHost implementation to display arbitrary additional
         information via the WriteCustomInfo method of the IHost interface.  if
         a custom IHost implementation does not need to display any additional
         information, it should simply return true from this method; otherwise,
         it should include the CustomInfo flag in the flags returned by the
         IHost.GetFlags method.  also, add the plumbing that allows this
         interface to be easily tested.

FEATURE: new #complaint, #lrinfo, #mrinfo, and #hisinfo interactive commands to
         display detailed information about the previously stored complaint, the
         local result, the master result, and the command history, respectively.

FEATURE: new #frinfo interactive command to display detailed information about a
         specific call frame.

FEATURE: add experimental support for slave interpreters.  for now, the path
         arguments to the [interp] command always refer to slave interpreters in
         the current interpreter (i.e. no traversal of nested slave interpreters
         is performed).  also, aliases should now work properly with multiple
         interpreters (i.e. the source and target interpreters no longer have to
         be the same).

FEATURE: add [debug paths] sub-command to allow detailed introspection of the
         possible locations for the script library.

FEATURE: add [host echo], [host errchan], [host inchan], and [host outchan]
         sub-commands to control the host input/output channels for use by the
         interactive shell.

FEATURE: add a ClientData property to the IPolicyData interface.

FEATURE: add Interpreter.DetectLibraryPath method to help embedded users detect
         the script library in common locations.

FEATURE: add [array values] sub-command to return a list of values in an array,
         optionally restricted by a matching mode and pattern.

FEATURE: the core marshaller now supports automatically converting a list of
         strings to a one-dimensional array of the specified type.

FEATURE: add SyntaxType property to the IToken interface for later use in syntax
         highlighting support.

FEATURE: the setup now has full support for the .NET Framework 4.0 if Eagle has
         been built against it.  the official setup will still be built against
         the .NET Framework 2.0 for the foreseeable future.

************************* Beta 1.0.3828.11878 RELEASE *************************

BUGFIX: skip test object-4.10 (WiX) when the test data files are not available.

BUGFIX: modify the #suspend and #resume interactive commands to prevent them
        from taking into account the enabled state of the debugger.

BUGFIX: add the Types, Command, and Result properties of the IDebugger interface
        to the debugger output.

BUGFIX: fix exception with the 4-argument version of [string last], see CodePlex
        bug #6333.  added tests to cover all the corner cases of [string first]
        and [string last].

BUGFIX: the #go and #halt interactive commands should be available even when the
        debugger has been disabled at compile-time.

BUGFIX: use DoesModuleExist in AddModule, not DoesDelegateExist (typo).

BUGFIX: the GetBasePath method must check for a null assembly argument.

BUGFIX: check for null entity names prior to using them in all the applicable
        Interpreter.Add* methods.

BUGFIX: the default plugin should not assume that the plugin version is valid.

REFACTOR: enhance command list output generated by the interactive help so that
          it aligns the command names within their respective columns and
          includes the total number of interactive commands available.

REFACTOR: preliminary support for custom command and variable resolvers.

REFACTOR: reform usage of the debugger in the interactive loop.

REFACTOR: add notifications for setting the Cancel, Unwind, and Halt properties
          of the Interpreter.

REFACTOR: modify [object verifyall] to skip over assemblies that were loaded
          from the global assembly cache (by default); this behavior may be
          overridden by passing a non-zero boolean value as the optional first
          argument.

REFACTOR: *BREAKING CHANGE* revise the IFunction, IHost, IObject, IObjectType,
          IPackage, and IProcedure interfaces and the constructors of the
          default classes to make use the new I*Data interfaces.  this is
          technically a breaking change for all external users of these
          interfaces; however, there should not really be any of those at this
          point.

FEATURE: add [tcl complete] sub-command to check the completeness of a Tcl
         command.

FEATURE: add PostProcess boolean flag to the ITraceInfo interface.  also, add
         the ability to disable post-processing of values for all variables in
         the interpreter.

FEATURE: add [debug halt] sub-command to completely unwind the interpreter call
         stack and all but the outermost interactive loop.  correct behavior
         when the HaltEvaluate method is used from a command invoked via the
         interactive loop.

FEATURE: add #resh and #fresh interactive commands to help manage the halt flag.

FEATURE: add [debug suspend] and [debug resume] sub-commands to allow direct
         management of the overall debugger state from scripts.

FEATURE: support two optional arguments to [debug break].  the first argument,
         if supplied, must be a boolean value.  a non-zero boolean value is used
         to indicate that an error should be raised if the breakpoint is hit
         when the debugger is disabled.  the second argument is a string.  if
         supplied, it should contain a message about the breakpoint (e.g. a
         description of its location and/or the reason it may have been hit).

************************* Beta 1.0.3796.36942 RELEASE *************************

BUGFIX: make sure that all non-creatable classes are marked as static and that
        static policy methods have the most restrictive visibility (private).

BUGFIX: add missing Exit, HasAliases, and NextId members to the IInterpreter
        interface.  verify that the IInterpreter interface now contains exactly
        the members it should.

BUGFIX: fix bug in the construction of Variant objects.  if the constructor that
        accepts an object was used with a type not supported by the base class,
        the resulting Variant object would have an invalid (null) value.  also,
        modify the cloning semantics slightly to allow the object to be cleanly
        marshalled by reference.

BUGFIX: fix various small portability issues with Mono on Unix.  the Mono C#
        compiler still fails to compile the library due to issues with its
        generics implementation.

REFACTOR: make all invalid and reserved enumeration values consistent with each
          other whenever possible.  also, only define enumerations if the
          required features are enabled at compile-time.

REFACTOR: centralize logic that determines if breakpoints can be hit during the
          evaluation of scripts, expressions, etc.

REFACTOR: slightly revise engine flags handling used when the engine modifies
          the errorCode and errorInfo variables.

REFACTOR: allow all interpreter readiness checks OR just the checks unrelated to
          native stack checking to be skipped by using the appropriate values in
          the interpreter flags.

REFACTOR: the [exit] command should accept ExitCodes enumeration values as well
          as integers for use as exit codes.

REFACTOR: revise how the debugger and built-in interpreter hosts are created.

REFACTOR: revise and enhance error reporting for the expression parser.

REFACTOR: cleanup and revise the sample projects.

REFACTOR: *BREAKING CHANGE* revise the IAlias interface and the constructor of
          the default alias to make use of the new IAliasData interface.  this
          is technically a breaking change for all external users of the IAlias
          interface; however, there should not really be any of those at this
          point.

REFACTOR: *BREAKING CHANGE* revise the ICommand interface and the constructor of
          the default command to make use the new ICommandData interface.  this
          is a breaking change for all commands that derive from the default
          command.

REFACTOR: *BREAKING CHANGE* revise the IPlugin interface and the constructor of
          the default plugin to make use the new IPluginData interface.  this is
          a breaking change for all plugins that derive from the default plugin.

REFACTOR: *BREAKING CHANGE* revise all internal handling of application domains.
          unfortunately, this is a breaking change for all plugins because an
          extra parameter is required in the call to the constructor so that it
          can keep track of the application domain to which it belongs.

REFACTOR: *BREAKING CHANGE* rename [info lastpid] to [info previouspid] to avoid
          confusion.  this is a breaking change for any scripts that use the
          [info lastpid] sub-command.  also, rename IError.LastReturnCode to
          IError.PreviousReturnCode.  a few other things were renamed as well
          (for consistency); however, they are all non-public.

REFACTOR: *UNFINISHED* add all of the necessary plumbing to enable plugins to be
          loaded into isolated application domains AND for the commands defined
          in those plugins to be automatically added to the interpreter.  this
          is NOT a security feature.  this feature is currently disabled by
          default for three reasons:  first, it requires that the Interpreter
          and Number classes derive from ScriptMarshalByRefObject, which causes
          quite a few legitimate compiler warnings regarding direct field access
          by the core commands.  second, several of the components marked with
          the Serializable attribute need custom ISerializable implementations
          to avoid Unicode encoding issues (i.e. when we want to put raw binary
          data into a "Unicode" string via the TwoByteEncoding or something else
          similarly evil).  third, any policies contained with a plugin cannot
          currently be loaded into the isolated application domain.  finally, it
          is highly likely that variable traces will never be allowed in plugins
          loaded into isolated application domains.

FEATURE: add interactive #again command to execute the last interactive input
         again.

FEATURE: add -debug option to [test2] to allow detailed analyses of test result
         matching issues.

FEATURE: add PublicKey to the [info engine] sub-command to query the public key
         of the library.  also added the associated element to the platform
         array.

FEATURE: add [object alias] and [object unalias] sub-commands to allow direct
         management of object (or type) aliases from scripts.

************************* Beta 1.0.3771.06643 RELEASE *************************

BUGFIX: make sure all the projects can use the ConsoleColor enumeration even
        when compiling without console support.

BUGFIX: make sure hosts are setup even if they are changed after the interpreter
        has been created.

BUGFIX: skip attempting to query the default colors from hosts that do not have
        color support.

BUGFIX: skip attempting to query and/or set sizes and positions for hosts that
        do not support it.

BUGFIX: fix compilation issues when console support, native code, and/or Tcl
        integration are disabled.

BUGFIX: fix (split) tests object-12.2, object-12.3, object-13.1, object-13.2,
        and object-97.3 to work with the .NET Framework 4.0.

BUGFIX: skip test object-4.10 (WiX) when running on the .NET Framework 4.0.

BUGFIX: fix assembly strong-name detection logic on Mono.

BUGFIX: add missing [socket] test constraint to tests socket-1.1, socket-1.2,
        socket-1.3, socket-2.1, socket-3.1

BUGFIX: make sure the test path is fully qualified.

BUGFIX: correct usage of LibraryPathSetting by the web service.

BUGFIX: only define the NoHistory, NoCallbackQueue, NoBreakpoint, and NoWatch
        flags and their associated methods if the required features are enabled
        at compile-time.

BUGFIX: only define NotifyTypes and NotifyFlags values if they are used by the
        library based on the options enabled at compile-time.

BUGFIX: prevent all parts of the notification system from being compiled into
        the library unless the NOTIFY and/or NOTIFY_OBJECT options are enabled
        at compile-time.  this includes the ScriptEventArgs class and the
        IScriptEventArgs interface.

BUGFIX: prevent all parts of the Code Access Security (CAS) support from being
        compiled into the library unless the CAS_POLICY option is enabled at
        compile-time.

BUGFIX: correct creation and usage semantics for both the Script class and the
        IScript interface.

BUGFIX: add missing ObjectId attributes to all delegates and several classes.

BUGFIX: the UriKind.RelativeOrAbsolute value should not be used when attempting
        to validate absolute URIs.

BUGFIX: fix issue with [exec -shell] when a new process is not actually created.
        prevent remote URIs from being treated like local file names.  cleanup
        and improve the clarity of the code.  enforce transactional semantics
        with regard to the returned process Id.

BUGFIX: fix bug in expression parser that prevented it from properly parsing any
        expressions contained within other [bigger] strings.

BUGFIX: fix Interpreter creation flags issue in SetupDebugger that resulted in
        redundant interpreters being created.

BUGFIX: fix infinite recursion issue between the Engine.IsThrowOnDisposed and
        Interpreter.CheckDisposed methods.

BUGFIX: make sure the test suite never uses the [puts] command directly unless
        it is absolutely necessary.

BUGFIX: in build tools, only search sub-directories when absolutely necessary.

REFACTOR: cleanup and modularize handling of environment variables.

REFACTOR: make the available interactive help consistent with the features that
          are enabled at compile-time.

REFACTOR: allow embedding of user-defined text into the primary assembly via the
          new AssemblyText attribute.

REFACTOR: add special-case code to the engine to detect and gracefully handle a
          command marking the interpreter as exited (i.e. bail out instead of
          trying in vain to execute any further commands).

REFACTOR: make field and [virtual] property usage consistent in the ParseToken,
          ParseState, ExpressionToken, and ExpressionState classes.

REFACTOR: add interactive input properties to the IInterpreter interface to
          facilitate better integration with the input processing done by the
          interactive loop.

REFACTOR: add an overload of the IHost.ReadKey method that does not require the
          console and deprecate the one that does.

REFACTOR: *PERF* tweak performance of several critical code paths through the
          parser and the interpreter.

REFACTOR: consistency and robustness fixes to regular expression match checking,
          engine exception notifications, and assembly type introspection.

REFACTOR: revise the return value type checking to be more consistent and less
          brittle for types that can/should be converted to a string.  also,
          make sure the core marshaller type checking methods are consistently
          named.

REFACTOR: cleanup creation and usage semantics for the random number generators.

REFACTOR: cleanup and modularize the disposal logic for the Interpreter class.

REFACTOR: reduce confusion between the engine callback queue and the collection
          of cached callback delegates by renaming the callback queue related
          variables, methods, enumeration values, and compile-time constants.

REFACTOR: enable [unfinished] AppDomain management support by the interpreter to
          be excluded at compile-time.  it is now excluded by default.

REFACTOR: when compiled without console support, use an IHost that supports
          just enough functionality to actually complete the test suite.

REFACTOR: add the necessary code to differentiate between delay-signed and
          fully-signed strong-named assemblies.  this will not work on Mono (in
          Unix).

REFACTOR: use the latest available .NET Framework by default when building from
          the command line via the build tool.  the .NET Framework 2.0 or 3.5
          may be selected manually by setting the NETFX20ONLY or NETFX35ONLY
          environment variables, respectively.

REFACTOR: modify .NET Framework detection build targets and revise how the
          related compile-time constants are used.

REFACTOR: *BREAKING CHANGE* rename the DebuggerFlags enumeration along with all
          the related fields and variables to HeaderFlags, everywhere.  the new
          name more precisely describes the actual effects of these flags.

REFACTOR: support selectively displaying header information based on the size
          of the display area.  this feature may require further usability
          tweaks.

REFACTOR: disable the isolated debugger interpreter by default.  it can be
          enabled by specifying the Debug flag when creating the Interpreter or
          later by executing the command [debug setup true true].

REFACTOR: *BREAKING CHANGE* rename IScript.Id to IScript.Name.  rename IEvent.Id
          to IEvent.Name.  also, both interfaces now inherit from IIdentifier.

FEATURE: new #iflags interactive command to get and set the interpreter flags.

FEATURE: add built-in support for the ADO.NET 2.0 Provider for SQLite (a.k.a.
         System.Data.SQLite) to the [sql] command.

FEATURE: add ObjectIds to the [info engine] sub-command to query the object Ids
         for all types in the library.  also added the associated element to the
         platform array.

FEATURE: support reading and evaluating scripts, from files and streams, inside
         XML that conform to the schema compiled into the library (i.e. from the
         file Eagle.xsd).  also, added an engine flag to disable this behavior.

FEATURE: allow engine notifications to be disabled on a per-call basis by using
         the new NoNotify engine flag.  this flag only applies to the methods of
         the Engine class.

FEATURE: add experimental [object verifyall] sub-command to verify strong-name
         signatures and check for Authenticode certificates on all assemblies in
         the current AppDomain.

************************* Beta 1.0.3756.18875 RELEASE *************************

BUGFIX: for the PowerShell cmdlet, change all the boolean parameters to use the
        provided SwitchParameter type (i.e. UseSwitchParameterInsteadOfBoolean).

BUGFIX: make sure that all public components that are not designed to be created
        (i.e. they only contain static members) have a private constructor.

BUGFIX: fix tclLoad-1.1 test to check for Tcl 8.6 or higher (i.e. it uses script
        cancellation).

BUGFIX: fix tclLoad-1.5 test to check the return code of CreateTclThread, which
        can fail on some systems (e.g. the .NET Framework 2.0 RTM on Windows
        2000 SP4).

BUGFIX: make the lsort-9.2, lsort-9.3, lsort-9.4, and lsort-9.5 tests to accept
        correct answers that differ from the ones provided by the .NET Framework
        2.0 SP2.

BUGFIX: fix diagnostic output issue for clean tool.  make it quieter by default.

BUGFIX: fix ERRORLEVEL handling for Winodws 7 in all batch file based tools.

BUGFIX: save and restore the sleep time property for the interpreter in the
        tests that modify it.

BUGFIX: make test object-4.10 (WiX) work properly on Mono despite an extraneous
        line feed in the captured [exec] output.

BUGFIX: skip tests array-1.12 and array-1.13 in Tcl, see SF bugs #2889257 and
        #2889293.

BUGFIX: fork test upvar-8.3 into pre-tcl86 and post-tcl86 versions due to a
        change in the returned error message.

BUGFIX: prevent multiple debugger prompts when the Break environment variable is
        initially set during shell startup.

BUGFIX: fix error line number management in the interactive loop.

BUGFIX: fix out-of-bounds error for the interactive #iinfo command when there
        are no active script file names.

BUGFIX: do not display the Interpreter.Complaint string in red unless there is a
        valid one (i.e. it is not null or empty).

BUGFIX: make the default host properly display null object values.

BUGFIX: add missing ThreadId, BackgroundError, and Precision members to the
        IInterpreter interface.

BUGFIX: only compile the file IExecuteCache.cs if the EXECUTE_CACHE compile
        option is enabled.

BUGFIX: remove some extraneous "File Not Found" outputs in the build tools.  fix
        error checking semantics in the release preparation tool when returning
        from the build tool.  also, correct some typos in diagnostic messages.
        enable skipping the build steps in the release preparation tool.  also,
        run WinRAR in the background when creating the self-extracting archives.

BUGFIX: make sure that the -alias option works even when there is an existing
        opaque object handle name that refers to the same object.

BUGFIX: [object members] needs to return assembly qualified type names.  second,
        it should not return duplicate member names when method signatures are
        not selected.  third, it should not return the method attributes unless
        they are specifically requested.

BUGFIX: fix detection of assembly qualified names when confronted with types
        containing multiple generic type parameters.

BUGFIX: fix implicit opaque object handle leak in test winForms-4.1.

BUGFIX: fix callback leaks in tests object-4.5, object-10.2, object-10.3,
        object-10.5, vwait-1.4, vwait-1.5, vwait-1.6, vwait-1.7, winForms-4.1,
        winForms-5.1, winForms-5.2, winForms-7.1, winForms-8.1, and xaml-1.1.

BUGFIX: add null pattern checking to the substring case for StringOps.Match.

BUGFIX: prevent nonexistent custom test prologue/epilogue files from causing the
        test suite to raise errors.

BUGFIX: make upvar-10.1 test pass when logging has been explicitly disabled.

REFACTOR: cleanup the processing and displaying of command line arguments in the
          test suite prologue.

REFACTOR: allow for testing to be halted on the first test failure via the test
          suite flag -stopOnFailure.  this flag has no effect if the test suite
          is running inside Tcl.

REFACTOR: add plumbing to support displaying the color settings for the host via
          the #hinfo interactive command.

REFACTOR: issue a trace warning when the status and/or value of nonexistent
          options are requested.

REFACTOR: make the banner, legalese, and interactive help displays respect all
          color settings.  also, generally reform all color handling to be more
          robust and conservative with respect to the chosen interpreter host.

REFACTOR: make all usage of Interpreter.thisPackageName more robust.

REFACTOR: enable the CommandCallback class to skip creating opaque object
          handles for callback scripts.

REFACTOR: expose getColumnValue and getRowColumnValue to Tcl.  however, they
          will only work in Tcl 8.5 or higher.

REFACTOR: embed the source identifier from the Fossil checkout into the primary
          assembly via the new AssemblySourceId attribute.

REFACTOR: support overriding the default settings for project compilation on a
          per-user basis.

REFACTOR: add an experimental caching dictionary class.  for now, it is disabled
          by default because it still needs work.

REFACTOR: make the interactive #iinfo and #show commands idempotent and
          capable of displaying the local result as well as the global one.
          also, make it clear (via flags) whether a result is local or global.

REFACTOR: make the default host handle colors and formatting for non-standard
          return codes is a more customizable way.

REFACTOR: make it clear in the interactive shell when the primary assembly has
          been Authenticode signed.

REFACTOR: cleanup the setup and revise the component names and descriptions.

REFACTOR: allow None to be recognized as a ConsoleColor for the purposes of
          loading the host profile.

REFACTOR: add unit test to demonstrate that interactive script cancellation can
          work properly from a secondary thread.

REFACTOR: make the build tool select the latest available .NET Framework version
          (and the matching solution file) unless the NETFX20ONLY environment
          variable is defined.

REFACTOR: revise how the web service handles settings and flags (i.e. allow them
          to be modified via environment variables and/or the web configuration
          file).

REFACTOR: add the public IGetInterpreter and ISetInterpreter interfaces and make
          use of them in the library.  they are designed to provide an official
          way to get and/or set the interpreter instance associated with a given
          component.

REFACTOR: provide a cleaner way to construct package directories while embedded
          within an application (e.g. the script library directory containing
          the init.eagle file).

REFACTOR: the source archive now includes the source code and binary for the
          sha1sum tool.

REFACTOR: the official setup now requires the .NET Framework 2.0 SP2 or higher.
          it has been generally available since 2009/01/16 and is supported on
          all operating systems supported by the RTM version.  if this does not
          meet your needs, the setup may be customized and rebuilt using Inno
          Setup (http://www.jrsoftware.org/) and the provided setup source code.

REFACTOR: make sure that the unit test suites for third-party plugins have easy
          access to check for defined test constraints.

REFACTOR: further cleanup/modularize output handling in the PowerShell cmdlet.

REFACTOR: *SHELL* by default, we now dynamically load and call the interactive
          loop entry point in the Eagle library (i.e. Interpreter.ShellMain).
          this enables the shell to use any compatible version of the Eagle
          library, not just the one it was built against.

REFACTOR: *BREAKING CHANGE* rename IHost.WriteDebuggerHeader/Footer to
          IHost.WriteHeader/Footer.

FEATURE: new -trace command line option is used to enable tracing to the
         console without having to set the Trace environment variable.

FEATURE: add #canexit interactive command to toggle whether scripts are allowed
         to exit the application.

FEATURE: add [host namedcolor] sub-command to query the color and/or set values
         for a named color setting.  to standardize getting and setting named
         color settings across all kinds of interpreter hosts, new overloads of
         the IHost.GetColors and IHost.SetColors methods have been added.

FEATURE: add [object callbackflags] sub-command to set the flags on a callback.

FEATURE: add [object removecallback] sub-command to remove callbacks.

FEATURE: add -fail and -message options to [exit].  allow the interpreter host
         to reject exit attempts.

FEATURE: add -ignorestderr option to [exec] (see TIP #267 from Tcl 8.5).

FEATURE: add -noCancel option to [test2] to prevent the entire evaluation stack
         from being unwound by the script being tested.  also, make the -noExit
         option apply to the setup and cleanup script blocks as well as the test
         body itself.

FEATURE: add the ability to disable throwing exceptions when a disposed [Eagle]
         object is accessed.  this feature can be activated for all object types
         by setting the NoThrowOnDisposed environment variable (to anything). in
         addition, an Interpreter will no longer throw an exception when it is
         accessed after being disposed unless the ThrowOnDisposed flag was
         specified in the interpreter creation flags.

FEATURE: add the ability to break into the debugger when Interpreter.Create is
         called.  this is necessary to support debugging Eagle when it is
         embedded within an application that is not a shell.  this feature can
         be activated by setting the Break environment variable (to anything)
         prior to creating the Interpreter or by using the BreakOnCreate
         interpreter creation flag.

FEATURE: add the WiX integration project EagleExtensions.  this project contains
         a WiX preprocessor extension that allows Eagle variables, commands, and
         scripts to be used in WiX authoring.  this project will not build (i.e.
         it will be skipped automatically) unless you have WiX version 3.0 or
         higher installed (version 3.5 or higher is recommended). the necessary
         files have also been added to the setup.

************************* Beta 1.0.3736.02044 RELEASE *************************

BUGFIX: the [string format] command should provide a way to prevent numeric
        and/or date interpretation of its arguments.

BUGFIX: prevent incremental builds from rebuilding everything due to the issue
        described in Microsoft Connect FeedbackID 470485.  in summary, producing
        an XML documentation file during the build process prevents incremental
        builds from working correctly (i.e. they always rebuild everything).

BUGFIX: prevent warnings about being unable to overwrite in-use files in the
        BuildTasks output directory by skipping the custom build tasks for the
        Sample project when building inside Visual Studio.  for more detailed
        information on this issue, search the Microsoft .NET Development Forums
        for the threads 7ff580c8-bc13-444a-b887-e8909c82629c, entitled "Custom
        task dll in use after build" and 4d67b00b-07ef-4fa3-b581-234fca5caac0,
        entitled "Task dll is locked after build".

BUGFIX: if necessary, set env(HOME) based on the HOMEDRIVE and HOMEPATH
        environment variables (COMPAT: Tcl).

BUGFIX: fix the rotate-left (<<<) and rotate-right (>>>) operators.

BUGFIX: make sure to use the built-in Enum.TryParse when compiling for the .NET
        Framework 4.0 or higher.

BUGFIX: check for null array of methods passed to FindMethodsAndFixupArguments.

BUGFIX: remove optional argument decorations from the result of [info args].

BUGFIX: make [info default] return accurate information now that optional
        arguments are supported.

BUGFIX: display array searches when variable information is displayed.

BUGFIX: fix handling of [host close] by the interactive loop.

BUGFIX: change the default return value of _Hosts.Console.IsOpen to true so the
        interactive loop can work properly on Mono.

BUGFIX: make sure the System.Management.Automation.dll is not copied into the
        output directory by MSBuild.

BUGFIX: fix the file name handling logic in Engine.*ReadScriptFile.

BUGFIX: make sure that using the NoTitle and/or NoIcon options does not break
        console Ctrl-C support.

BUGFIX: prevent thread contexts from being re-created by blocking notifications
        during interpreter disposal.

BUGFIX: only tear down the thread specific data for a particular interpreter in
        Interpreter.DisposeThread.

BUGFIX: check breakpoints when exiting from a substitution call.

BUGFIX: prevent infinite recursion via [unknown] (i.e. if it tries to execute a
        nonexistent command).

BUGFIX: do not allow exceptions to escape from the GetScript and Prompt methods
        of the IHost interface.

BUGFIX: the core IHost implementation should not modify the provided script
        name using FormatOps.ScriptTypeToFileName.

BUGFIX: the test project must use the Engine.QueueWorkItem method instead of
        using the thread pool directly.  also, it must handle all the corner
        cases for the IHost.GetScript method (i.e. the IHost implementation may
        opt to return the text of the requested script, a local file name, or a
        remote URI).

BUGFIX: better error reporting for interactive #rehash command.

BUGFIX: fix "best" build selection issue in TclWrapper, the debug affinity of a
        particular build must not prevent higher priority builds with the same
        version number from being selected.

BUGFIX: make Engine.ReadScriptStream stop consuming characters from the stream
        when it encounters an end-of-file character.

BUGFIX: fix the Ctrl-C handler not being managed correctly when [host close]
        and/or [host open] are used.

BUGFIX: fix the -line and -linestop options to [regexp] and [regsub] to
        properly conform to the Tcl specification.

BUGFIX: fix [info subcommands] when used with a command alias.

BUGFIX: fix core marshaller handling of array arguments that are already of the
        required type.

BUGFIX: fix core marshaller handling of arrays with zero length bounds.

BUGFIX: fix typos related to an incorrect usage pattern for the LooksLikeOption
        and BadOption methods.

BUGFIX: fix [sql execute -type NonQuery ...] to return the same integer value
        returned by the .NET Framework method (i.e. number of rows affected).

BUGFIX: mark _Commands.Alias as "safe" because it provides no functionality by
        itself.

BUGFIX: in Tcl, revise and export [exportAndImportPackageCommands] from the
        script library for use by third-party packages.

BUGFIX: fix the variable leak detection support logic in runAllTests.  the
        global variable test_file is set by the Interpreter itself and must be
        unset prior to recording the global variable count for accounting
        purposes.

BUGFIX: fix the shift-left (<<) and shift-right (>>) operators with respect to
        negative shift values (COMPAT: Tcl 8.4).

BUGFIX: remove a redundant call to FixupVariants from the rotate-left (<<<)
        operator.

BUGFIX: fix race condition for the interpreter notification flags (e.g. the
        NoNotify flag) that can occur when multiple threads are trying to fire
        event notifications in very close proximity to one another.

BUGFIX: slightly relax checking of the build configuration directory name in the
        PathOps.GetBasePath method.

BUGFIX: The Example usage of FormatResult should use the actual return code and
        should include the error line number where applicable.

BUGFIX: make sure the DefineConstants list includes the EXECUTE_CACHE define and
        that the list itself ends with a null element for better C# syntactical
        correctness.

BUGFIX: improve compliance with the PowerShell 2.0 cmdlet standard.  make error
        reporting more robust and consistent.

BUGFIX: to improve compatibility, do not derive enumerated types from uint.

BUGFIX: attempt to mitigate disposing of [Tcl in] an Interpreter on a different
        thread than it was created on, please see ticket #1335fd994e.  this is
        only a partial fix.  it skips attempting to dispose of the Tcl subsystem
        if it has not been used.  failing that, it attempts to put all the Tcl
        related objects into a global (static) cache for later transfer if and
        when an Interpreter is created on the correct thread.  finally, more
        detailed diagnostic messages are provided to aid in debugging this
        situation.

BUGFIX: fine-tune result handling in the Interpreter creation code.  the Result
        [object] for a successful call should be null (or an empty string if the
        script library initialization is performed).

BUGFIX: in Debugger.CreateInterpreter, check if the Interpreter was sucessfully
        created before using it.

BUGFIX: fix an incorrect directory name handling bug in clean tool when cleaning
        up after plugins when there are spaces in the source code root directory
        name.

BUGFIX: fix Mono runtime version detection (broken as of Mono 2.6.0?).  also,
        adjust version number checking in the test suite (i.e. version.eagle) to
        be slightly more relaxed.

BUGFIX: correct long file name handling in the object-4.8 (i.e. the PowerShell
        custom cmdlet) test.

BUGFIX: add administrator constraint support for tests object-4.6 and object-4.8
        (Windows Vista/7 specific).  make the WMI test (i.e. object-4.6)
        slightly more robust.

BUGFIX: change test library-1.1 to allow a NULL return value from the Windows
        API function GetConsoleWindow if there is no interactive user (this may
        be Windows Vista/7 specific).

BUGFIX: fix incorrect regular expression bug in the build version tagging tool.

BUGFIX: fix incorrect XCOPY flags specified for files bug in the build updating
        tool.

BUGFIX: use a more robust method of unsetting environment variables in the
        release preparation tool (i.e. because we do not want to accidentally
        change the ERRORLEVEL).

BUGFIX: *BREAKING CHANGE* rename incorrectly named SetNoResultError routine to
        SetNoResetError.

REFACTOR: simplify all the build tasks by factoring out common code into the
          base class.

REFACTOR: simplify all the PowerShell cmdlets by factoring out common code into
          the base class.

REFACTOR: there is no need to lock the Interpreter in PreSetup.

REFACTOR: centralize all code that deals with modifying the interpreter creation
          flags and startup option handling (e.g. this is still accomplished via
          the documented environment variables for now).

REFACTOR: organize all the Eagle projects within all the solutions into groups.

REFACTOR: update various version numbers for the Visual Studio 2010 RC.

REFACTOR: modify the #testdir interactive command to include the default core
          and plugin test paths in the output.

REFACTOR: revise handling of the path variable (for use by third-party test
          suites to locate their own files).  the runTestPrologue helper
          procedure will now set the path global variable to the directory
          containing the file that invoked it immediately before running the
          standard test prologue.  also, the runTestEpilogue helper procedure
          will now unset the path global variable immediately after running the
          standard test epilogue.

REFACTOR: add a simpler overload of Engine.ReadScriptFile and use it when
          appropriate.

REFACTOR: for [host], allow using the -relx and -rely options to augment the
          values provided with the -x and -y options, if any.

REFACTOR: remove unnecessary helper routines from the engine.

REFACTOR: add experimental support for command lookup caching (resolve only).

REFACTOR: cleanup and modify the usage semantics of IHost.GetScript to properly
          handle all the valid corner cases (i.e. the IHost implementation may
          opt to return the text of the requested script, a local file name, or
          a remote URI).

REFACTOR: optimize runtime detection of Mono.

REFACTOR: *PERF* minor Engine performance tweaks.

REFACTOR: enable compile-time exclusion of debugger support.

REFACTOR: cleanup [debug] and have it use the new debugger API.

REFACTOR: avoid redundant setting of the return code when processing optional
          arguments in [info].

REFACTOR: make the internal debugger API and its usage more consistent.

REFACTOR: in Interpreter, validate strings prior to using File.Exists.

REFACTOR: move all non-console specific functionality from _Hosts.Console into
          the new _Hosts.Core class.

REFACTOR: skip loading the host profile if requested.  make the host profile
          loader cleaner and more robust.

REFACTOR: skip setting up the host script cancellation interface if requested.

REFACTOR: add overloads to the Interpreter.Create and InteractiveLoop methods
          that greatly simplify the process of creating and using interpreters
          with relatively standard behavior.

REFACTOR: cleanup all the implementations of IHost.GetScript.  enhance the core
          IHost.GetScript implementation so that custom code is no longer
          required to simply use an extra resource manager as a possible script
          location.

REFACTOR: update Fossil tool w/source to latest release version 20091220213451.

REFACTOR: detect the build tool and operating system in use during the build
          process.  this enables build targets to be skipped that rely upon a
          specific build tool (e.g. MSBuild) and/or operating system (e.g.
          Windows).

REFACTOR: check for null return from GetMethods, GetParameters, and GetFields.

REFACTOR: enable compile-time exclusion of the dedicated test code used by the
          unit testing framework.

REFACTOR: cleanup dedicated test code style.

REFACTOR: cleanup core parsing routines for style and usage.

REFACTOR: add baseline [string match] benchmarks.

FEATURE: add an example web services project EagleServices.  this project is
         considered highly experimental and should not be used in a production
         environment.  this project will not build (i.e. it will be skipped
         automatically) unless you have the "Web Application Projects" project
         type installed for the version of Visual Studio you are building with.

FEATURE: add -identity option to [object invoke] to allow for the explicit
         invocation of the object return value handling from the core marshaller
         (i.e. MarshalOps.FixupReturnValue) on any script-accessible object.

FEATURE: add -compiled, -explicit, and -reverse options to [regexp] and
         [regsub].

FEATURE: new -ptest command line option and #ptest interactive command to
         simplify running plugin-specific unit tests and/or suites.

FEATURE: test suite now runs cleanly on Windows 7 with or without administrator
         rights.

************************* Beta 1.0.3620.08845 RELEASE *************************

BUGFIX: make sure that [array] does not operate on undefined variables.

BUGFIX: add support for optional arguments (via [proc] and [apply]) to implement
        CodePlex feature #2985.

BUGFIX: make fetchAnUpdate type case-insensitive.

BUGFIX: flag variables as dirty only after the requested changes have been made
        to them.

BUGFIX: modify [vwait] and WaitVariable to properly support multi-threaded
        scenarios.

BUGFIX: make sure null lists passed to ListToEnglish do not cause exceptions.

BUGFIX: favor normal builds of Tcl over basekits.  properly detect official
        builds of Tcl for Windows that are threaded-by-default.

BUGFIX: allow test logging to be disabled.

BUGFIX: test socket-1.2 (and a few other tests) should not be skipped for Tcl.
        the larger problem here involved differences in how Tcltest and Eagle
        handle complex test constraint expressions.

BUGFIX: make [object resolve] work properly when running on the .NET Framework
        4.0.

BUGFIX: do not force the creation of the script cancellation thread if no script
        timeout has been set.

BUGFIX: when deleting the global namespace, honor all read-only flags.

BUGFIX: the [rename] command must remove leading colons from command names.

BUGFIX: make [info nameofexecutable] use forward slash as the directory
        separator (COMPAT: Tcl).  make [exec] pass the native executable file
        name to the system.

BUGFIX: verify the EagleBinaryOutputPath and/or EaglePackageOutputPath build
        properties are set before attempting to use them.

BUGFIX: the official build tools should perform build logging by default.  also,
        fix the ability to debug the build tools.

REFACTOR: cleanup the core list parsing routines.

REFACTOR: extend the IHost interface to allow hosts to handle calls to create
          new threads and dispatch work items to the thread pool.  also, allow
          hosts to handle calls to put the current thread to sleep.

REFACTOR: add initial build support for Visual Studio 2010 and the .NET
          Framework 4.0.  add project files for Visual Studio 2010 Beta 2.

REFACTOR: make constants for the names of native DLLs that we call.

REFACTOR: modify the semantics of SetVariableValue2 to ensure both array and
          scalar variables are setup correctly with respect to the elements
          dictionary prior to the final phase of modifying a variable value.

REFACTOR: update Fossil tool w/source to latest release version 20091111162119.

REFACTOR: *BREAKING CHANGE* update and lock-down all strong-name keys for Eagle.

FEATURE: new [debug lockcmds], [debug lockprocs], and [debug lockvars]
         sub-commands.  these are used to modify the read-only flag of commands,
         procedures, and variables, respectively.

FEATURE: support [do script until test] in addition to [do script while test].

FEATURE: support asynchronous engine operations via new public overloads of
         EvaluateScript, EvaluateFile, SubstituteString, and SubstituteFile.

FEATURE: add get/set/unset operations on logical groups of variables via the new
         GetVariableValues, SetVariableValues, and UnsetVariables Interpreter
         interface methods.

FEATURE: new -initialize command line option is used to immediately initialize
         the script library without entering the interactive loop.

FEATURE: new -postinit command line option is used to evaluate a script after
         the script library has been initialized.  also, the -preinit command
         line option is now restricted to evaluating scripts prior to the script
         library being initialized.

FEATURE: support evaluation of scripts from remote URIs via [source] and the
         command line.  also, added an engine flag to disable this behavior.

************************* Beta 1.0.3599.38186 RELEASE *************************

BUGFIX: fix typos in default host color property definitions.

REFACTOR: internal renaming and cleanup of coding conventions in the method
          overload resolution engine (i.e. FindMethodsAndFixupArguments).

REFACTOR: add missing empty argument to several IHost interface methods.

REFACTOR: add baseline [object invoke] benchmarks.

REFACTOR: revise command line help.

REFACTOR: add new supported build configuration for embedding the primary
          assembly into SQL Server.

FEATURE: add nested member name resolution to [object invoke].  the member name
         argument may now consist of multiple parts separated by a period.  this
         feature simplifies the process of invoking deeply nested members.  the
         -nonested option to [object invoke] has been renamed to -nonestedobject
         and a new -nonestedmember option has been added to allow this new
         feature to be disabled.

FEATURE: add -limit option to [sql execute] to limit the number of rows returned
         by a reader operation.

FEATURE: new [info ensembles] sub-command.  returns all commands that contain
         sub-commands (i.e. ensembles), optionally restricting the results
         based on a pattern.

************************* Beta 1.0.3596.38043 RELEASE *************************

BUGFIX: make the [pwd] command return the current directory using the alternate
        directory separator character, forward slash (COMPAT: Tcl).

BUGFIX: fix and cleanup interactive help for flags related commands.  add
        missing #ntypes interactive command.

BUGFIX: improve PathOps native path handling.

BUGFIX: when deleting the global namespace, make sure that the dirty flag is set
        on deleted variables so that a pending wait on the variable will be
        satisfied.

BUGFIX: make [array exists] semantics match the other [array] sub-commands.

BUGFIX: make [array names] on the global env array honor the matching mode.

BUGFIX: add the missing Tcl sub-commands [array anymore], [array donesearch],
        [array nextelement], and [array startsearch].

BUGFIX: support the test suite files being in a directory unrelated to the
        executable directory (i.e. isolated test suite support).

BUGFIX: prevent built release executables from having the full directory name
        for the PDB files.

BUGFIX: allow variable watches and trace callbacks to modify the variable flags;
        othersise, certain variable operations are impossible to accomplish via
        variable watches and trace callbacks.

BUGFIX: fix PowerShell cmdlet lifecycle issues.  the documentation is unclear;
        however, it seems that the StopProcessing method is called in lieu of
        the EndProcessing method if the operation is canceled.

BUGFIX: make [info exists] work with the global env array.

BUGFIX: catch exceptions when accessing environment variables via the env array.

BUGFIX: return errors when attempting to get or unset nonexistent global env
        array elements.

REFACTOR: modify internal policy interfaces to handle script file policies.

REFACTOR: update Fossil tool w/source to latest release version 20091102131944.

FEATURE: optionally perform string substitution on interactive commands.  this
         feature is disabled by default.  it may be enabled in the shell using
         the interactive #isflags command with a SubstitutionFlags argument
         value that does not evaluate to None.  if any errors occur during the
         substitution process, they will be reported to the console and the
         command itself will not be executed.  substitutions will be silently
         ignored if the interpreter engine flags, interactive or otherwise, are
         set to prohibit them.

FEATURE: new -noexit command line option is used to enter the interactive loop
         instead of exiting the process.

************************* Beta 1.0.3586.00247 RELEASE *************************

BUGFIX: use proper script library paths on Unix platforms.

REFACTOR: support keeping the primary assembly versions synchronized for a given
          release of Eagle.

************************* Beta 1.0.3585.35575 RELEASE *************************

BUGFIX: fix [gets stdin] end-of-line detection on non-Windows platforms.

BUGFIX: add missing test constraints in the files basic.eagle, expr.eagle, and
        function.eagle to allow the test suite to pass cleanly in Tcl 8.4
        through Tcl 8.6.

BUGFIX: simplify the use of language version test constraints and unify some
        tests that relied upon them.

BUGFIX: fix string operators (eq, ne, in, ni, etc) to stop them from converting
        their arguments to a numeric value.

BUGFIX: make core marshaller return success if any matching methods are found
        even if the match limit has not been met.

BUGFIX: avoid superfluously setting the foreground and background colors of the
        console.

BUGFIX: remove hard-coded assumptions in the test suite "we are always running
        inside the Eagle Shell" and "the interactive debugger is always
        available".

BUGFIX: the PowerShell snap-in should be selected by default during setup if a
        PowerShell install is detected.

BUGFIX: fix parsing of negative enumeration values.

BUGFIX: add more runtime guards to prevent scripts from using features that are
        not available on Mono.

BUGFIX: avoid using native stack checking on non-Windows platforms, even if
        support for it has been compiled in.

REFACTOR: first attempt to work around the "console hang" issue on Mono/BSD.

REFACTOR: *HACK* avoid the problematic overloads of the WaitAny/WaitOne methods,
          primarily so that Mono does not crash with MissingMethodException.

REFACTOR: skip changing the Console icon if requested.

REFACTOR: improve diagnostic information for stack overflow conditions.

FEATURE: new -noinvoke option to [object create], [object invoke], etc.  this
         option returns the constructor(s) and/or method(s) that match the given
         name and arguments without actually invoking them.  new -noargs option
         (for use with -noinvoke) that allows all the constructor(s) and/or
         method(s) matching a particular name to be returned without regard to
         the number and types of arguments they require.

************************* Beta 1.0.3581.42932 RELEASE *************************

BUGFIX: make all upvar-tcl tests self-cleaning.

BUGFIX: make [array get], [array names], [array size], and [array unset] work
        with the global env array.

BUGFIX: add missing test suite outputs for better Tcl compatibility.

BUGFIX: prevent usage of waitForProcesses in socket-1.2 test for Tcl.

BUGFIX: the [uri softwareupdates] sub-command will not work on Mono.  therefore,
        it is now disabled for the Mono build.

BUGFIX: prevent Tcl isolated thread tests from running when a non-threaded build
        of Tcl has been loaded.

BUGFIX: fix various errors and omissions in the interactive command help.

BUGFIX: *BREAKING CHANGE* rename [callback queue] to [callback enqueue] and fix
        error message.

REFACTOR: revise interactive #check command.  it now has the capability to
          synchronously download an updated release of the specified type (e.g.
          source, setup, or binary).

REFACTOR: make the evaluation engine callback queue an optional feature, enabled
          by default.

REFACTOR: make it easier to discover the valid options for [object create] and
          [object dispose].

FEATURE: new [uri join] sub-command.  allows URI components to be joined in a
         portable way without validation.

************************* Beta 1.0.3575.24043 RELEASE *************************

BUGFIX: *PERF* fix most of the performance issues caused by having per-thread
        context data.

BUGFIX: handle ShouldContinue exception when using the PowerShell snap-in with a
        non-interactive PowerShell host.

BUGFIX: prevent Engine.ResetReturnCode from attempting to access a null result.

BUGFIX: new [object foreach] sub-command fixes the inability to use managed
        collections that support IEnumerable and do not support random access.

BUGFIX: remove hard-coding of the stdout channel as the constraint detection
        reporting channel for the test suite.

BUGFIX: allow TclWrapper.Find and [tcl find] results to be restricted based on
        version.  this fixes test library-3.1 on systems that have really old
        Tcl libraries (pre-8.4) installed.

BUGFIX: remove usage of Interpreter.GetActive from the _Comparers.Command class.

BUGFIX: findFiles and findFilesRecursive routines need to use [file normalize]
        in both Tcl and Eagle.

BUGFIX: make [file pathtype] work better on non-Windows systems.

BUGFIX: *BREAKING CHANGE* make sure command tokens get removed from the
        appropriate plugin when a command is deleted via [rename], etc.
        unfortunately, this is a breaking change for all commands because an
        extra parameter is required in the call to the constructor.  no more
        changes will be made to the ICommand interface or related semantics
        prior to the final release.

REFACTOR: add experimental support for list representation caching.  reworked
          the interfaces of several internal and external routines to facilitate
          this feature.

REFACTOR: cleanup and clarify parts of Tcl sample.

REFACTOR: *BREAKING CHANGE* cleanup and revise all interface methods for getting
          access to the various entities managed by the interpreter.  this is a
          breaking change for external callers to those methods due to the
          addition of an output parameter.

REFACTOR: revise logic for add and removing sets of commands.  internal
          modularization and cleanup.

************************* Beta 1.0.3560.39191 RELEASE *************************

BUGFIX: allow Tcl commands to be forcibly deleted even if evals are active.

BUGFIX: remove superfluous code from the tclLoad-1.6 test.  also, modify Tcl
        library constraint to check for Tcl version 8.6 or higher (requires
        script cancellation).

BUGFIX: heavily revise locking semantics for the TclWrapper class to improve
        concurrency in multi-threaded scenarios.

FEATURE: new -tcl option to the various object related commands that cause Tcl
         commands to be created in the specified Tcl interpreter that expose the
         underlying functionality of the object.

************************* Beta 1.0.3557.23265 RELEASE *************************

BUGFIX: do not use the new WaitAny method overload when built for the .NET
        Framework 2.0 RTM or Mono (Mono bug #517208).

BUGFIX: work around Mono bug that causes the ManualResetEvent.WaitAny method to
        return the value WAIT_IO_COMPLETION.  the .NET Framework method never
        returns this value and the framework documentation clearly forbids it.

BUGFIX: make [string match] and [string format] argument validation more
        consistent.

BUGFIX: make [parray] line up all the values properly (COMPAT: Tcl).  there is a
        bug in Mono that prevents this from working properly and the old
        behavior is used in that case.

BUGFIX: reset pending cleanup flag after the global namespace has been deleted.

BUGFIX: revise Excel automation tests to check for leftover processes.  please
        note that this may cause these tests to fail occasionally due to subtle
        process timing issues external to Eagle.

BUGFIX: make handling of Interpreter.Create failures correct and consistent.

BUGFIX: do not try to use Windows dynamic loading functions when running on
        Unix even if the binaries are built for Windows.

BUGFIX: add missing type checks for the Version and ReturnCodeList types in
        Variant.IsNumber.

BUGFIX: remove incorrect use of argument list from exponent operator
        implementation.

BUGFIX: correct namespace for TclThreadList and TclThreadDictionary.

BUGFIX: object reference counts should never be automatically reduced for the
        global call frame.

BUGFIX: the [after] command must evaluate scripts in the global namespace.

BUGFIX: by default, the [after] command must not evaluate scripts until the next
        call to [vwait] or [update].

BUGFIX: correct locking semantics in [after enable].

BUGFIX: the Interpreter.AddVariable method must remove leading colons from
        variable names.

BUGFIX: fix a sticky result issue with the #halt interactive command.  This was
        caused by the [debug break] command recycling the previous result into
        the current result.

BUGFIX: make sure all threads are created via Engine.CreateThread.

BUGFIX: expose TclThread.CancelEvaluateNoLock as public until the TclApi
        threading semantics are finalized.

REFACTOR: revise the public Engine.ResetCancel interface (and private interfaces
          such as Engine.ResetHalt and Engine.ResetReturnCode) to set a boolean
          indicator, if any changes were actually made to the interpreter state.

REFACTOR: revise TclSample to allow multiple Tcl forms, one per thread.  Each
          form owns a Tcl interpreter.

FEATURE: new [after flags] sub-command.  this allows the script to specify if
         subsequent after events can be executed immediately or if they must
         wait until the next call to [vwait] or [update].

************************* Beta 1.0.3551.24300 RELEASE *************************

BUGFIX: correct typo that put the ObjectId attribute in the wrong place for the
        Sample.Class1 class.

BUGFIX: revise semantics for native stack checking by the engine and external
        components (e.g. callers to CheckEvents).

BUGFIX: fix issue with non-null Tcl API object being left in the Eagle
        interpreter in some cases of TclWrapper.Load failure.

BUGFIX: skip Tcl interpreter thread checking when the force flag is set in a
        call to TclWrapper.DeleteInterpreter or TclWrapper.Unload.

BUGFIX: allow the Tcl API object for the Eagle interpreter to be initialized
        externally if it has not been set already.

BUGFIX: allow external Tcl interpreters to be used if the TclWrapper flag has
        been enabled for the Eagle interpreter.

BUGFIX: make sure the GetEngineContext, GetInteractiveContext, GetTestContext,
        and GetVariableContext methods do not throw exceptions.

BUGFIX: verify proper thread for disposing Tcl subsystem.

BUGFIX: make Interpreter.MergeArguments handle corner cases better (e.g. allow
        skipping of source and/or target command names).

BUGFIX: make CommonOps.FilterList with an empty input list a NOP.

BUGFIX: pass old procedure to update notification.

BUGFIX: add locks around composite get/modify/set variable operations in
        [append], [lappend], and [lset].

BUGFIX: make TclWrapper error logging more consistent.

BUGFIX: find any event that is ready to be processed.

BUGFIX: fix typo in [open] error message.

BUGFIX: the [open] command can now re-open standard channels.

BUGFIX: add locks around access to the channel dictionary for the interpreter.

BUGFIX: fix CancelThreadStart to check for the Tcl_CancelEval delegate before
        trying to use it.

BUGFIX: give names to created threads.

BUGFIX: fix issue with opaque object handle name formatting.

BUGFIX: always honor the ObjectFlags.NoDispose flag.

BUGFIX: check for each Tcl API function prior to each use.  the intention here
        is that specific features of Tcl may be programmatically disabled.

BUGFIX: make the inclusion of several private containers dependent on Tcl
        support being enabled.

BUGFIX: remove TclObjectType.cs from the library projects because it is
        incomplete and will not be ready for 1.0 RTM.

BUGFIX: check for null name/value arguments to be passed to Tcl variable access
        routines.

BUGFIX: more consistent locking semantics in TclBridge and TclWrapper.

BUGFIX: check the interp argument to TclWrapper.Unload.

BUGFIX: preserve the Tcl interpreter prior to using the Tcl variable access
        routines due to the potential for variable traces.

BUGFIX: be consistent in checking if an Interpreter has been disposed.  also,
        locking style cleanup.

BUGFIX: unique identifiers should be produced even if the interpreter is
        invalid.

BUGFIX: tag DebugOps.Complain output with thread Id.

BUGFIX: fix omission of Policy value from the NotifyType enumeration.

BUGFIX: prevent exception when null value is passed as the text to
        EvaluateScript.

BUGFIX: cleanup per-thread data for an interpreter upon thread exit.

BUGFIX: move SoftwareUpdateCertificateValidationCallback from SecurityOps to
        SocketOps.

BUGFIX: remove all vestiges of non-working support for the .NET Compact
        Framework.  in order to actually make Eagle compile for and run on the
        .NET Compact Framework (or for that matter, on Silverlight), a huge
        development effort would be required for the purpose of porting it (i.e.
        removing quite a few useful features).  unfortunately, a similar effort
        would be required to make Eagle run inside Silverlight (i.e. since it is
        not based on the DLR).

BUGFIX: adjust handling of decimal digit checking to be in strict compliance
        with underlying algorithmic requirements.

BUGFIX: add missing directories to the clean tool.

BUGFIX: use suffix environment variables in the release preparation tool.

BUGFIX: fix typo of TraceInfoForegroundColor in default host.

BUGFIX: slightly better path handling in test prologue.

REFACTOR: in the event of a failure in TclWrapper.Load, delete any created
          interpreter directly instead of ending up doing it during unload via
          the TclWrapper.DeleteInterpreter method.

REFACTOR: cleanup event processing to eliminate redundant object references.

REFACTOR: migrate most usage of the interpreter-specific DebugOps.Complain
          method overload to use the new generic DebugOps.Complain method
          overload instead.  in the future, the interpreter-specific
          DebugOps.Complain method overload will only be used to report errors
          during the failure handling code where the failure actually involves
          an interpreter and the error message cannot reflect the failure,
          because it has already been set to reflect the failure of the
          operation as a whole.

REFACTOR: cleanup and modularize the Tcl/Tk library file name detection and
          parsing logic.  detect Tcl installed as an Eagle package.  add support
          for basekits.

REFACTOR: the TCL_WRAPPER compile define is now enabled by default.

REFACTOR: add compile define EAGLE to the library projects.  this will enable
          code that can be used with or without Eagle to determine if
          those integration features should be included or excluded.

REFACTOR: allow System.Net support to be excluded at compile-time.

REFACTOR: allow System.Console support to be excluded at compile-time.

REFACTOR: skip displaying empty information in the default debugger output (i.e.
          the debugger header) to conserve space on the screen.

FEATURE: allow custom test prologue and epilogue files set via the environment
         variables testPrologue and testEpilogue, respectively, to be evaluated.

FEATURE: new [interp alias], [interp aliases], and [interp bgerror]
         sub-commands.  the semantics of [interp alias] and [interp aliases]
         conform to the Tcl standard for command aliases with some minor
         differences primarily relating to error message text.

FEATURE: allow channel names in [open] and [socket] to be specified.

FEATURE: new [tcl preserve] and [tcl release] sub-commands.

FEATURE: add experimental support for isolated Tcl interpreter threads.

FEATURE: add EvaluateFile and SubstituteFile build tasks.

FEATURE: add asciidigit, asciialpha, and asciialnum types to [string is].

************************* Beta 1.0.3508.07783 RELEASE *************************

BUGFIX: totally removed the CancelInput property of the Interpreter (i.e. the
        way it was being used was basically useless) and revised detection and
        handling of redirected input in the interactive loop.  the bug itself
        can be seen by hitting ctrl-c when no script is being evaluated and
        causes the process to exit.

BUGFIX: fix missing CheckDisposed calls in IsInputRedirected,
        IsOutputRedirected, and IsErrorRedirected.

BUGFIX: fix error handling in IsVariableUndefined.

BUGFIX: check for null PreviousResult in [debug].

BUGFIX: slightly better error messages for [uri].

REFACTOR: switch to using HTTPS for online version checking (currently with a
          self-signed certificate); this is secure because we check that the
          public key of the certificate exactly matches what we expect it to be.

FEATURE: new [debug interactive] sub-command.  this helps alleviate the
         long-standing limitation that [debug break] and other interactive loop
         constructs are prohibited by default in non-interactive shell modes.

************************* Beta 1.0.3497.38353 RELEASE *************************

BUGFIX: prevent superfluous use of the EagleLibraryResGenUnsetReadOnly build
        target.

BUGFIX: do not copy EagleCmdlets to the BuildTasks output directory.

BUGFIX: fix failure of SetupConsole for NOP case when called upon to un-setup
        the console.

BUGFIX: add proper save/restore semantics for the InteractiveThread property of
        the interpreter in the interactive loop.

BUGFIX: properly lock access to interpreter processEvents flag from [vwait].

BUGFIX: fix launching of nested shells when running on Mono (primarily for the
        test suite).

BUGFIX: the background error handler should be changeable per-interpreter.

BUGFIX: remove the useless termOffset field from Interpreter.

BUGFIX: fix confusion about which pieces of private data in Interpreter are
        logically per-thread.

REFACTOR: *MAJOR* cleanup and reorganization of all private data in Interpreter.

REFACTOR: expose Tcl wrapper functionality if TCL_WRAPPER is defined.

FEATURE: add support for standard mode (where all non-standard commands are
         hidden).  in this context, a non-standard command is one that is not
         available in Tcl 8.4, 8.5, or 8.6 (i.e. it is specific to Eagle).

FEATURE: add getColumnValue/getRowColumnValue helper procedures to the script
         library.

FEATURE: add naive filter/map/reduce helper procedures to script library.

************************* Beta 1.0.3441.01503 RELEASE *************************

BUGFIX: add more I/O tests.  fix incorrect and failing tests io-1.2 and io-1.4
        due to using the wrong overloads of channel.Read() in [fcopy].

BUGFIX: revise and cleanup test suite summary handling.  report the overall
        result (i.e. the interp exitCode) based on the specified test pass
        threshold, if any.

BUGFIX: make sure that Tcl can run all the socket tests.

BUGFIX: correct unnecessary exposure of initializeTests to Tcl.

BUGFIX: correct failing test function-3.1 on Mono due to srand() result
        checking.

BUGFIX: correct multiple failing tests on CLR 4 due to overly strict version
        checking.

************************* Beta 1.0.3438.42186 RELEASE *************************

BUGFIX: replace the misuse of Engine.HasNoWatch in ProcessOps with
        Engine.HasNoEvent.

BUGFIX: fix duplicate ObjectId attribute values.

BUGFIX: by default, disable use of the soon to be deprecated CAS policy APIs
        (CLR 4).

BUGFIX: simplify checks for null encoding in [gets], [puts], and [read].

BUGFIX: make sure that the test suite sets the ExitCode to non-zero if any of
        the specified tests fail.

BUGFIX: fix check for the SignCode tool in the Authenticode build target.

BUGFIX: add EagleCmdlets target to the sign batch tool.

BUGFIX: adjust verbose descriptions of PowerShell cmdlet actions.

BUGFIX: skip building EagleCmdlets project if the necessary reference assembly
        System.Management.Automation is not present.

FEATURE: new [fcopy] command; the -command option from Tcl is not implemented.

FEATURE: allow PowerShell snap-in to be installed (optionally) from the setup.

************************* Beta 1.0.3434.03009 RELEASE *************************

BUGFIX: fix unintended limitations on the use of the ApplicationObject and
        UserObject properties of the interpreter object during its creation.

BUGFIX: custom build task interpreter should have strict auto-path option set.

BUGFIX: *BREAKING CHANGE* rename Strings class in the Eagle._Constants namespace
        to _String for consistency.

FEATURE: implement cmdlets and a snap-in for use with PowerShell.

************************* Beta 1.0.3432.35303 RELEASE *************************

BUGFIX: fix issue with exponentiation operator and numeric values that end up
        with the decimal type.  added more tests.

************************* Beta 1.0.3431.42578 RELEASE *************************

BUGFIX: include executable name in the test log.  add support for tagging the
        test log file name by build variant, etc.

BUGFIX: preserve DateTime and StringList values while evaluating an expression.

REFACTOR: modify how the expression engine handles operators and how functions
          and operators are added to the interpreter.  add FunctionFlags to the
          public IFunction interface.  add OperatorFlags to the private
          IOperator interface.

************************* Beta 1.0.3426.35077 RELEASE *************************

BUGFIX: fix [proc] to remove leading colons from the procedure names.

BUGFIX: add [package unknown] support to implement CodePlex feature #2986.

************************* Beta 1.0.3414.39083 RELEASE *************************

BUGFIX: correct failing test library-3.2 to use the file name of the Tcl library
        that it also loads via [tcl load] for [library load].

BUGFIX: allow variable watches and asynchronous event processing to be skipped
        when evaluating a script.

BUGFIX: fix the Tcl auto-selection algorithm to select a higher version even if
        the debug configuration does not match.

************************* Beta 1.0.3405.26077 RELEASE *************************

BUGFIX: fix test tclSubst-1.1 failing due to tests library-3.1 and library-3.2
        removing the Tcl binary directory from the search path even if they did
        not actually add it; modified the script library routines addToPath and
        removeFromPath to return non-zero if they actually alter the search path
        to facilitate this fix.

BUGFIX: fix usage of the interpreter Interactive property in some tests.  add
        missing test description to test debug-1.1 and add clarifying comments
        to test delayOut-1.1.

BUGFIX: allow opaque object handle names to be used in Type option values (e.g.
        in the -parametertypes option to [object create] and [object invoke]).

BUGFIX: add build targets and infrastructure to remove read-only attributes on
        source files that may need to be regenerated during the build process.

************************* Beta 1.0.3399.29054 RELEASE *************************

BUGFIX: *PERF* in the expression parser, do not switch on the operator name.

BUGFIX: fix [exec] to set ::errorInfo upon a non-zero exit status of the child
        process (COMPAT: Tcl).

BUGFIX: fix [global] and [variable] handling inside a linked call frame.

BUGFIX: fix usage of CurrentFrame where it was incorrectly assuming that it
        could not be a linked call frame (i.e. a frame with no variables).

BUGFIX: fix [package require] version comparisons (now non-exact by default).

REFACTOR: modify Example to demonstrate custom command execution policies and
          how to use the interactive loop.

REFACTOR: preliminary support for tracking source line numbers in the script and
          expression parsers.

************************* Beta 1.0.3393.01573 RELEASE *************************

BUGFIX: properly handle redirected input (special thanks to Matthew Wilson).

BUGFIX: lock read access to interpreter fields in default host.

BUGFIX: cleanup and add missing interpreter fields to default host information
        displays.

BUGFIX: when resolving member arguments, we do NOT want to try to interpret the
        argument value as an array variable name is they provided us an actual
        string and the destination type is a character array.

REFACTOR: also process environment variable options in test shell.

************************* Beta 1.0.3390.39648 RELEASE *************************

BUGFIX: bump stack safety margin to 384K/768K on x86/x64.

BUGFIX: also search for script library relative to application binary.

BUGFIX: do not show full debugger display for breakpoints and variable watches
        unless the default debugger flags have been overridden by the user.

REFACTOR: output a debug trace when a native stack overflow is detected.

REFACTOR: revise Authenticode signing build integration.

************************* Beta 1.0.3383.21041 RELEASE *************************

BUGFIX: fix possible uncaught stack overflow issues in parser by tracking parser
        nesting levels and triggering a native stack check if necessary and
        enabled.

BUGFIX: make extra build tasks capable of being disabled.

REFACTOR: remove ResetResult call in EvaluateTokens, it should no longer be
          needed.

************************* Beta 1.0.3375.38602 RELEASE *************************

BUGFIX: add missing NotifyType check to CheckNotifications.

BUGFIX: correct FormatOps.MethodName to return a non-decorated name; callers
        that need decorated names must use FormatOps.MethodOverload.

BUGFIX: do not change the Initialized property of an IPlugin inside AddCommands
        and RemoveCommands.

BUGFIX: correct policy name construction and handling.

REFACTOR: expose interpreter basic policy API.

REFACTOR: make PathDictionary container public.

************************* Beta 1.0.3363.28976 RELEASE *************************

BUGFIX: add missing monoBug constraint to fileIO-2.2.

BUGFIX: SendMessage / PostMessage need to be CharSet = Auto.

BUGFIX: remove some useless variable declarations in Unix builds.

BUGFIX: update CodePlex URL.

************************* Beta 1.0.3362.22704 RELEASE *************************

BUGFIX: correct usage error message for [unset].

BUGFIX: correct multi-threaded call frame management.

BUGFIX: fix race condition for globals, vars, and locals sub-commands of [info]
        and the [debug watch] sub-command.

BUGFIX: fix test object-98.2 result (make insensitive to hash table ordering).

BUGFIX: for Mono build, do not use new SP2 overload of ManualResetEvent.WaitOne.

BUGFIX: constrain some fileIO tests based on platform.

************************* Beta 1.0.3348.06228 RELEASE *************************

BUGFIX: revise test usage of the Result.op_Implicit method.

BUGFIX: fix error message(s) for Value methods and simplify error handling
        logic.

BUGFIX: fix Console.GetSize method to return buffer size, not window size.

BUGFIX: fix argument checking for WriteBox.  make sure list is valid and check
        screen bounds so that we will not fall off the bottom of the console
        window.

BUGFIX: made testing of WriteBox more stringent and correct.

BUGFIX: fix error handling semantics for [host color] and [host position]
        sub-commands.

BUGFIX: rename [tailcall] to [callback] because they were not true tailcalls.
        converted to an ensemble.

FEATURE: new [host reset], [host size], [host boxstyle], [host outputstyle], and
         [host writebox] sub-commands (primarily for testing the console output
         subsystem).

************************* Beta 1.0.3344.10975 RELEASE *************************

BUGFIX: add protocol stream translation to guarantee cr/lf end-of-line output
        sequences regardless of the end-of-line sequences present in the output
        from [puts] (e.g. for Internet protocols).

BUGFIX: allow command history to be bypassed at the C# level.

REFACTOR: revise core marshaller to be more flexible and to provide more
          accurate error messages.

************************* Beta 1.0.3342.22280 RELEASE *************************

BUGFIX: wrap stray use of remoting in #if REMOTING.

BUGFIX: fix [clock format] for blank or entirely whitespace formats.

BUGFIX: fix command line pre-processing for interactive-mode.

BUGFIX: fix call frame argument handling for lambda expressions.

BUGFIX: correct passing a StringList to the ArgumentList constructor.

BUGFIX: adding formal arguments for scope creation inside of apply needs to skip
        the lambda expression.

BUGFIX: correct initialization semantics for Tcl "safe" interpreters.

BUGFIX: add missing version-specific Mono test constraints when running in Tcl.

BUGFIX: correct appendArgs with no arguments.

BUGFIX: modularize and correct logic for importing package commands into the Tcl
        global namespace.

BUGFIX: correct quirky test package detection logic in the test suite.

BUGFIX: fix isolated socket client test to enable run-in-Tcl support.

BUGFIX: update all Mono test constraints to take into account issues that have
        been fixed for Mono 2.4.

BUGFIX: make server sockets more robust and work around the ExclusiveAddressUse
        exception issue on Mono 2.0/2.2 and Mono on Unix.

BUGFIX: fix sql test case for Mono 2.2+.

BUGFIX: fix shared log file handling by selectively emulating Tcl's file sharing
        semantics.

SECURITY: the file association added by setup now uses "safe" mode.  this means
          that simple double-clicking a script file which contains any commands
          not marked as "safe" will fail with an error message.

REFACTOR: streamline and expose "safe" interpreter handling via the shell.

REFACTOR: extract and add method for adding object aliases.

FEATURE: add -alias option to [tcl create] for simpler Tcl script evaluation.

************************* Beta 1.0.3339.05242 RELEASE *************************

BUGFIX: add build dependency on the script library files to the
        EagleLibraryResGen target.

BUGFIX: fix reference counts for opaque object handles returned from a procedure
        (with or without using an intermediate variable).  opaque object handles
        used in this way must be explicitly disposed because an extra reference
        is added when the procedure returns to prevent it from being disposed
        when the call frame is popped.  the exact behavior is subject to change
        in future releases; however, explicitly disposing an opaque object
        handle is the preferred way of cleaning up objects, especially those
        that implement IDisposable.

BUGFIX: allow compilation to specifically target .NET Framework 2.0 RTM (i.e.
        prevent features introduced in later service packs from being used).

BUGFIX: make sure to reverse any path modifications made in the library3 test so
        that it does not affect the tcl-subst test.

BUGFIX: make sure we can find init script even if the base directory name
        matches the name of the build configuration (e.g. Debug).

BUGFIX: do not strip blank lines entered during a multi-line interactive
        command.

REFACTOR: revise how native console handles are queried and used.

FEATURE: add compileCSharp script library procedure for easily compiling C# code
         from a script.  added tests.

FEATURE: new [object refcount] sub-command.  this is primarily for testing
         purposes and may be removed in a future release.

FEATURE: new [host mode] sub-command.

************************* Beta 1.0.3335.35607 RELEASE *************************

BUGFIX: tests should remove object namespaces they import.

BUGFIX: add support and tests for server sockets.

BUGFIX: correct synchronization in TclApi.

BUGFIX: correct DoOneEvent/Unload issues (e.g. Tcl_Exit) in TclWrapper.

BUGFIX: add missing monoBug constraint to fileIO-1.11.

BUGFIX: do not skip monoBug/monoCrash tests in Tcl.

BUGFIX: use -nocomplain when unsetting variables outside of tests.

BUGFIX: add null checks to SubCommandPolicy/DirectoryPolicy.

BUGFIX: add native threadId to the interpreter at creation time.

BUGFIX: correct threadId tests in TclApi (Tcl is bound to native threads, not
        managed).

REFACTOR: add notification for engine command execution.

FEATURE: add support for command history tracking.

************************* Beta 1.0.3325.09846 RELEASE *************************

BUGFIX: build/release tool fixes.

BUGFIX: fix [file dirname] for invalid paths and paths that represent the root
        of the drive.

BUGFIX: correct loading semantics for the console settings file.

BUGFIX: correct and expand file-io tests to cover different encodings.

BUGFIX: correct buggy global-upvar test.

BUGFIX: correct locale-sensitivity in object2 test.

************************* Beta 1.0.3323.06882 RELEASE *************************

BUGFIX: *PERF* fix performance regression caused by removing usage of fast mode
        for getting enum names/values.

BUGFIX: fix buggy [string map] argument counting.  fix use of -maximum, added
        tests.

BUGFIX: enable hack for native stack checking on x64 due to lack of NtCurrentTeb
        export in NTDLL.

BUGFIX: write all temporary test files to $env(TEMP).

BUGFIX: do not try to load 32-bit Tcl DLLs when running as a 64-bit process.

BUGFIX: correct locale-sensitive date/time checking in tests.

BUGFIX: work around interpreter disposal race condition on Mono.

REFACTOR: change internals of the PolicyData mechanism.

************************* Beta 1.0.3321.08911 RELEASE *************************

BUGFIX: correct retry semantics for getting enum names/values.  disable fast
        mode for now as it is not 100% stable.  correct error message semantics.

BUGFIX: added protection against using Tcl interpreters and/or objects on the
        wrong thread.

BUGFIX: correct usage of IDisposable.  All IDisposable objects now call
        CheckDisposed for every public member.

BUGFIX: give error on invalid options to [regsub].

BUGFIX: call frame flag matching semantics.

BUGFIX: do not return hidden commands and procedures via [info].

BUGFIX: result handling in GetStartupFileName and GetScript.

BUGFIX: fix [file attributes] command for reading single option.

BUGFIX: work around bug in Mono Binder implementation.

BUGFIX: correct AssemblyUri attribute handling for plugins.

BUGFIX: correct quoting of text in scripted parser access, adjust tests.

BUGFIX: cleanup object disposal code/options to be more correct and consistent.

BUGFIX: fix premature disposal of console resources.

BUGFIX: fix etranenous case in TranslateRegSubSpec.

REFACTOR: modularize and granularize interpreter creation options.

REFACTOR: increase consistency with bad value/option handling.

REFACTOR: allow support for Tcl stardlls to be disabled at compile-time.

REFACTOR: skip changing the Console title if requested.

REFACTOR: flag all commands as either "safe" or "unsafe".  preliminary support
          for "safe" interpreters and host policies implemented in managed code
          to allow hidden commands to be executed.

************************* Beta 1.0.3315.03693 RELEASE *************************

BUGFIX: fix missing NotifyTypes from status display.

BUGFIX: make NativeOps.LoadLibrary via dlopen() work on more platforms (e.g.
        OpenBSD), this time with feeling.

BUGFIX: better error reporting for dynamic loading related errors.

************************* Beta 1.0.3314.36410 RELEASE *************************

BUGFIX: SingleFile build needs to allow for embedding packages in the library
        (e.g. EagleTest).  Refactored package management subsystem to be more
        uniform and robust given this requirement.

BUGFIX: make NativeOps.LoadLibrary via dlopen() work on more platforms (e.g.
        OpenBSD).

BUGFIX: add test constraints for optional commands.

BUGFIX: add test constraint that detects non-working dlopen().

BUGFIX: force stack size calculation when entering interactive loop.

BUGFIX: fix some unit tests to be skipped on Tcl 8.6 (error message formatting).

BUGFIX: fix [update] on Unix.

REFACTOR: new public interface IEvent.

REFACTOR: *BREAKING CHANGE* changed how the notifier handles notification flags.
          notifications are now divided into types (NotifyType) and sub-types
          (NotifyFlags).  this is potentially a breaking change for any plugins
          that currently implement the INotify interface; however, I am not
          aware of any third-party plugins that currently do this.  the
          rationale behind this change is simple, not enough event types could
          be represented in the previous setup and the whole point of
          notifications is that they are fine-grained.

************************* Beta 1.0.3312.40289 RELEASE *************************

BUGFIX: *PERF* reduce the number of native stack checks.

BUGFIX: *PERF* perform type conversions without throwing exceptions.

BUGFIX: *PERF* perform integer value range checks/conversions without throwing
        exceptions.

BUGFIX: incorrect escaping of pipe character in batch file tools.

BUGFIX: insufficient parameter validation in batch file tools.

BUGFIX: log test results in Tcl as well as Eagle.

BUGFIX: incorrect interpretation of [sql] parameter values as characters.

BUGFIX: incorrect entry point definition for SetErrorLevel tool.

BUGFIX: incorrect string-to-integer function for SetErrorLevel tool.

BUGFIX: [string format] for values that are bigger than a byte and smaller than
        a character.

BUGFIX: encoding reform, added custom TwoByte encoding for plugins that need to
        support Unicode character values that are invalid in UTF-16 (i.e.
        0xD800 to 0xDBFF and 0xDC00 to 0xDFFF).

BUGFIX: correct ArrayOps to use generics.

BUGFIX: correct build for .NET Framework 2.0 pre-SP2.

BUGFIX: allow [subst] to be properly canceled.

BUGFIX: prevent InvalidOperationException when Debug environment variable is
        used and the Console input is redirected.

BUGFIX: make argument quoting and ERRORLEVEL handling in batch tools more
        consistent.

BUGFIX: correct platform name for non-Windows builds.

BUGFIX: fix [info] sub-commands to be more consistent.

BUGFIX: make runtime detection more correct and consistent.

BUGFIX: correct engine fetching of errorInfo and errorCode to include the
        GlobalOnly flag.

BUGFIX: correct interactive flag management in interactive loop.

BUGFIX: correct incorrect regexp matching in some tests, Mono constraints.

BUGFIX: correct enum parsing on Mono in non-Mono builds.

BUGFIX: correct [file list] error handling.

BUGFIX: fix Tcl library search semantics for FreeBSD / OpenBSD.

BUGFIX: fragile overload resolution, make the marshaller optionally accept a
        list of parameter types to resolve any ambiguities.

BUGFIX: correct support for TIP #336 (Tcl_Get/SetErrorLine).

BUGFIX: detect and correct case where the Tcl library is unloaded out from
        underneath the interpreter.

BUGFIX: acquire and hold lock while processing command deletion callbacks from
        Tcl.

BUGFIX: do not always display array elements and links for #vinfo.

BUGFIX: fix disposing bridged Tcl command objects (test tclLoad-1.2 GC race).

BUGFIX: target condition cleanup for build targets.

BUGFIX: cleanup all files copied by custom build targets.

BUGFIX: properly support selectively running/skipping certain test files and/or
        names.

REFACTOR: miscellaneous internal changes.

FEATURE: check for updated versions via interactive #check command.

FEATURE: new [uri download] sub-command.

FEATURE: new [file tempname] sub-command.

FEATURE: new [info whitespace] sub-command.

************************* Beta 1.0.3304.19486 RELEASE *************************

BUGFIX: *PERF* parse enum values without throwing any exceptions.

BUGFIX: fix enum parsing of flag options on Mono.

BUGFIX: test constraint cleanup (mono, windows, interactive, performance).

BUGFIX: allow [file delete] to recursively remove directories.

************************* Beta 1.0.3301.37337 RELEASE *************************

BUGFIX: cleanup and correct shell command line usage information.

BUGFIX: make evaluations keep track of their error line number.

BUGFIX: make build targets check for required tool files.

BUGFIX: make clean tool delete test log files on Mono.

BUGFIX: add TIP #148 related constraints for tests list-1.[1-4].

BUGFIX: escape curly braces in test results that use regexp matching.

BUGFIX: disable tests on Mono that are .NET Framework specific.

BUGFIX: disable tests object-7.1 and object-10.1 on Mono due to crashes.

BUGFIX: make [file tail] handle an empty string gracefully.

BUGFIX: allow options to declare that conversions from string to System.Type or
        type lists should be case-insensitive.

BUGFIX: disable verbose mode for conversions from string to System.Type.

BUGFIX: allow test debug-3.1 to work with standard stack sizes.

BUGFIX: add missing embedded test package to the test project.

BUGFIX: make tests object-12.1 and object-12.2 pass on Mono (i.e. do not rely on
        reflection member ordering).

BUGFIX: make test tclLoad-1.2 complain quietly (i.e. this test expects to cause
        a complaint; however, it should not block).

FEATURE: make update tool copy test suite files.

FEATURE: add interactive #test command to shell to run the test suite or a
         subset thereof.

FEATURE: add runtime detection of the framework (e.g. Mono or .NET) and the
         version thereof (e.g. 2.0, 2.2, 4.0, etc).

FEATURE: add Quiet property to Interpreter.  non-zero prevents complaints from
         being presented to the user via IHost or a modal dialog box.

FEATURE: add -verbose option to [object], [sql], and [xml] sub-commands to
         enable detailed error reporting for type searches.

FEATURE: add build target to run the shell.

FEATURE: add build target to run the test suite.

************************* Beta 1.0.3299.00874 RELEASE *************************

BUGFIX: fix [string map] with empty mapping list.

BUGFIX: fix utf8/unicode encoding issues in Tcl wrapper.

BUGFIX: fix potential race conditions for tclApi object with locking.

BUGFIX: fix removal of variable links that refer to variables in an undefined
        call frame.

BUGFIX: correct error information preservation semantics for try/finally.

BUGFIX: properly save/restore the interpreter engine flags for nested
        interactive loops.

BUGFIX: allow unsetting of the entire env array.

BUGFIX: leading :: specifiers for variable pattern matching.

BUGFIX: major re-factoring of call frame semantics (COMPAT: Tcl).

BUGFIX: all public containers now have custom ToString methods.

BUGFIX: upvar to an array element now works.

BUGFIX: unset -nocomplain should never raise an error.

BUGFIX: uplevel argument handling.

BUGFIX: AddVariable handling of undefined, yet existing variable in call frame.

BUGFIX: array set handling of pre-existing variables.

BUGFIX: info globals did not return Tcl compatible results (include defined
        links to undefined variables).

BUGFIX: robustify internal list building and filtering operations.

BUGFIX: allow re-targeting of variable links (COMPAT: Tcl).

BUGFIX: properly dispose referenced modules of NativeDelegate.

BUGFIX: make sure null variables are not counted as defined by
        DoesVariableExist.

BUGFIX: make sure error messages are presented for attempting to unset/reset/get
        an undefined variable.

BUGFIX: when re-using an existing undefined array variable as a scalar, make
        sure to unflag it as an array.

BUGFIX: force lappend to honor variable traces.

BUGFIX: core marshaller was not matching property method names correctly.

BUGFIX: properly add custom errorInfo in error command.

BUGFIX: prevent catch command from messing up custom set errorInfo.

BUGFIX: file dirname now properly returns "." for file names with no directory
        information.

BUGFIX: fix closing and re-opening the console host, must re-setup.

BUGFIX: properly use implicit/explicit conversion operators for ByRef types.

BUGFIX: when cleaning up call frames, we cannot remove linked variables that
        link to the same call frame (exception).

BUGFIX: remove final end-of-line character when reading entire stream with
        -nonewline.

BUGFIX: correct end-of-line handling for files read via [source].

BUGFIX: fix off-by-one condition in [string range].

BUGFIX: fix server object disposal issue in remoting test code.

BUGFIX: fix security restrictions issue with remoting server test method(s).

BUGFIX: fix end-of-stream detection for network streams (i.e. [read] command).

BUGFIX: fix [source] for files with the Macintosh end-of-line sequence.

BUGFIX: sample project assemblies must be signed to load properly.

BUGFIX: properly marshal byte array values in rows returned from [sql].

REFACTOR: carefully change how undefined variables are handled as they
          transition from scalar to array or vice-versa.

REFACTOR: remove [interp alias] of Tcl test suite compatibility routines and use
          namespace export/import instead.

REFACTOR: [debug result] outputs unformatted text and omits trailing newlines.

REFACTOR: totally refactor entire test suite functionality, make fully Tcl
          compatible.

REFACTOR: change all uplevel/upvar related tests to use new functionality.

REFACTOR: add test file all.eagle, which will eventually contain all Eagle
          tests.

REFACTOR: change all tests to use the test suite (pending).

REFACTOR: forbid direct use of Complain that takes an IHost.

REFACTOR: naming police for format strings.

REFACTOR: call frames now have a unique frame Id.

REFACTOR: call frames may now be marked with arbitrary name/value pairs.

REFACTOR: variables now have a link index, which refers to the element of a
          linked array.

REFACTOR: major changes to level references (also Interpreter --> Value).

REFACTOR: all non-variable related call frames are now marked as such.

REFACTOR: call frames are now marked as invisible when necessary (i.e. uplevel).

REFACTOR: change call frame index and level interface members to long.

REFACTOR: call frames now support ToList() semantics.

REFACTOR: revise [read] to always use channel.Read().

FEATURE: new -purge option to [unset] to force purge of undefined variables from
         the call frame.

FEATURE: new EagleRunTests compile-time property to run the full test suite when
         building the shell project.

FEATURE: add support for case-insensitive options.

FEATURE: allow, through the usage of ##<integer> notation, traversal of all
         call frames, including invisible ones.  This feature is not supported
         by Tcl.

FEATURE: new icommand, iresult, restore, and variable [debug] sub-commands added
         to correct some minor functionality gaps.

FEATURE: new Interpreter public API RestoreCommands to restore commands in the
         core command set currently missing from the interpreter.

FEATURE: new [tcl select] sub-command added.  used to return the preferred
         locally installed Tcl build without loading it.

FEATURE: new -exitCode, -noCase, -noData, and -noExit options for [test2]
         command.  these enable various special case test scenarios.

FEATURE: new -nocase and -match options for [unload].

************************* Beta 1.0.3285.13304 RELEASE *************************

BEGIN: ChangeLog.
