Artifact Content
Not logged in

Artifact 3facc475a21615992d1f708b7fd174f5146a000d



************************* Beta 1.0.XXXX.XXXXX RELEASE *************************

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

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: 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.

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 MSBuild 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: *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* change the utc parameter of the Value.GetDateTime*
          methods to DateTimeKind.

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.

FEATURE: add a new MSBuild 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.

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.

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: 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: create a targets file that contains the necessary MSBuild 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: *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.

************************* 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: 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).

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.

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 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: *BREAKING CHANGE* rename all non-flag enumerations to their singular
          form, including ReturnCodes.

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* 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 subdirectories 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 tasks 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 MSBuild 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 MSBuild
        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 MSBuild 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: 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).

BUGFIX: *PERF* in the expression parser, do not switch on the operator name.

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] subcommands 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 MSBuild targets.

BUGFIX: cleanup all files copied by custom MSBuild 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 select [tcl] 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.