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