************************* Beta 1.0.XXXX.XXXXX RELEASE *************************
REFACTOR: cleanup and optimize how notifications are processed.
REFACTOR: improvements to build tools to harmonize / minimize differences with
their "sibling" tools present in other projects.
REFACTOR: *BREAKING CHANGE* change the method signature for the trace filter
callback delegate.
REFACTOR: *BREAKING CHANGE* heavily revise how the wrapper classes are created
and used.
REFACTOR: *BREAKING CHANGE* modify the "enableSecurity" and "disableSecurity"
embedded (security package) scripts to be more resilient when script
security is already enabled or disabled.
FEATURE: add the Precise, Human, and other flags along with the -flags option
to the [clock duration] sub-command.
FEATURE: add the [clock monthdays] sub-command.
FEATURE: add the DataFlags environment variable. it is used to set or alter
the script data flags used when creating an interpreter.
FEATURE: add the highly experimental AddAutomaticCommands method to the
IEntityManager interface. In order to make best use of this feature
attribute your object methods with [CommandFlags(CommandFlags.Safe)]
or [CommandFlags(CommandFlags.Unsafe)] attributes.
************************* Beta 1.0.8734.30319 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #353085 to #399157.
BUGFIX: when the Interpreter.GetStartup method calls the HostOps.GetScript
method, it must make sure to propagate the resulting script flags
to the caller.
BUGFIX: pending variable traces on the current thread should not cause nested
variable traces to be skipped, e.g. trace write for ::errorInfo while
dealing with ::auto_path changes.
BUGFIX: skip all undefined variables when copying into the final settings list
for callers to the ScriptOps.LoadSettingsViaFile method.
BUGFIX: the SwapCommands method should clear the IExecute caches when support
for them has been included in the core library.
BUGFIX: avoid a NullReferenceException from the GlobalState.GetAutoPathList
method.
BUGFIX: the [getExternalIpAddress] core script library procedure should not
attempt to use the [string is inetaddr] sub-command when running in
native Tcl.
BUGFIX: fix typo that could lead to a script error in the core script library
helper procedure [doesCompileCSharpWork].
BUGFIX: make sure current test name value is propagated to all created test
interpreters. robustness fixes for tests processIsolation-1.1 and
xaml-1.*.
BUGFIX: stop direct assignments of the context engine flags during procedure
execution; this was preventing any procedure from changing the flags
within the engine context in such a way that they would persist after
it returns. instead, each non-saved context engine flags bit must be
backed out.
BUGFIX: *MAJOR* nested use of the [upvar] command against the same variable
must follow existing links for the other variable prior to setting up
the new link.
BUGFIX: *MAJOR* fix event queue handling so that higher priority events that
should happen in the future do not prevent lower priority events that
should happen right now.
BUGFIX: *MAJOR* the ScriptTraceListener class must use cooperative locking on
all overridden TraceListener methods to avoid deadlocks when getting
the interpreter lock.
BUGFIX: *MAJOR* the DebugOps subsystem cannot make use of blocking locks, to
avoid deadlocks when custom trace listeners are present in case those
trace listeners need to use blocking locks, e.g. the interpreter lock.
BUGFIX: *MAJOR* the MaybePopulateResultErrorProperties method must acquire the
interpreter lock and check for disposal.
REFACTOR: enhance the diagnostics emitted by the [checkForUpdate] core script
library procedure.
REFACTOR: heavily fortify network related methods against transient errors.
REFACTOR: add preliminary support for the .NET 9.0 runtime.
REFACTOR: *BREAKING CHANGE* be more aggressive about locking in the default
interpreter host.
REFACTOR: *BREAKING CHANGE* change HealthCallback delegate to make the status
flags parameter input / output.
REFACTOR: *BREAKING CHANGE* add UseForce property to the IHost and IHostData
interfaces and add a UseForce flag to the CreateFlags enumeration.
also, support the UseForce environment variable.
REFACTOR: *BREAKING CHANGE* remove excess bool parameters from methods of the
ITclEntityManager interface.
FEATURE: add the [debug null] and [debug result] sub-commands for test use.
FEATURE: make the message argument to the [error] command optional. when not
specified, the last script error on the current thread will be used.
FEATURE: add -nopreviousprocessid option to the [exec] command.
FEATURE: add WebErrorCallback property that allows the web download / upload
error handling functionality for an interpreter to be customized.
FEATURE: add -changed option to the [sql execute] sub-command. this will be
used to hook the Changed event on the connection type -OR- instance,
if applicable.
FEATURE: add TestCommands environment variable, which can be used to forcibly
add all test commands to all created interpreters.
FEATURE: add the TryLockNoThrow method to the ISynchronize interface.
FEATURE: add experimental support for annotating procedures declared inside
of non-global namespaces as "private". private procedures may not
be called from anywhere outside of their parent namespace.
FEATURE: improve SwapCommands method so it can swap out all normal and hidden
commands, including those implemented by a bare IExecute.
FEATURE: add the ExtractAnnotations method to the Value class.
FEATURE: add the FormatAppDomainId, GetAppDomainCounts, IsCurrentAppDomain,
CreateWebClient, GetWebMaximumRetries, SetWebMaximumRetries,
SleepForWebRetry, and TryLockAndExit methods to the Utility class.
FEATURE: add the WatchdogStatus property and the TryLockAndExit method to the
IInterpreter interface.
FEATURE: add support for automatically loading package index files from the
directory containing a script file being evaluated. please note
that this only applies to package index files in the same directory
as the script file being evaluated -AND- having a file name matching
the regular expression "^pkgIndex_([0-9A-F]{16})\.eagle$". Standard
package index files are excluded, i.e. those named "pkgIndex.eagle".
FEATURE: add the -bridge, -noforcedelete, and -nocomplain options to the
[tcl load] sub-command.
FEATURE: add -trustedonly and -maybetrustedonly options to the [library load]
sub-command.
FEATURE: add -maybeverifiedonly option to the [load] command and [object load]
sub-command.
FEATURE: *MAJOR* Add Tetris. Why? Because I wanted it. Hi Jeff, and thanks
for the code.
FEATURE: *BREAKING CHANGE* rename the ResultStack environment variable to
PopulateResultStack -AND- add the IncludeResultStack environment
variable to force inclusion of all stack trace information when
converting to a string.
FEATURE: *BREAKING CHANGE* rename the -trusted option to various the [tcl]
sub-commands to -trustedonly and add the -maybetrustedonly option.
FEATURE: *BREAKING CHANGE* modify the Utility.ExtractPolicyContextAndScript and
Utility.ExtractPolicyContextAndFileName methods to accept an integer
timeout parameter.
FEATURE: *BREAKING CHANGE* add integer Timeout property to the IPolicyContext
interface.
FEATURE: *BREAKING CHANGE* add LockCallback property to IInterpreter interface.
FEATURE: *BREAKING CHANGE* add two boolean output parameters to WaitVariable
method of the IVariableManager interface.
************************* Beta 1.0.8613.27347 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #330323 to #342758.
BUGFIX: add preliminary support for the .NET 8.0 runtime.
BUGFIX: when cloning variables for [scope create -clone], make a copy of the
variable container dictionary before passing it into the method that
enumerates it (i.e. MaybeCopyFrom), since arbitrary variable traces
may be fired, which may then modify the original variable container
dictionary.
BUGFIX: for the purposes of [scope create -clone], make sure the auto-path
variable is treated as a "special variable" and skipped over.
BUGFIX: script library helper procedures from file3.eagle depend on those from
runopt.eagle being available even when running in native Tcl.
BUGFIX: add several missing procedures from the test constraints package to the
list of its native Tcl exports.
REFACTOR: *BREAKING CHANGE* add the ISynchronizeStatic interface, rename the
ISimpleSynchronize interface to ISynchronizeSimple, and support the
ISynchronizeStatic interface in the Interpreter class.
REFACTOR: *BREAKING CHANGE* completely rewrote the Variant subsystem and all
the associated expression operators to simplify the code and improve
performance. Special thanks to PaulBraetz@GitHub for inspiring this
work.
REFACTOR: *BREAKING CHANGE* all write access to the System.Console class now
go through the ConsoleOps or HostOps classes. Optionally, these can
both be configured to use the native Win32 API WriteConsoleW.
REFACTOR: *BREAKING CHANGE* enhancements to the tracing subsystem to provide a
bit more context for each message.
REFACTOR: *BREAKING CHANGE* move all test related interpreter flags into a new
enumeration named InterpreterTestFlags. added interactive #dtflags
and #itflags commands. added -noCleanup option to [test2] command.
add InterpreterTestFlags property to the InterpreterHelper class.
REFACTOR: *BREAKING CHANGE* add the file2u.eagle core library script file, move
several Unicode related procedures into it, and add two more sets of
procedures, one for Unicode without line-ending translations and one
for UTF-8.
FEATURE: add [string is versionrange] sub-command.
FEATURE: add listRuntimeOptions and toggleRuntimeOption core script library
helper procedures.
FEATURE: add [package absent] sub-command. it will raise a script error if a
specified package is present in the interpreter.
FEATURE: add [string is inetaddr] sub-command and the [getExternalIpAddress]
core script library helper procedure.
FEATURE: add [file trusted] and [file verified] sub-commands.
FEATURE: add the -trustedonly and -verifiedonly options to the [object load]
sub-command.
FEATURE: add [host font] sub-command to query and/or change font used with the
System.Console class.
FEATURE: add support for decimal and double option values.
FEATURE: add GetNullableTimeSpan2 method to the Value class.
FEATURE: add GetTotalLength, IsFramework20, IsFramework40, CopyTrustedHashes,
CheckDefineConstants, FormatTracePriority, FormatDefineConstants, and
GetUtcNowTicks methods to the Utility class.
FEATURE: add overloads for the PushActiveInterpreter, HashString, GetBytes,
GetUniqueElements, and QueueUserWorkItem methods within the Utility
class.
************************* Beta 1.0.8503.24499 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #300175 to #316072.
BUGFIX: prevent the built-in Diagnostic host from emitting one character at a
time when writing to its (standard channel) streams.
BUGFIX: empty strings should always return nothing from the [split] command.
BUGFIX: hashing script file contents that are not present on the file system
should refer to the originally read text, not line-ending translated
script text.
BUGFIX: when calling FixupReturnValue, always pass a brand new dictionary of
options for use by create aliases.
BUGFIX: the [incr] command should not allow argument values with non-integer
internal representations.
BUGFIX: fixes to the special "args" argument handling for the [nproc] command.
BUGFIX: fix to sub-directory deletion handling in the Utility.CleanupDirectory
method.
BUGFIX: add null checks to several type comparision methods of the MarshalOps
class.
BUGFIX: honor policy trace output truncation when using MaybeEmitPolicyTrace.
BUGFIX: the GetPackageRelativeFileName method needs to make sure global package
paths are initialized prior to using them.
BUGFIX: decouple plugin strong name verification from its evidence extraction.
BUGFIX: by default, do not keep the test trace listener log file stream open.
BUGFIX: fix pending script checks in the MaybeCancelBusyOrNot method, which
prevented ResetCancel methods from working properly in some cases.
REFACTOR: improve semantics / naming conventions used by the runtime detection
subsystem.
REFACTOR: robustify static initialization for created AppDomains.
REFACTOR: make the Interpreter.Create method retry attempts to fetch (and add)
instances within the global state. also, further robustify against
locking errors within the global state, e.g. track whether or not an
interpreter was actually added to the global state, etc.
REFACTOR: internal cleanup of methods supporting the IEntityManager interface,
including PrivateHas*, PrivateDoes*Exist, and PrivateRemove* methods.
REFACTOR: improve tracing of lock acquisition errors.
REFACTOR: make it possible to disable interactive input, which causes input to
be buffered for later use.
REFACTOR: enhance responsiveness of the status form closing / disposal logic.
REFACTOR: add preliminary support for "kit" packages within the core library.
REFACTOR: add Engine.QueueWorkItem method overload that supports a ThreadStart
parameter type.
REFACTOR: add Engine.ExternalExecuteWithFrame method overload that makes all of
its flags arguments optional, pulling their values from the specified
interpreter when necessary.
REFACTOR: improve performance of creating interpreters when using the built-in
lists of commands, functions, etc.
REFACTOR: add experimental cache for StringBuilder instances used within the
core library.
REFACTOR: allow opaque object handles for the connection and/or transaction to
be used by the [sql execute] sub-command.
REFACTOR: *BREAKING CHANGE* for consistency, rename AsynchronousBridge class to
AsynchronousCallbackBridge.
REFACTOR: *BREAKING CHANGE* remove the Verbose plugin flag.
REFACTOR: *BREAKING CHANGE* improve formatting of CommandLogEntry lines.
REFACTOR: *BREAKING CHANGE* modify RestoreCorePlugin and RestoreMonitorPlugin
methods to require an additional boolean parameter.
REFACTOR: *BREAKING CHANGE* the [list] command is no longer included in the
subset required by the license SDK.
FEATURE: add ProvideEntropy property to the IInterpreter interface. when set,
it will be used to supply entropy to the interpreter instead of its
associated RandomNumberGenerator instance.
FEATURE: add -setall option to the [exec] command. when used, it forces all
captured values to be set into their associated variables even if an
error occurs.
FEATURE: add the ForceTrustedHashes environment variable to work around issues
with native X509 certificate trust checking.
FEATURE: add the PrepareInterpreterCallback and InitializeInterpreterCallback
static callback properties to the Interpreter class.
FEATURE: add WebTransferCallback property that allows the web download / upload
functionality for an interpreter to be customized.
FEATURE: add -logflags option to the [debug trace] sub-command.
FEATURE: add the [xml foreach] sub-command to iterate over a set of (matching?)
XML nodes.
FEATURE: add -anythread and -needclientdata options to the [load] command.
FEATURE: add RemoveCommands method and MaybeRename* methods to IEntityManager
interface.
FEATURE: add MergeTrusted* methods to the ITrustManager interface.
FEATURE: add CreateStateFlags property to the IInterpreter interface.
FEATURE: add GetVariableViaResolversWithSplit method to the IResolveManager
interface.
FEATURE: support extracting the unique identifier for a script from its text.
FEATURE: add two RemoveCommands method overloads to IEntityManager interface.
FEATURE: add ClearInterpreterForSettings, GetManagedExecutableName, HashBytes,
ComparePathParts, GetPackageScanCommand, VersionCompare, IsUnderPath,
GetPeFileDateTime, ConsoleKeyboardString, AppDomainIsStoppingSoon,
DoesTokenInterpreterExist, SetOfflineMode, ExtractZipFileToDirectory,
InOfflineMode, ClearInterpreterForSettings, IsInteractive, GetVersion,
GetOperatingSystemNameAndVersion, and GetRuntimeNameAndVersion methods
to the Utility class.
FEATURE: add [uri get] and [uri post] sub-commands, which work almost the same
as the [uri download] and [uri upload] sub-commands, except that their
use also implies the -inline option, which can now be disabled via the
new -noinline option.
FEATURE: add [interp iterationlimit] sub-command in order to limit the number
of iterations allowed for loops.
FEATURE: add -all option to the [interp rename] sub-command.
FEATURE: add [napply] command that works like [apply], but requires the use of
named arguments.
FEATURE: *BREAKING CHANGE* allow the [uri get], [uri post], and [uri isvalid]
sub-commands from within "safe" interpreters as long as URI argument
is considered trusted.
FEATURE: *BREAKING CHANGE* add ResetHistory method to the IHost interface and
the -history option to the [host reset] sub-command.
FEATURE: *BREAKING CHANGE* add the FindFlags and LoadFlags properties to the
InterpreterSettings class.
************************* Beta 1.0.8369.11942 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #283423 to #299487.
BUGFIX: correct argument synchronization in core shell support, including in
what-if mode handling, arguments file handling, and the -reconfigure
command line option handling, et al.
BUGFIX: prevent extended box characters from being used when the encoding being
used for console output does not represent them in a single byte.
BUGFIX: fix typo in CountInterpreters that prevented the DisableCreation method
from working correctly.
BUGFIX: use save/restore semantics for the current directory when cleaning up
temporary files during interpreter disposal.
BUGFIX: properly unhook console Ctrl-C handler(s) when running on the .NET 5
and/or .NET 6 runtimes. also, codify (previously known?) workaround
to unhook console Ctrl-C handler when running on the .NET Framework
2.0.
BUGFIX: stop leaking assembly object reference in [compileViaDotNetCoreCSharp]
core script library procedure.
BUGFIX: add preliminary support for the .NET 7.0 runtime.
BUGFIX: various fixes to version detection for Windows 10 and/or 11.
BUGFIX: also remove extended and/or Unicode characters from content emitted by
the default interpreter host in boxed output mode.
BUGFIX: *BREAKING CHANGE* created child interpreters may not create children
themselves if the parent interpreter has a child limit.
REFACTOR: when an interpreter is in kiosk mode, prevent [object invoke] from
invoking methods that are well-known to exit the process.
REFACTOR: major refactoring of the TraceOps class. simplify handling of trace
format string and index management. centralize and simplfy handling
of all named trace format strings.
REFACTOR: *BREAKING CHANGE* rename Strict file search flag to NullOnNotFound.
REFACTOR: *BREAKING CHANGE* introduce whatIfArgc / whatIfArgv global variables,
which are used (automatically) during core interactive shell argument
processing for script argument synchronization in what-if mode.
FEATURE: add TraceFormat environment variable, which can be used to override
message formatting, both directly or indirectly.
FEATURE: make it possible to skip package indexing for specific files and/or
directories.
FEATURE: add MaybeCreate static method to the StringList and StringPairList
classes.
FEATURE: add RobustNormalizePath, GetFullPlatformName, RobustNormalizePath,
GetPackageRelativeFileName, HashFile, and GetCurrentProcessFileName
methods to the Utility class.
FEATURE: add NoThreadAbort interpreter flag and script data flag. make sure it
is used when creating interpreters for use by Harpy and its SDK.
************************* Beta 1.0.8251.52012 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #277240 to #282887.
BUGFIX: remove incorrect and superfluous checking for the -options option from
the [string ends] and [string starts] sub-commands.
BUGFIX: when counting all existing interpreters, be sure to include those that
are associated with a token.
BUGFIX: shell callbacks must be refreshed after any calls to initialize script
library and/or EnableOrDisableSecurity.
BUGFIX: prevent a duplicate newline character from being returned if a channel
read stops between a carriage-return and its associated line-feed.
BUGFIX: prevent exceptions from being thrown by [subst] if an invoked command
happens to return a null result.
BUGFIX: correct option handling for the [clock clicks] sub-command.
BUGFIX: stop using the Environment.TickCount property to measure elapsed time
because it can overflow after only 24.9 days. this bug impacted the
[after] and [vwait] commands as well as the [scope eval] sub-command.
BUGFIX: correctly handle end-of-line pairs with the -noblock option for [gets]
and [read] the end-of-line pair is split between calls.
REFACTOR: heavily refactor procedures in the Eagle.File.Finder script library
package with a focus on robustness, cross-platform support, and the
ability to introspect their operation.
REFACTOR: add preliminary support for the .NET Framework 4.8.1.
REFACTOR: reforms to the [object verifyall] sub-command. remove the optional
argument and replace it with an optional list of options.
REFACTOR: update the Visual Studio Locator, Inno Setup Unpacker, Inno Setup
Extractor, and UnRAR tools to their latest release versions.
REFACTOR: *BREAKING CHANGE* add another boolean parameter to the ListFunctions,
ListCommands, ListOperators, ListProcedures, and ListPlugins methods.
REFACTOR: *BREAKING CHANGE* revise native utility library so that it uses its
own private heap by default.
REFACTOR: *BREAKING CHANGE* add another boolean option to the AddChannel method
of the IEntityManager interface.
REFACTOR: *BREAKING CHANGE* rename the ISecurityManager.*Decision properties to
ISecurityManager.*InitialDecision.
REFACTOR: *BREAKING CHANGE* add the ITrustManager interface, move all trusted
properties into it, and add the TrustedHashes property.
FEATURE: add the TryLockWithWait method to the ISynchronize interface.
FEATURE: add -readtimeout and -writetimeout options to the [socket] command.
FEATURE: add the -stopOnUnknown command line option to stop core shell argument
processing when an unknown argument is encountered.
FEATURE: add -contains and -type options to the [file under] sub-command.
FEATURE: add -legacy boolean option to the [file normalize] sub-command.
FEATURE: add [uri time] sub-command to query a remote server for the current
time via HTTPS.
FEATURE: add support for the literal prefix syntax (i.e. "***=") for regular
expressions.
FEATURE: add the [info decision] sub-command to return the previous policy
decision or the corresponding type.
FEATURE: add the [debug keyring] sub-command and interactive #fmkeys command to
fetch and merge an updated key ring into the local script key ring for
the interpreter.
FEATURE: add the Isolated and Security environment variables in order to force
created interpreters to enable plugin isolation and/or script signing
policies and core script certificates.
FEATURE: add MakeCoreSafe, MakeCoreSecure, and MakeCoreIsolated registry values
to force initially created shell interpreters to be created as "safe",
with script signing policies and core script certificates enabled, and
with plugin isolation enabled, respectively.
FEATURE: add [interp childlimit], [interp namespacelimit], [interp scopelimit]
sub-commands and their associated IInterpreter properties.
FEATURE: add NamespaceLimit, ScopeLimit, HealthCallback, PreWaitCallback, and
PostWaitCallback properties to the IInterpreter interface.
FEATURE: add MatchToken method to the IInterpreter interface.
FEATURE: add the base64, component, encoding, plugin, and xml classes to the
[string is] sub-command.
FEATURE: add the [string classes] sub-commands.
FEATURE: add [scope attach], [scope detach], [scope export], and [scope import]
sub-commands to allow variables in scopes to interact with namespaces.
FEATURE: add the IfCannotLock creation flag. if set with the IfNecessary flag,
interpreter creation should not fail due to the inability to acquire
the static lock on core library global state.
FEATURE: *BREAKING CHANGE* setup standard channels in "safe" interpreters if
they are marked for use by the shell.
FEATURE: *BREAKING CHANGE* remove FinallyTimeout and NetworkTimeout properties
from the IInterpreter interface. add GetTimeout and SetOrUnsetTimeout
methods to the IInterpreter interface.
************************* Beta 1.0.8192.54321 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #249015 to #258490.
BUGFIX: when using the ArrayAsValue flag to deal with reference parameters for
the [object invoke] sub-command, et al, null and/or empty array values
created automatically via the method overload resolution engine should
not prevent the resulting opaque object handle name(s) being stored in
the associated script variables.
BUGFIX: always check for the stub assembly being loaded, even if its usage is
otherwise disabled.
BUGFIX: add preliminary support for the .NET 6.0 runtime.
BUGFIX: stop leaking command callback in the [getDotNetStandardReferencePath]
procedure when running on .NET Core.
BUGFIX: make the [isDotNetCore] core script library procedure properly detect
the .NET 5 and later runtimes.
BUGFIX: do not invoke the interactive command callback if the interpreter is a
transparent proxy, unless the AllowProxyCallback interpreter flag has
been set.
BUGFIX: prevent [object dispose] sub-command with the -nodispose option from
being able to remove a locked object.
BUGFIX: the ScriptClientData class must override all primitive methods from its
base class (i.e. AnyClientData).
BUGFIX: in the SetupOps class, stop complaints with a null error message.
BUGFIX: make [unknown] mechanism work properly in an isolated AppDomain.
BUGFIX: make unloading of secondary application domains more robust by setting
a signal just prior to the actual unloading. this (also) allows code
in the target AppDomain to detect the pending unload much faster.
BUGFIX: *BREAKING CHANGE* actually, to be useful / correct, the IAnyClientData
interface must derive from the IClientData interface.
REFACTOR: completely refactor how all paths are handled when building the list
of candidate paths for possible inclusion in the auto-path, etc.
REFACTOR: further harden the PathOps.GetUniquePath method against failures.
REFACTOR: *BREAKING CHANGE* consolidate the FileCallFrame and StreamCallFrame
engine flags into ExtraCallFrame.
REFACTOR: *BREAKING CHANGE* use flags instead of boolean parameter(s) for the
DisableInterpreterCreation method.
REFACTOR: *BREAKING CHANGE* remove the [debug lockcmds], [debug lockprocs], and
[debug lockvars] sub-commands. add the [debug readonly] sub-command
to replace them all.
REFACTOR: *BREAKING CHANGE* make the Parser.SplitVariableName method public.
REFACTOR: *BREAKING CHANGE* replace the UseHostLibrary creation flag with the
UseLibrary host creation flag.
REFACTOR: *BREAKING CHANGE* attempt to prevent race conditions when emitting a
message to the collections of trace listeners by using a (new) lock.
FEATURE: add -datetimestyles option everywhere appropriate and DateTimeStyles
property to the IInterpreter interface.
FEATURE: add [disableStub], [enableStub], [stubOptions], and [stubSource]
commands to the stub assembly. these are not normal commands and
cannot be directly accessed at the script level.
FEATURE: add StubPath environment variable to override the fully qualified path
to the stub assembly.
FEATURE: add IRule and IRuleSet interfaces and classes. add -ruleset option to
the [interp create] sub-command, et al.
FEATURE: add the -ruleset option to the [load] command.
FEATURE: add -repopulate option to the [interp addcommands] sub-command.
FEATURE: add -interpreter option to the [info vars] sub-command.
FEATURE: add the -nocommands and -nofunctions options to the [interp create]
sub-command.
FEATURE: add Combine static method to the Result class.
FEATURE: add IsRestricted method to the ISecurityManager interface.
FEATURE: add GetResolverEngineFlags method to the IResolveManager interface.
FEATURE: add the MemberNameToEntityName, ExtractWords, CreateNamedEvent,
OpenNamedEvent, CloseNamedEvent, GetFieldValue, SetFieldValue,
GetPropertyValue, SetPropertyValue, GetPerformanceMicroseconds,
DoesEnvironmentVariableExistOnce, GetSocket, IsSocketCleanedUp,
IEnumerableHashCode, IsTcpListenerActive, CreatePluginData,
QueryFromDictionary, IEnumerableEquals, HashStringAndOrBytes,
GetHashCode, GetPerformanceCount, IsSameType, GetFieldInfo,
GetPropertyInfo, UploadData, FindStream, GetAssemblySourceId, and
GetAssemblySourceTimeStamp methods to the Utility class.
FEATURE: add ToNameValueCollection method to the StringDictionary class.
FEATURE: add the NoInitializeShell environment variable.
FEATURE: add the [interp isolated] sub-command.
FEATURE: add the [file under] sub-command.
FEATURE: add NullForProxyType to value flags, object flags, and lookup flags.
when used, an opaque object handle containing a transparent proxy is
treated as having a null type, i.e. instead of System.Object.
FEATURE: add the Separator property to the IStringList interface, which can be
used to override the default list element separator (i.e. which is a
single space character).
FEATURE: add the [uri security] sub-command. it can be used to introspect the
state of various security related features of the [uri] command.
FEATURE: make it possible to disable components of the default auto-path list
via environment variables.
FEATURE: add the -lock and -timeout options to the [scope eval] sub-commands.
FEATURE: add the CreateCount property to the IInterpreter interface.
FEATURE: add TextOrSuffix to the [info engine] sub-command.
FEATURE: add the [scope update] sub-command to (forcibly) refresh the values of
variables within the specified scope from the current call frame.
FEATURE: add the [scope lock] and [scope unlock] sub-commands to help prevent
other threads from using the associated call frame.
FEATURE: *BREAKING CHANGE* modify the [debug paths] sub-command to accept flags
that allow finer grained control over the returned list of paths.
FEATURE: *BREAKING CHANGE* add GetFlags value to the CreateFlags enumeration to
enable the creation flags and host creation flags to be modified via
their associated static startup methods.
FEATURE: *BREAKING CHANGE* add GetCommandName method to the IEntityManager
interface.
FEATURE: *BREAKING CHANGE* add the FormatAppDomainId method to the IInterpreter
interface.
FEATURE: *BREAKING CHANGE* add the PushActive and PopActive methods to the
IInterpreterManager interface.
************************* Beta 1.0.7945.33333 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #239657 to #240126.
BUGFIX: stop using global script cancellation state in the ScriptTimeoutThread
class.
BUGFIX: be more careful about using the active interpreter instance within the
PrivateShellMainCore method, i.e. it cannot be reliably used if what-if
mode is enabled.
BUGFIX: add preliminary support for the .NET 5.0 runtime.
BUGFIX: apparently, the CommandCallback class should be marked serializable.
BUGFIX: by default, do not permit an IExecute or ICommand to be added if there
exists another executable entity by the same name.
BUGFIX: when building up nested commands, be careful with results that are of
the type ResultList; specifically, they should be added a single value
to the underlying list of results, not as a range of values.
REFACTOR: cleanup some superfluous trace messages from the IsDisposedOrPending
method that occur when the interpreter is being disposed.
REFACTOR: improve consistency of end-of-options handling when dealing with them
prior to the main option processing.
REFACTOR: major cleanup of server socket thread handling, including resource
cleanup and thread-safety.
REFACTOR: reorganize the Result class handling of field sets, copy semantics,
and flags handling.
REFACTOR: make consistent use of the [getStringFromObjectHandle] core library
helper procedure in the core test suite and core script library.
REFACTOR: *BREAKING CHANGE* add CallFrame property to the IValueData interface.
REFACTOR: *BREAKING CHANGE* add optional timeout parameter to methods of the
IStatusManager interface.
REFACTOR: *BREAKING CHANGE* rename the [object addref], [object removeref], and
[object refcount] sub-commands to be [object addreference],
[object removereference], and [object referencecount], respectively.
REFACTOR: *BREAKING CHANGE* remove the SetFlags method from the IArgument and
IResult interfaces.
REFACTOR: *BREAKING CHANGE* tighten up handling of the PreviousResult property
of the interpreter.
REFACTOR: *BREAKING CHANGE* by default, do not complain when [debug break] is
used when the debugger is unavailable or disabled.
REFACTOR: *BREAKING CHANGE* add thread Id parameters to most of IEventManager
methods that deal with the interpreter event queues.
REFACTOR: *BREAKING CHANGE* change the signatures of the CreateDbConnection,
FixupDataValue, DataReaderToList, and DataReaderToArray methods.
FEATURE: add HashCodeAsHandle interpreter flag to cause opaque object handle
names to contain the runtime hash code value.
FEATURE: add Evaluate*WithScopeFrame methods to the Engine class.
FEATURE: add -sdk option to the [info commands] sub-command. add -interpreter
option to the [info commands], [info functions], and [info operators]
sub-commands.
FEATURE: add GetVariableValue, SetVariableValue, and UnsetVariable overloads to
the IVariableManager interface that lack a VariableFlags parameter.
FEATURE: add TreatAsFramework20 and TreatAsFramework40 environment variables,
which can be used to attempt to treat the current runtime as though it
were the .NET Framework 2.0 and/or .NET Framework 4.0, respectively.
FEATURE: add the [package pending] sub-command, which returns non-zero if any
package (or the specified package) is pending a load operation.
FEATURE: add the -options option to the [regexp] and [regsub] commands.
FEATURE: add the -complain option to the [debug break] sub-command.
FEATURE: add the -thread option to the [after] script scheduling sub-commands,
the [interp service] sub-command, and the [vwait] command.
FEATURE: add the DisposeOrComplain, GetTraceListenerType, GetDefaultAppDomain,
MaybeChangeEnvironmentVariable, GetAndUnsetEnvironmentVariable,
ChangeEnvironmentVariable, StartupShellMain, StartupInteractiveLoop,
ProcessTraceClientData, GetCurrentAppDomainId, DisableStubAssembly,
IsInterpreterCreationDisabled, SetWebSecurityProtocol,
DownloadAndExtractZipFile, and EnableStubAssembly methods to the
Utility class.
FEATURE: add the -noresult option to the [debug trace] sub-command.
FEATURE: add experimental HasCallFrameFlags method to the IResolveManager
interface.
FEATURE: *BREAKING CHANGE* remove the EngineClientData class as it was not used
anywhere.
FEATURE: *BREAKING CHANGE* add the experimental AnyClientData class.
FEATURE: *BREAKING CHANGE* change how the TraceListener integration is done and
add the -native option to the [debug trace] sub-command.
FEATURE: *BREAKING CHANGE* add ResetCancel method and IEngineContext-enabled
overloads of the IsCanceled / CancelAnyEvaluate / ResetCancel methods
to the IEngineManager interface.
************************* Beta 1.0.7900.33333 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #239262 to #239263.
BUGFIX: when using the -clone option to [scope create], deeply copy variables
into the new scope frame to avoid changing any existing variables that
happen to reside in a namespace. also, actually set the frame for the
cloned variables to the (new) scope, not null.
BUGFIX: fix the [vwaitLocked] core library script procedure and its associated
IVariable locking primitives to prevent it from raising script errors
when operating under a heavy multithreaded load. also, disable usage
of the interpreter readiness timeout while waiting for the variable to
be locked.
BUGFIX: stop prompting for the automatic update to run whenever the external
updater executable is not actually available.
BUGFIX: unless running on the .NET Framework 2.0, do not make use of the native
CLR function StrongNameSignatureVerificationEx; use the ICLRStrongName
interface when running on the .NET Framework 4.x or PEReader based code
when running on .NET Core or the Mono.Security based code when running
on Mono.
REFACTOR: tighten up IVariable instance locking semantics for variables that
become undefined.
REFACTOR: cleanup IVariable instance flag handling in the EntityOps class.
REFACTOR: *BREAKING CHANGE* cleanup how the trace format ands its associated
flags get initialized by the TraceOps class.
REFACTOR: *BREAKING CHANGE* change signature of the Utility.Wait method.
REFACTOR: *BREAKING CHANGE* add new method overload for IOption.IsPresent.
FEATURE: add the -useobject option to both the [read] and [puts] commands; if
present, it will cause the input or output strings to be interpreted
as opaque object handles.
FEATURE: add GetAssemblyLocation, GetPathType, IsFileStrongNameVerified, and
IsFileTrusted methods to the Utility class.
FEATURE: add the -notrace option to the [unset] command. this is a somewhat
dangerous flag and is intended to be used only when troubleshooting.
FEATURE: add the -priorities, -resetsystem, -resetlisteners, -forceenabled,
-statetypes, -logfilename, -enabledcategories, -disabledcategories,
-penaltycategories, and -bonuscategories options to allow for better
control over the state of the tracing subsystem.
FEATURE: *BREAKING CHANGE* change boolean options of [debug trace] sub-command
to require a value.
FEATURE: *BREAKING CHANGE* make the message argument to the [debug trace]
sub-command optional. when not specified, the current status of
the tracing subsystem is returned.
************************* Beta 1.0.7897.33333 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #220645 to #238401.
BUGFIX: verify the required [namespace] commands are available prior to trying
to enable or disable namespaces for an interpreter.
BUGFIX: be sure to remove conflicting commands when the -force option is used
with the [namespace import] sub-command.
BUGFIX: be sure to remove namespace imports when the [rename] command is used.
BUGFIX: the MaybeTrimOrClearCached* methods must honor the cache locking flags
when calling into the TrimExcess method.
BUGFIX: when reading interactive input, treat failing to read a line -OR- read
of a null line as end-of-file when input has been redirected. primary
test case for this is the Docker image.
BUGFIX: support non-defauilt build types from the [checkForUpdate] core script
library procedure.
BUGFIX: if [scope create] sub-command somehow fails when processing the -args
option, be sure that any created variables are cleaned up.
BUGFIX: *BREAKING CHANGE* make errorCode and errorInfo global variable values
per-thread.
BUGFIX: *BREAKING CHANGE* the core marshaller should support calling a method
with an array output parameter using an opaque object handle pointing
to a System.Array of the appropriate element type.
REFACTOR: add alternate mode for the [object resolve] sub-command that searches
the AppDomain loaded assemblies and treats the name specified as the
pattern to match against.
REFACTOR: add plugin name to the result of the [info identifier] sub-command.
REFACTOR: *BREAKING CHANGE* make all script cancellation state per-thread by
default, adding new options and flags where appropriate to maintain
the ability perform global script cancellation.
REFACTOR: *BREAKING CHANGE* add another boolean parameter to SetDisposalEnabled
method and change its return type.
REFACTOR: *BREAKING CHANGE* when using the [uri ping] sub-command, a valid URI
will be treated differently than a simple host name or IP address.
REFACTOR: *BREAKING CHANGE* add automatic detection of base64 strings to the
Utility.GetBytesFromString method.
REFACTOR: *BREAKING CHANGE* improve error handling of Encoding valued options.
REFACTOR: *BREAKING CHANGE* remove all custom plugin flags and add experimental
OverwritePolicies, OverwriteProcedures, and OverwriteCommands plugin
flags. this helps to fix some thorny integration issues with plugin
assemblies that host multiple plugins containing commands, policies,
or procedures.
FEATURE: add the experimental NoParameterCounts marshal flag to forcibly skip
all formal parameter count enforcement.
FEATURE: add the [namespace descendants] sub-command.
FEATURE: add the -locked option to the [vwait] command, which can be used to
evaluate a script while preventing other threads from accessing the
specified variable.
FEATURE: add the -nocore option to the [info loaded] sub-command.
FEATURE: add the [string ends] and [string starts] sub-commands.
FEATURE: add FlattenIntoParamArray marshal flag to force arrays to be expanded
into the final list of parameters used for a ParamArray parameter in
the call to associated method.
FEATURE: add the ZeroCounts cache flag. when set, the counts for a cache are
zeroed during a reset operation.
FEATURE: add the HighPriority interpreter state flag and make use of it when
initializing the caches.
FEATURE: add the [uri offline] sub-command to query or modify the offline mode
for the web subsystem.
FEATURE: add NetworkTimeout property to the IInterpreter interface.
FEATURE: add the -timeout option to both the [uri download] and [uri upload]
sub-commands.
FEATURE: make the optional argument to the [update] command into a flags based
argument.
FEATURE: add special handling of "knownBug" test constraints in the test suite
infrastructure.
FEATURE: add the ResultStack environment variable to force Result objects to
capture managed call stack information upon their creation.
FEATURE: add the IsSdk method to the ISecurityManager interface.
FEATURE: add [listExampleScripts] core library procedure to allow a list of all
available example scripts to be fetched.
FEATURE: add NoTraceAutoPath script library initialization flag. this is used
to avoid evaluating package index scripts in interpreters lacking the
commands typically found in package index scripts, e.g. interpreters
for use with the security SDK.
FEATURE: add unsupported -sdk option to the [interp create] sub-command. it is
currently for internal testing use only. hence, it is processed only
for build configurations with DEBUG enabled.
FEATURE: enhance the [interp issdk] sub-command to accept an optional SdkType
argument.
FEATURE: add DisableInterpreterCreation, GetCurrentProcessId, GetCurrentPath,
RemoveBlanksAndComments, GetUniqueElements, SaveEnvironmentVariables,
VerifyAssemblyFromFile, RestoreEnvironmentVariables, WriteWithoutFail,
and SetEnvironmentVariables methods to the Utility class.
FEATURE: *BREAKING CHANGE* add -global and -nolocal options to [interp cancel]
and [interp resetcancel] sub-commands.
FEATURE: *BREAKING CHANGE* enhance WatchdogControl method with health monitor
support.
FEATURE: *BREAKING CHANGE* add the [file cleanup] sub-command and its support
subsystem.
FEATURE: *BREAKING CHANGE* add Status method to the IPlugin interface and use
it to enhance the results of the [version] command. add an optional
argument to the [version] command.
************************* Beta 1.0.7790.43198 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #205858 to #218771.
BUGFIX: make sure that [info engine], [info patchlevel], et al, still work when
the interpreter does not have the needed platform variables.
BUGFIX: consistently use locking in the [interp] command and use the correct
interpreters for [interp service] and [interp unset] sub-commands.
BUGFIX: correct broken volume-relative path detection for the [file pathtype]
sub-command.
BUGFIX: *PENDING* do not discard relative path information when searching for
script files on the file system via the default hosts.
BUGFIX: stop popping too many arguments after processing the -recreate command
line option.
BUGFIX: cleanup the cached "safe" interpreter used by the settings loader when
its AppDomain is unloaded.
BUGFIX: when copying policies and traces from the PopulateInterpreterSettings
method, always skip transparent proxies.
BUGFIX: when processing flag Enum values, trim each item prior to checking its
operator and/or name. this is necessary in some obscure corner-cases.
BUGFIX: prevent the -arguments command line option from causing the interactive
shell to exit prematurely. apparently, this has been broken since May
of 2016.
BUGFIX: make index handling semantics of the [lget] and [lset] commands more
compatible with native Tcl.
BUGFIX: upon returning from an interactive loop entered via the [debug break]
sub-command, re-check the readiness state of the interpreter, in case
the interactive user invalidated it somehow.
BUGFIX: robustify the null argument string handling in the [file attributes],
[file rootname], [file tail], and [file type] sub-commands.
BUGFIX: enhance compliance with native Tcl by allowing radix prefixes for the
double, integer, wideinteger, byte, and decimal classes to [string is].
also, for the integer and wideinteger classes, permit unsigned values
that occupy the full width of the class.
BUGFIX: harden the [glob] command against internal errors due to invalid paths
and properly handle the pattern syntax "X:*" on Windows.
BUGFIX: when parsing flags enumeration strings, having an isolated operator is
allowed and should be processed correctly.
BUGFIX: make sure that the AssemblyOps.GetResourceStream method returns a valid
error message of some kind when the returned stream will be null.
BUGFIX: in the test suite epilogue, process pending events for a while in order
to avoid closed WinForms being left on the screen when running on Mono.
BUGFIX: have the built-in console host honor the [host close] detection in the
IsInputRedirected, IsOutputRedirected, and IsErrorRedirected methods.
BUGFIX: fix return semantics for the SetupTitle method. when the SaveTitle and
SetTitle method calls succeed, the result should be true, not false.
BUGFIX: mark the shell executable as "dpiAware" to improve the WinForms clarity
on Windows 10, et al.
BUGFIX: fix potential deadlocks related to the CopyChildInterpreters method by
changing it into the TryCopyChildInterpreters method.
BUGFIX: provide more precise error messages when an InterpreterHelper fails to
create its Interpreter.
BUGFIX: robustify unloading of created AppDomains and add tracing.
BUGFIX: when attempting to read a script file, do not search alternate (file)
names if the original file name was fully qualified.
BUGFIX: when attempting to read an XML script file, do not search alternate
(file) names when schema validation fails.
BUGFIX: fix typo in interpreter flags handling within the [debug setup]
sub-command.
BUGFIX: fully implement the IScriptThread.UseActiveStack property.
BUGFIX: the IScriptThread interface was supposed to include the UsePool and
EventVariableFlags properties.
BUGFIX: when using the ScriptThread.Attach static methods, do not purge the
global call frame by default.
BUGFIX: for the [object create] sub-command, disable implicit use of private
static constructors against primitive and value types. add an option
named -nomutatebindingflags to override this behavior.
BUGFIX: prevent native list splitting code from being used when the specified
length is zero as it can only handle cases where the entire string is
being split into list elements.
BUGFIX: stop assuming that the AltDirectorySeparatorChar value will be the
backslash character on non-Windows platforms.
BUGFIX: remove special case treatment of Mono for the [info nameofexecutable]
sub-command. furthermore, always attempt to preserve the actual entry
assembly name in created application domains.
BUGFIX: properly process the -blocking option to the [fconfigure] command.
BUGFIX: honor the UpdateCheck plugin flag when it has been set via the [load]
command or within the interpreter.
BUGFIX: when [test2] is using process isolation, always emit the correct child
process exit code.
BUGFIX: the [array set] sub-command should honor the ArrayElementLimit value.
BUGFIX: improve compatibility with the [lreplace] command and its handling of
empty lists.
BUGFIX: fix several issues with the plugin update subsystem.
BUGFIX: minor fixes to the [compileCSharp] subsystem related to command line
argument handling and logging.
BUGFIX: fix handling of undefined variables by the [dumpState] script library
procedure.
BUGFIX: prevent the DisposeTclThreads and FilterTclBridges methods from raising
ObjectDisposedException when they use the public Match method; instead,
use the new InternalMatch method.
BUGFIX: in "safe" interpreters, the [info library] sub-command should return a
scrubbed file name.
BUGFIX: in "safe" interpreters, forbid a directory from being in the auto-path
if it exists outside of the base directory.
BUGFIX: forbid a directory from being in the auto-path if its files cannot be
enumerated.
BUGFIX: fix syntax help semantics for all sub-commands with children, e.g. the
[host screen] sub-command.
BUGFIX: prevent package index file search from throwing exceptions due to lack
of file system permissions.
BUGFIX: fix day one bug in the SocketClientData class: it was never setting the
"exclusive" field based on its associated constructor parameter.
BUGFIX: access all auxiliary thread fields associated with an interpreter only
from within its own instance methods in order to prevent any isolated
interpreters from raising remoting exceptions.
BUGFIX: in the test prologue, always verify that the in-memory test log start
sentry matches the one found in the existing log file, if applicable.
BUGFIX: take care to preserve the ordering of object namespaces managed via the
[object namespaces] sub-command.
BUGFIX: use an ever increasing sequence number for the GetUniqueKey method of
the StringDictionary class.
BUGFIX: *PERF* by default, do not allow isolated plugins to receive any event
notifications. also, stop unnecessary casts to the INotify interface.
BUGFIX: *PERF* when an Argument object needs to be converted to a StringList,
make sure to use any cached StringList or IEnumerable value that may
already be available.
BUGFIX: *MAJOR* fix a couple (potential?) race conditions within implementation
of the [exec] command.
BUGFIX: *SECURITY* change -filename option to the [hash keyed], [hash mac], and
[hash normal] sub-commands to be flagged as "unsafe".
BUGFIX: *SECURITY* if [test2] ends up being used with process isolation from a
"safe" interpreter, make sure the command line for the launched child
process includes the -safe command line option.
BUGFIX: *SECURITY* do not allow "safe" interpreters to use underlying native
floating point formatting implementation provided by the MSVC runtime.
BUGFIX: *SECURITY* use child interpreter for the [interp readorgetscriptfile]
sub-command.
BUGFIX: *BREAKING CHANGE* modify the GetVariableValues, SetVariableValues, and
UnsetVariables methods of the IVariableManager interface to accept the
lists of variable values as objects, not strings.
BUGFIX: *BREAKING CHANGE* since [test2] is available in "safe" interpreters,
heavily restrict its set of allowed options when it is used in "safe"
interpreter contexts.
REFACTOR: optimize interpreter creation by using "well-known" lists of built-in
commands, functions, and operators, pre-generated beforehand.
REFACTOR: use the new System method flag to mark all built-in policy and trace
callback methods.
REFACTOR: add internal DoesIExecuteExistViaResolvers method, use it to simplify
various checks in the core library.
REFACTOR: make [sourceWithInfo] command available without having to initialize
the core script library.
REFACTOR: modularize the PrivateInitializeShell and PrivateInitialize methods.
REFACTOR: allow default noCase settings for the [array] sub-commands and the
NetworkVariable class to be set for testing purposes.
REFACTOR: allow the ObjectName attribute to be applied to delegates.
REFACTOR: use InternalSyncRoot inside core library command implementations.
REFACTOR: enhance EventOps.Wait method to accept an optional EventWaitHandle to
periodically check. also, add ability to ignore script cancellation
flags.
REFACTOR: show question mark icons for MessageBox calls that asks questions.
REFACTOR: make it possible to skip the re-throwing exceptions thrown from the
Application.DoEvents method.
REFACTOR: improve handling of Exception values by the Result class.
REFACTOR: cleanup integration with the GetStartupLogFileName method.
REFACTOR: keep track of the total number of active interactive loops for all
threads.
REFACTOR: add number of seconds since midnight to the default host title.
REFACTOR: make sure all Encoding lookups are handled by the StringOps class.
REFACTOR: move all list splitting / joining code into its own class, ParserOps,
including the native utility integration code.
REFACTOR: adjust priority of several trace messages to prevent them from being
seen in servers applications running in alternate AppDomains.
REFACTOR: remove the Sample project from the list of project dependencies that
are present in the solution files.
REFACTOR: add alternate constructor to the AssemblyDateTimeAttribute class.
REFACTOR: recognize the November 2019 and May 2020 updates to Windows 10.
REFACTOR: add DebugOps.SafeUnset(Global?)Complaint methods for test use.
REFACTOR: revise the error handling semantics for the mutex subsystem of the
SetupOps class.
REFACTOR: enhance handling of -errorsvar option to the [tcl find] sub-command,
et al.
REFACTOR: move default object namespace handling from the Value class to the
ObjectOps class.
REFACTOR: enhance [interp watchdog] with much better interactive support when
compiled without WinForms support and be more careful about its use
of the interactive flag.
REFACTOR: mark all IComparer, IComparable, and IEquatable members of AnyPair,
AnyTriplet, and related classes as virtual.
REFACTOR: be more careful about management of the timeout, finally timeout, and
(test) garbage collection auxiliary threads used by the interpreter.
REFACTOR: completely rewrite the IScript code responsible for XML processing,
and move it to its own class, ScriptXmlOps.
REFACTOR: add dbNullValue and errorValue parameters to methods FixupDataValue,
GetDataReaderFieldValues, DataReaderToList, and DataReaderToArray.
REFACTOR: stop requiring a valid interpreter for the CreateOtherDbConnection
and DataReaderToList methods.
REFACTOR: for PrivateSetupTraceListeners, accept and emit a context string to
show why it is setting up the trace listeners.
REFACTOR: add the NoPreviousResult engine flag to disable all previous result
handling in the script engine.
REFACTOR: stop requiring a valid interpreter for the GetAnyTypeViaCallback,
GetNestedMember, and GetNestedObject methods.
REFACTOR: for SetNativeDelegates, before failing, attempt to lookup address via
an ObjectName attribute on the target delegate type.
REFACTOR: revise the locking semantics use by ResetOrClearCaches (ClearCaches)
to avoid deadlocks via the TryLock pattern.
REFACTOR: stop searching for a host profile file when the NoProfile option has
been enabled for the interpreter host.
REFACTOR: optimize the operating system detection semantics of the PlatformOps
class.
REFACTOR: Move the Name property from the IIdentifierBase interface to the new
IIdentifierName interface.
REFACTOR: *HACK* avoid attempting to change the System.Console foreground and
background colors if they are already set to the target value.
REFACTOR: *HACK* call the GlobalState.SetupPrimaryThreadIds method from inside
the Interpreter.ForceStaticInitialize method. when on non-Windows
platforms, this may be necessary due to static class initialization
ordering oddities.
REFACTOR: *BREAKING CHANGE* remove the ExecuteCallbackDictionary class and use
the new PolicyList class instead.
REFACTOR: *BREAKING CHANGE* rename the IDynamicExecute interface to
IDynamicExecuteCallback.
REFACTOR: *BREAKING CHANGE* rename engine flags UseAll to UseAllMask, ForPrompt
to ForPromptMask, and DebuggerExecution to DebuggerExecutionMask.
REFACTOR: *BREAKING CHANGE* start using the terminology of "parent" and "child"
interpreters, et al.
REFACTOR: *BREAKING CHANGE* move the value contained in eagle_platform(os) to
tcl_platform(osString).
REFACTOR: *BREAKING CHANGE* make use of the -interpreter option passed to the
[debug shell] sub-command even when the -asynchronous option is also
in use. also, when the -asynchronous option is not in use, fallback
to the interpreter evaluating the script.
REFACTOR: *BREAKING CHANGE* add the IgnoreCanRetry script flag and make use of
it when the canRetry engine return values should be ignored from the
core interpreter hosts.
REFACTOR: *BREAKING CHANGE* remove the DeniedByPolicy engine flag. also, add
the IgnoreRootedFileName engine flag.
REFACTOR: *BREAKING CHANGE* rename the -assembly and -system options of the
[object import] sub-command to -eagle and -clr, respectively.
REFACTOR: *BREAKING CHANGE* add Trace method to the IPolicyContext interface.
REFACTOR: *BREAKING CHANGE* refine help subsystem to favor interactive command
groups only when the topic is prefixed with the interactive command
prefix.
REFACTOR: *BREAKING CHANGE* expose the eagle_tests virtual array variable in
"safe" interpreters.
REFACTOR: *BREAKING CHANGE* add SleepType parameter to sleep related methods of
the IEventManager interface.
REFACTOR: *BREAKING CHANGE* add SetSleepTime and SetMinimumSleepTime methods to
the IEventManager interface.
REFACTOR: *BREAKING CHANGE* modify LoadSettingsViaScriptFile method to make the
flags parameter input/output and add another IClientData parameter.
REFACTOR: *BREAKING CHANGE* add IHaveInterpreter interface as one of the base
interfaces for the IPolicyContext interface.
REFACTOR: *BREAKING CHANGE* remove the IHaveInterpreter and IHaveClientData
interfaces from the IRfc2898DataProvider interface.
REFACTOR: *BREAKING CHANGE* rename the TryDispose method to TryDisposeObject
in the Utility class.
REFACTOR: *BREAKING CHANGE* whenever possible, always use the method overloads
of the Engine.CreateThread method that accept an interpreter.
REFACTOR: *BREAKING CHANGE* enhance the TryGetStringFromObject method to handle
the Interpreter class type.
REFACTOR: *BREAKING CHANGE* enhance the ThreadOps.MaybeShutdown method so that
it nulls out its thread parameter more predictably.
REFACTOR: *BREAKING CHANGE* cleanup save / restore semantics for parser state
and token classes.
REFACTOR: *BREAKING CHANGE* add ref modifier to the value parameter of the
IUsageData.AddUsage method. add CountUsage and ProfileUsage methods
to the IUsageData interface.
REFACTOR: *BREAKING CHANGE* replace -strict option for [debug break] with the
-ignoreenabled option.
REFACTOR: add AddExecuteCallbacks and RemoveExecuteCallbacks methods to the
IEntityManager interface.
REFACTOR: add preliminary support for the .NET Standard 2.1 via .NET Core 3.0.
FEATURE: add RenameHiddenCommand, RenameHiddenIExecute, RenameHiddenProcedure
methods to the IEntityManager interface.
FEATURE: introduce the notion of token-based interpreter instance management.
when one of these interpreters is created, it will not be visible via
the normal lists of interpreters available to third-party code or user
scripts. upon creation, such an interpreter will be assigned a unique
integer token, completely separate from its normal integer identifier,
and which will be the only supported identifier that can be used in
order to reacquire a live reference to that particular interpreter.
FEATURE: add the -publickeytoken option to the [load] command to forbid loading
of the assembly if it does not match the specified public key token.
FEATURE: promote AddPluginArguments and RemovePluginArguments methods to public
via IPluginManager interface.
FEATURE: add the InitializeFlags and ScriptFlags environment variables. they
can be used to set or alter their respective flags used to create the
interpreter created by the shell.
FEATURE: add IsSecuritySdk and IsLicenseSdk methods to the ISecurityManager
interface.
FEATURE: add the [interp issecuritysdk] sub-command, which will return non-zero
if the specified interpreter is only intended for use by the security
SDK.
FEATURE: add the -flags, -reset, -plugin, -notrusted, and -noverified options
to the [package scan] sub-command.
FEATURE: add the NoTraceCategories environment variable to inhibit output from
a specific set of trace categories.
FEATURE: add the IfNecessary and NoDispose interpreter creation flags and the
IInterpreterManager.SetDisposalEnabled method to permit much greater
control over the Interpreter lifecycle.
FEATURE: permit an IHost to provide an arbitrary number of package index files,
including both core library packages.
FEATURE: add the -literal option to the [regsub] command in order to use the
subSpec argument literally.
FEATURE: add the [interp parent] sub-command to return the parent of the active
(or specified) interpreter. an empty string will be returned if there
is no parent.
FEATURE: add the -child, -parent, and -setcreate command line options to allow
for more control over interpreter creation and sandboxing.
FEATURE: add the SimpleCallback marshal flag to support using a pre-existing
instance or static method as the basis for a needed delegate.
FEATURE: add AddSubCommand method to the IEntityManager interface. it can be
used to add and/or update an arbitrary sub-command and arrange for a
specific script command to be run for it.
FEATURE: add AddSubCommands method to the IEntityManager interface. it can be
used to add ensembles to the interpreter consisting of the methods of
specific types or instances.
FEATURE: add TraceTextWriterOwned and DebugTextWriterOwned properties to the
IDebugManager interface.
FEATURE: add -referencecount option to the [object cleanup] sub-command. it is
used to forcibly remove and/or dispose all opaque object handles, even
those with non-zero reference counts. any negative value will remove
and/or dispose all opaque object handles. a positive value will only
remove and/or dispose all opaque object handles with a reference count
that is less than or equal to the value specified.
FEATURE: add RegistryVariable class to enable linking a script variable to the
specified registry sub-key.
FEATURE: improve script evaluation using an IScript, e.g. support for signed
scripts, optional call frame management, and [info script] naming.
FEATURE: add the -dbnullvalue and -errorvalue options to the [sql execute]
sub-command.
FEATURE: add the -kiosk command line option, which will cause the interactive
loop to be reentered upon it being exited.
FEATURE: add GetArguments method to the IArgumentManager interface.
FEATURE: add the [control require] sub-command to the Eagle Native Package for
Tcl (Garuda).
FEATURE: add the -verifyCoreAssembly flag to the [test2] command. by default,
use the associated plugin flag when creating new application domains
for use by isolated plugins.
FEATURE: add the InterpreterSettings.CreateDefault static factory method.
FEATURE: add the NoClose environment variable. this can be used to prevent the
user from closing the console window.
FEATURE: add ExitCodeNoThrow property to the IInterpreter interface.
FEATURE: add the -interpreter option to the [debug emergency] sub-command.
FEATURE: add the -nocomplain and -noerror options to [debug break] sub-command.
the -nocomplain option can be used to prevent all errors caused by the
debugger being unavailable / disabled, including support being omitted
at compile-time. the -noerror option can be used to force the results
of the sub-command to be success, even if the interactive loop returns
an error.
FEATURE: add experimental implementation of the [array default] sub-command
based on the semantics in TIP #508 for native Tcl 8.7.
FEATURE: add [fpclassify] command and its associated math functions from TIP
#521.
FEATURE: add -not and -any boolean options to the [string is] sub-command.
FEATURE: add -availabletimeout and -nobuffer options to the [socket] command.
FEATURE: add -noblock option to the [gets] and [read] commands.
FEATURE: add [string is none] sub-command to check if a string can be resolved
to a value of negative one (-1).
FEATURE: add nop() math function, primarily for use in testing and debugging.
FEATURE: add the NewProcedureCallback property to the IInterpreter interface.
FEATURE: add the [file validname] sub-command and its associated support code.
FEATURE: add the [string is directory], [string is file], [string is path], and
[string is reserved] sub-commands.
FEATURE: add the -aliasname option to the [object alias] sub-command.
FEATURE: add the NoIsolatedPlugins trust and script data flags as well as the
NoIsolated plugin flag in order to prevent plugins from being loaded
into isolated application domains when evaluating user scripts and/or
loading settings from a script file. also, add the -noisolatedplugins
option to the [debug secureeval] sub-command.
FEATURE: add the NoCloseConsole interpreter host creation flag.
FEATURE: add the GetNullableBoolean2 method to the Value class.
FEATURE: add the Pack, Pack<T>, TryUnpack<T>, TryExtract<T>, and TryReplace<T>
methods to the ClientData class.
FEATURE: add the -eval, -regexp, -subspec, -regexpoptions, and -multipass
options to the [string map] sub-command.
FEATURE: add the -culture option to the [string tolower], [string toupper], and
[string totitle] sub-commands.
FEATURE: make it possible to skip dealing with native Tcl interpreter when the
InternalCancelAnyEvaluate method is called. also, move the native Tcl
script cancellation support into its own method and harden it against
potential deadlocks.
FEATURE: add the IKeyEventManager interface and its associated keyboard event
management subsystem.
FEATURE: add the IStatusManager interface and its associated user-interface.
FEATURE: add GetExtra method to the IScript interface.
FEATURE: add RetryXml and RelaxedXml properties to the IInterpreter interface.
FEATURE: modify how the key default flags values are obtained; use new static
private class and permit all defaults to be changed via reflection.
FEATURE: promote PluginFlags to a fully supported creation-time flags value
and pass it through the various interpreter creation points.
FEATURE: add NoAbort property to the IScriptThread interface.
FEATURE: add experimental [interp addcommands] sub-command to restore one or
more hidden commands within a "safe" interpreter.
FEATURE: add [interp exposed] sub-command to return list of exposed commands in
the specified interpreter.
FEATURE: add -nohidden option to the [interp create] sub-command. when used in
combination with the -safe option, it will cause all "unsafe" commands
to be missing from the created interpreter instead of being hidden.
FEATURE: enhance WatchdogControl method with more operations and finer grained
flags.
FEATURE: add IRfc2898Data interface to contain property setters related to the
IRfc2898DataProvider interface.
FEATURE: expose the GetActivePair static method from the Interpreter class.
FEATURE: add the TracePriorityLimits environment variable. this can be used to
enable limits on trace output based on priority.
FEATURE: add the ability to suppress duplicated trace messages and limit output
based on category.
FEATURE: add -useBasePath and -useEntryAssembly options to the [test2] command.
FEATURE: add [downloadExampleScript] core library procedure to make it easy to
download and evaluate example scripts.
FEATURE: add -nocaptureinput, -nocaptureoutput, -stdinobject, -startcallback,
-stdoutcallback, -stderrcallback, and -overridecapture options to the
[exec] command.
FEATURE: add #ihelp interactive command to display help for commands and their
associated sub-commands.
FEATURE: add the XDG_KEYRING_HOME and XDG_KEYRING_DIRS environment variable
constants for use by Harpy.
FEATURE: add the XDG_CLOUD_HOME and XDG_CLOUD_DIRS environment variable
constants for possible use with the test suite log files.
FEATURE: keep track of the number of successful calls to the FormOps.DoEvents
method.
FEATURE: add support for command / sub-command options of the type ICallback.
FEATURE: add constants for USERNAME and USERDOMAIN environment variables.
FEATURE: add ReadScriptFile method overloads to the Engine class that support
returning an opaque ReadScriptClientData instance, for use with the
new GetReadScriptFileOriginalText method.
FEATURE: add EvaluateTrustedScript method overloads to the IEngineManager
interface that support supplying the file name that contained the
script to be evaluated.
FEATURE: add the GetAssemblyTextOrSuffix, GetRandomBytes, MaybeSetBinaryPath,
GetType, CheckAndMaybeModifyProcessReferenceCount, NullObjectName,
TranslatePath, MaybeGetErrorMessage, SetupTraceLogFile, GetEncoding,
SetupTraceListeners, RefreshEntryAssembly, GetObjectDefaultDispose,
MaybeAdjustTraceLimits, GetObjectDefaultSynchronous, NewCoreProcedure,
HashString, FixupDataValue, DataReaderToList, TryGetPathSerialNumber,
DataReaderToArray, GetTempPath, GetTracePriority, SetPolicyTrace,
TryDisposeObjectOrComplain, IsScriptFileForSettingsPending, and
TryGetValueOfType, and GetLocalNames methods to the Utility class.
FEATURE: add -trusted option to the [tcl available], [tcl find], [tcl select],
[tcl load], and [tcl versionrange] sub-commands.
FEATURE: add -addressfamily option to the [socket] command. also, add support
for using service names instead of port numbers.
FEATURE: add -time option to the [source] command.
FEATURE: add "/" flag to the [format] command to enable handling double values
based on their raw internal representations (i.e. wide integer bits).
FEATURE: *BREAKING CHANGE* add boolean whatIf parameter to the PreviewArgument
and UnknownArgument methods of the IShellCallback interface.
FEATURE: *BREAKING CHANGE* add GetTimeoutCallback and PreWebClientCallback
properties to the IInterpreter interface.
FEATURE: *BREAKING CHANGE* add the GetUsageData method to the IEntityManager
interface.
FEATURE: *BREAKING CHANGE* add -eval option to the [tcl available], [tcl find],
[tcl load], and [tcl select] sub-commands.
FEATURE: *BREAKING CHANGE* prevent the console window from being closed if it
was freshly opened by the core library.
FEATURE: *BREAKING CHANGE* add runtimeBuild element to the eagle_platform array
and add an optional argument to the [info runtimeversion] sub-command
to force it to be returned.
FEATURE: *BREAKING CHANGE* add the [interp callbacklimit] sub-command. add the
CallbackLimit property to the IInterpreter interface.
FEATURE: *BREAKING CHANGE* add the [interp eventlimit] sub-command. add the
EventLimit property to the IInterpreter interface. modify the queue
methods of the IEventManager interface to include an integer limit
parameter.
FEATURE: *BREAKING CHANGE* add support for updating plugins without increasing
their patch level (e.g. to update their scripts or auxiliary files).
************************* Beta 1.0.7213.50727 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #188917 to #205080.
BUGFIX: harden call stack handling against the context manager being reset by a
different thread using the interpreter.
BUGFIX: fix detection of .NET Core 3.0 runtime due to missing System.CoreLib
static class type.
BUGFIX: when adding a command alias, do not overwrite its command token, which
is generated first, with its alias token.
BUGFIX: aliases executed by "trusted" scripts should be able to refer to hidden
commands and/or sub-commands.
BUGFIX: fix renaming of hidden commands when namespaces are enabled.
BUGFIX: correct malformed value of the DefaultShell32FileName constant.
BUGFIX: the ReadScriptFile method must fail if post-script bytes are requested
by the caller and cannot be obtained.
BUGFIX: prevent an IScriptLocation stack imbalance that could occur if script
locations were enabled within nested script evaluation.
BUGFIX: the [isNonNullObjectHandle] core script library procedure should not
return true for existing opaque object handles that have a reference
to any null object (i.e. when they refer to an opaque object handles
that are not the special "null" opaque object handle).
BUGFIX: properly delete all temporary files used by [compileCSharp], even when
running on .NET Core -AND- even if the assembly is generated in memory.
BUGFIX: fix algorithm in MergeArguments method, using a new boolean flag, so it
can handle opaque object handles with an aliased command name that has
a namespace prefix (i.e. as the first argument from the second argument
list cannot be used).
BUGFIX: the SelectMethodIndex method must update the original index used to get
the method index in order to select the correct list of parameters used
to eventually call the selected method.
BUGFIX: when using sub-commands that evaluate a script in another interpreter
(e.g. [interp eval], [debug eval], [debug subst], [debug secureeval],
etc), merge the error backtrace information in the event of an error.
BUGFIX: fix error messages for the hash algorithm creation sub-commands of the
[hash] command.
BUGFIX: fix lock statement in the RuntimeOps.HashScriptFile method.
BUGFIX: make sure the script to [catch] is wrapped using a nested execution
context; otherwise, interpreter readiness checks may be incorrectly
skipped if the script debugger was used within the current outermost
script evaluation.
BUGFIX: the [test2] command should only make use a nested execution context if
the test interpreter is the same as the current interpreter.
BUGFIX: fix typo in the RuntimeOps.GetLeastMinSize method.
BUGFIX: the [format] command should honor the execution result limit.
BUGFIX: due to the NoDefaultBinder flag being included in the default creation
flags for interpreters, fallback to the default CLR binder when looking
up the IHost constructor in HostOps.CopyAndWrap.
BUGFIX: when dealing with threads with very small stack sizes (e.g. 256K), use
half that size as the native stack margin.
BUGFIX: script errors should not be generated when using the -nocomplain option
to [unset] on scalar variables via array element references.
BUGFIX: make sure that all created EngineThread object instances initialize the
native stack checking subsystem if there is no associated interpreter.
BUGFIX: since a console window is process-wide, saved icon information should
not be per-instance.
BUGFIX: if the [host close] and/or [host open] sub-commands are used, make sure
the host setup reference count is adjusted accordingly.
BUGFIX: make [interp create] succeed with the -novariables option even when the
security plugins need to be loaded (i.e. without the auto-path variable
being available).
BUGFIX: prevent the NewHostCallback static property from interfering with the
CreateInterpreterForSettings method.
BUGFIX: fix [canGetManagedType] so it uses the renamed Value.GetAnyType method.
BUGFIX: correct obscure enumeration to integer conversions for some signed type
codes when running on Mono.
BUGFIX: stop possible infinite loop when the [string map] sub-command is used
with a mapping containing an original string that is empty.
BUGFIX: when disposing an interpreter, possibly dispose of the cached one used
by LoadSettingsViaFile as well. this prevents spurious exceptions from
being thrown by GC threads.
BUGFIX: fix errant use of the Object.Equals method via SharedStringOps in a few
places.
BUGFIX: in the NetworkVariable class, strip the final trailing line ending from
web responses.
BUGFIX: avoid filtering on attributes of undefined variables in the GetVariable
method.
BUGFIX: reform the semantics used when refreshing the interactive host from the
interactive loop. this fixes a remoting error caused by save / restore
semantics of the interactive loop thread. it also adds an experimental
method for plugins to use an alternative interactive host for secondary
interactive loops without creating another interpreter.
BUGFIX: prevent [debug token] sub-command from causing NotSupportedException.
REFACTOR: add SecurityLevels property to the IEngineContext interface, used by
the security plugin loader to indicate that evaluation of a security
script is pending.
REFACTOR: keep track of the system thread Id of each EngineThread while it is
running.
REFACTOR: cleanup ContextManager class and move its static methods to the new
ContextOps class.
REFACTOR: heavily cleanup and refactor the Channel and ChannelStream classes,
including their callers.
REFACTOR: add support for Visual Studio 2019 and the .NET Framework 4.8.
REFACTOR: keep track of the total number of instances of an interpreter on all
active interpreter stacks.
REFACTOR: start using a static factory method to create end-of-options IOption
objects.
REFACTOR: use try/finally semantics in all entity addition methods that involve
creating a wrapper object.
REFACTOR: miscellaneous changes in the CommandCallback class, mostly related to
interpreter thread context cleanup.
REFACTOR: miscellaneous cleanup in the ConversionOps class.
REFACTOR: miscellaneous cleanup in the TraceOps class, mostly related to state
management, handling of trace flags, and available trace formats.
REFACTOR: use TryLock pattern in the CancelEvaluate, IsCanceled, IsDeleted,
IsHalted, HaltEvaluate, ResetCancel, ResetErrorInformation, and
ResetHalt methods of the Engine class. also, use TryLock pattern in
the FireInterruptCallback method of the Interpreter class.
REFACTOR: make sure the Attach thread flag is consistently set when creating a
ScriptThread object via one of the Attach static factory methods.
REFACTOR: revise when MaybeDisposeThread is called on an interpreter. also, in
the Engine class, prevent it from being called more than once when an
asynchronous script is being evaluated using an EngineThread.
REFACTOR: in the Eagle Package for Tcl (Garuda), avoid rereading configuration
information for the package when it is already available.
REFACTOR: move (script?) file, profile, prompt, title, and color functionality
out of the Core host.
REFACTOR: robustify and modularize handling of "dead" native Tcl entities.
REFACTOR: make sure that a diagnostic message is emitted when failing to enable
or disable the security packages.
REFACTOR: make [file readable] and [file writable] work better on non-Windows
operating systems and when running on Mono -OR- .NET Core.
REFACTOR: make IInteractiveHost.ReadLine, IReadHost.ReadKey, and IReadHost.Read
methods have transactional semantics. handle the IHost.Echo property
consistently.
REFACTOR: modify how the Value class uses NumberStyles, making it possible to
modify them at runtime. this change was pursuant to issues with the
built-in .NET Framework handling of the AllowThousands flag (i.e. it
allows too many separators and in the wrong places).
REFACTOR: add version-specific test constraint handling for .NET Core to the
test suite.
REFACTOR: major cleanup and modularization of the EnumOps class.
REFACTOR: streamline TraceOps.DebugTrace handling of interpreter parameters and
use of private method overloads.
REFACTOR: have the built-in File host implement the ISetInterpreter interface.
REFACTOR: use the TryLock pattern for most use of the variableEvent field that
occur outside of the low-level variable management methods.
REFACTOR: use the TryLock pattern for all use of the IEventManager instance in
the Interpreter class, with the sole exception of the introspection
support methods.
REFACTOR: simplify and cleanup the PathOps.TildeSubstitution method.
REFACTOR: robustify the [isObjectHandle] core script library procedure by using
the [object exists] sub-command, if available.
REFACTOR: cleanup implementation of the [exit] command.
REFACTOR: add experimental support for customizing callback used by the [vwait]
command to sleep and/or wait -AND- for skipping various stages of its
event processing pipeline.
REFACTOR: add experimental support for evaluating scripts with redirected input
output, and error channels.
REFACTOR: revise implementations of IState.Initialized property so they can
better tolerate multiple interpreters.
REFACTOR: *BREAKING CHANGE* make the [compileCSharp] script library procedure
capable of using .NET Core 3.0 SDK. add [csharpLog] script library
helper procedure to assist in troubleshooting.
REFACTOR: *BREAKING CHANGE* remove Fossil binary and sources from the source
code repository. if required, they should now be obtained upstream,
directly from the Fossil project.
REFACTOR: *BREAKING CHANGE* add boolean nullEncoding parameter to AddChannel
method of the EntityManager interface.
REFACTOR: *BREAKING CHANGE* reorganize values in the CreateFlags enumeration.
REFACTOR: *BREAKING CHANGE* add a CultureInfo parameter to the GetStream method
of the IPlugin interface.
REFACTOR: *BREAKING CHANGE* rename the GetScript method of the IFileSystemHost
interface to GetData and add a DataFlags parameter.
REFACTOR: *BREAKING CHANGE* the [clock] command is now marked as "unsafe" and a
subset of its sub-commands are unavailable in "safe" interpreters in
an attempt to prevent timing side-channel attacks (e.g. Spectre).
REFACTOR: *BREAKING CHANGE* ideally, one call to the [puts] command should not
result in more than one call to the underlying write method, even if
a new line is required.
REFACTOR: *BREAKING CHANGE* add boolean useActiveStack parameter to the
Engine.CreateThread method.
REFACTOR: *BREAKING CHANGE* handle the Enum type specially in the Number class.
REFACTOR: *BREAKING CHANGE* add input/output method index list index parameter
to the IScriptBinder.SelectMethodIndex method.
REFACTOR: *BREAKING CHANGE* rename the IShellCallback.ProcessArgument method to
UnknownArgument. also, add a IShellCallback.PreviewArgument method.
REFACTOR: *BREAKING CHANGE* rename the IShellManager.ArgumentCallback property
and its associated delegate type to UnknownArgumentCallback.
REFACTOR: *BREAKING CHANGE* add boolean parameter to all CallStack constructors
that lacked it.
REFACTOR: *BREAKING CHANGE* modify the ExtractPolicyContextAndTextAndBytes
method by adding encoding and hash value parameters.
REFACTOR: *BREAKING CHANGE* modify the ExtractPolicyContextAndScript method by
adding an encoding parameter.
REFACTOR: *BREAKING CHANGE* heavily revise how the home directory for the user
is determined, using the XDG Base Directory Specification as a guide.
REFACTOR: *BREAKING CHANGE* remove all command line argument processing that
involves script evaluation when the ENTERPRISE_LOCKDOWN compile-time
option is enabled.
REFACTOR: *BREAKING CHANGE* cleanup Engine.IsDeleted method and changes its
method signature to better match its peers (e.g. CancelFlags).
REFACTOR: *BREAKING CHANGE* rename several values of the ScriptDataFlags enum.
REFACTOR: *BREAKING CHANGE* rename the NoUtility environment variable and its
associated flags to NoNativeUtility.
REFACTOR: *BREAKING CHANGE* by default, disallow "safe" interpreters from using
any interactive command not expliclty marked as "safe". simplify and
cleanup handling of interactive commands.
REFACTOR: *BREAKING CHANGE* by default, enable checking for an update to the
core library when the interactive shell is started even when there
is no formal product installation.
REFACTOR: *BREAKING CHANGE* rename the NoTracePlugin interpreter creation flag
to NoMonitorPlugin. rename the -trace option for [interp create] to
-monitor. rename the interactive #restt command to #restm. rename
IPluginManager.RestoreTracePlugin method to RestoreMonitorPlugin.
REFACTOR: *BREAKING CHANGE* rename [getPassPercentage] and [getSkipPercentage]
test procedures to [getPassedPercentage] and [getSkippedPercentage],
respectively.
FEATURE: add [file temppath] sub-command to return the (currently configured)
directory where temporary files should be stored.
FEATURE: add the [info syntax] sub-command to return the complete list of all
available commands and sub-commands -OR- the syntax of an arbitrary
command or sub-command.
FEATURE: add help and syntax values to the [info identifier] sub-command, if
available.
FEATURE: add AlwaysGetVariable interpreter flag. when set, it will force all
lookups for nonexistent variables to succeed; however, they will not
actually be added to the target call frame. this flag can be useful
when evaluating a script for diagnostic purposes where variables may
be missing.
FEATURE: add the [interp rename] sub-command to rename commands within a child
interpreter.
FEATURE: add -hiddenonly option to the [rename] command and the [interp rename]
sub-command.
FEATURE: move engine tracing functionality to the new Monitor plugin and unseal
the Trace plugin.
FEATURE: add optional script argument list tracking, which is opt-in at both
compile-time and runtime (i.e. it requires both the SCRIPT_ARGUMENTS
compile-time option and the ScriptArguments interpreter flag).
FEATURE: add -nodispose and -nocomplain options to the [exit] command.
FEATURE: add [object isnull] sub-command to return non-zero if the specified
existing opaque object handle refers to a null object instance.
FEATURE: add [string is identifier] sub-command to check if a string is a legal
ANSI C identifier.
FEATURE: add experimental support for the XDG_STARTUP_HOME and XDG_STARTUP_DIRS
environment variables.
FEATURE: add the -timeout, -userinterface, -noevents, -nosleep, -nointerpreter,
and -windowstyle options to the [exec] command.
FEATURE: add the -viaresource option to the [load] command.
FEATURE: add interactive #paused, #pause, and #unpause commands. they can be
used to manage paused interactive loops (i.e. for specific threads).
FEATURE: add optional boolean argument to the [info level] sub-command to force
the full command name to be used in the returned argument list.
FEATURE: add -preview, -nopreview, -update, and -noupdate options to the [load]
command.
FEATURE: add support for the %hh width modifier to the [format] command.
FEATURE: add the -global, -skip, and -noempty options to the [regexp] command.
FEATURE: enhance support for the BumpCacheLevel environment variable so it can
be used to provide an integer level to be added to the default cache
level.
FEATURE: add the [library matcharchitecture] and [library verifyarchitecture]
sub-commands to check processor architecture of a library file name
against that of the current process.
FEATURE: add WithCommands, WithFunctions, WithPolicies, and WithTraces lookup
flags to allow callers to the GetPlugin method to find a plugin based
on it owning one (or more) of the associated entity types in addition
to its assembly name.
FEATURE: add the IIdentifier type as a supported type for command options. it
requires a two element list: identifier kind followed by its name.
FEATURE: add the SortMethods, ReverseOrder, NonPublic, SelectMethodIndex, and
MinimumOptionalCount marshal flags to address core marshaller issues
that may arise due to nondeterministic ordering of method overloads by
the runtime.
FEATURE: add -ignorePatterns and -ignoreMatch options to the [test2] command.
they can be used to ignore result mismatches that match the specified
list of ignore patterns.
FEATURE: add ReturnAlias object flag to return the aliased command name for a
newly created opaque object handle, if applicable.
FEATURE: embed a license certificate for the core library in official release
builds.
FEATURE: expose UlongList container class as public and make use of it to add
the GetEnumNamesAndValues and ToFlagsEnumList methods to the Utility
class.
FEATURE: add [string is numeric] sub-command to check if a string can be easily
converted to a numeric value of some kind.
FEATURE: add experimental [debug runtimeoverride] sub-command to override which
runtime the core library thinks is being used.
FEATURE: add ExecuteMember method to the Engine class. this method may be used
instead of standard reflection APIs in order to access types available
within the core library.
FEATURE: add UnknownCallback property to the IInterpreter interface, to be used
during command resolution when the script engine encounters an unknown
command.
FEATURE: add implicit conversion operators for the Argument and Result classes
that accept an instance of the Variant class.
FEATURE: add UseParameterNames callback flag to enable the managed parameter
names to be available from script callbacks.
FEATURE: by default, emit tracking information for each test run by the [test1]
and [test2] commands. add the TrackTestScripts interpreter flag and
the -noTrack option to the [test2] command to control this behavior.
FEATURE: add -timeout option to the [time] command.
FEATURE: enhance [debug secureeval] sub-command with the -timeout, -nocancel,
and -stoponerror options to enable more precise control over script
cancellation and script evaluation that may contain events.
FEATURE: emit test suite name and outermost script file name as part of the
overall result.
FEATURE: add NoNativeStack environment variable. when set, the native stack
checking subsystem will be disabled.
FEATURE: add experimental native stack checking support for some non-Windows
platforms. this feature does not work for Mono when using secondary
threads, due to apparent bugs in their runtime.
FEATURE: add support for the DisableHost and NoConsoleHost script data flags to
the LoadSettingsViaScriptFile subsystem.
FEATURE: add ability to emit the current stack trace with messages emitted via
the TraceOps subsystem.
FEATURE: add MergeArguments method to the IArgumentManager interface.
FEATURE: add Created and CreatedNoThrow properties to IInterpreter interface.
FEATURE: add the [tcl result] sub-command.
FEATURE: add the [interp proclimit] and [interp varlimit] sub-commands and the
associated properties to the IInterpreter interface.
FEATURE: add an optional boolean argument to the [info args] sub-command. when
non-zero, the default argument values will be included in the result.
FEATURE: add experimental support for using isolated application domains from
within the LoadSettingsViaScriptFile subsystem, via the new optional
ScriptDataFlags.UseIsolatedInterpreter flag bit.
FEATURE: add GetFramework method to the IInterpreter and IPlugin interfaces and
to the Utility class.
FEATURE: add overloads of the Utility.FormatWrapOrNull method that can accept a
list of strings via the IEnumerable<string> type.
FEATURE: add an overload of the Utility.FormatPluginAbout method that takes an
string parameter with extra optional information.
FEATURE: add overloads of the Utility.DebugTrace method that can accept an
interpreter parameter.
FEATURE: add the DoesEnvironmentVariableExist, GetUniquePath, ToFlagsEnumList,
GetAssemblyDateTime, ProcessReflectionOptions, GetEnumNamesAndValues,
GetPluginRelativeFileName, ChangeNativeCallback, AdjustTracePriority,
GetStream, GetInstanceFlags, GetResourceStreamData, GetAnyString, and
CheckAndMaybeModifyProcessReferenceCount methods to the Utility class.
FEATURE: add public MutablePair class and interface.
FEATURE: add RenameObject method to the IEntityManager interface.
FEATURE: add MustCreate host creation flag. when set, an interpreter host must
be created successfully in order for the PreSetup method to succeed.
FEATURE: add -noTrim command line option to disable trimming of surrounding
whitespace from all subsequent command line arguments.
FEATURE: add method overload of TryParseFlagsEnum capable of masking off values
and operators in order to limit the possible modifications to existing
flag values.
FEATURE: add verbose mode to the [file owned] sub-command.
FEATURE: add Id property to InterpreterDisposedException and ScriptException
classes, scoped to the application domain. also, keep track of the
number of created instances.
FEATURE: add ExitNoThrow property to the IInterpreter interface.
FEATURE: add [quit] script library helper procedure to exit the interactive
shell, optionally performing any additional cleanup and maintenance
tasks that may be required.
FEATURE: add the TestScriptWhatIf interpreter flag. when set, the [test1] and
[test2] commands will not evaluate any scripts. instead, those tests
will be counted as disabled, which are semantically treated as having
been skipped even if they meet all the required test constraints.
FEATURE: *BREAKING CHANGE* add the NoNullArgument engine flag to prevent a null
command result from being used as an argument value to any subsequent
command.
FEATURE: *BREAKING CHANGE* add the WhatIf value to the ReturnCode enumeration.
FEATURE: *BREAKING CHANGE* add Disposing property to the IMaybeDisposed
interface.
FEATURE: *BREAKING CHANGE* add GroupId property to the IInterpreter interface.
FEATURE: *BREAKING CHANGE* add DateTime property to the IPluginData interface.
FEATURE: *BREAKING CHANGE* add GetUri method to the IPlugin interface.
FEATURE: *BREAKING CHANGE* trim surrounding whitespace from all command line
arguments by default. this is part of a workaround to a bug in the
.NET Core CLI (see GitHub issue #8892).
FEATURE: *BREAKING CHANGE* add PreviewArgumentCallback property to the
IShellManager interface.
FEATURE: *BREAKING CHANGE* start making use of the TraceTextWriter property via
the tracing (i.e. TraceOps) subsystem.
FEATURE: *BREAKING CHANGE* add GetCertificateFileName method to the IPlugin
interface.
FEATURE: *BREAKING CHANGE* add Alias property to the IObjectData interface.
FEATURE: *BREAKING CHANGE* add the PreCanceled and PreHalted flag values to the
NotifyFlags enumeration.
FEATURE: *BREAKING CHANGE* add experimental support for the variable assignment
expression operator (i.e. ":=").
FEATURE: *BREAKING CHANGE* add support for procedures with named arguments via
the new [nproc] command. modify AddOrUpdateProcedure method to accept
an optional ArgumentDictionary of named arguments. add NamedArguments
property to the IProcedureData interface. finally, add [info nprocs]
sub-command to return the list of procedures that use named arguments.
************************* Beta 1.0.6848.11041 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #187612 to #188488.
BUGFIX: the NetworkVariable class must HTML decode the payload values received
from the server.
BUGFIX: preserve ordering of keys added to the PathDictionary class, because
some callers rely on iterating over keys in the same order they were
added.
BUGFIX: when performing tilde substitution, do not search for files that have
extra directory information after the initial tilde and slash.
BUGFIX: fix return code handling in a couple [hash] sub-commands.
BUGFIX: handle ThreadAbortException in several contexts where threads are known
to perform in a well-defined way. generally, the targeted thread will
simply exit.
BUGFIX: add some missing DebuggerStepThrough attributes to the Argument and
Result classes.
BUGFIX: prevent the Utility.IsDebuggerPresent method from throwing exceptions.
BUGFIX: *BREAKING CHANGE* disallow automatic selection of static constructors
when creating managed objects via reflection. add the AllowAnyMethod
marshal flag to override this behavior.
REFACTOR: check interpreter usability in the NamespaceOps.GetMapping method.
REFACTOR: avoid locking in the NativeConsole.IsSupported method to prevent some
potential deadlocks.
REFACTOR: some general cleanup of the Engine, PackageOps, and XmlOps classes.
REFACTOR: audit and reform usage of the Interpreter.InternalSyncRoot property.
REFACTOR: when using the FormatOps.DisplayName method, avoid extra wrapping of
double quotes.
REFACTOR: *BREAKING CHANGE* rename ResetFlags method of the IHost interface to
ResetHostFlags.
FEATURE: arrange for static (configuration) fields of the TraceOps class to be
copied into application domains created for isolated interpreters.
FEATURE: add ReadyCallback property to the IInterpreter interface.
FEATURE: add -test option to the [interp create] sub-command.
FEATURE: add the IsGlobalBusy property to the IInterpreter interface.
FEATURE: add the MaybeFillWithNull and MaybeAddRange methods to the IStringList
interface.
FEATURE: add preliminary support for the Windows 10 October 2018 Update.
FEATURE: add support for logging server machine name to the tracing subsystem.
FEATURE: add static UseInterpreterCallback property to the Interpreter class,
primarily for use by subsystems that cache and reuse instances, e.g.
the LoadSettingsViaScriptFile method.
FEATURE: enhance LoadSettingsViaScriptFile method and its associated subsystem,
so it can use an existing interpreter -OR- create and caching a "safe"
interpreter.
FEATURE: add experimental handling of unrecoverable errors to the default host
and tracing subsystems.
FEATURE: add GetAppSetting method to the Utility class.
FEATURE: add FORCE_TRACE compile-time option to force non-essential runtime
diagnostic messages to be enabled in release builds.
FEATURE: improve handling of nested sub-commands so they can be abbreviated.
FEATURE: add support for reading the AppSettings directly from one or more XML
files. these enhancements, along with several others, involved heavy
refactoring of the entire ConfigurationOps class.
FEATURE: add RefreshAppSettings environment variable. if set, the application
settings will be re-read from disk before the next time they are used.
FEATURE: add UseXmlFiles and MergeXmlFiles environment variables. if set, the
application settings from applicable XML files will be favored and/or
merged, respectively.
FEATURE: add ability to capture the current stack trace into an instance of the
Result class.
FEATURE: *BREAKING CHANGE* add IsAllowed method to the IScriptBinder interface.
FEATURE: *BREAKING CHANGE* add optional interpreter argument to [info cmdcount]
sub-command.
FEATURE: *BREAKING CHANGE* add GetKeyPair and GetKeyRing methods to the IPlugin
interface.
************************* Beta 1.0.6781.49042 RELEASE *************************
BUGFIX: make the synchronous form of the [after] command responsive to a thread
being interrupted or aborted.
BUGFIX: always make use of the -encoding command line option when processing a
script file in the shell.
BUGFIX: make sure the test run Id is passed to all necessary child processed in
the test suite.
BUGFIX: prevent test socket-1.3 from reporting a spurious log sentry error due
to it having no log file name set during the test suite epilogue.
BUGFIX: make sure the CONFIGURATION compile-time option is set for native Tcl.
BUGFIX: fix some duplicate values in the ConfigurationFlags enumeration.
BUGFIX: when compiled with both native Windows and Unix support, output to the
console host does not work correctly on non-Windows platforms, because
the Console.CursorVisible property is not implemented. also, lack of
native console support causes the wrong result to be returned from the
SystemConsoleIsRedirected method.
BUGFIX: *BREAKING CHANGE* disallow the [package relativefilename] sub-command
from within a "safe" interpreter.
REFACTOR: cleanup and adding more tracing to the shell exit code handling.
REFACTOR: improve formatting of trace messages and make it easier to use the
trace output formatting flags.
REFACTOR: *BREAKING CHANGE* change return type to boolean for the Sleep and
Yield methods of the IEventManager interface.
REFACTOR: *BREAKING CHANGE* use ShutdownFlags instead of boolean parameters for
InterruptAndJoinOrAbortThread and rename it to MaybeShutdownThread.
FEATURE: add the -breakpoint option to the [info commands] sub-command.
FEATURE: add support for PreBreakpoint and PreWatchpoint notifications.
FEATURE: when canceling script evaluation for an interpreter, optionally allow
the primary thread -OR- interactive thread to be interrupted as well.
************************* Beta 1.0.6781.49000 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #181527 to #187037.
BUGFIX: in the Eagle Package for Tcl (Garuda), make sure to unlock the package
mutex when returning a wrong-number-of-arguments script error.
BUGFIX: fix for native Tcl SF bug #219233, which is related to [string match].
since this change has may break old scripts, it is disabled by default
and gated behind an interpreter flag.
BUGFIX: several options to the [time] and [test2] commands needed to be checked
on a case-insensitive basis.
BUGFIX: make sure [sql execute] using the list or nested list format does not
raise an error when there are no rows.
BUGFIX: stop [host open] from causing issues when executing interactive child
processes.
BUGFIX: prevent the CommandCallback class from adjusting reference counts for
locked objects.
BUGFIX: null operand string should be normalized to empty string prior to being
used by expression operators.
BUGFIX: stop ObjectDisposedException from being thrown when calling ToString on
a disposed object via the FireTraces subsystem.
BUGFIX: when recycling undefined variables, ensure they always have the correct
set of traces.
BUGFIX: using [set] on a (previously) undefined variable should succeed even if
the variable was read-only, etc.
BUGFIX: when merging sub-command arguments, treat all the new arguments as a
single list.
BUGFIX: prevent the Event.MaybeDispose method, when called from the TclThread
class, from throwing ObjectDisposedException.
BUGFIX: the IEventManager.ClearEvents method should only dispose of any IEvent
objects that are flagged FireAndForget.
BUGFIX: prevent state of previously undefined variables from being incorrectly
reused via things like the [array set] command after using the [global]
or [variable] command on them.
BUGFIX: when present, the end-of-options option should be marked as present.
also, do the same for the list-of-options meta-option.
BUGFIX: make sure all threads created by the script engine have a well-defined
outer native stack pointer.
BUGFIX: the asynchronous script evaluation performed by the Engine class should
honor the NoBgError event flag.
BUGFIX: take care to invalidate the interpreter fields within the EngineThread
object instances so they do not interfere with garbage collection.
BUGFIX: make the ScriptThread.Send method more robust when useEngine parameter
is non-zero.
BUGFIX: only call WindowOps native wrapper methods when running on Windows.
BUGFIX: the experimental [scope global] sub-command should honor the read-only
and immutable setting for the interpreter.
BUGFIX: aliased opaque object handles should not be included in the results of
the [info ensembles] sub-command.
BUGFIX: have the _Commands.Ensemble class override IExecute.Execute in order to
actually execute its configured sub-command implementation.
BUGFIX: correct comparison of the parameter type list for GetDelegate method of
CommandCallback.
BUGFIX: make sure that specifying an ambiguous option results in an appropriate
error message.
BUGFIX: avoid calling GetType when the object might be a transparent proxy.
BUGFIX: when cleaning up an opaque object handle, avoid casting the contained
object value to the Interpreter type during the check to determine if
the object value is really an interpreter associated with the current
one (e.g. a parent or child).
BUGFIX: attempt to work around issues with String.Compare and String.Equals in
the .NET Framework that causes it to consider an empty string equal to
a string consisting only of NUL characters.
BUGFIX: mark various [object invoke], [object isoftype], and [object dispose]
related options as "unsafe", including the -nocomplain, -marshalflags,
-objectname, -aliasreference, -argumentflags, -parametermarshalflags,
-synchronous, -nodispose, and -verbose options.
BUGFIX: allow "safe" interpreters to use the -returntype callback option.
BUGFIX: make GetNestedObject and GetNestedMember more robust in the face of
interpreter locking errors.
BUGFIX: prevent result limits from being circumvented via the [string repeat]
sub-command and [lrepeat] command.
BUGFIX: when returning error messages about unknown or ambiguous option names,
do not include "unsafe" options for "safe" interpreters.
BUGFIX: prevent the [tcl load] sub-command and its associated subsystem from
trying to load native Tcl libraries designed for different operating
system than the one currently in use.
BUGFIX: *BREAKING CHANGE* mark all options to the [unset] command as "unsafe",
except for the -nocomplain option.
BUGFIX: *BREAKING CHANGE* make the Create and Cleanup methods of the
CommandCallbackWrapper class private as there is no reason for them to
be public.
BUGFIX: *BREAKING CHANGE* remove the Cleanup, Shared, NoPolicies, NoTraces,
NoPackageIndexes, SecurityWasEnabled, and ArgumentLocation values from
the InterpreterFlags enumeration. create new private enumeration type
to deal with these internal interpreter state flags. this is necessary
to simplify preventing these flags from being copied, accidentally or
otherwise, when creating new interpreters (e.g. via the [interp create]
or [test2] commands).
REFACTOR: add preliminary support for the .NET Framework 4.7.2.
REFACTOR: move all String.Equals and String.Compare wrapper methods to the new
shared StringOps class and make use of it from the core library and
the updater tool. carefully audit all use of the StringComparison
enumeration as well as the String.Equals and String.Compare methods.
REFACTOR: formalize save/restore semantics for the InterpreterStateFlags and
CacheFlags in the EvaluateScript and EvaluateStartupScript methods
that get executed during script library initialization.
REFACTOR: cleanup CommandCallback class by breaking the GetDelegate method into
easily digestible pieces.
REFACTOR: enhance native stack checking so that it deals better with threads
from the thread pool.
REFACTOR: cleanup the Option.FromString method and add a simpler overload that
is easier to use from scripts.
REFACTOR: make sure that help groups and topics are ALWAYS in sorted order.
REFACTOR: stop ignoring return values from SaveEnabledAndForceDisabled.
REFACTOR: constrain tests excel-* to run only when the Excel instance is usable
by the test suite.
REFACTOR: cleanup use of HashAlgorithm in the RuntimeOps class.
REFACTOR: cleanup and unify use of the EventQueue fields in the EventManager
class.
REFACTOR: add NuGet tools packages specifically targeted to version 2.0 and 4.0
of the CLR.
REFACTOR: add preliminary support for the .NET Standard 2.0 via .NET Core 2.0.
REFACTOR: simplify and cleanup ResultList handling in the Value class.
REFACTOR: allow "safe" interpreters to use [object invokeraw].
REFACTOR: add InternalHardTryLock method, which may block for a short time, for
use in situations where being unable to lock the interpreter may pose
a problem.
REFACTOR: move Disposed boolean properties to the IMaybeDisposed interface.
REFACTOR: robustify management of console foreground and background colors by
the built-in console host.
REFACTOR: *PERF* make it possible to disable cached Argument object usage for
each distinct usage type.
REFACTOR: *PERF* stop using Argument objects as values for procedure arguments.
REFACTOR: *PERF* create specially optimized operator/function lookup methods in
the Interpreter class for use by the sub-expression evaluator.
REFACTOR: *PERF* cache operators as they are used in a fixed-size array, based
on their lexemes.
REFACTOR: *HACK* avoid exceptions from Application.DoEvents on Mono due to bad
or missing X11 configuration.
REFACTOR: *BREAKING CHANGE* rename GetTypeCallback delegate to GetTypeCallback3
and add a GetTypeCallback1 parameter to the GetTypeList method.
REFACTOR: *BREAKING CHANGE* add the Flags attribute to the enumeration types
DbResultFormat, DbExecuteType, and DbConnectionType.
REFACTOR: *BREAKING CHANGE* add assembly file name string parameter to the
CreateDbConnection method of the Utility class.
REFACTOR: *BREAKING CHANGE* add allowUnsafe boolean parameter to the BadOption,
AmbiguousOption, and TryResolve methods of OptionDictionary class.
REFACTOR: *BREAKING CHANGE* when attempting to unload an AppDomain, retry up to
three times before giving up.
REFACTOR: *BREAKING CHANGE* move TryLock, Lock, and Unlock methods from the
IEventManager interface to the ISimpleSynchronize interface. also,
add ISynchronize interface as a base for IEventManager interface.
REFACTOR: *BREAKING CHANGE* add a boolean parameter to the CacheToString method
of the various container classes that implement it.
REFACTOR: *BREAKING CHANGE* rename the Value.GetType method overloads that deal
with type name lookups to GetAnyType. also, revise error handling so
detailed error messages are omitted unless the AllGetTypeErrors value
flag is specified.
REFACTOR: *BREAKING CHANGE* change the method signatures of the IScriptBinder
interface and Value class to use the ITypedInstance and ITypedMember
interfaces.
REFACTOR: *BREAKING CHANGE* change string comparison behavior of all operators
to ignore the current culture by default.
REFACTOR: *BREAKING CHANGE* replace boolean parameters to the GetPackagePath
method with a PathFlags parameter.
REFACTOR: *BREAKING CHANGE* change all thread Ids to be long integers. this
change impacts the IInterpreter and IAsynchronousContext interfaces
and the Utility class.
REFACTOR: *BREAKING CHANGE* add HostCreateFlags parameter to all overloads of
the ScriptThread.Create method that accept a CreateFlags parameter.
REFACTOR: *BREAKING CHANGE* add HostCreateFlags property to the IScriptThread
interface.
REFACTOR: *BREAKING CHANGE* add static GetStartupHostCreateFlags method to the
Interpreter class. this new method must be used to change host flags
instead of the GetStartupCreateFlags method.
REFACTOR: *BREAKING CHANGE* remove all host related values from the CreateFlags
enumeration.
REFACTOR: *BREAKING CHANGE* remove legacy Interpreter.Create method overloads.
REFACTOR: *BREAKING CHANGE* add HostCreateFlags to InterpreterSettings class.
REFACTOR: *BREAKING CHANGE* remove all boolean properties from the IHostData
interface and the HostData constructor and replace them with the
HostCreateFlags property.
REFACTOR: *BREAKING CHANGE* add a HostCreateFlags parameter to all overloads of
the Interpreter.Create method that accept a CreateFlags parameter.
REFACTOR: *BREAKING CHANGE* add IShellCallbackData interface for use with the
interactive loop subsystem.
REFACTOR: *BREAKING CHANGE* rename the ICallbackData.DelegateType property to
OriginalDelegateType. also, add a ModifiedDelegateType property.
REFACTOR: *BREAKING CHANGE* add the IInteractiveLoopData interface and have all
other public surface area use it, including the IHost interfaces.
REFACTOR: *BREAKING CHANGE* add hash algorithm name parameter to the GetData
method of the IRfc2898DataProvider interface.
REFACTOR: *BREAKING CHANGE* remove CompareUserStrings and CompareSystemStrings
methods from the Utility class.
REFACTOR: *BREAKING CHANGE* add Insert method to the IStringList interface.
FEATURE: add NetworkVariable class to enable linking a script variable to the
specified web URI via well-defined GET and POST requests.
FEATURE: add [info path] sub-command to fetch cross-platform path information.
FEATURE: add -assemblyfilename option to the [sql open] sub-command.
FEATURE: add TreatAsDotNetCore and TreatAsMono environment variables, which can
be used to attempt to treat the current runtime as though it were .NET
Core and/or Mono, respectively.
FEATURE: add -debug option to [object invoke] and related sub-commands. when
present, various conditions may trigger an attempt to break into the
managed debugger.
FEATURE: add NoBreak environment variable. when set, attempts to break into
managed debugger will be ignored.
FEATURE: add [interp source] sub-command to make it easier to evaluate files in
child interpreters.
FEATURE: add [debug emergency] sub-command to make all the necessary changes to
enable debugging of scripts on the current thread.
FEATURE: add -objectvalueflags option to the [object create], [object get],
[object members], and [object search] sub-commands.
FEATURE: add -marshalflags option to the [object get], [object members] and
[object search] sub-commands.
FEATURE: add StringMatchStackChecking interpreter flag to harden [string match]
against stack overflow exceptions.
FEATURE: add -execReturnCodes and -execExitCode options to the [test2] command.
FEATURE: add -objecttype and -proxytype options to the [object invoke] and
[object invokeraw] sub-commands.
FEATURE: add OnlyExists value to the EventWaitFlags enumeration. it's used to
cause the [vwait] command to return if the specified variable exists,
even if it has not changed.
FEATURE: add OnlyWaiting value to the EventWaitFlags enumeration. it's used to
cause the [vwait] command to return if the specified variable is being
waited on.
FEATURE: add -clear and -timeout options to the [vwait] command.
FEATURE: add -isolationOtherArguments / -isolationLastArguments options to the
[test2] command.
FEATURE: add the Interactive interpreter creation flag to force a newly created
interpreter to start in interactive mode immediately upon creation.
FEATURE: add the ThrowOnNoFeature interpreter creation flag to cause exceptions
to be thrown for missing features from third-party third-party plugins
and applications.
FEATURE: add the [package vsort] sub-command, for use with [lsort], in order to
perform a relaxed sort on strings that may or may not actually conform
to the string format of a Version object.
FEATURE: add -nocomplain option to the [file delete] sub-command.
FEATURE: add optional boolean argument to the [info assembly] sub-command to
return the entry assembly information.
FEATURE: add runtimeExtraVersion element to the eagle_platform array and add an
optional argument to the [info runtimeversion] sub-command to force it
to be returned.
FEATURE: add experimental [host screen] sub-command to manage multiple console
screen buffers.
FEATURE: add -isolated option to the [load] command to allow for fine-grained
control over the plugin loading process.
FEATURE: add CacheFlags environment variable. it can be used to control which
caches are enabled for newly created interpreters.
FEATURE: add TraceCategories environment variable, which can be used to set the
default trace categories.
FEATURE: add TracePriority and TracePriorities environment variables, which can
be used to set the default trace priority and its associated mask.
FEATURE: for the PowerShell cmdlet, allow the interpreter creation flags and
command-line arguments to be customized.
FEATURE: simplify using the custom MSBuild tasks via the NuGet tools package.
FEATURE: add support for the [host cancel] sub-command when running under Mono
on Unix.
FEATURE: add [debug lockloop] sub-command to lock / unlock the ability of other
threads to obtain interactive input while in the interactive loop.
FEATURE: add TimeServers property to the IInterpreter interface. its value, if
any, is not currently used by the core library.
FEATURE: add Suffix to the [info engine] sub-command.
FEATURE: add [maybeLoadScripts] script library procedure that works like the
[loadScripts] script library procedure, except it permits zero or more
script files to be skipped if its associated global variable is set.
FEATURE: add a method overload for the IEventManager.ListEvents method that can
be used to fetch (zero or more) events matching an optional filter.
FEATURE: add [object fromvar] sub-command to create an opaque object handle for
the object value of the specified variable.
FEATURE: add CurrentName property to the ITestContext interface and support for
it within the test suite infrastructure.
FEATURE: add [interp stub] sub-command to simplify the creation of placeholder
commands (e.g. for use with [interp subcommand], etc).
FEATURE: add NewCommandCallback property to the IInterpreter interface.
FEATURE: add -simple option to the [parse options] sub-command.
FEATURE: add SetupChannels method to the IStreamHost interface.
FEATURE: add SetChannelEncoding and SetChannelTranslation methods to the
IEntityManager interface.
FEATURE: add Attach static factory methods to the ScriptThread class to enable
using existing interpreters.
FEATURE: add ScriptEventState, ScriptEventThread, ScriptThreadClientData, and
ScriptTimeoutThread test classes, for use by the interactive language
demonstration project.
FEATURE: add UseNewEngineThread interpreter flag to cause asynchronous script
evaluation to create and use thread instead of the thread pool.
FEATURE: add GetContext method to the IInterpreter interface and make use of it
from the [info context] sub-command.
FEATURE: add loadPackageClientToolset procedure to the core script library.
FEATURE: support the Uri type in the Option and Variant classes.
FEATURE: add GetHashCode method to the Utility class that accepts a byte array
parameter.
FEATURE: add CreateAndOrStartThread, CreateHashAlgorithm, LookupFactoryType,
FormatTypeNameOrFullName, TryDispose, IsDotNetCore, QueueUserWorkItem,
InterruptAndJoinOrAbortThread, SystemStringEquals, GetFactoryTypeName,
StringEquals, GetHostCreateFlags, GetThreadTimeout, CreateViaFactory,
GetPathComparisonType, and GetSystemComparisonType methods to the
Utility class.
FEATURE: add NoPopulateOsExtra environment variable. setting it will cause
automatic asynchronous population of the tcl_platform(osExtra) array
element to be skipped.
FEATURE: add interactive #intsec command to enable or disable script signing
policies and core script certificates for interactive interpreter.
FEATURE: add the -reflectiononly and -fromobject options to the [object load]
sub-command.
FEATURE: enhance [host writebox] sub-command to accept an opaque object handle
that refers to a StringPairList.
FEATURE: add FromString static factory methods to the StringPairList class.
FEATURE: *BREAKING CHANGE* add GetCertificate method to the IPlugin interface.
FEATURE: *BREAKING CHANGE* add proxy type parameter to the GetObject method of
the IScriptBinder interface.
FEATURE: *BREAKING CHANGE* add long microseconds and boolean changed parameters
to the WaitVariable method of the IVariableManager interface.
FEATURE: *BREAKING CHANGE* add ReorderMethodIndexes method to the IScriptBinder
interface.
FEATURE: *BREAKING CHANGE* add the GetObject and GetMember methods to the
IScriptBinder interface in order to allow type, object, and member
resolution to be customized.
************************* Beta 1.0.6543.58654 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #178066 to #180112.
BUGFIX: using [scope destroy] on the active call frame should not leak opaque
object handles.
BUGFIX: verify correct number of arguments for [after clear], [after counts],
and [after dump] sub-commands.
BUGFIX: be sure to remove leading colons from qualified variable names when
using the GlobalOnly flag with namespaces enabled.
BUGFIX: add NoInteractiveTimeout interpreter flag. this makes it possible to
disable timeout thread management by the interactive loop.
BUGFIX: prevent [exec] of a process that uses the core library (e.g. the shell,
etc) from changing settings for the console.
BUGFIX: stop leaking per-thread context manager data from thread pool threads
that are used to service asynchronous script evaluation.
BUGFIX: have [file rights] handle the generic file system rights even though
they are missing from the FileSystemRights enumeration. this required
enhancing the EnumOps subsystem, making it possible to query the names
and values for an enumeration even when compiled for the .NET Framework
4.0 (previously, this functionality was only present when compiled for
the .NET Framework 2.0). finally, the method FormatOps.FlagsEnumV2 was
added, allowing its caller to optionally pass (extra) pre-existing Enum
names and values.
BUGFIX: the WebClient method overrides in the ScriptWebClient class should use
their virtual properties to access their data, not their fields.
BUGFIX: fix the list of inputs to the EagleLibraryResGenUnsetReadOnly build
target.
BUGFIX: the PrivateShellMainCore method must refresh its local quiet variable
after a script evaluation.
BUGFIX: in the GetAndExecuteClrMethod function of the Eagle Native Package for
Tcl (Garuda), load the configuration data prior to (possibly) checking
for the METHOD_STRICT_CLR flag.
BUGFIX: make [info level] return an accurate result when there is more than one
consecutive, identical scope call frame.
BUGFIX: be more explicit about preventing [array set] from working with linked
variables. this restriction may be relaxed in the future.
BUGFIX: add CheckDisposed calls that were missing from a few public methods of
the EngineThread class.
BUGFIX: correct checks in the test constraints package for dealing with .NET
Framework build numbers.
BUGFIX: prohibit use of non-identifier characters for table and column names in
the DatabaseVariable class.
BUGFIX: the [info args], [info body], and [info default] sub-commands, et al,
should be able to resolve namespace imported procedure names.
BUGFIX: modify ComplainViaTest functionality so it will skip interpreters that
do not belong to the current thread.
BUGFIX: *BREAKING CHANGE* the setup mutexes should be closed when unloading the
AppDomain and most likely when exiting the process as well.
BUGFIX: *BREAKING CHANGE* using [namespace delete ::] should leave the global
call frame in a usable state.
REFACTOR: add support for WiX version 3.11.
REFACTOR: aggressively cleanup IEvent objects in order to minimize outstanding
native event handles.
REFACTOR: for [evalWithTimeout] script library procedure in the test package,
make sure any [vwait] in the passed script will stop when canceled.
REFACTOR: improve detection of the various Windows 10 updates. also, add the
osExtra element to the Tcl platform array (tcl_platform), containing
more detailed information about the operating system.
REFACTOR: add preliminary support for the .NET Framework 4.7.1.
REFACTOR: cleanup error message handling for the [object] command.
REFACTOR: add NuGet package specifically targeted to version 2.0 of the CLR.
REFACTOR: add MaybeNextStep method to the IDebugger interface and start making
use of it from the script engine.
REFACTOR: further modularize and cleanup the interpreter disposal pipeline to
make it easier to maintain and understand.
REFACTOR: add TracePriority enumeration to help classify the relative priority
of every trace message emitted by the core library.
REFACTOR: in the EngineThreadStart method, catch the ThreadAbortException and
ThreadInterruptedException exception types.
REFACTOR: revise and optimize how operands are converted to numeric types from
the string arguments passed into various operators. the GetNumeric
method was added to the Value class in order to facilitate this.
REFACTOR: cleanup culture related initialization performed by the Value class.
REFACTOR: improve handling of the ValueType type in the core marshaller.
REFACTOR: *PERF* add SuppressUnmanagedCodeSecurity attributes to the unmanaged
function pointer delegates, where applicable.
REFACTOR: *BREAKING CHANGE* all DateTimeKind values now default to Unspecified.
REFACTOR: *BREAKING CHANGE* move ValueFlags.Object value from the Any mask to
the AnyVariant mask.
REFACTOR: *BREAKING CHANGE* add Interpreter parameter to the Value.GetVariant
method.
REFACTOR: *BREAKING CHANGE* add DateTimeKind parameter to the Value.GetValue
method.
REFACTOR: *BREAKING CHANGE* stop exposing the Binder class from the library and
minimize its use internally.
REFACTOR: *BREAKING CHANGE* modify the Eagle Native Package for Tcl (Garuda) so
that it it will call the managed detach or shutdown methods only when
the bridge is marked as started. this makes it a bit easier to make
use of the Garuda package without Eagle.
REFACTOR: *BREAKING CHANGE* rename the -flags option to [interp service] to
-eventflags.
REFACTOR: *BREAKING CHANGE* cleanup all error message generation performed by
the Value class.
REFACTOR: *BREAKING CHANGE* include the Id of the interpreter in all generated
event names.
REFACTOR: *BREAKING CHANGE* add a missing space to the license agreement.
REFACTOR: *BREAKING CHANGE* improve null/empty object detection used by the
formatting subsystem. mostly, this impacts formatting of various
diagnostic messages.
FEATURE: add -datetimekind option to the [string format] sub-command.
FEATURE: add StopOnComplain and StopOnGlobalComplain event wait flags for use
with [vwait]. when set, event processing will stop if the associated
complaint count was incremented during the current iteration of the
event loop.
FEATURE: add -global option to the [scope create] sub-command. when used with
the -clone option, it forces the variables from the global call frame
to be cloned instead of the current call frame.
FEATURE: add Cancel and ResetCancel method overloads with a Result parameter to
the ScriptThread class.
FEATURE: add FailPending cancel flag to have the Engine.ResetCancel method to
return an error when the interpreter is busy.
FEATURE: add ResetCancel callback flag to reset the script cancellation flag
before invoking CommandCallback scripts (i.e. those evaluated when a
delegate is used).
FEATURE: add FireAndForget callback flag in order to remove an asynchronous the
callback from the interpreter after it is invoked.
FEATURE: enhance the [after counts] sub-command to return several key metrics
related to the event manager subsystem.
FEATURE: add Lock, Unlock, and TryLock methods to the IEventManager interface.
also add QueueEventCount, QueueIdleEventCount, MaybeDisposeEventCount,
and ReallyDisposeEventCount properties to the IEventManager interface.
FEATURE: add options to the [vwait] command. the -force option skips checking
for queued events entering the wait. the -limit option will limit the
number of events processed. the -leaveresult option prevents [vwait]
from modifying the interpreter result unless there is an error. the
-nocomplain option will prevent the wait operation itself from raising
script errors. the -eventwaitflags and -variableflags options allow
fine-grained control over event processing. the -handle option can be
used to add an external event source into the event wait processing.
FEATURE: support optional pattern argument to the [array random] sub-command.
also, add the -matchname and -matchvalue options to control whether
keys and/or values are matched against by the pattern.
FEATURE: add -killonerror option to the [exec] command. this will cause the
child process to be killed if the interpreter encounters any kind of
error (e.g. script canceled, interpreter exited, etc).
FEATURE: add AutoFlagsEnum object flag to enable automatic combining of flags
enumeration values when setting field values via [object invoke].
FEATURE: add Banner method to the IPlugin interface and use it to augment the
banner information emitted by the #version interactive command.
FEATURE: add the [ensemble isolated] sub-command to the [ensemble] abstract
command.
FEATURE: add -preprocessarguments option to the [exec] command. it evaluates a
script command, passing the file name, directory, and the command line
arguments. based on its return code, the script command specified can
opt to cancel execution of the child process, alter its arguments, or
allow it to proceed as usual.
FEATURE: add -quiet command line option to enable or disable quiet mode for the
interactive shell.
FEATURE: add introspection support for the static data in the TraceOps class.
FEATURE: add BgErrorResetCancel interpreter flag. when this flag is set, the
script cancellation flags for the interpreter will be reset prior to
executing its background error handler.
FEATURE: add undocumented isBreakOnDemand environment variable, supported only
via the core script library [runAllTests] procedure, which will break
into the script debugger before evaluating a test file.
FEATURE: add ScriptTraceListener class, which can be used to evaluate a script
when its TraceListener methods are called.
FEATURE: add method overlods of the Utility.DebugTrace method that accept a
TracePriority parameter.
FEATURE: add TryCombineUris and ExtractPolicyContextAndTextAndBytes methods to
the Utility class.
FEATURE: add the -isolated command line option to enable or disable plugin
isolation.
FEATURE: add [array for] sub-command that implements the semantics described by
TIP #421.
FEATURE: add StopOnNullType, StopOnNullObject and StopOnNullMember value flags.
if used, they cause nested type, object, and member value resolution,
respectively, to stop (without raising an error) when a nested search
fails -OR- encounters a null object value.
FEATURE: add the -objectvalueflags and -membervalueflags options to the
[object invoke] and [object invokeraw] sub-commands.
FEATURE: add [interp resultlimit] sub-command. also add the ExecuteResultLimit
and NestedResultLimit properties to the IInterpreter interface.
FEATURE: add SetVariableEnumerable method to the IVariableManager interface.
FEATURE: add -all option to the [scope close] sub-command. this will cause all
nested scope call frames to be popped.
FEATURE: add [package vloaded] sub-command to provide a list of loaded packages
and their important metadata.
FEATURE: add experimental IsAssignableFrom marshal flag to enable use of the
custom Type.IsAssignableFrom method replacement, mostly for use with
Mono.
FEATURE: add the -marshalflags option to the [object isoftype] sub-command.
FEATURE: add the -references and -noremove options to the [object cleanup]
sub-command.
FEATURE: add the TemporaryReturnReference object flag, which is used to enable
the marking of opaque object handle references added via [return] as
temporary. upon returning to the outermost script evaluation level in
the engine (i.e. not the same as [info leve]), all of these temporary
references are cleaned up automatically, which may cause the objects
attached to their associated opaque object handles to be disposed.
FEATURE: add the RemoveReference callback flag, which is used with dynamic
delegates to cause their return value to lose a reference without
actually being disposed.
FEATURE: add the NoSetVariable marshal flag, which is used to force the core
marshaller to skip setting script variables that are associated with
output parameters.
FEATURE: add ByValHandleByValue and ByRefHandleByValue marshal flags, which are
used to force the core marshaller to consider the value of a variable
when its name is specified in place of an input or output parameter,
respectively.
FEATURE: add evalAsync and isNonNullObjectHandle procedures to the core script
library.
FEATURE: add downloadAndExtractNativeTclKitDll procedure to the core script
library.
FEATURE: add downloadAndExtractSecurityToolset procedure to the core script
library.
FEATURE: add requestLicenseCertificate procedure to the core script library.
FEATURE: add an overload of the Utility.FormatWrapOrNull method that accepts a
new boolean parameter that is used to activate better display string
handling.
FEATURE: add overloads of the Utility.DebugTrace method that accept Exception
and TracePriority parameters.
FEATURE: add [tcl available] sub-command, which has exactly the same arguments,
options, and behavior as the [tcl find] sub-command, differing only in
its result handling: if native Tcl libraries are found, its result is
true; otherwise, its result is false. it does not normally raise any
script errors.
FEATURE: add Connected and Socket properties to the Channel class (only usable
for network-based streams).
FEATURE: add highly experimental [scope global] sub-command to force a named
scope to act as the global call frame for the current thread.
FEATURE: *BREAKING CHANGE* convert [debug break] sub-command to use standard
option processing and add the -interpreter option.
FEATURE: *BREAKING CHANGE* add ComplainViaTrace environment variable. setting
it will cause complaint output to the sent to the active Debug and/or
Trace listeners. this is technically a breaking change, because the
legacy behavior always sent complaint outout the active Debug and/or
Trace listeners.
FEATURE: *BREAKING CHANGE* add -raw option to the [debug trace] sub-command,
which is now off by default. also, add the -priority option, which
defaults to the currently configured default trace priority.
FEATURE: *BREAKING CHANGE* the Interpreter class now implements the IIdentifier
interface with read-only values for the Kind, Id, and Name properties.
the Group, Description, and ClientData properties are read-write. the
GetIdentifier method has also been enhanced to handle interpreters.
FEATURE: *BREAKING CHANGE* when the core script library is embedded, also embed
the core test package.
FEATURE: *BREAKING CHANGE* add the -alias option to the [interp create]
sub-command.
************************* Beta 1.0.6483.12345 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #162010 to #177030.
BUGFIX: prevent NativeDelegate.Dispose from throwing ObjectDisposedException if
the associated NativeModule has already been disposed.
BUGFIX: the WrapperDictionary class should not throw even if the target entity
has been disposed (e.g. the Remove method).
BUGFIX: avoid waiting forever for events queued to a TclThread with a timeout
value set.
BUGFIX: do not call the native Tcl notifier on a thread unless a native Tcl
interpreter has been created -AND- the native Tcl thread has not yet
been finalized.
BUGFIX: correct help text for the interactive #hinfo command.
BUGFIX: stop the native console from being closed if any built-in interpreter
host instance within the application domain is currently using it for
reading and/or writing. also, prevent it from being closed if another
application domain is using the built-in console host.
BUGFIX: prevent Engine.SetExceptionErrorCode method from throwing an exception
if the original target site is within an assembly that was loaded into
an isolated AppDomain.
BUGFIX: the [upvar] command must handle global namespace call frames even when
the target variable does not yet exist.
BUGFIX: fix and/or address issues found by another static analysis tool.
BUGFIX: correct hash algorithm handling within the BeforeFile policy checking.
this was a typo.
BUGFIX: supplementary command line arguments should be inserted into the final
command line in the right order: first from the interpreter host, then
from the AppSettings, and finally from the arguments file. the initial
command line arguments must occur after all supplementary command line
arguments.
BUGFIX: prevent supplementary command line arguments from the same arguments
file from being added twice, one by the interpreter host and once from
the primary arguments file.
BUGFIX: complaint handling should only trigger a debugger breakpoint when the
current thread already has an outstanding complaint (i.e. previously,
the complaint nesting level was per-AppDomain, which was wrong).
BUGFIX: process WinForms events for all builds, even those that do not include
support for native Windows integration, as long as they include support
for WinForms itself.
BUGFIX: an object alias created via [library call] should not have an empty
sub-command name.
BUGFIX: *BREAKING CHANGE* the subSpec argument to [regsub] should be completely
ignored when the -eval option is used.
REFACTOR: for Mono-aware builds, avoid using the UserInteractive properties to
determine if interactive yes/no prompts should be displayed because
they always return false.
REFACTOR: dynamically introspect the core library to find [expr] operators and
functions.
REFACTOR: move all knowledge of known supported Tcl versions to the new test
suite helper procedure [getKnownTclVersions], which helps clean up
the related constraint checking significantly.
REFACTOR: revise internals of the [regsub] support subsystem, pursuant to the
changes required to implement TIP #463.
REFACTOR: move prefixed environment variable (i.e. configuration value) support
methods to the new GlobalConfiguration class.
REFACTOR: revise script engine usage of the PolicyFlags values.
REFACTOR: cleanup and modularize use of the BoxCharacterSets property.
REFACTOR: use the IPluginData interface instead of IPlugin, when applicable.
REFACTOR: stop calling the ToString method using integer literals 0 and 1.
REFACTOR: cleanup usage of the Callback, Interpreter, and ClientData properties
of the IEvent interface.
REFACTOR: add preliminary support for the .NET Framework 4.7.
REFACTOR: move AttributeOps methods shared with the updater tool to the Shared
namespace.
REFACTOR: cleanup the NativeOps methods related to native library loading to
allow for simpler error handling semantics in callers.
REFACTOR: add TclExitUnloadFlags property to the Interpreter class for use by
the Tcl API object to help determine the unload flags to use from
within the ExitProc callback. also, robustify the library-3.* tests
so they can deal with having a pre-loaded native Tcl library.
REFACTOR: *BREAKING CHANGE* divide the FindFlags value Architecture into three
pieces: one to control finding architecture-specific binaries, one to
control extracting the per-architecture magic values, and finally one
to control matching against the per-architecture magic values.
REFACTOR: *BREAKING CHANGE* add a new core interface IIdentifierBase and move
the key properties from the IIdentifier interface to it.
REFACTOR: *BREAKING CHANGE* move the PublicKey class to the shared namespace.
REFACTOR: *BREAKING CHANGE* move the BuildType and ReleaseType enumerations to
the shared namespace.
REFACTOR: *BREAKING CHANGE* add the TypeName property to the IFunctionData and
IOperatorData interfaces.
REFACTOR: *BREAKING CHANGE* add the typeName parameter to the FunctionData and
OperatorData constructors.
REFACTOR: *BREAKING CHANGE* rename -args option for [regsub] to -extra.
REFACTOR: *BREAKING CHANGE* rename HashAlgorithm property of the IPolicyContext
interface to HashAlgorithmName.
REFACTOR: *BREAKING CHANGE* add Unsafe option flag to the -debug, -isolated,
-nosecurity, -security, -standard, -trace, and -unsafeinitialize
options of the [interp create] sub-command.
REFACTOR: *BREAKING CHANGE* move the License class into the Shared namespace.
FEATURE: add UseTrustedUri script data flag to the LoadSettingsViaScriptFile
method and its associated subsystem.
FEATURE: add -maybezerostring option to the [unset] command. when present, it
will behave identically on platforms where strings can successfully be
zeroed; otherwise, it will be ignored.
FEATURE: add -robustify option to the [tcl find], [tcl load], [tcl select], and
[tcl versionrange] sub-commands. its purpose is to set the flags that
will result in the best chance of successfully finding, selecting, and
loading a robust native Tcl library.
FEATURE: add an optional boolean argument to the [tcl module] sub-command. if
present and non-zero, some additional information about the native Tcl
module will be returned.
FEATURE: add the [library handle] sub-command to query the library handle for a
native library that is already loaded into the process; the value zero
will be returned if the underlying platform lacks the necessary native
API -OR- the specified native library has never been loaded into the
process.
FEATURE: add experimental support for the decimal radix prefix "0d".
FEATURE: add experimental support for the \d backslash escape sequence.
FEATURE: add ScriptBaseUri to the [info engine] sub-command.
FEATURE: add -creationflagtypes option to the [interp create] sub-command to
control which default flags from the parent interpreter are used.
FEATURE: add interactive #dcflags, #diflags, #dizflags, and #dscflags commands
to display and/or set the default creation flags, interpreter flags,
initialization flags, and script flags for the interactive interpreter.
FEATURE: add experimental support for the [info linkedname] sub-command, which
was proposed in TIP #471 by Mathieu Lafon.
FEATURE: add the SelectType method to the IScriptBinder interface and use it to
improve the COM interop type selection algorithm, via optional object
flags PreferMoreMembers, PreferSimilarName and RejectDissimilarNames.
FEATURE: add the GetEncodingOrDefault method to the IEntityManager interface.
FEATURE: add the ElementSelectionCallback delegate type.
FEATURE: add the SkipThisAssembly and SkipThisStream execution policy flags.
FEATURE: add the GetValue and SetValue static methods to the Result class. add
a GetValue static method to the Argument class.
FEATURE: add an optional boolean argument to the [info identifier] sub-command
to return all common identifier details instead of just the unique Id.
FEATURE: add the UseOwner, Asynchronous, and AsynchronousIfBusy callback flags
in order to use the owner IScriptThread of an interpreter to process
the callback script instead of the interpreter itself, which provides
a bit more control over callback script thread affinity.
FEATURE: add IsDisposed property to the IScriptThread interface.
FEATURE: add IHaveOwner interface and implement it in the Interpreter class.
FEATURE: add the IsAdministrator, GetGreatestMaxKeySizeAndLeastMinBlockSize,
IsFlagsEnum, UnsetEnvironmentVariable, IsCrossAppDomainNoIsolated, and
CreateTemporaryScriptFile methods to the Utility class.
FEATURE: add experimental support for the new operators from TIP #461.
FEATURE: add experimental support for [regsub -command] option from TIP #463.
FEATURE: add -verbatim option to the [regsub] command, pursuant to improving
the functionality added by TIP #463.
FEATURE: add experimental support for commands that correspond to the built-in
operators and functions, placed in the tcl::mathop and tcl::mathfunc
namespaces, respectively.
FEATURE: give the ternary conditional operator an implementation that is usable
outside of the sub-expression evaluator.
FEATURE: add experimental support for using AppSettings to configure command
line arguments to the shell. also, add the NoAppSettings environment
variable and the -noAppSettings command line option to skip processing
of any arguments from the AppSettings.
FEATURE: in the subSpec argument to [regsub], support the \M# sequence to refer
to the Nth parenthesized subexpression, for all cases, even when N is
greater than or equal to 10.
FEATURE: in the subSpec argument to [regsub], support the \N<grpName> sequence
in order to refer to the specified named parenthesized subexpression.
FEATURE: *BREAKING CHANGE* the result value from the [file rights] sub-command
is now a list of flag names and/or integer values.
************************* Beta 1.0.6234.51946 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #150790 to #159986.
BUGFIX: the [string is boolean] sub-command should not accept integers other
than 0 and 1 (COMPAT: Tcl).
BUGFIX: correct handling of the null opaque object handle by the script library
procedure getStringFromObjectHandle.
BUGFIX: fix incorrect usage of cacheFlags field in the ClearCaches method.
BUGFIX: fix PGP signature file extension handling in the release preparation
tool.
BUGFIX: fix duplicate entries in the hash.txt file generated by the release
preparation tool.
BUGFIX: the MergeCommands plugin flag must be taken into account when moving
exposed and hidden commands.
BUGFIX: the auto-path trace callback should handle a null value gracefully, by
simply doing nothing.
BUGFIX: make sure all release binaries include Authenticode signatures that can
be verifed and trusted on Windows XP.
BUGFIX: when a "safe" interpreter is initialized with init.eagle, make sure the
[unknown] procedure does not use the [appendArgs] procedure, because it
may not be available.
BUGFIX: deleting the global namespace in a "safe" interpreter should not cause
hidden commands to become unusable.
BUGFIX: fix several corner cases in the method overload reordering logic. type
depths were not always being calculated correctly. also, the comparer
used for sorting the method overloads did not handle ties correctly.
BUGFIX: avoid possible unchecked recursion in Variable and TraceInfo classes by
skipping the ToString method calls from within the GetStringFromObject
helper method.
BUGFIX: in the Eagle Native Package for Tcl (Garuda), reset the bBridgeStarted
flag when the [garuda clrstop] sub-command is called.
BUGFIX: fix typo in the error parameter value for the RemoveCommand call in the
NamespaceOps.ChangeCommand method.
BUGFIX: when ComplainViaTest is invoked, ignore readiness levels if the target
interpreter is the first interpreter. furthermore, do not consider an
interpreter usable if the needed command or channel are missing.
BUGFIX: avoid calling GetLastError for zero return values from GetStdHandle.
BUGFIX: test constraints should be cached in the test_constraints variable for
use by non-primary threads, e.g. the [memoryThreadStart] procedure in
the benchmark.eagle test file.
REFACTOR: make sure that Win32 API errors returned from the NativeConsole class
to the Console host are reported via the complaint subsystem.
REFACTOR: cleanup interpreter host terminology used in the help text.
REFACTOR: eliminate use of the generic IHost interface from the HelpOps class.
REFACTOR: in the Eagle Native Package for Tcl (Garuda), enable logging for the
LoadAndStartTheClr and StopAndReleaseTheClr functions when they are
called from within the [garuda] command implementation.
REFACTOR: update Fossil tool w/source to version 1.37.
REFACTOR: modify the ClearCaches method to include the miscellaneous internal
caches.
REFACTOR: change _Comparers.FileName constructors to private, add static Create
method, and add cache for its instances based on the path comparison
type type.
REFACTOR: add Debugger value to the PluginFlags attribute for the core plugin.
REFACTOR: introduce the GetObjectsForTrace method for use by the object trace
callback in order to make tracking opaque object handles faster.
REFACTOR: restore core marshaller support for binders that are not completely
compatible with the semantics for the IScriptBinder interface.
REFACTOR: error messages from the core marshaller should not contain literal
double-quotes; instead, they should use the WrapOrNull method.
REFACTOR: remove the read-only restriction for all remaining option value flag
fields in the ObjectOps class.
REFACTOR: work around a Mono bug involving the use of empty strings with one of
the two parameter LastIndexOf method overloads.
REFACTOR: *SECURITY* when creating a "safe" interpreter, set the auto-path to a
null value. previously, the auto-path was not set, making the use of
packages impractical.
REFACTOR: *BREAKING CHANGE* change the [debug collect] sub-command so that it
takes a GarbageFlags value as its only optional argument.
REFACTOR: *BREAKING CHANGE* mark the -kind option to the [rename] command as
unsafe and add support for hidden commands, procedures, and executes.
REFACTOR: *BREAKING CHANGE* add an OptionDictionary parameter to the minimal
FixupReturnValue method overload of the Utility class.
REFACTOR: *BREAKING CHANGE* break out appropriate IHost methods into the new
IBoxHost, IColorHost, IPositionHost, and ISizeHost interfaces.
REFACTOR: *BREAKING CHANGE* add a MarshalFlagsList parameter to the
SelectMethodIndex method of the IScriptBinder interface.
FEATURE: add -parametermarshalflags option to all the core marshaller related
sub-commands (e.g. [object invoke], et al). if present, the marshal
flags used to process a parameter will gain the marshal flags in the
list at the same index.
FEATURE: add support for option values containing a list of enumerated values.
FEATURE: add WrapHandle method to the Utility class.
FEATURE: add ControlCaches method to the ICacheManager interface.
FEATURE: add ListVariables method to the IVariableManager interface.
FEATURE: add MakeProcedureNonCaching method to the IEntityManager interface and
make the necessary script engine changes to support it.
FEATURE: add NoMutexes environment variable. when set, the mutexes checked by
the setup packages will not be created or opened.
FEATURE: keep track of the data used to find each native Tcl library and return
it with the other Tcl build information.
FEATURE: add UseArgumentCounts method overload reordering flag. when used, it
will cause the supplied argument counts to be taked into account when
figuring out the effective parameter counts for a method overload.
FEATURE: add UseParameterTypes method overload reordering flag. when used, it
will cause the parameter type to be taken into account instead of the
argument type, when appropriate.
FEATURE: add TraceResults method overload reordering flag. when used, it will
cause the resulting sorted list of method overloads to be emitted via
the tracing subsystem.
FEATURE: add full support for IPlugin and IExecute option types.
FEATURE: add the -hidden option to the [rename] command.
FEATURE: upgrade to a fully trusted SSL certificate for *.eagle.to.
FEATURE: add -chained and -lastresult options to [object invokeall] sub-command
to allow method invocations after the initial one to use the resulting
opaque object handle from the previous method invocation.
FEATURE: enhance integration with the CLR garbage collector to enable the large
object heap to be compacted when possible and seemingly necessary.
FEATURE: add alternate name for the Eagle Package for Tcl (Garuda). when the
package is loaded via the alternate name, it skips starting the CLR
and setting up the bridge to the Eagle core library.
FEATURE: add the loadClr configuration parameter to the Eagle Package for Tcl
(Garuda). when non-zero (which is the legacy default), the CLR will
be loaded as soon as the package is loaded; otherwise, it will need
to be manually started via the new [garuda clrload] sub-command.
FEATURE: add [info windowtext] sub-command to return the text for a native
window handle, if any.
FEATURE: add -datetimekind option to the [sql execute] sub-command.
FEATURE: add -datetimekind and -datetimeformat options to the [object invoke]
sub-command and all related sub-commands. they are used to override
the default values provided to the core marshaller by the DateTimeKind
and DateTimeFormat properties of the interpreter.
FEATURE: add boolean -file option to the [debug secureeval] sub-command.
FEATURE: add -unsafeinitialize option to the [interp create] sub-command.
************************* Beta 1.0.6120.16902 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #147964 to #147966.
BUGFIX: make [file split] and [file join] work for Unix-style absolute paths.
BUGFIX: when matching sub-commands in "safe" interpreters, do not match against
"unsafe" sub-commands that happen to share the same prefix.
BUGFIX: using the Free method on a disposed CallFrame object should not raise
an InterpreterDisposedException.
BUGFIX: only interpreter readiness check related script debugger breakpoints
should be skipped when the exiting-from-debugger flag is set.
REFACTOR: break the web related methods out of the SocketOps class into the new
WebOps class.
REFACTOR: improve handling of errors encountered by the TclWrapper class when
searching for candidate Tcl builds.
REFACTOR: make sure that all applicable URLs present in the source tree are now
HTTPS.
REFACTOR: significant improvements to the getEagle.tcl tool, mostly related to
HTTPS and redirection handling.
REFACTOR: make it possible to bypass the normal DebugTrace handling that deals
with formatting and category checks. this helps minimize the runtime
impact of using a trace-enabled build configuration.
REFACTOR: *BREAKING CHANGE* add InterpreterFlags property to the IScriptThread
interface.
REFACTOR: *BREAKING CHANGE* add InterpreterFlags parameter to various Create
method overloads of the Interpreter class.
REFACTOR: *BREAKING CHANGE* enable use of namespaces by default in all released
build configurations.
FEATURE: add optional boolean argument to the [uri softwareupdates] sub-command
to control whether the software updates SSL certificate is exclusively
trusted.
FEATURE: add the IsSoftwareUpdateExclusive, SetSoftwareUpdateExclusive, and
IsWebUri methods to the Utility class.
FEATURE: add the other overload of the IsRemoteUri method to the Utility class.
FEATURE: add the DefaultValue callback flag to force the default value for the
return type to be used when returning the value from dynamic callback
methods. the ReturnValue callback flag is also required.
************************* Beta 1.0.6119.57133 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #133453 to #144055.
BUGFIX: fix namespace prefix removal handling for the [debug procedureflags],
[info args], [info body], [info default], [info subcommands], and
[interp subcommand] sub-commands.
BUGFIX: all aliases must be resolved in the global namespace.
BUGFIX: when the core marshaller uses a null variable value to create an array
reference, it should undo that operation, if appropriate, when fixing
up the ByRef arguments from the managed method.
BUGFIX: null variable values (i.e. not just a variable with the literal string
value "null") are always allowed to act as the basis for managed array
references, for both input and output parameters.
BUGFIX: the [checkForTestCallStack] test suite constraint check procedure must
take the [runTestPrologue] test package procedure into account.
BUGFIX: when a custom library path has been set for the interpreter, make sure
to check for the directory name portion of the core script library and
remove it as necessary when building the host package index file name.
BUGFIX: rewrite the remoting server tests so they work independently.
BUGFIX: avoid running tests that download scripts when security is enabled for
the interpreter.
BUGFIX: only reset the location FindFlags when a specific path is specified for
the [tcl load] sub-command.
BUGFIX: prevent access violations when using the native Tcl [exit] command from
an interpreter containing the Eagle Native Package for Tcl (Garuda).
BUGFIX: avoid creating a new dynamic delegate in CommandCallback when one with
the same return type and parameter types was created previously.
BUGFIX: prevent unchecked recursion in the interactive loop due to the script
cancellation flags being set when checking for complete interactive
input.
BUGFIX: stop triggering script debugger breakpoints upon exit from interactive
loop instances triggered by script debugger breakpoints.
BUGFIX: forbid all script debugger breakpoints when invoking the configured
interactive command callback.
BUGFIX: do not hard-code the "synchronous" object disposal parameter; instead,
use either the ObjectOps.GetDefaultSynchronous method -OR- the value
of the -synchronous option, depending on context. add -synchronous
option to the [object foreach] sub-command.
BUGFIX: make NativeOps class tolerant of missing dlopen, dlsym, dlclose, and
dlerror delegates on Unix.
BUGFIX: the IsSupported method of the Argument and Result classes should return
true for the CommandBuilder and Interpreter types.
BUGFIX: for [interp create -safe], make sure the safe.eagle script is evaluated
instead of the init.eagle script.
BUGFIX: *BREAKING CHANGE* when evaluating the package index file from the host,
set the "dir" variable to the directory name portion of the file name,
e.g. "lib/Eagle1.0".
REFACTOR: improve Eagle Native Package for Tcl (Garuda) support for deployments
that use parallel native Tcl and Eagle directories.
REFACTOR: stop treating Argument objects as mutable, e.g. the name and flags
properties, from the procedure argument list creation code.
REFACTOR: add preliminary support for the .NET Framework 4.6.2.
REFACTOR: cleanup the NativeOps class to make things more consistent and group
related methods together. also, internalize error handling for the
public Windows-only abstraction methods.
REFACTOR: using an extra two "#" characters in front an interactive command can
now be used to temporarily bypass the interactive command callback.
REFACTOR: when the PathOps.Search method returns a successful result, it should
make sure it contains only native directory separators.
REFACTOR: retry attempts to fetch the interactive host from the interpreter if
the interpreter lock cannot be immediately obtained.
REFACTOR: enhance the test suite infrastructure and several tests to improve
correctness and robustness when running on Mono 4.4.
REFACTOR: add the SkipTestsToLib script flag. when disabled (which is the
default), the core host searches additional candidate script paths,
specifically those ending with "Tests/${fileName}" in addition to
those ending with "lib/Tests/${fileName}".
REFACTOR: clarify and cleanup the GetFile, GetLibrary, and GetStartup methods
of the ScriptOps class. add the GetLibraryFile method to simplify
some of the code reuse.
REFACTOR: add License value to the PolicyType enumeration.
REFACTOR: add the NoLoadKeyRings, IgnoreKeyRingError, ExplicitOnly, and
PreferEmbedded values to the ExecutionPolicy enumeration.
REFACTOR: update the URI used to interface with SymbolSource.org.
REFACTOR: add tests for the [debug lockprocs] sub-command.
REFACTOR: add the purpose-built TestSetPluginIsolation method.
REFACTOR: add FindFlags.OverwriteBuilds flag to support later phases replacing
Tcl builds found in earlier phases.
REFACTOR: improve threaded-by-default detection for native Tcl libraries that
are detected by means other than the registry.
REFACTOR: add overload of the TryLock method with a milliseconds parameter to
the ISynchronize interface.
REFACTOR: rework how the core library plugin creation is handled.
REFACTOR: revise cache configuration subsystem to keep track of how many times
each cached item is accessed. during trimming, remove only the items
that fall below the threshold, which is dynamically adjusted based on
memory pressure. keep track of how long trimming operations take.
REFACTOR: allow the cache configuration subsystem to disable a cache if items
are added and/or removed too frequently. by default, the cache will
be re-enabled after 30 seconds.
REFACTOR: when setting procedure arguments, use the actual Argument objects,
including the for special "args" argument, which is preserved as an
ArgumentList object.
REFACTOR: make sure all plugin-based packages have the Plugin package flag and
the Core package flag for those defined by the core library.
REFACTOR: implement the IGetValue interface in the Number, Variant, StringList,
StringPairList, and ArgumentList classes. implement the ISetValue
interface in the Number and Variant classes.
REFACTOR: keep track of whether a StringList was created as read-only, via the
new IReadOnly interface. modifying a read-only StringList will not
throw an exception; however, it is considered a programming error.
REFACTOR: move the most commonly used core script library procedures out of the
init.eagle into the separate files auxiliary.eagle, file1.eagle, and
platform.eagle. move various other support procedures to the files
compat.eagle, csharp.eagle, database.eagle, exec.eagle file2.eagle,
file3.eagle, info.eagle, list.eagle, object.eagle, process.eagle,
runopt.eagle, shim.eagle, testlog.eagle, and unkobj.eagle. move
update checking support procedures to the file update.eagle.
REFACTOR: *BREAKING CHANGE* add ClearTrace environment variable to clear trace
listeners during the startup process, which replaces that use of the
NoTrace environment variable, which is now only used to disable core
library tracing.
REFACTOR: *BREAKING CHANGE* rename Trace environment variable to SetupTrace.
REFACTOR: *BREAKING CHANGE* rename the -noTrace command line option to
-clearTrace and the -trace command line option to -setupTrace.
REFACTOR: *BREAKING CHANGE* modify the LoadSettingsViaScriptFile method so that
it accepts a ScriptDataFlags parameter instead of a boolean.
REFACTOR: *BREAKING CHANGE* forbid setting the Name, Flags, Default, FileName,
StartLine, and EndLine properties of an Argument object.
REFACTOR: *BREAKING CHANGE* for the IEntityManager.AddOrUpdateProcedure method,
change the arguments parameter to an ArgumentList.
REFACTOR: *BREAKING CHANGE* replace the ModuleFlags.Locked value with two new
values, ModuleFlags.NoUnload and ModuleFlags.NoRemove.
REFACTOR: *BREAKING CHANGE* stop collecting garbage by default when an opaque
object handle is removed from the interpreter.
REFACTOR: *BREAKING CHANGE* add overloads for the IEntityManager.RemoveObject
and IInterpreterManager.RemoveChildInterpreter methods that do not
require a "synchronous" parameter.
REFACTOR: *BREAKING CHANGE* aggressively cache Argument objects, especially
those created by the script engine. this has the potential to slow
down certain scripts; therefore, it can be easily disabled at
compile-time or runtime.
REFACTOR: *BREAKING CHANGE* rename the -flags option to the [parse command],
[parse expression], and [parse script] sub-commands to
-substitutionflags.
REFACTOR: *BREAKING CHANGE* add an engine flags parameter to all the ParseState
constructors and the methods Parser.IsComplete and Parser.ParseScript.
REFACTOR: *BREAKING CHANGE* modify the NewWebClientCallback delegate to add an
error output parameter.
REFACTOR: *BREAKING CHANGE* add the NoPluginResourceName and NoRawResourceName
script flags and use them to prevent calls into the IPlugin.GetString
method for the associated resource name.
REFACTOR: *BREAKING CHANGE* add the NoGetString plugin flag and use it to stop
all calls into the IPlugin.GetString method by the core host.
REFACTOR: *BREAKING CHANGE* add string name parameter to the TestScriptStream
method.
REFACTOR: *BREAKING CHANGE* add SetSecurityWasEnabled method to the
ISecurityManager interface.
REFACTOR: *BREAKING CHANGE* the MonoOnUnix build type now defaults to targeting
the .NET Framework 4.0.
REFACTOR: *BREAKING CHANGE* add boolean parameter to the ClearCaches method of
the ICacheManager interface.
REFACTOR: *BREAKING CHANGE* move the InteractiveLoop method from IShellCallback
interface to the new IInteractiveLoopCallback interface.
FEATURE: add -withinfo option to the [source] command to preserve the location
information for procedures defined in the specified script file.
FEATURE: add PeerPath value to the FindFlags enumeration. when set, it will
cause the TclWrapper class to search for native Tcl libraries within a
directory named "Tcl" that is a peer of the Eagle base directory (e.g.
normally named "Eagle").
FEATURE: add PackageFallback property to the IInterpreter interface. when set,
it will be used to help locate a package prior to the PackageUnknown
script being evaluated.
FEATURE: add the [string is command] sub-command to check if a string refers to
an existing command.
FEATURE: add the [string is array], [string is element], and [string is scalar]
sub-commands to check if a string is the name of an existing array
variable, array element, or scalar variable, respectively.
FEATURE: add -nullvalue option to the [sql execute] sub-command.
FEATURE: add AreCachesEnabled and EnableCaches methods to the ICacheManager
interface.
FEATURE: add TrustedOnly value to the FindFlags enumeration. using this flag
prevents any unsigned native Tcl libraries from being loaded.
FEATURE: add the ToPairs method to the StringDictionary class.
FEATURE: add an overload of the SetEnvironmentVariable method to the Utility
class.
FEATURE: add FormatTraceException, BeginWithAutoPath, EndWithAutoPath, and
GetScriptPath methods to the Utility class. also, add HasFlags method
overload to the Utility class that accepts ExecutionPolicy parameters.
FEATURE: add [object addref] and [object removeref] sub-commands.
FEATURE: add [info ppid] sub-command to return the Id of the parent process.
FEATURE: add FromString static factory methods to the StringDictionary class.
FEATURE: make physical memory reporting work under Mono on Unix, including the
[debug memory] sub-command and the cache configuration subsystem.
FEATURE: fully populate tcl_platform array under Mono on Unix, including the
processor name, operating system name, and related information.
FEATURE: attempt to search for native Tcl libraries in library sub-directories
decorated with the processor name and the literal suffix "-linux-gnu"
when running under Mono on Unix.
FEATURE: add the -dequote option to the [exec] command, which can only be used
with the -commandline option, to remove outer double quotes from each
argument prior to building the final command line.
FEATURE: *BREAKING CHANGE* make the [debug undelete] sub-command undelete all
variables matching the specified pattern.
FEATURE: *BREAKING CHANGE* add Resolve property to the INamespaceData interface
and use it to support per-namespace resolvers.
FEATURE: *BREAKING CHANGE* add LookupNamespace and CreateNamespace methods to
the IEntityManager interface.
************************* Beta 1.0.6018.45959 RELEASE *************************
BUGFIX: fix and/or address Coverity issues from #83070 to #116948.
BUGFIX: in the core marshaller, when a default value is used for an optional
output parameter, its value cannot be marshalled back to the script,
because no variable name is available.
BUGFIX: honor UTF-8, UTF-16, and UTF-32 byte-order-marks that may be present in
a script file.
BUGFIX: the [namespace eval] and [namespace inscope] sub-commands should avoid
accessing properties of a potentially disposed namespaces after script
evaluation.
BUGFIX: the hiding and unhiding of commands and procedures performed by the
Interpreter.MakeSafe and Interpreter.MakeStandard methods should be
undoable.
BUGFIX: all references to non-global namespaces should be removed from the call
stack when they are deleted.
BUGFIX: take care to avoid calling the GetImport method on imported namespaces
that may have been disposed (e.g. in the NamespaceOps.Origin method).
BUGFIX: clear the list of imports when a Namespace is being disposed.
BUGFIX: never allow a namespace to be returned from the NamespaceOps.GetCurrent
method if it has been disposed.
BUGFIX: there must be a way to instruct the PopulatePluginCommands method to
skip over selected third-party commands; otherwise, the policy engine
cannot filter sub-commands properly. this can now be accomplished by
setting the new NoPopulate flag on the command itself.
BUGFIX: fix unsignedness wide integer boundary conditions with the [format]
command.
BUGFIX: make sure the base resource name matches the simple assembly name.
BUGFIX: dispose of plugins after the commands and other entities that they may
contain. this is important for plugins that are loaded into isolated
application domains.
BUGFIX: avoid throwing AppDomainUnloadedException while disposing interpreters
due to accessing plugin flags.
BUGFIX: the RemoveCommands method must make sure that any plugin commands that
may be hidden are removed as well.
BUGFIX: fix cross-AppDomain detection for locked interpreters (i.e. it must be
assumed they are cross-AppDomain).
BUGFIX: make sure to unload plugins if their IState.Initialize methods fail.
BUGFIX: fix bad handling of the MarkTrusted flag by the EvaluateTrustedScript,
EvaluateTrustedFile, and EvaluateTrustedStream methods.
BUGFIX: for the setup, when installing the Visual C++ runtimes, check for the
return code that indicates a newer version is already installed.
BUGFIX: stop previously defined variables from being considered "dirty" by the
[vwait] command when waiting on an array element.
BUGFIX: make sure that [uplevel] and [downlevel] use the namespace context of
the other frame, not the current frame.
BUGFIX: display the element values for the lowMemoryWarning and okMemoryWarning
static array fields of the CacheConfiguration class.
BUGFIX: hold the interpreter lock when dealing with the eventManager field in
the GetHostEntityInfo method.
BUGFIX: the TestDisposedWriteHeader method requires the INTERACTIVE_COMMANDS
compile-time option.
BUGFIX: when no(knownCompileOptions) is set, the compile-time options actually
used by the test suite still need to be checked.
BUGFIX: when processing a command callback, use a try/finally to help make sure
the MaybeDisposeThread method is called.
BUGFIX: the InterpreterHelper created by the test xaml-1.2 should be marked as
AutoDispose.
REFACTOR: improve robustness of test debug-2.1.
REFACTOR: extract in-use namespace detection logic from the CanRenameNamespace
and CanDeleteNamespace methods into a new IsNamespaceInUse method.
REFACTOR: tighten up result handling for GetPluginCommands.
REFACTOR: all external IEnsemble.SubCommands properties should be read-write.
REFACTOR: improve cross-AppDomain detection for all IThreadHost objects used by
the Engine class.
REFACTOR: make the [loadWordTcl] script library procedure capable of using the
configured script library directory as a fallback.
REFACTOR: use the CommonOps.Environment.DoesVariableExist method everywhere the
environment variable value is not used.
REFACTOR: add the GlobalState.DoesEnvironmentVariableExist method and use it
everywhere the environment variable value is not used.
REFACTOR: keep track of the first interpreter created on a per-AppDomain basis.
REFACTOR: add Interpreter property to the ITestContext interface and use it to
temporary link an isolated test interpreter to its parent.
REFACTOR: rename the InteractiveLoops property to ActiveInteractiveLoops. add
TotalInteractiveLoops property to the IInteractiveContext.
REFACTOR: add Loops property to the IDebuggerData interface. add EnterLoop and
ExitLoop methods to the IDebugger interface.
REFACTOR: make the PathOps.LibraryToLib method enable its special handling for
path names of the form "Library/Tests/${dirName}/${fileName}", where
"${dirName}" must be "data" or "tcl".
REFACTOR: update Fossil tool w/source to version 1.35.
REFACTOR: *BREAKING CHANGE* modify the parameters for the FindPlugin method of
the IPluginManager interface to support pattern matching.
REFACTOR: *BREAKING CHANGE* make the boolean parameter to the IsThrowOnDisposed
method nullable. when null, it will assume the value of true only if
the interpreter parameter is valid.
REFACTOR: *BREAKING CHANGE* move all ShellMainCore delegate parameters into the
new class ShellCallbackData.
REFACTOR: *BREAKING CHANGE* revise the public InteractiveLoop method overloads
exposed by the Interpreter class. the InteractiveLoopData class has
been added to facilitate passing all the necessary data.
REFACTOR: *BREAKING CHANGE* rename protected properties ResourceBaseName and
CoreResourceManager of the core host to LibraryResourceBaseName and
LibraryResourceManager, respectively. also, add protected properties
ApplicationResourceBaseName and ApplicationResourceManager.
REFACTOR: *BREAKING CHANGE* add implicit conversions from Interpreter to both
Argument and Result.
REFACTOR: *BREAKING CHANGE* revise complaint handling to include a way that can
be logged via the test suite.
REFACTOR: *BREAKING CHANGE* require all "stateful" objects to be terminated,
disposed, closed, or unloaded prior to them being removed from their
associated collection during disposal and complain if any of these
objects are ever leftover.
REFACTOR: *BREAKING CHANGE* improve cross-AppDomain detection for all IPlugin
objects. also, add new overload for the Utility.IsCrossAppDomain
method where an IPlugin object is the only parameter.
REFACTOR: *BREAKING CHANGE* rename CheckForOption method to CheckOptions and
modify it to accept an OptionDictionary instead of a single IOption.
REFACTOR: *BREAKING CHANGE* use a DetailFlags parameter to the ToString and
ToList methods of the ICallFrame interface.
REFACTOR: *BREAKING CHANGE* add a DetailFlags parameter to the IHost.QueryState
method.
REFACTOR: *BREAKING CHANGE* revise the IInformationHost interface to remove all
boolean parameters related to content inclusion and replace them with
a single DetailFlags parameter.
FEATURE: add -nobyref option to [object create], [object invoke], and related
commands that use FixupByRefArguments.
FEATURE: add Vendor to the [info engine] sub-command.
FEATURE: add ShellCallbackBridge class to permit cross-domain customization of
the default shell.
FEATURE: add the ThrowOnError callback flag to force a ScriptException to be
thrown if an error is encountered during command callback processing.
FEATURE: add -security command line option to enable or disable script signing
policies and core script certificates for the interpreter, using the
Harpy and Badge plugins.
FEATURE: add -recreate command line option to force the shell interpreter to be
recreated, based on the existing settings.
FEATURE: add -anyFile command line option to evaluate a file whether or not the
script library has been initialized.
FEATURE: add NoExit environment variable. when set, the core interpreter host
will deny requests to exit.
FEATURE: add NoConsoleSetup environment variable. when set, the console host
will not setup the console window.
FEATURE: add support for Byte and SByte option values.
FEATURE: permit the dedicated test plugin to be included for the Release build
configuration using the new TEST_PLUGIN compile-time option.
FEATURE: add static NewInterpreterCallback property to the Interpreter class.
FEATURE: add TryStaticLock and ExitStaticLock static methods to the Interpreter
class.
FEATURE: add GetBytesFromString, GetOriginalLocalPath, IsTransparentProxy,
IsSameAppDomain, and HashScriptFile methods to the Utility class.
FEATURE: improve integration with the commercial Harpy plugin. also, add it to
the setup and the release process.
FEATURE: add the IsSameAssemblyName method to the Utility class.
FEATURE: add the InterpreterObjectDictionary public container class.
FEATURE: add the MarshalFlags.UseInOnly and MarshalFlags.UseByRefOnly values to
enable stricter handling of parameter direction during method overload
resolution.
FEATURE: add the GetFirst static method to the Interpreter class to return the
first interpreter created in the application domain.
FEATURE: support reading the command line arguments file from the interpreter
host. also, support embedding it within the core library assembly.
FEATURE: add -security and -nosecurity options to [interp create] sub-command.
FEATURE: add -noSecurity and -isolationFileName options to the [test2] command.
FEATURE: *BREAKING CHANGE* add InteractiveCommandCallback property to the
IInteractiveManager interface.
FEATURE: *BREAKING CHANGE* add PostInitialize method to the IPlugin interface.
FEATURE: *BREAKING CHANGE* add protected GetScriptViaAssemblyManifest method to
the core host to enable user-defined scripts to be embedded within the
core library assembly (i.e. any that are not part of the embedded core
script library).
FEATURE: *BREAKING CHANGE* add an overload of the IEntityManager.GetPlugin
method that accepts an AssemblyName parameter.
FEATURE: *BREAKING CHANGE* add TrustedUris property to the ISecurityManager
interface.
FEATURE: *BREAKING CHANGE* add Interpreter and IClientData parameters, both of
which may be null, to the Utility.LoadSettingsViaScriptFile method.
FEATURE: *BREAKING CHANGE* add overloads for the DoOneEvent, ProcessEvents, and
ServiceEvents methods of the IEventManager interface that take a count
input/output parameter.
FEATURE: *BREAKING CHANGE* add a CreateChildInterpreter method overload to the
IInterpreterManager interface.
FEATURE: *BREAKING CHANGE* add boolean parameter to the CreateChildInterpreter
method.
************************* Beta 1.0.5934.21851 RELEASE *************************
BUGFIX: *MAJOR* setting, unsetting, and resetting a variable should mark its
associated link, if any, as defined. before this fix, using [variable]
or [global] and then trying to set, unset, and finally set a variable
again through a link would not work properly.
BUGFIX: the sub-commands [object alias], [object get], [object members], and
[object search] must support the -objecttypes option.
BUGFIX: make handling of Fossil command results more robust when dealing with
whitespace. also, always check for the Fossil checkout and tags, even
when running in native Tcl.
BUGFIX: automatic scope names created using [scope create -procedure] need to
be shared, by default, only with lambda procedures that have the same
arguments and body.
BUGFIX: enumeration values that fit into an unsigned integer cannot necessarily
be treated as unsigned long integers.
BUGFIX: prevent [file rootname] from changing the directory separators as long
as the original ones are consistent.
BUGFIX: the second operand for the bitwise shift / rotate operators must be an
integer.
BUGFIX: push the IScriptLocation for an IScript when the associated interpreter
EvaluateScript method overloads are used.
BUGFIX: the console host needs to reference count among all application domains
when checking if the per-process actions performed in the Setup method
should be done or undone.
BUGFIX: specifying the name and value to the [variable] command in a procedure
call frame should not raise an error.
BUGFIX: fix and/or address Coverity issues from #48139 to #76253.
BUGFIX: deleting native Tcl threads via the ITclEntityManager.DeleteTclThread
method should call Dispose on them as well.
BUGFIX: make the [info commands] and [info procs] sub-commands work right when
the current namespace is not global and the pattern lacks qualifiers.
BUGFIX: scripts queued via [after] must be evaluated in the global namespace,
even when they are processed via a [vwait] that happens to be running
inside of a procedure defined within a non-global namespace.
BUGFIX: prevent the ChannelStream line-translation handling from attempting to
access out-of-bounds array elements when dealing with oversize console
writes.
BUGFIX: prevent some [socket -server] errors, e.g. duplicate port usage, from
going undetected.
BUGFIX: correct core marshaller handling of null values of reference types when
they are returned from the script binder.
BUGFIX: for [info sharedlibextension], stop assuming the core library assembly
has a dynamic link library file extension.
BUGFIX: fix core event manager handling of the Continue return code.
BUGFIX: fix nondeterministic ordering when using the ScriptBuilder class.
BUGFIX: reset the Exiting property of the host to false in DisposeHost if the
host is not actually being disposed. also, use the same handling for
the isolated host, if any, as well.
BUGFIX: the Default classes for the IProcedure and IResolve interfaces should
derive from the ScriptMarshalByRefObject class.
BUGFIX: correct the microseconds calculation used for the [clock microseconds]
sub-command.
BUGFIX: on Windows, attempt to avoid running out of memory while caching things
by checking the current memory load against a defined limit.
BUGFIX: the release preparation tool must fallback to using any suitable build
output directory (and associated shell) for evaluating scripts needed
during processing. it should not simply assume that the NetFx20 build
is available.
BUGFIX: the [downlevel] command should have the NonStandard attribute, not the
Standard attribute.
BUGFIX: the release preparation tool should not assume it can always query the
Garuda patch level from the NetFx40 build.
BUGFIX: if the value of eagle_platform(updatePathAndQuery) is changed, the new
value must be passed to the updater tool, if it ends up being run.
BUGFIX: when the -repeatCount option to [test2] is used, make sure all the test
counts are still accurate.
BUGFIX: if the NativeUtility.JoinList method fails for any reason (e.g. out of
memory, etc), fallback to the pure managed method instead of returning
a null result.
BUGFIX: rework how new Version objects are created when one or more parts may
not be present.
BUGFIX: skip disposing the isolated interpreter host if it was the same as the
normal interpreter host (i.e. because it has already been disposed).
BUGFIX: dynamically adjust number of interactive help columns to accommodate
long interactive command names.
BUGFIX: make sure that plugin policies found within plugins actually get loaded
and called.
BUGFIX: harden the standard channel replacement logic to prevent exceptions in
the channel Dispose methods from leaving the stale channels in place.
BUGFIX: when the TraceOps.DebugTrace method is called, skip over the Utility
class (and methods named DebugTrace from any class) when figuring out
the method name to use in the actual trace output.
BUGFIX: only restore the interrupt callback if it was not changed while being
fired.
BUGFIX: do not attempt to transfer any dead native Tcl objects to any "safe"
interpreter (i.e. even those not created via [interp create]).
BUGFIX: avoid copying list results in the Parser.SplitList when the list cache
has been disabled or when the list will not actually be used.
BUGFIX: catch any exceptions thrown from partially created interpreters being
disposed within the Interpreter.Create method.
BUGFIX: correct unsigned type handling in AppDomainOps.GetEnumOptionFlags.
BUGFIX: correct unsigned wide integer handling in the ToUnsignedWideInteger
method of the ConversionOps.Dynamic.ChangeType class.
BUGFIX: any EnsembleDictionary instance used by any ensemble command to track
its list of sub-commands should not be static.
BUGFIX: when matching commands, do not count any trailing namespace delimiters
as part of the command name prefix being matched.
BUGFIX: avoid race-conditions in the CommandCallback class with respect to the
privately held interpreter reference.
BUGFIX: revise semantics of _Hosts.Default.WriteCore to prevent stray lines of
color when writing past the screen buffer.
BUGFIX: the default native utility library file name should be based on the
assembly path, not the binary path.
BUGFIX: correct the spelling of "procedure" in several places in the default
host class and some comments in other files.
BUGFIX: restore the console mode when the host is being disposed.
BUGFIX: all engine utility methods should use the InternalSyncRoot property of
the interpreter and should check for usability within the lock.
BUGFIX: return Ok from the Engine.ResetErrorInformation method upon success.
BUGFIX: managed project files should not condition anything on the $(Platform)
macro.
BUGFIX: revise AppDomain handling to make sure that loading the core library
into a non-default AppDomain works correctly with isolated plugins.
BUGFIX: *PERF* do not reuse the minimum cache item count as the minimum number
of cache items to be removed at one time. in some circumstances, this
was preventing the cache from being properly trimmed until it reached
150% of its configured maximum capacity.
BUGFIX: *SECURITY* in the [ensemble] abstract command, use the entity execution
wrapper provided by the interpreter so that hidden commands are handled
correctly.
BUGFIX: *BREAKING CHANGE* fix opaque object handle naming when an explicit name
is specified in the call (i.e. it must be honored).
BUGFIX: *BREAKING CHANGE* add boolean OwnArguments property to the ICallFrame
interface and use it to determine if the argument list can be cleared
upon disposal of the call frame. this does not apply to the argument
list containing the procedure arguments.
REFACTOR: use the value NoVerbose lookup flag wherever it is appropriate.
REFACTOR: minor cleanup of the NativeUtility.GetNativeLibraryFileName method.
REFACTOR: add bool strict parameter to the GetPlatformName, GetProcessorName,
GetAlternateProcessorName, and GetOperatingSystemName methods.
REFACTOR: cleanup some files and code associated with the sample and/or example
projects.
REFACTOR: simplify / clarify implementation of the ResultList.ToString method.
REFACTOR: use different EventWaitHandle objects for the idle event queue in the
event manager.
REFACTOR: pass the ValueFlags.Unsigned flag when an unsigned value is requested
from the Value class.
REFACTOR: cleanup and improve runtime options integration with both locking and
notifications.
REFACTOR: remove unused internal and private methods from the Interpreter class
that deal with the Channel class.
REFACTOR: move interactive #check command to the new "update" command group.
REFACTOR: remove hard-coded uses of double-quotes with String.Format within the
HelpOps class.
REFACTOR: enhance handling of the in-use assembly file within the updater tool,
allowing it to be deleted after the updater tool exits.
REFACTOR: rename CheckNotifications instance methods to CheckNotification.
REFACTOR: cleanup and modularize the Value.GetIndex method. also, add flags to
control various aspects of the conversion, including the new optional
index bounds checking.
REFACTOR: in DebugTrace, emit the message if the category and/or method name
matches one of the trace categories.
REFACTOR: add the SkipLibraryToLib script flag. when disabled (which is the
default), the core host searches additional candidate script paths,
specifically those ending with "lib/Tests/${fileName}" in addition
to those ending with "Library/Tests/${fileName}".
REFACTOR: add RestoreTracePlugin method to the IPluginManager interface.
REFACTOR: update Fossil tool w/source to version a9e3db1f707d4998.
REFACTOR: add overloads with boolean parameters for the methods WaitForStart,
WaitForEnd, WaitForEmpty, and WaitForEvent of the IScriptThread
interface.
REFACTOR: various improvements to the presentation of diagnostic version
information.
REFACTOR: move cache settings management into the new CacheConfiguration class.
add [debug cacheconfiguration] sub-command to forcibly reinitialize it
with the specified settings -OR- to return its current settings. the
format of the string used to initialize the settings, as well as the
meanings of the datums which are contained within it, is unspecified,
undocumented, and subject to change at any time.
REFACTOR: add preliminary support for the .NET Framework 4.6.1.
REFACTOR: pass StringBuilder object to SetVariableValue2 in [append] instead of
the Result object.
REFACTOR: add JustWait tool to pause the build process for the specified number
of milliseconds between selected server operations (e.g. Authenticode
timestamping).
REFACTOR: support nullable value types directly from the ConversionOps class.
REFACTOR: change the AllowMultiple property for the ObjectGroupAttribute class
to true.
REFACTOR: add NoInitializeFlag and NoResult values to PluginFlags. revise how
the default plugin integration is handled in the test plugin.
REFACTOR: the tag-via-build tool should check for the PATCHLEVEL environment
variable and use it instead of a calculated build number.
REFACTOR: *PERF* avoid allocating new argument lists within EvaluateScript.
REFACTOR: *PERF* reduce the memory consumption required to [vwait] on array
elements.
REFACTOR: *PERF* speed up exact matching in SubCommandFromEnsemble.
REFACTOR: revamp all Authenticode signing build and release infrastructure to
start the migration away from SHA1, see https://aka.ms/sha1 for more
details.
REFACTOR: revise some tests to account for builds that cannot adjust the native
stack size of the interactive shell executable.
REFACTOR: cleanup Engine and Interpreter class handling of the host field and
Host property.
REFACTOR: add a manifest to the interactive shell executable so that it can get
the real Windows version number.
REFACTOR: revise tests tclLoad-12.* to set the METHOD_PROTOCOL_V1R2 flag unless
forbidden from doing so.
REFACTOR: when using [info vars] in non-local namespace call frames, the global
variables will be included when the InfoVarsMayHaveGlobal interpreter
flag is set.
REFACTOR: centralize and modularize reporting of all background errors.
REFACTOR: move the static HandleBackgroundError methods from the EventManager
class into the EventOps class.
REFACTOR: take steps to prevent timing sensitive tests from failing the entire
official stable release process.
REFACTOR: remove all remaining superfluous batch tools and scripts.
REFACTOR: permit "safe" interpreters to use the [file channels], [info args],
[info body], [info complete], [info default], [info ensembles],
[info locals], [info objects], [info operands], [info patchlevel],
[info subcommands], and [info tclversion] sub-commands.
REFACTOR: use IOption when declaring temporary option arrays, everywhere.
REFACTOR: *BREAKING CHANGE* add AuxiliaryData and ExtraData properties to the
ICallFrame interface.
REFACTOR: *BREAKING CHANGE* move the GetOptions and SetArguments methods to the
new IArgumentManager interface.
REFACTOR: *BREAKING CHANGE* add path argument to [interp readorgetscriptfile]
sub-command.
REFACTOR: *BREAKING CHANGE* add IPolicyEnsemble interface to manage the set of
sub-commands that are allowed and disallowed by policy.
REFACTOR: *BREAKING CHANGE* change Utility.SubCommandPolicy parameter used to
pass the sub-command names to a StringDictionary.
REFACTOR: *BREAKING CHANGE* add interpreter parameter to Utility.BadSubCommand
method.
REFACTOR: *BREAKING CHANGE* add boolean allowInteger parameter to TryParseEnum
and TryParseFlagsEnum methods of the Utility class.
REFACTOR: *BREAKING CHANGE* handle displaying null and empty results slightly
better in the default host.
REFACTOR: *BREAKING CHANGE* make the object data passed to engine notifications
more consistent.
REFACTOR: *BREAKING CHANGE* rename the NameValueCollection datum passed to the
asynchronous [uri] completion callbacks from "data" to "collection".
REFACTOR: *BREAKING CHANGE* evaluation of a script containing no commands may
now return null.
REFACTOR: *BREAKING CHANGE* completely revamp the ListToEnglish method. first,
the list prefix is now (only) used right before the list suffix when
the list separator was not used. second, change the parameter order
and remove the superfluous method overloads from the Utility class.
REFACTOR: *BREAKING CHANGE* divide the Tcl native library file name patterns in
a way that is capable of recognizing TclKits while excluding the base
kits seen in ActiveTcl. change names in the FindFlags enumeration to
match the new semantics.
REFACTOR: *BREAKING CHANGE* the -verbose option to [tcl find] and [tcl select]
will no longer cause a sript error to be raised if at least one Tcl
library build was found.
REFACTOR: *BREAKING CHANGE* move QueryState method from the IInteractiveHost
interface to the interface IHost.
REFACTOR: *BREAKING CHANGE* add IClientData parameter to NewWebClientCallback
delegate.
REFACTOR: *BREAKING CHANGE* adjust the return code handling semantics of the
IResolve.GetVariableFrame and IResolve.GetCurrentNamespace to match
those of the IResolve.GetIExecute and IResolve.GetVariable.
REFACTOR: *BREAKING CHANGE* rename ForceName object flag to ForceAutomaticName.
REFACTOR: *BREAKING CHANGE* add boolean parameter to the Utility.GetPackagePath
method.
REFACTOR: *BREAKING CHANGE* change the RuntimeOptions dictionary property to a
ClientDataDictionary instead of a StringDictionary.
REFACTOR: *BREAKING CHANGE* modify all IEngineManager methods related to script
cancellation to replace all their boolean parameters with a single
CancelFlags parameter. also, modify the associated static methods of
the Engine class as necessary.
REFACTOR: *BREAKING CHANGE* replace boolean parameter to the EvaluateTrusted*
methods with a TrustFlags parameter.
REFACTOR: *BREAKING CHANGE* revise sub-command management, customization, and
dispatching. add ICommandBaseData and ISubCommandData interfaces.
add SubCommandFlags enumeration. add AddOrUpdateSubCommand method to
the IEnsembleData interface. add SubCommandLevels property to the
IEngineContext interface.
REFACTOR: *BREAKING CHANGE* in the Utility class, the interpreter parameter
should be the first for the TryExecuteSubCommandFromEnsemble method.
REFACTOR: *BREAKING CHANGE* add another boolean parameter to WaitForEmptyQueue
and WaitForEventEnqueued methods of the IEventManager interface.
REFACTOR: *BREAKING CHANGE* move all runtime option related members from the
IPropertyManager interface to the IRuntimeOptionManager interface.
REFACTOR: *BREAKING CHANGE* remove the ExecutionPolicy.StrictSubject flag.
REFACTOR: *BREAKING CHANGE* add boolean parameter to the WaitForEmptyQueue and
WaitForEventEnqueued methods of the IEventManager interface.
REFACTOR: *BREAKING CHANGE* add a ValueFlags parameter to the Value.GetIndex
method.
REFACTOR: *BREAKING CHANGE* rename the CheckForUpdates registry value name to
CheckCoreUpdates.
REFACTOR: *BREAKING CHANGE* modify the [checkForFossil] script library helper
procedure to attempt detection of both the Fossil repository remote
URL and local file.
REFACTOR: *BREAKING CHANGE* the SingleUse value should include creation flags
from the EmbeddedHostUse value.
REFACTOR: *BREAKING CHANGE* remove the _Version.Invalid constant.
REFACTOR: *BREAKING CHANGE* enhance list index value processing to support the
syntax variations using "start" as index zero.
REFACTOR: *BREAKING CHANGE* add WriteBox method overloads that accept a minimum
line length parameter.
REFACTOR: *BREAKING CHANGE* make all constructors of InterpreterHelper private.
make the secondary InterpreterHelper.Create method overload internal.
REFACTOR: *BREAKING CHANGE* revise the definition and usage of the ChannelType
enumeration.
REFACTOR: *BREAKING CHANGE* add boolean unwind parameter to the Canceled method
of the TclWrapper class.
FEATURE: add [object isoftype] sub-command, to permit checking if a specific
opaque object handle is of a specific Type -OR- it is assignable to
instances of a specific Type.
FEATURE: add [info context] sub-command, for use by scripts running in "safe"
interpreters, to enable them to have some baseline information about
the AppDomain / Thread context they are being evaluated in.
FEATURE: add -allowinteger option to the [parse options] sub-command.
FEATURE: add CheckForOption method to the IArgumentManager interface, which is
designed to pre-scan for a specific option.
FEATURE: modify [interp readorgetscriptfile] sub-command to support customizing
the ScriptFlags and EngineFlags passed to the script engine.
FEATURE: add InterpreterTimeStamp to the [info engine] sub-command.
FEATURE: add -hidden option to the [info subcommands] sub-command.
FEATURE: modify the setup to support modifying the PATH.
FEATURE: add -isolationLogFile option to the [test2] command.
FEATURE: add signing of all official release files with GPG.
FEATURE: add CatchResetCancel and CatchResetExit interpreter flags to reset the
corresponding flags after evaluating the outermost [catch] script.
FEATURE: add [fblocked] command and the -blocking option to [fconfigure].
FEATURE: add NoHandle marshal flag to prevent the core marshaller from looking
up opaque object handles.
FEATURE: add IgnoreBgErrorFailure interpreter flag to skip reporting when the
background error handler fails -OR- is simply missing.
FEATURE: add [interp shareinterp] sub-command to enable sharing of interpreters
that were created using some out-of-band mechanism (i.e. they are not
owned by the target interpreter). they will never be disposed via the
target interpreter.
FEATURE: add -raw option to the [uri upload] sub-command.
FEATURE: add -errorsvar option to the [tcl find] and [tcl select] sub-commands.
FEATURE: add experimental support for building "kits" that contain the entire
core library assembly and an embedded shell.
FEATURE: add -webclientdata option to both the [uri download] and [uri upload]
sub-commands. it can be used to pass extra information to the custom
WebClient derived classes returned from NewWebClientCallback.
FEATURE: add -ticks and -kind option to the [clock format] sub-command to cause
the long integer value to be interpreted as ticks instead of seconds.
FEATURE: add getBasePath procedure to the script library to return the fully
qualified base path for the core library assembly.
FEATURE: add the concept of a "package peer assembly path" and make use of it
when building the auto-path.
FEATURE: add the AssemblyAnchorPath environment variable to override the value
used as the anchor point for assembly paths (i.e. instead of using the
application domain base directory and/or process binary directory).
FEATURE: add experimental support for the ARM64 processor architecture to the
core library.
FEATURE: add [namespace mappings] sub-command to return the current namespace
mappings for the interpreter.
FEATURE: add -visibleSpace option to the [test2] command. when enabled, all
whitespace characters will be replaced with visible characters in all
expected output and actual output.
FEATURE: add the Utility.NormalizeLineEndings method for use with the Engine
methods that accept a script text parameter.
FEATURE: add the Utility.ScriptForLog method for use when logging a command or
script to a file.
FEATURE: add the GetResourceNames and ExtractPolicyContextAndPlugin methods to
the Utility class, for use by third-party plugins and applications.
FEATURE: add optional boolean argument to the [info interps] sub-command. when
this argument is non-zero in an "unsafe" interpreter, all known global
and child interpreters will be returned.
FEATURE: improve integer unique identifiers for interpreters and other global
objects via the USE_APPDOMAIN_FOR_ID compile-time option. this does
not change the behavior of the per-interpreter (i.e. local) integer
unique identifiers.
FEATURE: add -noProcessId option to the [test2] command to reset the previous
process Id (i.e. of the isolated test process), if applicable.
FEATURE: in the Eagle Package for Tcl (Garuda), support the private Tcl stubs
mechanism used by Fossil.
FEATURE: add IsTclInterpreterCanceled method to the ITclManager interface. add
Tcl_CanceledFlags enumeration and use it for the Tcl_Canceled delegate
instead of the Tcl_VarFlags enumeration.
FEATURE: add SaveEnabledAndForceDisabled and RestoreEnabled methods to the
IEventManager interface.
FEATURE: add [interp subcommand] sub-command to query, add, change, reset, or
remove any sub-command from any command present in the interpreter.
FEATURE: add experimental [debug secureeval] sub-command to evaluate a script
in the specified interpreter while holding its lock.
FEATURE: add experimental [debug undelete] sub-command to mark the specified
undefined variable as defined.
FEATURE: support unsigned types in the universal option parser. add the narrow
integer types.
FEATURE: add [lget] command to return an element from within a list variable.
FEATURE: add Atomic procedure flag to force the interpreter lock to be held
during the evaluation of a procedure body.
FEATURE: enhance FindFlags enumeration to support limiting native Tcl library
matches to zero or more of the pattern lists (e.g. primary only).
FEATURE: add -startupLogFile command line option. this option requires exactly
one argument, the name of the file where all applicable tracing output
will be written.
FEATURE: add an optional argument to the [info engine] sub-command to force all
ObjectId attributes to be returned, if applicable.
FEATURE: add [debug pluginexecute] sub-command to execute a request against the
specified plugin via the IExecuteRequest.Execute method.
FEATURE: add getPluginName procedure to the script library to return the fully
qualified name for the first plugin matching the specified pattern.
FEATURE: add -trace option to the [interp create] sub-command.
FEATURE: add the trace static plugin to enable fine-grained execution tracing.
the default interpreter creation flags have been adjusted to disable
this plugin by default; however, that can be overridden using various
means (e.g. manually removing the NoTracePlugin flag, etc).
FEATURE: add NoUpdates environment variable to disable automatic update checks
from within the core library.
FEATURE: add -noAuthenticodeSigned and -noStrongNameSigned command line options
to the updater tool.
FEATURE: the default release type used by the updater tool should be based on
the files already available on the local machine.
FEATURE: add RepeatCount property to the ITestContext interface and support for
it within the test suite infrastructure.
FEATURE: add IgnoreThreaded flag to the native Tcl integration subsystem, which
is used to forcibly enable the loading a non-threaded build of native
Tcl.
FEATURE: add interactive #restt command to restore (or add) the trace plugin to
the interactive interpreter.
FEATURE: add interactive #stable command to display or set the stability level
used when checking for an updated build of the script engine via the
interactive #check command. also, show the stability of the current
build when the interactive #version command is used.
FEATURE: fire notifications when clearing, setting, adding, or removing runtime
options.
FEATURE: add static InterpreterSettings.LoadFrom method capable of creating an
instance based on an existing interpreter.
FEATURE: expose the ClientData.WrapOrReplace method.
FEATURE: *BREAKING CHANGE* add IsAllowInteger method to the IOption interface.
add boolean allowInteger parameter to the static Option.FromString and
OptionDictionary.FromString methods.
FEATURE: *BREAKING CHANGE* add AuxiliaryData property to the IPluginData
interface.
FEATURE: *BREAKING CHANGE* add WatchdogControl method to the IInterpreter
interface.
FEATURE: *BREAKING CHANGE* add eagle_debugger script variable, reserved for use
by the debugger subsystem.
FEATURE: *BREAKING CHANGE* add InteractiveHost property to IInteractiveManager
interface. when set to non-null, it will be used instead of the Host
property by the interactive loop subsystem.
FEATURE: *BREAKING CHANGE* change path string parameter to IEnumerable<string>
parameter for the LoadTcl method of the ITclManager interface.
FEATURE: *BREAKING CHANGE* add Callback value to MatchMode enumeration, which
causes the configured callback method for the interpreter to be used
for all calls into the [string match] subsystem.
FEATURE: *BREAKING CHANGE* add an IClientData and a DetectFlags parameters to
the Utility.DetectLibraryPath method.
************************* Beta 1.0.5757.19175 WORKING *************************
BUGFIX: make sure the test_path and test_all_path test suite variables are set
correctly in all supported deployment configurations. verified during
the release process for each build using a special, purpose-built test.
BUGFIX: trim leading namespace separators from the command name passed to the
AddExecuteCallback method.
BUGFIX: prevent use of FileSystemRights by Mono when using the [glob] command.
BUGFIX: return empty list from the [getFiles] test package procedure when the
specified directory does not exist.
BUGFIX: raise an error within the [runTestPrologue] and [runTestEpilogue] test
package procedures when the test path is not set.
BUGFIX: make [reportTestStatistics] test package procedure tolerant of missing
statistics.
BUGFIX: fix compilation when compile-time constants CONSOLE, ISOLATED_PLUGINS,
NATIVE, or SHELL are not defined.
REFACTOR: remove some superfluous batch tools and two tool scripts that were
never completed and remained unused.
REFACTOR: have the update batch tool perform a self-test of the deployed build
to make sure the test suite can find all of its packages and support
files.
REFACTOR: revise constructors for the PerformanceClientData class.
REFACTOR: the TclThread class will now only emit PerformanceClientData based
timing diagnostics when the Timing flag is specified for the event.
REFACTOR: add NoTrace script flag to prevent the FilterScriptResourceNamesTrace
and GetScriptTrace methods from emitting diagnostics.
REFACTOR: emit a diagnostic if the GetScript method sees a reserved script name
using a relative path that does not seem to exist on the native file
system.
REFACTOR: *BREAKING CHANGE* rename the ShouldAllowScriptName method of the core
script host to ShouldAllowScriptParameters.
FEATURE: allow hosts derived from the core host to modify the key parameters in
calls to GetScript via the new CheckScriptParameters method.
************************* Beta 1.0.5749.32588 RELEASE *************************
BUGFIX: correct sorting of flags by the AttributeFlags.Parse method.
BUGFIX: stop SerializationException from being thrown when evaluating a script
using the Engine class from another application domain.
BUGFIX: fix incomplete cleanup of an opaque object handle and its command alias
for a rare corner case within the FixupReturnValue method when compiled
without native Tcl integration support.
BUGFIX: cleanup usage of the GetVariableValue method overload that accepts two
Result output parameters, to conform to what is required when they may
need to be marshalled between application domains.
BUGFIX: for the [apply] command, properly handle the three-element form of the
lambda expression, where the third element is the absolute namespace
where the body should be evaluated.
BUGFIX: fix empty list handling by the [lreplace] command (i.e. just like Tcl,
it always returns an empty list).
BUGFIX: fix several missing NoCase option flags for the [test2] command.
BUGFIX: resolve various style and correctness issues as revealed by FxCop.
BUGFIX: prevent the FixupReturnValue method from returning a new opaque object
handle for null values unless the new ForceName flag is used.
BUGFIX: the GetNestedObject, GetObject, GetType, and GetTypeList methods of the
Value class should accept an empty string as valid input.
BUGFIX: remove duplicate "InitializedPath" entry from the returned interpreter
host information.
BUGFIX: remove superfluous NoCase option flag from the -isolated option to the
[interp create] sub-command.
BUGFIX: add constraints to several tests that use references to absolute call
frame levels.
BUGFIX: minor tweaks to handling of IEnumerable<string> typed arguments to the
various interactive shell support methods.
BUGFIX: fix getTestLibraryDirectory procedure so that it does not assume that
the [info library] sub-command can never fail.
BUGFIX: stop adding duplicate command token in the Eagle._Plugins.Test class.
BUGFIX: the HostOps.GetStream method should query isolated stream flags using
the isolated host, when applicable.
BUGFIX: do not pass method arguments from the Eagle Package for Tcl (Garuda)
into a "safe" Eagle interpreter.
BUGFIX: prevent the startup library path and pre-initialize script text from
being used twice. this primarily involves usage by the Eagle Package
for Tcl (Garuda).
BUGFIX: add the CatchInterrupt callback flag to permit scripts to gracefully
handle ThreadInterruptedException being thrown. technically, this is
not a bug; however, without this change, there is no reliable way to
shutdown a callback thread using the Thread.Interrupt method that does
not also cause an unhandled exception.
BUGFIX: make sure that the [package scan] sub-command actually removes package
index files that are no longer present.
BUGFIX: call SetExceptionErrorCode from all appropriate places in the Engine
class.
BUGFIX: the type initializer for the PlatformOps class cannot make use of the
StringOps class. also, move the creation and setup of the processor,
platform, and operating system lists into the Initialize method.
BUGFIX: make sure entry assembly data in the GlobalState class ends up being
valid even when the Assembly.GetEntryAssembly method returns null.
BUGFIX: using a variable name to store an opaque object handle should result in
a reference being tracked.
BUGFIX: remove [catch] from the CurrentFrame checks in the test prologue and
epilogue.
BUGFIX: make sure [interp alias] uses properly formatted names when checking to
see if a command (or procedure) already exists.
BUGFIX: update the RemoveToStringCallback and RemoveChangeTypeCallback methods
of the ScriptBinder class to return success only when the underlying
Remove method call actually results in an entry being removed.
BUGFIX: *SECURITY* do not load the native utility library from a trusted core
library unless it is also trusted.
BUGFIX: *BREAKING CHANGE* improve concurrency of the DebugOps.Complain method.
also, add integer retry parameter to the ComplainCallback delegate.
REFACTOR: add support for WiX version 3.10.
REFACTOR: enhance processTestArguments procedure to allow it to resynchronize
with subsequent known valid test options.
REFACTOR: use StringComparison values defined in the StringOps class instead of
using them directly.
REFACTOR: move strong name key checking and warnings from the prologue into the
constraints package.
REFACTOR: streamline how the Engine executes pending callbacks from the queue
associated with the interpreter context.
REFACTOR: the core NuGet packages should set the EAGLE compile-time constant.
REFACTOR: the CommandCallback class now implements the IDisposable interface.
REFACTOR: add workaround for broken reads on the .NET Framework 4.0 and later
when reading from the standard input stream (e.g. __ConsoleStream).
REFACTOR: add "safe" variants to the Eagle._Constants.ContentType class.
REFACTOR: add ScriptLocationList private container class and make use of it for
the internal ScriptLocations property of the interpreter.
REFACTOR: move the preQuiet block in the test prologue to just after the needed
packages are loaded.
REFACTOR: introduce the concept of reserved script names to the core host and
issue a warning when one is seen without directory information.
REFACTOR: allow classes derived from the Core host class to reject script name
resolution from the IFileSystemHost.GetScript method.
REFACTOR: allow callers of the Engine.ReadOrGetScriptFile method to specify the
NoFileNameOnly engine flag. this engine flag, when enabled, prevents
use of the Path.GetFileName method when considering candidate script
names to check via the interpreter host.
REFACTOR: download the stable.txt or latest.txt file instead of the update.txt
file when checking for updates, depending on whether or not the STABLE
compile-time constant was defined when building the core library.
REFACTOR: *SECURITY* permit [interp children] and [object dispose] sub-commands
to be used from within a "safe" interpreter.
REFACTOR: *BREAKING CHANGE* modify AttributeFlags.Parse method to allow spaces
within each name sub-field.
REFACTOR: *BREAKING CHANGE* fine-tune the GetScript method of the core host to
allow it to better handle requests for qualified script names.
REFACTOR: *BREAKING CHANGE* the ObjectOptionType enumeration type now derives
from UInt64.
REFACTOR: *BREAKING CHANGE* add MarshalFlags property to the ChangeTypeData
class and the IChangeTypeData interface. add MarshalFlags parameter
to the ChangeTypeCallback and ToStringCallback delegates. add
MarshalFlags property to the ICallbackData interface. add
GetDynamicInvokeCallback and FireDynamicInvokeCallback methods to the
ICallback interface. add MarshalFlags parameter to the
InvokeToStringCallback and InvokeChangeTypeCallback methods of the
IScriptBinder interface.
REFACTOR: *BREAKING CHANGE* add the QualifiedName property to the IVariable
interface.
REFACTOR: *BREAKING CHANGE* add the DefaultBinder property to the IScriptBinder
interface.
REFACTOR: *BREAKING CHANGE* modify result of [info operators] to be a list of
lists containing information for each operator.
REFACTOR: *BREAKING CHANGE* rename Eagle._Constants.FileName.PackageIndex to
LibraryPackageIndex.
REFACTOR: *BREAKING CHANGE* add PackageType parameter to ScriptTypeToFileName
method of the Utility class.
REFACTOR: *BREAKING CHANGE* rename the SearchForFile method to SearchForPath in
the Utility class.
REFACTOR: *BREAKING CHANGE* rename the IInteractiveHost.GetFlags method to
GetHostFlags. add the IInteractiveHost.GetHeaderFlags method.
REFACTOR: *BREAKING CHANGE* rename the Flags property to ObjectFlags for the
public interfaces ICallbackData and IObjectData.
REFACTOR: *BREAKING CHANGE* check for packages inside a lib sub-directory that
is child of the directory containing the executing assembly itself.
this package location is permanently reserved for use by third-party
applications and plugins only.
REFACTOR: *BREAKING CHANGE* add LoadFlags property to the ITclApi interface.
add a LoadFlags parameter to the TclWrapper.Load method and to the
LoadTcl method of the ITclManager interface.
REFACTOR: *BREAKING CHANGE* rename -flags option to [tcl load] to -findflags.
REFACTOR: *BREAKING CHANGE* remove the NoCancel, StopOnError, and ErrorOnEmpty
properties from the IScriptThread interface and replace them with the
new EventWaitFlags property.
REFACTOR: *BREAKING CHANGE* remove boolean parameters from WaitVariable method
and replace them with a single EventWaitFlags parameter.
REFACTOR: *BREAKING CHANGE* add the Verbose, InitializeFlags, and ScriptFlags
properties to the IScriptThread interface. also, make it possible to
gracefully shutdown a ScriptThread during its disposal.
REFACTOR: *BREAKING CHANGE* refactor values of the OptionOriginFlags enum.
REFACTOR: *BREAKING CHANGE* rename the startup -library and -preInitialize
command line options to -startupLibrary and -startupPreInitialize,
respectively.
REFACTOR: *BREAKING CHANGE* replace IEngineHost interface with IFileSystemHost,
IProcessHost, and IThreadHost interfaces.
REFACTOR: *BREAKING CHANGE* privatize the classes CacheDictionary,
CallFrameDictionary, DbConnectionTypeStringDictionary,
IntDictionary, LongStringDictionary, PairList,
ParseStateDictionary, QueueList, and ReturnCodeDictionary.
REFACTOR: *BREAKING CHANGE* delete the unused classes ArgumentListList,
CallFrameList, ClientDataDictionary, DecimalDictionary,
ExpressionStateDictionary, LongDictionary, MemberInfoList,
PointList, ReadOnlyDictionary, StringBuilderDictionary,
UintPair, and UintPairList.
REFACTOR: *BREAKING CHANGE* move all the test suite infrastructure files into
their own directory, named "Test1.0". includes the test constraints
package files, the test prologue and epilogue files, and the primary
test suite file. add stub files for the primary test suite file and
the test prologue/epilogue files.
REFACTOR: *BREAKING CHANGE* add StartsWith and EndsWith methods to the IString
interface.
REFACTOR: *BREAKING CHANGE* revise initialization of the test package in order
to make it easier to understand and maintain.
REFACTOR: *BREAKING CHANGE* make sure the ProcessOps.ExecuteProcess method does
not explicitly set the result or error parameters to String.Empty.
REFACTOR: *BREAKING CHANGE* remove -noStart and -noPass options from the test2
command and their associated interpreter flag handling.
FEATURE: add the ability to automatically check for core library updates during
startup of the interactive loop. currently, this can only be enabled
by selecting the appropriate box when running the setup package. this
feature is enabled by default in the setup package (i.e. the check box
is pre-selected).
FEATURE: add the public IRfc2898DataProvider interface.
FEATURE: add Engine call frame type and have the script engine make use of it
within the appropriate EvaluateFile, EvaluateStream, SubstituteFile,
and SubstituteStream method overloads. this new handling is disabled
by default. it can be enabled for all files and streams by using the
FileCallFrame and StreamCallFrame engine flags, respectively.
FEATURE: add SkipTerminate value to the PluginFlags enumeration and use it from
the UnloadPlugin method overload that accepts an IPlugin instance.
FEATURE: add TryLock and ExitLock methods to the ISynchronize interface.
FEATURE: add the StickAlias object flag to cause a command alias to be created
if an opaque object handle is created via another opaque object handle
with the flag set.
FEATURE: have the interpreter keep track of the original exception for those
that are handled via Engine.SetExceptionErrorCode.
FEATURE: add core library NuGet package compiled for the .NET Framework 4.0.
FEATURE: add ReaderAndCount value to the DbExecuteType enumeration. when used,
it will return the count of rows found along with the result.
FEATURE: add [string is hexadecimal] sub-command to verify a string contains
only hexadecimal digits.
FEATURE: add -loadflags option to the [tcl load] sub-command to permit better
control over the native Tcl loading process.
FEATURE: when using the [vwait] command (or another component that calls into
the WaitVariable method), support the processing of native Tcl events
while waiting. this allows a ScriptThread object to host a Tk-based
user-interface without issues.
FEATURE: add [host readchar], [host readkey], [host readline], and [host write]
sub-commands to enable reading and writing of data via the interpreter
host.
FEATURE: add [namespace name] sub-command to return the absolute qualified name
for the specified non-qualified name, based on the current namespace.
FEATURE: add the unknownObjectInvoke runtime option. if enabled, any attempts
to execute unknown named commands will execute [object invoke] on them
instead of simply giving up and returning errors, if they appear to be
valid managed types.
FEATURE: implement the test isolation level designed to run a test in a child
(Eagle Shell) process.
FEATURE: add interactive #izflags command to display or set the initialization
flags for the interpreter.
FEATURE: add interactive #support command to display information on obtaining
commercial support.
FEATURE: add [interp shareobject] sub-command to allow an opaque object handle
from an interpreter to be shared with one of its child interpreters.
FEATURE: add [info shelllibrary] sub-command to return the path where the shell
library was initialized from. also, add the tcl_shellLibrary variable
to save the location where the shell library was initialized from.
FEATURE: add GetArgumentFromObject, GetResultFromObject, GetControlHandle,
GetMenuHandle, CreateCommandCallback, and SelectRandomArrayValue
methods to the Utility class.
FEATURE: expose the Value.GetWideInteger2 method overload that does not require
a Result output parameter.
FEATURE: add [library checkload] sub-command to load the native module only if
the associated file name has not previously been loaded by the native
module subsystem (e.g. via the [library checkload] or [library load]
sub-commands).
FEATURE: add -fast option to the [scope create] sub-command.
FEATURE: *BREAKING CHANGE* add experimental support to the Delegate conversion
subsystem for arbitrary method signatures, including those with return
values and ByRef parameters.
FEATURE: *BREAKING CHANGE* add experimental support for overriding all Delegate
conversion related options inline. these options, if present, must
occur before the actual command for the callback.
FEATURE: *BREAKING CHANGE* add a DoesVariableExist method overload that accepts
an output error parameter to the IVariableManager interface.
FEATURE: *BREAKING CHANGE* add the ListOperators method to the IEntityManager
interface.
FEATURE: *BREAKING CHANGE* add eagle_shell script variable, which is reserved
for use by the interactive shell.
FEATURE: *BREAKING CHANGE* permit fine-grained control over the initialization
process for the core script library.
FEATURE: *BREAKING CHANGE* add MakeProcedureFast method to the IEntityManager
interface. this method can be used to disable (or reenable) all the
extra extensibility steps taken in the script variable subsystem (e.g.
traces, watches, notifications, post-processing, etc) in order to speed
up all local variable access within a specific procedure.
************************* Beta 1.0.5633.18513 RELEASE *************************
BUGFIX: *MAJOR* use correct address for the Tcl_ResetResult function pointer in
the TclApi class.
BUGFIX: in a "safe" interpreter, scrub the file name information returned from
the [package info] sub-command. also, modify path scrubber to be more
robust when dealing with different directory separators.
BUGFIX: do not record the file name that provided a previously unknown package
as the package index file name as well.
BUGFIX: correct typo that was causing the file modification time value returned
from the [file information] sub-command to be wrong.
BUGFIX: on Windows, when native APIs are available, return the same [file size]
result as native Tcl does for directories.
BUGFIX: the Eagle Package for Tcl (Garuda) cannot access the TIP #285, #335, or
#336 related function pointer entries in the stubs tables unless the Tcl
version is 8.6 or higher.
BUGFIX: harden the Detach method of the NativePackage class against cases where
the primary or isolated Eagle interpreter is not found.
BUGFIX: the Eagle Package for Tcl (Garuda) must handle a Tcl interpreter being
deleted by invoking the configured managed detach method.
BUGFIX: avoid native Tcl interpreter name collision in the NativePackage class
by using the global counter, instead of the one from the newly created
Eagle interpreter.
BUGFIX: in NativePackage, cleanup various inconsistencies in handling startup,
detach, and shutdown when multiple interpreters are involved. improve
trace output.
BUGFIX: convince the .NET Framework remoting infrastructure that it should copy
the resulting StringPairList data back from the interpreter application
domain when coming back from its GetHost*Info methods. apparently, it
is necessary to mark the internally modified StringPairList parameters
with the "ref" keyword, even though only their state is modified.
BUGFIX: avoid trying to use types from a different application domains during
the construction of object alias names within the core marshaller.
BUGFIX: when [vwait] is used on an array element, make sure that unsetting the
entire array causes the element to be considered dirty.
BUGFIX: when processing package indexes, the PreferFileSystem flag should be
honored.
BUGFIX: packages indexes found via the file system and interpreter host should
not collide. more specifically, the package index for the core script
library should not be loaded twice, one via file system and once via
interpreter host.
BUGFIX: for tests that use [execTestShell], make sure the quiet constraint is
honored by the child shell.
BUGFIX: the script library and test suite infrastructure should not assume that
the [object] command is always available.
BUGFIX: the interactive #hexit command should not attempt to use the host upon
success.
BUGFIX: improve reliability of the console IDebugHost.Cancel method; the Read
and ReadLine methods should not return values after being canceled.
BUGFIX: when using the declared default value for optional parameters in the
core marshaller, make sure to avoid using null for value types.
BUGFIX: fix final argument index checking when processing method overloads that
contain both optional parameters and a params parameter.
BUGFIX: the method overload resolution engine must maintain multiple lists of
ArgumentInfo objects, one list per method overload returned. without
this fix, there are some very rare cases that will fail when two or
more method overloads have output parameters, the same name, and the
same number of parameters (if their parameter types are incompatible).
BUGFIX: prevent the first script specified via the -preInitialize command line
option from being evaluated twice by the default shell.
BUGFIX: when evaluating predefined library and/or host scripts, make sure that
calls to [info script] return the name exactly as it was specified.
BUGFIX: use the correct interpreter when adding and removing AppDomains used to
host isolated child interpreters.
BUGFIX: make the default host more fault tolerant when introspecting a disposed
interpreter pursuant to the IInformationHost methods.
BUGFIX: *BREAKING CHANGE* make the [info loaded] sub-command optional argument
handling more compatible with Tcl 8.4. the first optional argument is
now an interpreter to use instead of being a pattern to match. due to
strict interpreter isolation, it is still not possible to get the list
of all loaded packages in the process.
BUGFIX: *BREAKING CHANGE* make sure the "dir" variable used by package index
files always use forward slash as the directory separator.
BUGFIX: *BREAKING CHANGE* the interactive command help methods in the Utility
class, GetInteractiveCommandNames and GetInteractiveCommandHelpItem,
should require an interpreter parameter.
REFACTOR: enhance default host introspection by adding information from the
SetupOps class.
REFACTOR: add internal EventVariableFlags and EventWaitFlags properties to the
interpreter class, for use with [vwait] via reflection.
REFACTOR: make use of PackageIndexFlags, instead of several boolean parameters,
when searching for package index files.
REFACTOR: add [object] command constraints to all applicable tests.
REFACTOR: fix and improve tracing of interactive commands when the associated
flag is set.
REFACTOR: add introspection of protected core host properties via the default
host.
REFACTOR: improve and update the native Tcl integration example scripts.
REFACTOR: revise native Tcl library selection algorithm to favor environment
variables over the various built-in library paths. also, revise the
selection algorithm to consider the order in which candidate native
Tcl libraries were added to the logical search list. finally, permit
the interpreter auto-path to be used as the basis for finding native
Tcl libraries.
REFACTOR: modify private removal methods for commands, procedures, and generic
executable entities to support removing the hidden variants as well.
REFACTOR: revise how ScriptTypes and their associated file name constants are
used by the core library.
REFACTOR: add internal PackageIndexFlags property to the interpreter, which may
modify the PackageIndexFlags used when processing auto-path changes.
REFACTOR: add internal TclFindFlags property to the interpreter, which are the
default FindFlags for Tcl when none are specified.
REFACTOR: centralize and enhance mapping of platform names to their associated
processor names.
REFACTOR: update Fossil tool w/source to version 1.33.
REFACTOR: *SECURITY* permit the [interp alias] and [interp aliases] sub-commands
to be used from within a "safe" interpreter.
REFACTOR: *BREAKING CHANGE* add boolean parameter to the IsTclInterpreterReady
method of the ITclManager interface and to the IsReady method of the
TclWrapper class.
REFACTOR: *BREAKING CHANGE* add sizeOf member to both the native ClrTclStubs
structure and the managed NativeStubs structure. these structures,
which are used to communicate the native Tcl API function pointers
when the METHOD_PROTOCOL_V1R2 flag is set, must have an identical
layout.
REFACTOR: *BREAKING CHANGE* revise how host-only package indexes are handled.
they will no longer be read from the file system.
REFACTOR: *BREAKING CHANGE* add IClientData output parameter to the GetScript
method of the IEngineHost and IScriptManager interfaces.
REFACTOR: *BREAKING CHANGE* add a boolean parameter to the ScriptTypeToFileName
method exposed by the Utility class.
REFACTOR: *BREAKING CHANGE* add a PackageType enumeration parameter to both the
GetPackageName method overloads exposed by the Utility class.
REFACTOR: *BREAKING CHANGE* only the native Tcl integration subsystem should
rely on native thread Ids.
REFACTOR: *BREAKING CHANGE* move/rename the Interpreter.InteractiveLoopThread
method to Utility.CreateInteractiveLoopThread.
REFACTOR: *BREAKING CHANGE* move/rename the Interpreter.ShellThreadMain method
to Utility.CreateShellMainThread.
REFACTOR: *BREAKING CHANGE* add boolean parameter to the IDebugHost.Cancel and
IDebugHost.Exit methods.
FEATURE: add [tcl build] sub-command to return the metadata about the currently
loaded Tcl library.
FEATURE: add -alias option to the [library declare] sub-command.
FEATURE: improve out-of-box-experience by including a TclKit shell and library
in the default setup package.
FEATURE: add [info externals] sub-command to return the root path where files
from external projects should be located.
FEATURE: add IsSameAppDomain method to the IInterpreter interface.
FEATURE: add -nosignal option to the [array copy] sub-command to skip flagging
each destination array element as changed.
FEATURE: add -nonormal option to the [package scan] sub-command.
FEATURE: add interactive #npinfo command to display the interpreters managed by
the native package.
FEATURE: add interactive #paflags command to display or set the flags for newly
created packages.
FEATURE: add an optional boolean argument to the [host cancel] and [host exit]
sub-commands. when non-zero, the operation will be done forcefully.
FEATURE: mark the Utility.IsPluginIsolated method as obsolete. also, add the
StopInteractiveLoopThread, GetResultFromObject, IsCrossAppDomain, and
GetExternalsPath methods to the Utility class.
FEATURE: add -reorderflags option to the [object invoke] sub-command and all
related sub-commands. it allows for more control over the automatic
method overload selection process without the need to manually choose
an exact method overload in advance.
FEATURE: add the [debug runtimeoption] sub-command to provide easier access to
the runtime options.
FEATURE: add the [debug testpath] sub-command to allow getting and setting the
internal per-thread TestPath property of the interpreter.
FEATURE: add the [debug refreshautopath] sub-command to allow script access to
the manual auto-path refresh feature.
FEATURE: add [file stat] and [file lstat] sub-commands, largely compatible with
Tcl 8.4.
FEATURE: permit applications using the Eagle Package for Tcl (Garuda) to avoid
having it try to stop the CLR when unloaded. this is done via setting
the namespace variable stopClr to non-zero prior to unloading it.
FEATURE: *BREAKING CHANGE* support options for aliases added via [tcl create].
FEATURE: *BREAKING CHANGE* add a boolean parameter to the GetPackagePath method
of the Utility class.
FEATURE: *BREAKING CHANGE* the externals directory will be included in searches
for script files and native Tcl libraries by default.
FEATURE: *BREAKING CHANGE* add an interpreter parameter to the Find method of
the TclWrapper class.
FEATURE: *BREAKING CHANGE* add an optional boolean argument to the [info ptid]
and [info tid] sub-commands. when non-zero, the native thread Id will
be returned; otherwise, a managed thread Id may be returned, depending
on how the core library was compiled.
************************* Beta 1.0.5542.25903 RELEASE *************************
BUGFIX: correct handling of [glob] when a pattern refers to the root of a file
system.
BUGFIX: after reading command line arguments from a file, close the associated
text reader.
BUGFIX: prevent NullReferenceException from being thrown by the LogSyntaxError
method of the ExpressionParser class.
BUGFIX: when using an IDebugHost from the DebugOps class, attempt to make sure
it is usable prior to attempting the operation.
BUGFIX: fix usage of host cloning when an interpreter is being created for use
with the script debugger. before this fix, interpreter creation would
fail during initialization if an embedded script library was the only
available script library.
BUGFIX: fix updater tool so that it can properly update an installation that is
present in an "Eagle" directory at the root of a volume.
BUGFIX: fix settings merge support in the ScriptOps.LoadSettingsViaFile method.
BUGFIX: fix [sql execute] handling of boundary cases for the Single and Double
types.
BUGFIX: fix NullReferenceException when using the [array set] sub-command to
create an array linked to an undefined variable that was previously a
scalar variable.
BUGFIX: prevent the DebugOps.DumpAppDomain method from throwing an exception
(NotSupportedException) when trying to read the Location property of an
Assembly.
BUGFIX: be more careful about using the C# new keyword to "override" methods of
a class that implements an interface.
BUGFIX: fix failure of test namespace-52.1 due to the global unknown not being
initialized prior to calling PreSetupNamespaces in PreSetup. this bug
only impacted interpreters created with the UseNamespaces flag.
BUGFIX: fix handling of the static interpreter lock in the DebugOps class when
fetching values of the DefaultTraceStack and DefaultQuiet properties.
BUGFIX: skip acquiring the Tcl lock in the AddStandardTclBridge method itself;
instead, rely on locks acquired by the called methods.
BUGFIX: acquire the interpreter lock in the DeleteNamespace method to enforce
transactional semantics between it and the AreNamespacesEnabled method.
BUGFIX: avoid writing more than one line of the background color when the host
output buffer has exceeded its limit (e.g. announcements, call frames,
results, etc).
BUGFIX: add PrivateNotifyTypes and PrivateNotifyFlags properties to help avoid
obtaining the interpreter lock when checking notifications. this will
also help to avoid deadlocks when calling into native Tcl integration
methods that require the Tcl lock (e.g. via the ITclManager and/or
ITclEntityManager interfaces).
BUGFIX: prevent the [scope eval] sub-command from popping an extra call frame.
BUGFIX: prevent any interactive extension commands that do not implement the
ICommand interface from being hidden by those that do implement it.
BUGFIX: correct buffer offset calculations for several translation modes in the
TranslateInputEndOfLine and TranslateOutputEndOfLine methods when the
input and output buffers are not the same size.
BUGFIX: the stream returned by OpenScriptStream must be closed before returning
from the ReadScriptFile method.
BUGFIX: make sure the [interp readorgetscriptfile] sub-command returns script
text that only uses line-feeds for end-of-line sequences.
BUGFIX: in the universal option parser, honor the Ignored, Unsupported, and
Disabled option flags for the EndOfOptions and ListOfOptions special
options. return an error if a resolved option is null instead of just
ignorning it. skip any ListOfOptions instances when converting to an
argument list.
BUGFIX: *BREAKING CHANGE* when using the -nocapture option to [exec], make sure
the -success option still works as designed. also, add the -noexitcode
option to disable capturing the child process exit code.
REFACTOR: update Fossil tool w/source to version edb8237f06040e.
REFACTOR: centralize handling of the original and line-ending translated script
text within the engine. also, make ReadScriptXmlNode return both the
original and line-ending translated script text.
REFACTOR: check for the native utility feature USE_SYSSTRINGLEN at runtime even
when the NATIVE_UTILITY_BSTR compile-time constant is disabled.
REFACTOR: skip null values when filtering interpreters within the GlobalState
class.
REFACTOR: stub in support for the -blocking option to [fconfigure].
REFACTOR: add internal CultureName property to the Interpreter to avoid having
internal callers access it via the CultureInfo property.
REFACTOR: stop using the compile-time constants NET_45, NET_451, and NET_452
when they are not required.
REFACTOR: remove the the sha1sum tool and use Fossil sha1sum command instead.
REFACTOR: pass the library path and auto-path list from the parent interpreter
all the way down the call stack so that it can be used when creating
the isolated debugger interpreter.
REFACTOR: add DemandStrongName and DemandCertificate method overloads that will
provide the object used to create the permission.
REFACTOR: add UseHostLibrary value to the CreateFlags enum and NoLibraryFile
value to the ScriptFlags enum in order to permit better control over
the location of the script library.
REFACTOR: be more selective about using the ThreadStart delegate type from the
CommandCallback class.
REFACTOR: improve error message handling in the Value.GetNestedObject method.
REFACTOR: add support for WiX version 3.9.
REFACTOR: remove hard-coded formatting of all DebugTrace output and improve it
by adding more context information, when available.
REFACTOR: centralize usage of the AppDomain.CurrentDomain static property.
REFACTOR: refine usage patterns for some of the call frame management methods.
REFACTOR: prevent the Value.GetBoolean3 method from performing type conversions
when the value is already numeric.
REFACTOR: permit Authenticode certificate trust checking to be skipped using an
instance-specific registry setting.
REFACTOR: stop using the public static encoding fields of the Interpreter class
from within the core library. instead, in most places, use three new
methods exposed by the StringOps class (i.e. GetString, GetBytes, and
GetByteCount).
REFACTOR: move encodings from the Channel class to the StringOps class and make
them private. add methods to return the various built-in encodings
and to handle conversions between two encodings.
REFACTOR: add several RSA public keys, of varying [larger] sizes, just in case
they are needed later by the software update infrastructure.
REFACTOR: *BREAKING CHANGE* move tcl_platform(processorAffinityMasks) element
to the eagle_platform array.
REFACTOR: *BREAKING CHANGE* remove all uses of the Interpreter.GetEncoding
method that were used to process -encoding option values. this is a
breaking change for the [uri download] and [uri upload] sub-commands
when used with the -inline option and the optional encoding argument.
REFACTOR: *BREAKING CHANGE* remove static Interpreter.GetEncoding methods. add
non-static GetEncoding method to the IEntityManager interface.
REFACTOR: *BREAKING CHANGE* the named encoding "default" now maps to UTF-8, not
ISO-8859-1 (e.g. for use with the [fconfigure -encoding] option).
REFACTOR: *BREAKING CHANGE* when using [puts], permit oversize writes to the
console channels by splitting the request into smaller chunks.
REFACTOR: *BREAKING CHANGE* change the NuGet package to take advantage of its
MSBuild integration features.
REFACTOR: *BREAKING CHANGE* keep track of which constraints caused each test to
be skipped.
REFACTOR: *BREAKING CHANGE* add a TypeList parameter to both the Value.GetType
and Value.GetNestedObject methods.
REFACTOR: *BREAKING CHANGE* make the Id property of ScriptThread objects use a
pool of integer identifiers different from that of the interpreters
and other, miscellaneous objects.
FEATURE: add -minorincrement and -majorincrement options to [tcl versionrange]
sub-command.
FEATURE: add TclReadOnly property to the ITclManager interface. make sure to
set it to true when the native package interpreter is being created.
FEATURE: add NativePackagePreInitialize environment variable to allow a script
to be evaluated for an interpreter created by the native package just
prior to it being initialized.
FEATURE: add an ActiveCount property to the IScriptThread interface.
FEATURE: add -constraintExpression option to the [test2] command, to allow the
skipping of tests based on the result of an arbitrary expression. if
the resulting boolean value is false, the test will be skipped.
FEATURE: support embedding descriptions for use by the interactive help system
within procedure bodies via specially formatted comments delimited by
"# <help>" and "# </help>", both on their own lines. this feature is
primarily intended for use by interactive extension procedures.
FEATURE: add [hash list] sub-command to return the various lists of available
cryptographic hashing algorithms.
FEATURE: add -objecttypes option to the [object invoke] sub-command and all
related sub-commands. this allows a generic type to be invoked by
specifying the necessary generic type arguments at runtime.
FEATURE: add -methodtypes option to the [object invoke] sub-command and all
related sub-commands. this allows a generic method to be invoked by
specifying the necessary generic type arguments at runtime.
FEATURE: permit namespaces to be enabled by default for all new interpreters
that are created using the default creation flags by enabling the
USE_NAMESPACES compile-time constant.
FEATURE: add PluginBaseDirectory property to the IPluginManager interface and
-baseDirectory option to the [test2] command.
FEATURE: add list-of-options [meta-]option that returns the list of available
options for the associated command or sub-command instead of actually
executing it.
FEATURE: add an optional boolean argument to the [info binary] sub-command to
force returning the same directory used for the default application
domain (i.e. when running from a non-default application domain).
FEATURE: add ExtractDataFromComments and FormatComplaint methods to the Utility
class.
FEATURE: add static ComplainCallback property to the Interpreter class.
FEATURE: add eagle_platform(applicationAddressRange) element that will contain
the range of memory addresses available for use by applications.
FEATURE: add experimental [namespace rename] sub-command to rename an existing
namespace.
FEATURE: recognize and process the new "&" (keep) operator whenever enumerated
flag values are being processed.
FEATURE: add -byrefobjectflags option to [object create], [object invoke], and
all related commands that use FixupByRefArguments.
FEATURE: modify the universal option parser to support options of the Encoding
type.
FEATURE: add interactive #website command to launch the configured web browser
to view the official web site.
FEATURE: add [debug iqueue] sub-command to manage the debugger command queue,
which provides a way to arrange for multiple commands to be executed
from within the interactive loop.
FEATURE: add GetStartupPreInitializeText method to the Interpreter class and
make use of it from the same places that use GetStartupLibraryPath.
FEATURE: add the -preWait and -postWait options to the test package. they are
used to wait the specified number of milliseconds before and/or after
each test file evaluated.
FEATURE: *BREAKING CHANGE* add interactive #exact command to toggle exact name
matching for interactive extension commands. by default, this is now
enabled.
FEATURE: *BREAKING CHANGE* add policy support to the plugin loader. this is a
breaking change because it required adding several arguments to the
PolicyContext.Create method.
FEATURE: *BREAKING CHANGE* modify the [encoding names] sub-command to add an
optional boolean argument that can be used to omit system encodings
from the result. this is a breaking change because the new argument
occurs before the previously available optional pattern argument.
FEATURE: *BREAKING CHANGE* add DbVariableFlags property to the DatabaseVariable
class and to the associated Create method.
************************* Beta 1.0.5384.19912 RELEASE *************************
BUGFIX: *MAJOR* prevent undefined global and namespace variables from being
improperly removed from their call frame when a procedure uses either
the [global] or [variable] command to create a link to an undefined
variable and returns from the enclosing procedure without performing
any action that would result in the variable being defined.
BUGFIX: when namespace support is enabled, make sure the ::Eagle namespace is
translated to the fully qualified global namespace name and not simply
an empty string.
BUGFIX: remove improper caching of parsed lists when processing nested indexes
used for accessing elements in a list.
BUGFIX: produce better error messages when an attempt to invoke a nested member
somehow fails method overload resolution.
BUGFIX: correct handling for negative array bounds in the core marshaller.
BUGFIX: prevent multi-dimensional arrays with simple element types from being
converted to a list of strings by the core marshaller.
BUGFIX: prevent the [array copy] sub-command from throwing an exception if the
target variable is present (but not defined) in the call frame.
BUGFIX: the [namespace1 which] and [namespace2 which] sub-commands should not
consider undefined variables.
BUGFIX: the interactive #restv command should hold the interpreter lock while
restoring the core script variables.
BUGFIX: fix option bounds handling in the [clock buildnumber], [clock days],
and [file glob] sub-commands as well as the [split] command.
BUGFIX: add missing lock statement to the AddTrace method overload responsible
for adding global traces.
BUGFIX: use snapshot semantics for the current policy collection when executing
policy callbacks.
BUGFIX: set the SkipNullSetupValue flag when the -arrayasvalue option is used
with the Utility.InvokeDelegate method.
BUGFIX: make it possible, at a glance, to determine if the interactive #sresult
command succeeded or failed.
BUGFIX: fix [interp set] result when reading a variable value from an isolated
interpreter.
BUGFIX: make sure the ConsoleCancelEventHandler method can handle interpreters
from multiple application domains (e.g. isolated child interpreters).
BUGFIX: use the correct box name in the _Hosts.Default.WriteTokenInfo method.
BUGFIX: add several recently added option types to the Option.ToString method.
BUGFIX: the Engine.ReadScriptStream and Engine.ReadScriptFile methods should
check the interpreter for null prior to accessing its ValidateXml or
AllXml properties.
BUGFIX: if the Name property of an INamespace gets changed, make sure to update
all references to it in the parent and children, if any.
BUGFIX: for the Eagle Package for Tcl (Garuda), make sure that running the test
suite from the TEA makefile uses the selected configuration suffix.
BUGFIX: *BREAKING CHANGE* do not attempt to dispose of object instances if the
associated opaque object handle was not created by an [object] related
sub-command that is primarily designed to result in the creation of new
object instances.
REFACTOR: make the processTestArguments test library procedure more robust in
the face of unrecognized command line arguments.
REFACTOR: make the [unset -zerostring] option work better for arrays and cached
results.
REFACTOR: centralize and streamline handling of all core marshaller related
sub-commands, including all [object] sub-commands taking options.
REFACTOR: improve handling of command tokens by the [namespace enable] command.
REFACTOR: modify handling of the NET_20_ONLY compile-time option so that it is
handled consistently by all applicable sub-projects.
REFACTOR: improvements and corrections to the interactive shell help content.
REFACTOR: update Fossil tool w/source to version e061a675e69cf8.
REFACTOR: revise usage of [uri softwareupdates] by the script library to permit
the software updates SSL certificate to remain trusted.
REFACTOR: callers to the internal ObjectOps.DefaultSynchronous field should now
use the ObjectOps.GetDefaultSynchronous accessor method instead.
REFACTOR: when enabled, initialize namespace support earlier in the interpreter
setup process.
REFACTOR: streamline usage of CreateFlags values for use by applications and
plugins embedding the core library. also, in the OptionOriginFlags
enumeration, rename the NoOverride value to NonOverride.
REFACTOR: cleanup use of the NativeOps.GetErrorMessage method.
REFACTOR: add preliminary support for the .NET Framework 4.5.2.
REFACTOR: cleanup and modularize handling for the ResetFlags and Reset methods
of the IHost interface.
REFACTOR: centralize all output style handling performed by the default host.
REFACTOR: revise all the StringOps.Match method overloads, which now require an
Interpreter (or null) as the first parameter.
REFACTOR: improve registry key handling in the SetupOps class, including better
diagnostics and per-user support. fix style issues with the registry
key handling in the TclWrapper class.
REFACTOR: *BREAKING CHANGE* simplify interface for the Parser.SplitList method,
by completely removing the boolean clear parameter and renaming the
cache parameter to readOnly.
REFACTOR: *BREAKING CHANGE* enhance list index value processing to support the
syntax variations "integer-end" and "end-end".
REFACTOR: *BREAKING CHANGE* add Stop method overload with no parameters to the
ScriptThread class.
REFACTOR: *BREAKING CHANGE* in the official release builds, disable the script
debugger integration and notifications for all expression operators
and functions.
REFACTOR: *BREAKING CHANGE* rename several of the core library test files (e.g.
bad-subst.eagle, bigdir.eagle, debugops.eagle, and delayout.eagle).
REFACTOR: *BREAKING CHANGE* add an ArgumentList parameter to the GetIdentifier
method of the IEntityManager interface.
REFACTOR: *BREAKING CHANGE* for the TryParseFlagsEnum method of the EnumOps and
Utility classes, add a boolean strict parameter.
REFACTOR: *BREAKING CHANGE* the Value.GetMatchMode2 method now requires an
Interpreter (or null) as the first parameter.
REFACTOR: *BREAKING CHANGE* revise handling of options with the MustBeMatchMode
flag set to use full flags enumeration handling (i.e. for MatchMode).
REFACTOR: *BREAKING CHANGE* all Engine.EvaluateScript method overloads that
accept an IScript now perform script policy checking.
REFACTOR: *BREAKING CHANGE* make sure policies are passed a valid encoding when
applicable.
REFACTOR: *BREAKING CHANGE* check BeforeScript policies when the script being
read by the ReadScriptStream and ReadScriptFile methods did not come
from an XML script block.
REFACTOR: *BREAKING CHANGE* revise handling of the encoding when dealing with
XML documents from within the Engine class.
REFACTOR: *BREAKING CHANGE* pass the original script text to the script policy
callback, not the line-ending translated script text.
REFACTOR: *BREAKING CHANGE* add WriteDebug/WriteError method overloads to the
IDebugHost interface that require an integer character count and a
boolean newline indicator as well as the foreground and background
colors.
REFACTOR: *BREAKING CHANGE* revise output of the RuntimeOps.PluginFlagsToPrefix
method and re-order the PluginFlags enumeration to improve clarity.
REFACTOR: *BREAKING CHANGE* rename the IAlias.InterpreterDisposed property to
PostInterpreterDisposed. add internal PreInterpreterDisposed event
handling.
REFACTOR: *BREAKING CHANGE* rename existing ConsoleOps class to NativeConsole.
add new (and different) ConsoleOps class that only deals with various
(internal) aspects of the System.Console class. streamline, cleanup,
and robustify all managed and native console integration code. also,
show the MustBeOpenCount value in the default host.
REFACTOR: *BREAKING CHANGE* the -nocase option is always honored by the various
[library] and [object] sub-commands that also have an option of type
BindingFlags.
REFACTOR: *BREAKING CHANGE* move remaining tool data files into the tool data
sub-directory. also, move test data files into the new test data
sub-directory.
REFACTOR: *BREAKING CHANGE* add EntityManager and InterpreterManager properties
to the IInterpreter interface.
REFACTOR: *BREAKING CHANGE* move all chlid interpreter support methods from the
IEntityManager interface to the new IInterpreterManager interface.
REFACTOR: *BREAKING CHANGE* move all callback queue support methods from the
IEntityManager interface to the new ICallbackQueueManager interface.
REFACTOR: *BREAKING CHANGE* revise usage of the HeaderFlags enumeration by the
default host.
REFACTOR: *BREAKING CHANGE* changes related to [object invokeraw], including:
modifying several IScriptThread.AddObject method overloads to remove
the aliasAll parameter and add an ObjectOptionType parameter. also,
modify the Utility.GetInvokeOptions and Utility.FixupReturnValue
method overloads in a similar fashion.
FEATURE: make the ByteList class more helpful when dealing with byte arrays.
FEATURE: add support for adding/modifying settings that originate from array
variables in the ScriptOps.LoadSettingsViaFile method.
FEATURE: add -limit option to the [regexp] command in order to limit the number
of matches returned when the -all option is used.
FEATURE: add -raw option to the [hash] command to return a list of byte values
instead of a hexadecimal string.
FEATURE: add -repeatCount option to the [test2] command.
FEATURE: add -novariables option to the [interp create] sub-command.
FEATURE: add -nocore and -nolibrary options to the [info commands] sub-command.
FEATURE: add -arrayaslink option to the core marshaller related sub-commands.
this option and the associated trace callback allow a script variable
to be tied directly to a System.Array object instance.
FEATURE: add sub-pattern support to [string match] and its associated methods.
FEATURE: add support for dictionary options to the universal option parser.
FEATURE: add [glob] command that is 99% compatible with the one in Tcl 8.4.
FEATURE: for the compileCSharp script library procedure, use the value of the
global array element eagle_platform(csharpOptions) when building the
list of C# compiler options.
FEATURE: support looking for script files to be evaluated via the list of files
and/or directories contained in the auto_source_path script variable.
FEATURE: add [string cat] sub-command that implements most of the semantics
described by TIP #429.
FEATURE: add -asynchronous option to the [debug shell] sub-command. when this
option is used, all other options are ignored.
FEATURE: support the Eagle Package for Tcl (Garuda) being loaded into TclKit
shells and other statically linked Tcl environments. also, allow a
newly created (a.k.a. "isolated") Eagle interpreter to be used for
each native Tcl interpreter, when using the new protocol version.
FEATURE: add support for an optional fifth argument to the [for] command that
allows a script to be evaluated after the loop has exited.
FEATURE: enable the core library to automatically setup a Win32 console for the
process when necessary, if the new OpenConsole interpreter creation
flag is specified.
FEATURE: add -matchnameonly option to the [object members] sub-command to allow
for matching against the simple name of the member while retaining all
requested data regarding it.
FEATURE: add DatabaseVariable class to enable linking a script variable to the
specified database column and row.
FEATURE: add an interpreter flag to prevent execution of interactive commands
via the interactive loop.
FEATURE: enhance the updater tool to make it capable of performing a first-time
installation. also, allow skipping all extra strong name verification
checks just in case the underlying platform does not properly support
them. finally, add the -reCheck command line option to the updater in
order to support automatically checking for subsequent updates.
FEATURE: add [object invokeraw] sub-command and associated functionality. this
sub-command is primarily designed to be used for automating late-bound
COM classes.
FEATURE: add GetAssemblyPublicKeyToken method to the Utility class.
FEATURE: add ScriptClientData class to make it easier to pass name/value data
between components.
FEATURE: add -pluginArguments command line option. this option requires two
arguments, the name of a plugin that will be loaded at some point in
the future and the argument string to pass during its initialization
(i.e. via the "wrapped" IClientData it will receive).
FEATURE: support the MustBeLevel option flag, where the value is an ICallFrame
instance.
FEATURE: add the ObjectFlagsAttribute class, which is used to declare the flags
that should be added by the core marshaller when handling instances of
classes marked with the attribute.
FEATURE: *BREAKING CHANGE* when available, keep track of the whole command that
created every opaque object handle. in order to make this new feature
work properly, it is necessary to add an ArgumentList parameter to the
appropriate IEntityManager.AddObject method overload.
FEATURE: *BREAKING CHANGE* add NewWebClientCallback property to the IInterpreter
interface to allow third-party applications and plugins to override the
default WebClient handling. modify the DownloadData and DownloadFile
methods of the Utility class by adding an Interpreter parameter.
FEATURE: *BREAKING CHANGE* adjust result format of [debug memory] and include
the GCSettings.IsServerGC and GCSettings.LatencyMode property values,
when available.
FEATURE: *BREAKING CHANGE* add the -startFile and -stopFile options to the test
suite. also, modify the [runAllTests] script library procedure to
require two extra arguments which must contain either the starting and
ending test file names or empty strings.
************************* Beta 1.0.5217.20046 RELEASE *************************
BUGFIX: *PERF* the IExecute cache should always be be used when looking up
IExecute objects to execute, even when the ExactMatch engine flag is
used.
BUGFIX: make the Variant class handle IOption values for use with the universal
option parser.
BUGFIX: the ArgumentList constructor taking a variable number of arguments must
correctly handle a string array of zero or more elements.
BUGFIX: make the methods of the ITclEntityManager interface honor the Validate
lookup flag.
BUGFIX: the result of [file normalize ~] should be non-empty even if the value
of $::env(HOME) is not a valid directory.
BUGFIX: if test suite usage of the [exec] command has been disabled, skip all
tests that require it.
BUGFIX: make sure the MethodImplOptions.NoOptimization value is used only when
it is available.
BUGFIX: fix the interactive #help command when a built-in interactive command
has been overridden.
BUGFIX: for the console host, only display the Authenticode certificate subject
in the console title if it is identical for the Eagle core library and
the Eagle Shell.
BUGFIX: the IExecute cache should always contain the various wrapper objects.
later, when the cache entry is fetched, it should be unwrapped if the
caller specifies the appropriate lookup flag.
BUGFIX: the ErrorLine and PreviousResult properties should not be used within
the core library from any place where the interpreter might have just
been disposed.
BUGFIX: the LoadHostProfile method should support properties with the char and
HostStreamFlags types.
REFACTOR: *PERF* for the ContextManager class, remove all superfluous uses of
the ContainsKey method.
REFACTOR: when using methods of the Monitor class, make sure the value of the
syncRoot field is not null.
REFACTOR: add private readyFlags field to the Interpreter class and revise the
semantics associated with them.
REFACTOR: change the interpreter properties ParserLevels, ExpressionLevels,
UnknownLevels, TraceLevels, WatchpointLevels, NotifyLevels,
PolicyLevels, TestLevels, and _History to private.
REFACTOR: make handling of interactive extension command more extensible, via
careful use of the IIdentifier and ISyntax interfaces.
REFACTOR: cleanup PlatformOps class and move some methods out of the CommonOps
class into it.
REFACTOR: cleanup Debugger class and move some methods out to the DebuggerOps
class.
REFACTOR: streamline the GetDelegate and GetModule methods of the Interpreter
class.
REFACTOR: cleanup usage of the Interpreter.ArraySearches property.
REFACTOR: move all object related OptionDictionary definitions into the static
ObjectOps class.
REFACTOR: revise the tests basic-1.54 and object-2.4 so that they can pass on
Mono 2.10.
REFACTOR: optimize the line-ending translations performed via the engine when
reading a script file.
REFACTOR: centralize all option processing related to the core FixupReturnValue
method.
REFACTOR: add IEventManager instances to the list of well-known objects handled
by the core marshaller. revise handling of the Runtime object flag.
REFACTOR: revise the updater tool to improve support for automatic updating via
silent mode.
REFACTOR: make the interactive #check command send the current patch level to
the web server via the query string.
REFACTOR: make the updater tool send the current patch level to the web server
via the query string. also, make sure it always sends a user agent.
REFACTOR: display the RuntimeOptions property of the interpreter in the default
host output.
REFACTOR: display the globalNamespace and pendingNamespaces fields of the
interpreter in the default host output. also, include the result of
the AreNamespacesEnabled method as well.
REFACTOR: *BREAKING CHANGE* disallow creation of Event objects by third-party
applications and plugins.
REFACTOR: *BREAKING CHANGE* add boolean force parameter to the PreInitialize,
Initialize, and InitializeShell methods.
REFACTOR: *BREAKING CHANGE* include the InitializeShell method only if support
for the interactive shell is being included as well.
REFACTOR: *BREAKING CHANGE* revise default values for options with the types
X509RevocationMode, X509RevocationFlag, and X509VerificationFlags.
REFACTOR: *BREAKING CHANGE* rename the UpdateFile engine attribute to
UpdatePathAndQuery.
REFACTOR: *BREAKING CHANGE* modify result formatting for [version] command.
REFACTOR: *BREAKING CHANGE* add a boolean argument to the interactive #check
command to permit optional automatic updating.
REFACTOR: *BREAKING CHANGE* mark the -objectflags option to [object invoke] as
"unsafe".
REFACTOR: *BREAKING CHANGE* evaluate finally blocks even if the script argument
to the [try] command exits the interpreter.
REFACTOR: *BREAKING CHANGE* move all the MSBuild related files to their own
directory.
REFACTOR: *BREAKING CHANGE* move all the strong name key files to their own
directory.
REFACTOR: *BREAKING CHANGE* rename the IHost.Write method overload that takes a
StringPairList to WriteFormat.
REFACTOR: *BREAKING CHANGE* rename HostTestFlags.TestCustomInfo to CustomInfo.
REFACTOR: *BREAKING CHANGE* revise the default header flags used by the #show
command and reorder some of the flag values.
REFACTOR: *BREAKING CHANGE* add boolean argument to the WriteEngineInfo method
of the IInformationHost interface to control whether information
related to native code should be displayed.
FEATURE: add interactive #init command to initialize the script library for the
interpreter or the shell.
FEATURE: add -setLoop command line option to allow control over whether or not
the interactive loop will be entered.
FEATURE: add -setInitialize and -forceInitialize command line options to allow
for finer grained control over script library initialization.
FEATURE: add support for the IdentifierKind.Ensemble value in the GetIdentifier
method.
FEATURE: add ScriptBlocks class to permit third-party applications and plugins
to easily process all scripts embedded within other content, such as
web pages.
FEATURE: add DefaultTraceStack and TraceStack environment variables to enable
the inclusion of managed call stack information with selected trace
listener output.
FEATURE: add -arrayasvalue option to core marshaller related sub-commands that
handle output arguments (i.e. those that use FixupByRefArguments).
FEATURE: add -full option to the [tcl find] sub-command to return full details
for all results.
FEATURE: add ZeroMemory, IsUnixOperatingSystem, IsWindowsOperatingSystem,
ProcessFixupReturnValueOptions, and GetFixupReturnValueOptions methods
to the Utility class.
FEATURE: add -noPass to the [test2] command to suppress output showing that the
test passed.
FEATURE: add an experimental and unsupported way to change default values for
the object related -alias, -create, -nodispose, -synchronous, -trace,
and -verbose options.
FEATURE: enhance the updater so that it is capable of updating and re-launching
itself prior to checking for other updates.
FEATURE: modify the universal option parser to support resolving absolute and
relative namespace names to their INamespace values.
FEATURE: add -namespace option to the [object load] sub-command that is used to
set the namespace where any related command alias is to be created.
FEATURE: add the [object aliasnamespaces] sub-command to return the list of
matching assembly namespace mappings.
FEATURE: add the [object unaliasnamespace] sub-command to remove the matching
assembly namespace mappings.
FEATURE: add the [namespace info] sub-command to return diagnostic information
about the specified namespace, command, or variable name.
FEATURE: *MAJOR* add full support for Tcl 8.4 compliant namespaces, including
tests, with the exception of creative reading/writing. in addition,
the [namespace unknown] sub-command from Tcl 8.5 has been implemented.
currently, namespace support is disabled by default (i.e. the legacy
namespace behavior is used). to enable, use the UseNamespaces flag
when creating an interpreter.
FEATURE: add the [namespace enable] sub-command to query, enable, or disable
namespace support for the current interpreter.
FEATURE: add -namespaces command line option to enable or disable namespace
support for the shell interpreter.
FEATURE: add reversed color support to the built-in interpreter hosts for both
the border and text output.
FEATURE: make it possible to execute the built-in (system) interactive commands
even if they have been overridden.
************************* Beta 1.0.5173.31244 RELEASE *************************
BUGFIX: *PERF* major engine performance improvements, especially in handling of
lists and list variables.
BUGFIX: for the [error] command, report the correct error line number when the
optional errorInfo argument is supplied.
BUGFIX: when ending an external execution context, cleanup any namespaces that
are pending deletion.
BUGFIX: return -1 for the [string first] and [string last] sub-commands when an
empty string is used.
BUGFIX: in the [configureTcltest] procedure, also copy over the test names to
match and/or skip.
BUGFIX: when creating an isolated application domain using the base path, make
sure the assembly path is located underneath it prior to attempting to
use the assembly path as part of the PrivateBinPath property.
BUGFIX: make sure the correct error message is returned upon failure to create
an isolated child interpreter.
BUGFIX: modify the commands-1.1.3 test so that it requires the Tcl library and
default shell versions to match (i.e. they must both be 8.6). several
changes to the test suite infrastructure were also necessary.
BUGFIX: fix missing test constraint for the sample plugin assembly file in the
load-1.6 and load-1.7 tests.
BUGFIX: fix test portability with the package-1.1 and sql-1.12 tests.
BUGFIX: when searching for available native Tcl libraries, for use with the
native Tcl integration subsystem, allow all the environment variables
checked to specify either a file name or a directory name. previously,
only a file name could be specified successfully.
BUGFIX: use the full patch level of native Tcl libraries, if available, when
picking the "best" native Tcl library for use with the native Tcl
integration subsystem.
BUGFIX: fix missing return statement in the GetHostSize method for the default
host.
BUGFIX: fix the [file glob], [file isdirectory], [file isfile], and [file size]
sub-commands so that they will work properly with relative paths.
BUGFIX: prevent NullReferenceException being thrown by the GetLength methods of
the Argument and Result classes.
BUGFIX: for the [lindex] command, fix error handling for bad indexes when the
bad index is not the final index.
BUGFIX: grab and hold the interpreter lock while resolving type names, object
names, and member names in the Value class.
BUGFIX: prevent the Eagle Package for Tcl (Garuda) from trying to call the
configured shutdown method when the Tcl interpreter is not available.
BUGFIX: in the Eagle Package for Tcl (Garuda), save and restore the interpreter
result when evaluating the Tcl logging script.
BUGFIX: in the Eagle Package for Tcl (Garuda), when cleaning up after a package
load failure, unlock the Tcl mutex prior to calling the unload function
to perform the actual cleanup.
BUGFIX: make sure the Eagle Package for Tcl (Garuda) exit handler gets called
if the [unload] command was used with the -keeplibrary option.
BUGFIX: normalize usage of WinForms related test constraints. add checking for
the WinForms compile-option test constraint.
BUGFIX: the result of the [tcl module] sub-command should be a fully qualified
file name.
BUGFIX: when using the interpreter host, the ShellMainCore method should honor
the quietness semantics for the interpreter.
BUGFIX: correct the OptionFlags.Ignored enumeration value.
BUGFIX: the Eagle Native Utility Library (Spilornis) must support the same set
of backslash escape sequences as the managed parser. previously, the
\\, \B, and \o backslash escape sequences were only implemented in the
managed parser.
BUGFIX: fix the result of [file normalize /] on Windows.
BUGFIX: avoid potential deadlocks in various DebugOps and HostOps methods that
accept an interpreter parameter while that interpreter is locked by
another thread (e.g. it is being disposed).
BUGFIX: avoid potential deadlock when attempting to synchronously wait via the
EventOps.Wait method.
BUGFIX: when variable object instances are reused, make sure all the reserved
variable flags are unset.
BUGFIX: when splitting type names during a type search, take into account the
type parameters (i.e. for generic types) and skip over them.
REFACTOR: streamline the PrivateGet* methods of the Interpreter class.
REFACTOR: add an optional boolean argument to the [interp aliases] sub-command
to return all aliases. by default, aliases reserved for library use
are not returned.
REFACTOR: make sure that execution of the native Tcl shell and Fossil by the
test suite can be completely disabled.
REFACTOR: add support for WiX version 3.8.
REFACTOR: for the default host, change output semantics for array variables to
be more consistent, correct, and robust.
REFACTOR: cleanup handling of the InterpreterFlags property.
REFACTOR: via HostFlags, allow a host to declare that it does not handle calls
to emit error and/or debug information (e.g. via DebugOps.Complain).
REFACTOR: modify the VariablesToString method to permit returning a list of
undefined variables present in the current call frame.
REFACTOR: improve automatic detection of the test path when an embedded script
library is in use.
REFACTOR: make the optional argument handling of all the interactive commands
consistent.
REFACTOR: revise how the [parray] and [pdict] script library procedures query
the host size.
REFACTOR: add a confirmation dialog to the updater project. also, make the log
messages more consistent and emit details when an invalid release or
configuration is detected.
REFACTOR: use native delegates to bind to the native utility library, making it
possible to dynamically load/unload it. also, verify it was compiled
with options that match the managed wrapper class.
REFACTOR: the interactive help subsystem now supports reporting the available
interactive extension commands, including the associated syntax and
descriptions, where available.
REFACTOR: change all methods in the GlobalState class that are not called from
outside of it to private.
REFACTOR: break out most of the GlobalState.GetAutoPathList method into two
methods; one that handles querying the interpreter path list and one
that handles the shared path list.
REFACTOR: make sure all environment variables cause diagnostic messages to be
printed during interpreter creation.
REFACTOR: move a lot of methods out of the RuntimeOps class into new classes.
the new classes include AppDomainOps, DataOps, DebuggerOps, EventOps,
HistoryOps, HostOps, ObjectOps, ProfileOps, ResultOps, ScriptOps,
ShellOps, and TraceOps classes.
REFACTOR: the core marshaller should avoid using the ToString method of the
Argument and Result classes.
REFACTOR: update Fossil tool w/source to version 1.28 (20140127173344).
REFACTOR: add GlobalUnknown and NamespaceUnknown properties to the IInterpreter
interface.
REFACTOR: *BREAKING CHANGE* move Tcl entity management methods to the new
ITclEntityManager interface.
REFACTOR: *BREAKING CHANGE* modify the [namespace unknown] sub-command so that
it no longer changes the global unknown command handler.
REFACTOR: *BREAKING CHANGE* modify parameter order for flags arguments to the
AddCommands, RemoveCommands, and RemoveFunctions methods.
REFACTOR: *BREAKING CHANGE* modify the Utility.Wait method to take a boolean
parameter indicating if the call should timeout if the interpreter
lock cannot be obtained before the specified time period elapses.
REFACTOR: *BREAKING CHANGE* modify IInformationHost.WriteVariableInfo method to
take yet another boolean parameter that controls whether or not array
search details are included. modify [debug variable] and interactive
#vinfo commands accordingly.
REFACTOR: *BREAKING CHANGE* in the Value class, all method overloads of the
GetSingle, GetDouble, GetByte2, GetInteger2, and GetVariant methods
that took a parameter of type Argument now take a parameter of type
IGetValue instead.
REFACTOR: *BREAKING CHANGE* change the ShellMainCore arguments parameter to the
IEnumerable<string> type.
REFACTOR: *BREAKING CHANGE* the Utility.SetEnvironmentVariable method now takes
three parameters.
REFACTOR: *BREAKING CHANGE* modify the PathOps.CombinePath method in an attempt
to honor the existing directory separator characters found within the
paths to be combined. also, modify all callers to pass null instead
of false.
REFACTOR: *BREAKING CHANGE* move all delegates not that should not be needed by
external callers to a private namespace and mark them as internal.
REFACTOR: *BREAKING CHANGE* revise how missing version components are handled
when the native Tcl integration subsystem searches for installed Tcl
library builds.
REFACTOR: *BREAKING CHANGE* rename the osBits element of the tcl_platform array
to platformBits.
REFACTOR: *BREAKING CHANGE* replace the -maximum option of the [host size]
sub-command and with the -sizetype option, which takes a HostSizeType
enumeration value. add the -sizetype option to the [host reset]
sub-command.
REFACTOR: *BREAKING CHANGE* change the ResetSize, GetSize, and SetSize methods
of the IHost interface to require a HostSizeType as their first (or
only) parameter. also, remove the GetMaximumSize and SetMaximumSize
methods.
REFACTOR: *BREAKING CHANGE* modify the order of the optional arguments for the
interactive #check command.
REFACTOR: *BREAKING CHANGE* cleanup interpreter readiness checking and remove
the NoReady and StackOnly interpreter flags.
FEATURE: expose SignalVariableDirty method via the Utility class for use when
implementing custom variable trace callbacks.
FEATURE: add experimental [interp readylimit] sub-command to limit the full
readiness checks performed by the engine to every N readiness checks.
FEATURE: add -noready option to all [parse] sub-commands.
FEATURE: add optional boolean argument to the [info previouspid] sub-command to
force the previous process Id to be reset.
FEATURE: add -processid option to the [exec] command in order to specify the
name of a variable that should be modified to contain the Id of the
started process or zero if the process was not started.
FEATURE: add the [callback count] and [callback list] sub-commands to allow for
introspection of the callback queue.
FEATURE: add -unlinkonly option to the [unset] command to remove the specified
link to the target variable instead of the target variable itself.
this option only works with the variables links themselves and has no
effect when unsetting normal variables.
FEATURE: add break-on-leak support to the test suite infrastructure.
FEATURE: add interactive #seflags command to display or set the shared engine
flags for the interactive interpreter. rename interactive #eflags
command to #ceflags.
FEATURE: add the [interp enabled] sub-command and the Enabled property to the
IInterpreter interface to control whether or not an interpreter will
accept evaluation and substitution requests.
FEATURE: add GetTclPatchLevel method to the ITclManager interface.
FEATURE: add _Hosts.Wrapper class, which wraps an IHost implementation and then
allows it to be easily customized, via inheritance and delegation.
FEATURE: add Restricted flag to the ScriptThread class that prevents any method
other than Queue or Send from being invoked successfully.
FEATURE: add FinallyTimeout property to the IInterpreter interface in order to
support runaway finally blocks being canceled automatically after the
specified number of milliseconds. also, add [interp finallytimeout]
sub-command to query or set this value easily via scripts.
FEATURE: add "y" length modifier to [format] to permit formatting byte values.
FEATURE: support disabling selected diagnostic messages during library startup
using the NoVerbose environment variable.
FEATURE: add -argv and -text options to the [test2] command, used when creating
isolated test interpreters.
FEATURE: add -anyInitialize command line option to evaluate a script whether or
not the script library has been initialized.
FEATURE: add -library command line option to manually override the core script
library path.
FEATURE: add -interactive option to the [info commands] sub-command to return
procedures that were intended for use with the interactive shell.
FEATURE: add GetPackageAssemblyName and GetProcessorArchitecture methods to the
Utility class.
FEATURE: add the [tcl versionrange] sub-command to return a list of versions
that fall within the specified minimum and maximum versions.
FEATURE: in the Eagle Package for Tcl (Garuda), add the [garuda bridgerunning]
sub-command, which returns non-zero if the bridge has been started.
FEATURE: add preliminary support for running on the ARM processor architecture,
paying special attention to the native stack checking.
FEATURE: support overriding the base directory for the core library via the
EAGLE_BASE environment variable.
FEATURE: add [interp readorgetscriptfile] sub-command to read and return the
textual content of the local or remote script file.
FEATURE: support the evaluation of matching update scripts via the interactive
#check command.
FEATURE: for the [test1] and [test2] commands, support the pseudo-constraints
"fail.false" and "fail.true" to support declaring that a test cannot
cause the current test run to return an overall failure result.
FEATURE: *BREAKING CHANGE* attempt to increase security when handling options
of type SecureString. this will not work on all platforms nor in all
situations. also, allow such options to refer to an existing opaque
object handle with a value of type SecureString.
FEATURE: *BREAKING CHANGE* modify the MakeSafe and MakeStandard methods of the
ISecurityManager interface to take a MakeFlags parameter instead of a
second boolean parameter.
FEATURE: *BREAKING CHANGE* add ExtraStackSpace property to the IInterpreter
interface.
FEATURE: *BREAKING CHANGE* add support for the \U backslash escape in the core
script parser. code points exceeding 16-bits will be returned as
two characters.
FEATURE: *BREAKING CHANGE* for the [lindex] command, support returning multiple
elements by attempting to interpret each index specifier as an index
list if it cannot be parsed as a simple index.
************************* Beta 1.0.5000.25377 RELEASE *************************
BUGFIX: *MAJOR* prevent a script error from being generated when using [unset]
with the -nocomplain option on a non-existing array element within an
existing array.
BUGFIX: make sure that CommandCallback object instances cannot be created nor
used while the associated interpreter is being disposed.
BUGFIX: prior to iterating over the hidden commands for an interpreter, make
sure they are still available.
BUGFIX: make sure that freeing the context manager instance does not throw an
ObjectDisposedException.
BUGFIX: by default, always flag opaque object handles for the event parameters
used by the CommandCallback class as NoDispose.
BUGFIX: in the TclWrapper.DoOneEvent method, always verify that the module is
not null before attempting to call the VerifyModule method on it.
BUGFIX: fix use of the SETLOCAL command by the fn_UnquoteVariable subroutine in
the various batch tools.
BUGFIX: modify classes implementing the IDisposable pattern to set the disposed
flag after their base classes have been disposed.
BUGFIX: fix the ticks-per-microsecond calculation for [clock microseconds].
BUGFIX: when resolving commands using prefix matching, check for an exact match
first to avoid situations where an approximate match of a command would
override an exact match of a hidden command.
BUGFIX: for the PowerShell cmdlet, make sure the CheckDisposed method is called
by all public members. also, do not catch all exceptions thrown by the
WriteDebug and WriteVerbose methods.
BUGFIX: fix detection of excess arguments by the [tcl resetcancel] sub-command.
BUGFIX: the [file executable], [file readable], and [file writable] sub-commands
should never return an error result, even if the file permissions cannot
be determined.
BUGFIX: make sure the effective plugin flags are passed to the interpreter from
the [load] and [unload] commands.
BUGFIX: cleanup the command aliases used by the test suite to help emulate the
Tcltest package.
BUGFIX: allow parameters declared as object to support conversion to and from
array script variables as well as to scalar script variables that are
either null or empty.
BUGFIX: make sure the ScriptBinder gets a chance to perform ToString conversion
operations on its registered types (e.g. DateTime) as well as the types
provided by third-party applications and/or plugins.
BUGFIX: in the ScriptBinder, fix detection of types that can be automatically
converted from a string. this issue caused the FixupReturnValue method
to create opaque object handles when it should have simply returned the
string representation of the object for some non-primitive types. this
issue has been present since the beta 7 release in late 2010.
BUGFIX: prevent the interactive #vinfo command from being used from a different
application domain.
BUGFIX: never dispose of any contexts for an interpreter on non-primary threads
if the interpreter is still active (i.e. it has entries on the active
interpreter stack for the thread).
BUGFIX: attempt to prevent any private field from being accessed directly from a
different application domain.
BUGFIX: fix cross-application domain marshalling issue in the engine when parse
tokens containing variable references. also, the engine should be able
to handle null result values when attempting to query a variable value.
BUGFIX: stop stripping off trailing slashes when normalizing root paths.
BUGFIX: all interactive commands should make sure the interactive host is valid
prior to using it.
BUGFIX: fix incorrect AssemblySourceId and AssemblySourceTimeStamp values being
produced by the build version tagging tool when dealing with plugin
source code checkouts that just so happen to be nested within the main
Eagle source code checkout directory. also, fix missing trailing tab
characters in UpdateMode when dealing with multiple lines of output.
BUGFIX: in the core marshaller, stop treating any string that can be converted
to a StringList as one for the purposes of method overload matching.
BUGFIX: prevent a FormatException caused by an incorrect format string used to
implement the -debug option to [exec].
BUGFIX: add missing call to CheckDisposed in one of the QueueTclThreadEvent
method overloads of the ITclManager interface.
BUGFIX: add several possible NuGet staging directories to the clean tool.
BUGFIX: for the [host writebox] sub-command, enforce having the correct number
of non-option arguments.
BUGFIX: skip prompting the user to cancel the running script when the host is
actively trying to read user input.
BUGFIX: improve open/closed detection in the built-in console host.
BUGFIX: for the default host, when attempting to retry a WriteBox operation due
to an out-of-space condition, make sure that the number of BeginBox and
EndBox method calls match.
BUGFIX: prevent the interactive loop from raising exceptions when accessing the
interactive host to read input.
BUGFIX: the [sql close] sub-command should return an empty string upon success.
BUGFIX: avoid using the syncRoot field of the interpreter from outside its own
instance. add a new internal property InternalSyncRoot to minimize the
impact of this fix. also, avoid using private interpreter fields from
the static Interpreter.Ready method.
BUGFIX: modify the Interpreter.GetPluginCommands method so that it takes hidden
commands into account.
BUGFIX: modify the ".args" file processing to append all the arguments read to
the end of the existing command line.
BUGFIX: fix method name handling used by the DebugOps.GetMethodName method.
BUGFIX: stop using IntPtr.ToInt32 in the diagnostic messages related to native
module handles.
BUGFIX: the TclWrapper.AddModuleReference method should use try/finally to get
transactional semantics when loading the native Tcl module.
BUGFIX: the TclWrapper.DoOneEvent method should verify that the native Tcl
module is still loaded prior to each call into the native Tcl API.
BUGFIX: make it so the InteractiveLoop method works properly for an interpreter
in a different application domain.
BUGFIX: honor the pattern argument to the [info policies] sub-command.
BUGFIX: lock access to the private data fields of the console host.
BUGFIX: *BREAKING CHANGE* when compiled with support for isolated application
domains, make the CallFrame class derive from ScriptMarshalByRefObject
class, to fix script evaluation between application domains when a call
frame is already active.
BUGFIX: *BREAKING CHANGE* the [try] command now calls the Engine.ResetCancel
method, by default, just prior to evaluating the finally block script.
BUGFIX: *BREAKING CHANGE* do not cache any XmlSchema objects used for XML schema
validation in the XmlOps class. remove the namespaceUri parameter from
the Utility.Validate method and add a serializerNamespaces parameter to
the Utility.Serialize method.
REFACTOR: optimize access to the script text in the Engine.EvaluateTokens and
Engine.SubstituteTokens methods.
REFACTOR: improve consistency of the interactive command help text. also, add
optional arguments to the interactive #usage and #version commands to
allow finer control over their output.
REFACTOR: update Fossil tool w/source to version c107d5059640b0ee.
REFACTOR: modify the [debug paths] sub-command to accept an optional boolean
argument that controls whether only the auto-path components are
returned.
REFACTOR: add beta NuGet package to be used for feature prototyping and release
testing.
REFACTOR: prevent interactive command exceptions from causing problems with the
interactive loop.
REFACTOR: add experimental code to protect against using a System.Console that
has been closed without being reopened.
REFACTOR: update the [format] and [lmap] Tcl tests from upstream.
REFACTOR: keep track and log the name of the test suite being run. also, keep
track of and report the total count of each object type leaked by the
test files included in the current test suite run.
REFACTOR: various enhancements to the updater project, including logging and
handling of in-use files.
REFACTOR: move database connection creation logic into the RuntimeOps class and
call it from the [sql] command implementation.
REFACTOR: modify the test suite to better support alternative database types.
REFACTOR: add support for the EllipsisLimit environment variable, which can be
used to override the length limit for elided text that would otherwise
use the default length limit.
REFACTOR: carefully eliminate all remaining usage of private interpreter fields
from within the core library, adding internal properties and methods
where necessary.
REFACTOR: modify the ReadInteractiveInput method in an attempt to cleanly handle
thread abort exceptions received from other threads while waiting for
input in the interactive loop.
REFACTOR: for the interactive #version command, output the version information
for system plugins first and add visual indicators for the important
plugin flags.
REFACTOR: cache the certificate subject result queried by the console host.
REFACTOR: modify the IDebugger interface to require an Interpreter parameter on
all the breakpoint related methods.
REFACTOR: in the sample project, add quick demonstration of augmenting and/or
overriding the script binder used by the interpreter.
REFACTOR: make test suite count and timestamp reporting more consistent. also,
report the elapsed time taken by the tests being run.
REFACTOR: modify the [fcopy] command to better support writing binary data.
also, any error from the Engine.CheckEvents method should result in
the copy operation being aborted.
REFACTOR: make sure all executable files to be released have their Authenticode
signatures checked by the release preparation tool.
REFACTOR: *BREAKING CHANGE* for the IValue interface, move the Value, String,
and Length properties to the new IGetValue and ISetValue interfaces.
also, move the ClientData, ValueData, and ExtraData properties to the
new IValueData interface.
REFACTOR: *BREAKING CHANGE* modify the Value property of the Argument class to
be read-only.
REFACTOR: *BREAKING CHANGE* add two parameters to the WriteCallFrame method of
the IInformationHost interface.
REFACTOR: *BREAKING CHANGE* rename the ICallFrame.Link property to Next. also,
add Other, Previous, and FrameLevel properties to the ICallFrame
interface.
REFACTOR: *BREAKING CHANGE* modify the [parse script] sub-command so that it
emits a separator token between each set of parsed command tokens.
REFACTOR: *BREAKING CHANGE* rename the -start option of the [parse command],
[parse expression], and [parse script] sub-commands to -startindex.
REFACTOR: *BREAKING CHANGE* modify public static methods of the ScriptLocation
class to require an Interpreter parameter. also, add static factory
methods, make all the constructors private, and fix private member
accessibility.
REFACTOR: *BREAKING CHANGE* add HostStreamFlags parameter to the GetStream
method of the IEngineHost interface. add StreamFlags property to the
IEngineHost interface.
REFACTOR: *BREAKING CHANGE* rename the method Utility.GetInteractiveCommandHelp
to Utility.GetInteractiveCommandHelpItem.
REFACTOR: *BREAKING CHANGE* modify the error raised by [encoding system] when
the optional encoding argument is supplied.
REFACTOR: *BREAKING CHANGE* modify the implementation of the [encoding names]
sub-command to allow encodings from the interpreter to replace system
encodings in the returned list.
REFACTOR: *BREAKING CHANGE* modify Interpreter.ShellMainCore method to accept
optional delegates that allow the script evaluation and interactive
loop semantics used by the shell to be overridden. add IShellManager
interface to expose these delegates via properties of the Interpreter
class. also, rename the old ShellArgumentCallback delegate type to
ArgumentCallback.
REFACTOR: *BREAKING CHANGE* add UseAttach property to the IHost and IHostData
interfaces and add a UseAttach flag to the CreateFlags enumeration.
also, support the UseAttach environment variable.
REFACTOR: *BREAKING CHANGE* add Flush method to the IInteractiveHost interface.
REFACTOR: *BREAKING CHANGE* add new IExecuteRequest interface to the IPlugin
interface. also, add TypeName to the IPluginData interface.
FEATURE: add new TCL_EVAL_SOURCE_IN_FRAME and TCL_EVAL_NORESOLVE flag values
from the native Tcl project for use with the native Tcl integration
subsystem.
FEATURE: the Eagle Package for Tcl (Garuda) testing infrastructure now supports
setting the -baseDirectory option, which is used to skip the automatic
detection of the base directory. also, check for the test suffix when
determining the file name of the native package DLL during testing.
FEATURE: add -noArgumentsFileName command line option to skip processing of the
arguments file name, if it exists.
FEATURE: add the Eagle Native Utility Library (Spilornis) to provide for faster
joining and splitting of list elements.
FEATURE: add [info cmdtype] sub-command that implements most of the semantics
described by TIP #426.
FEATURE: add tcl_platform(processorAffinityMasks) element that will contain the
processor affinity masks for the process.
FEATURE: support the SecureString type in the Option and Variant classes.
FEATURE: add -domainname, -username, and -password options to the [exec]
command.
FEATURE: add [clock start] and [clock stop] sub-commands for the high-precision
measurement of elapsed time.
FEATURE: add [downlevel] command to evaluate a script using the call frame that
was in use prior to the latest [uplevel] command being executed. this
idea was borrowed from the downeval function in the LIL language.
FEATURE: add -newnamevar option to the [rename] command.
FEATURE: add -roundtrip option to the [parse script] sub-command.
FEATURE: for the PowerShell cmdlet, add [cmdlet] meta-command to help interact
with the PowerShell environment during script evaluation.
FEATURE: add [host redirected] sub-command to return a boolean indicating
whether or not the specified standard channel is currently redirected.
FEATURE: add [host query] sub-command to return an implementation defined list
of internal state information.
FEATURE: add [info programextension] sub-command to return the file extension
for the assembly that started the process.
FEATURE: import word.tcl file verbatim from the native Tcl 8.4 script library
and integrate it into the Eagle script library.
FEATURE: add [tcl queue] sub-command to allow Tcl scripts to be evaluated using
isolated Tcl threads.
FEATURE: add -nested option to the [parse command] and [parse script]
sub-commands. add -filename, -currentline, -syntax, and -strict
options to the [parse script] sub-command.
FEATURE: add [debug purge] sub-command to remove all undefined variables from
the current call frame.
FEATURE: add -streamflags option to the [open] command.
FEATURE: enhance interactive command help to support logically grouping related
interactive commands together into their own help topics, to make it
easier to discover the functionality provided by the interactive shell.
FEATURE: add -break command line option to force a managed debugger break prior
to processing any further command line options.
FEATURE: add static InteractiveLoopThread method to the Interpreter class.
FEATURE: add _Commands.Ensemble base command implemenation for use by external
applications and plugins. this command is used to provide an easy to
use, extensible ensemble implementation.
FEATURE: add the AsynchronousBridge class and IAsynchronousCallback interface.
in addition, modify the AsynchronousContext class to derive from the
ScriptMarshalByRefObject class. these changes are necessary to allow
asynchronous script completion callbacks to be received by components
running in isolated application domains.
FEATURE: add [file rootpath] sub-command to return the root path associated with
the specified file name.
FEATURE: add ByRef argument flags to make them capable of having the same level
of control over the return value marshalling, as the individual binary
marshalling options do.
FEATURE: add interactive #sresult command to store the last interactive command
result into the specified script variable.
FEATURE: add EvaluateTrustedScript, EvaluateTrustedFile, EvaluateTrustedStream
methods to the IEngineManager interface to allow easy evaluation of
fully trusted scripts by third-party applications and/or plugins using
"safe" interpreters.
FEATURE: add StrongNameTag to the [info engine] sub-command. add full support
for the strong name tag attribute. add an official pre-release strong
name key.
FEATURE: add the -marshalflags option to the [object create], [object invoke],
and related commands.
FEATURE: add IScriptBuilder interface and its associated class to support
building up scripts dynamically (i.e. from script fragments and/or
commands).
FEATURE: add CreateDbConnection, FormatDelegateMethodName, GetAssemblyTag,
GetAssemblyText, GetBasePath, GetErrorMessage, IsBase64, IsMono,
LoadAssemblyFromStream, MakeRelativePath, SearchForFile, and Wait
methods to the Utility class.
FEATURE: support random ordering of files evaluated by the test suite.
FEATURE: add [xml validate] sub-command to validate an XML document against an
XML schema.
FEATURE: add [package info] sub-command to return the properties of a package.
also, keep track of which script file (i.e. package index) was active
when a package was added to the interpreter via the [package ifneeded]
or [package provide] sub-commands.
FEATURE: add [sql types] sub-command to return the combined list of primary and
auxiliary database connection types.
FEATURE: add -nested option to the [sql execute] sub-command for use with the
list and dictionary formats.
FEATURE: add -trimall option to the [exec] command to remove all surrounding
whitespace from the captured output.
FEATURE: add [debug cleanup] sub-command to perform general cleanup of the
interpreter and/or garbage collect unused managed memory.
FEATURE: add [encoding getstring] sub-command to convert and return the string
that corresponds to the specified byte array opaque object handle.
FEATURE: add interactive #toldvalue command to allow the TraceInfo old value to
be set during debugger watchpoints.
FEATURE: *BREAKING CHANGE* rename interactive #tvalue command to #tnewvalue.
FEATURE: *BREAKING CHANGE* add QueryState method to the IInteractiveHost
interface to return an implementation defined list of internal state
information (e.g. as name/value pairs) or null if no such information
is available.
FEATURE: *BREAKING CHANGE* add eagle_paths script variable to help control how
path resolution for script-visible files takes place within the context
of an interpreter. this variable is ignored for "safe" interpreters.
FEATURE: *BREAKING CHANGE* add LoadPlugin method overload to the IPluginManager
interface that supports loading a plugin from an array of bytes. this
works with the isolated plugins feature as well.
FEATURE: *BREAKING CHANGE* add NoPackageUnknown interpreter flag and enable it
by default.
FEATURE: *BREAKING CHANGE* add IsParentInterpreter method to the IEntityManager
interface.
FEATURE: *BREAKING CHANGE* add FindPlugin method to the IPluginManager
interface.
FEATURE: *BREAKING CHANGE* add DateTimeFormat and DateTimeKind properties to the
IInterpreter interface. these properties can be used to influence the
automatic DateTime type conversions performed by the core marshaller.
FEATURE: *BREAKING CHANGE* add AddStandardTclBridge method to the ITclManager
interface.
FEATURE: *BREAKING CHANGE* add GetTclVariableValue, SetTclVariableValue, and
UnsetTclVariableValue methods to the ITclManager interface.
FEATURE: *BREAKING CHANGE* add GetMaximumSize and SetMaximumSize methods to the
IHost interface. technically, this is a breaking change; however, for
all hosts that derive from the default host, implementing these new
methods is purely optional because the base class provides suitable
default implementations. also, add -maximum option to the [host size]
sub-command.
************************* Beta 1.0.4807.22448 RELEASE *************************
BUGFIX: *MAJOR* fix the [array set] command so that it only replaces the entire
array value for a variable when no existing array values exist. also,
when firing the variable traces for the array, make sure the dictionary
of new elements includes all the old elements as well.
BUGFIX: modify handling of flags for array elements to prevent throwing needless
OutOfMemoryException instances.
BUGFIX: prevent the [getFiles] test package helper procedure from returning any
directories or non-regular files.
BUGFIX: gracefully handle exceptions thrown when dealing with the native stack
checking LocalDataStoreSlot objects. this applies primarily when using
the Thread.GetData and Thread.SetData methods.
BUGFIX: prevent procedures flagged as read-only from being redefined.
BUGFIX: make sure errors that occur when creating the isolated interpreter are
returned properly when using the [debug setup] sub-command.
BUGFIX: modify argument count checking for the [invoke] command to take into
account that the level is an optional argument.
BUGFIX: using [string is list -strict] on an empty string should return true.
BUGFIX: fix typo in the syntax error message for the [sql connection] command.
BUGFIX: fix typo in the RuntimeOps.GetArgumentsFileName method. also, add help
text for the ".args" file processing performed by the shell.
BUGFIX: make sure the BreakpointType.All value includes all possible breakpoint
types.
BUGFIX: prevent the per-thread TraceInfo object from being used accidentally
when system variables are modified due to interpreter properties being
changed. also, prevent it from being used by the reference counting
plugin when any traces or watchpoints are active.
BUGFIX: fix the [::Eagle::testPuts] shim procedure in the Eagle test package so
that it will emit a line-feed when only one argument is supplied by the
caller.
BUGFIX: support resetting the Tcl script cancellation flags for Tcl interpreters
associated with TclThread objects.
BUGFIX: prevent a superfluous error message about native Tcl resource disposal
being on the wrong thread when it is not actually the wrong thread.
BUGFIX: fix the error messages returned by the TclWrapper.Load method when no
child error messages are returned from the Find and/or Select methods.
BUGFIX: revise reference counting (and locking) semantics for the TclModule
collection to prevent some subtle race conditions between the DoOneEvent
and Unload methods of the TclWrapper class.
BUGFIX: make sure the event wait handle names are unique within the application
domain.
BUGFIX: make sure the threads created for the TclThread class have names unique
within the application domain.
BUGFIX: make sure the dynamically created assembly, module, and type names are
unique within the application domain.
BUGFIX: add missing call to CheckDisposed in the Interpreter.ClearCache method.
BUGFIX: make sure the NoPostProcess variable flag is honored for all calls into
the script variable subsystem.
BUGFIX: the RuntimeOps.IsHostOpen method should return true when input is being
redirected.
BUGFIX: *BREAKING CHANGE* fix race condition in the TclThread class when events
are sent using the native Win32 API. this required adding a Delegate
property to the IEvent interface.
BUGFIX: *BREAKING CHANGE* rework the native Tcl resource disposal pipeline in
the Interpreter class to avoid holding locks when dealing with TclThread
objects. unfortunately, as a consequence of this, the UnloadTcl method
can no longer be guaranteed to be thread-safe.
BUGFIX: *BREAKING CHANGE* remove the alias and its associated command from the
source interpreter if the target interpreter is disposed first. this
fix required adding a SourceInterpreter property to the IAliasData
interface.
REFACTOR: make the [file executable], [file readable], and [file writable]
sub-commands work when running on Mono.
REFACTOR: enhance handling of the machine and platform by the test suite.
REFACTOR: add a third element containing the method name to the errorCode when
an exception is caught and/or handled by the script engine.
REFACTOR: add host size to the default host output. also, revise handling of
out-of-space conditions in the WriteBox method of the default host.
REFACTOR: modify [string format] sub-command implementation to detect Mono and
work around the MissingMethodException being thrown if the three (or
more) argument overload of the String.Format method is invoked via
reflection.
REFACTOR: modify various tests to be more compatible with legacy versions of
Mono (e.g. 2.0 and 2.2). add the MONO_LEGACY compile-time option to
allow code that is problematic for Mono 2.0 and/or 2.2 to be omitted
when compiling.
REFACTOR: add a test constraint for those tests that stress the native stack
checking code.
REFACTOR: make calls into the DebugOps.Complain method consistently use any
available interpreter context. also, make the two parameter overload
of the DebugOps.Complain method fetch the interpreter from the active
interpreter stack.
REFACTOR: add built-in method parameter type conversions from string to types
List<string>, IList<string>, ICollection<string>, IEnumerable<string>,
and IStringList.
REFACTOR: make the Complaint property of the Interpreter per-thread, via the
engine context.
REFACTOR: comment and style cleanup for the Example and TclSample projects.
REFACTOR: add a one parameter overload for the ReturnCodeToExitCode method of
the Utility class.
REFACTOR: in the TclThread.EventCallback method, make sure the interpreter and
tclApi fields are not null prior to using them.
REFACTOR: make sure the immutable and read-only properties of the Interpreter
class are applied consistently.
REFACTOR: error messages originating from the DebugOps.Complain method will no
longer cause a message box to show up on secondary threads.
REFACTOR: when possible, use the TclApi.GetTclApi and TclApi.SetTclApi methods
to access the tclApi field, especially from the TclBridge class, the
TclThread class, and the [tcl] command implementation.
REFACTOR: cleanup the main loop code in the TclThread class. move duplicated
code to the new DoOneEvent and WasAnyEventSignaled methods. signal
the "start" event when the new thread is ready to receive events and
add a WaitForStart method to allow callers to wait for this new event.
skip calling the Shutdown method during object disposal if the target
thread has already been shutdown. add Dispose EventType to properly
dispose of all associated bridged Tcl commands as well as delete the
associated Tcl interpreter (this also required adding the ability for
a TclBridge object to know that it belongs to a TclThread object).
improvements to diagnostic messages.
REFACTOR: modify how the [time] command handles the Break and Continue return
codes. also, a negative number of iterations other than -1 will run
only once; however, its absolute value will be used when calculating
the final result.
REFACTOR: make logging in the updater project more consistent, especially for
the property values of the Configuration and Release classes. also,
for the F1 help, only display shortcut keys that will actually work
based on the current configuration.
REFACTOR: modify the Argument and Result classes to support implicit conversions
from the StringDictionary class.
REFACTOR: modify the custom strong name signing related MSBuild targets allow
them to work properly without the .NET Framework 2.0 SDK installed
when the MSBuild property StrongNameWithoutSdk is set to true.
REFACTOR: add an overload of the StringDictionary.Add method that allows the
dictionary provided by the caller to be null (i.e. if the strict
parameter is false).
REFACTOR: modify the GetAllTestInformation method to support returning only the
names of the test array elements.
REFACTOR: modify the [debug break] sub-command so that it will not break into
the debugger unless the BreakpointType.Demand flag is present in the
IDebugger.Types property value.
REFACTOR: stop using the C# break statement and move the interactive #go, #run,
#break, and #halt commands to the InteractiveOps class.
REFACTOR: in the interactive loop, only display the local error line number if
it has been set by the current command.
REFACTOR: move the GetDefaultPrompt method to the RuntimeOps class.
REFACTOR: support building the Eagle Package for Tcl (Garuda) using TEA for the
Visual C++ 6.0 or later build environment, including 64-bit versions,
where applicable. also, add the necessary tooling support to allow
the package test suite to be easily run in this environment. also,
support building and/or downloading Eagle via the TEA makefile, for
the purpose of integration with the Eagle Package for Tcl (Garuda).
REFACTOR: move several path fragment constants from the EnvVars class to the
_Path class. also, remove two path fragment constants that are now
obsolete. add help text for the environment variables related to the
finding the script library directory and the native Tcl integration
subsystem.
REFACTOR: permit "safe" interpreters to use the [info appdomain] sub-command.
REFACTOR: on the IDebugger interface, add the CheckInterruptCallback method and
move all properties to the new IDebuggerData interface and then add
the CallbackArguments property.
REFACTOR: remove superfluous calls to the RuntimeOps.SplitVariableName method
from within the script variable subsystem in the Interpreter class.
REFACTOR: make sure the list of script library procedures exported to Tcl are
consistent and include all compatible procedures.
REFACTOR: simplify the implementation of the [list] command.
REFACTOR: optimize common usage patterns for the [lappend] command. also, add
-variable option to the [lsearch] command to optimize searching for a
list element in a list contained within a named script variable.
REFACTOR: use save/restore semantics for the flags in the Variable.FireTraces
method. also, show the type of variable values in the default host.
REFACTOR: update Fossil tool w/source to version ab9b449190c7da30.
REFACTOR: add undocumented, internal parameter capable of manually overriding
the default initial capacity for all newly created array element
dictionaries.
REFACTOR: *BREAKING CHANGE* add EngineData property to the ICallFrame interface
for future use by the core library only.
REFACTOR: *BREAKING CHANGE* add ExtraData property to the IValue interface.
REFACTOR: *BREAKING CHANGE* rename values in the VariableFlags enumeration to
include the word mask when they are used in that context.
REFACTOR: *BREAKING CHANGE* on the ICallback interface, move all properties to
the ICallbackData interface and then add the ObjectFlags property.
REFACTOR: *BREAKING CHANGE* remove all the unused interpreter parameters from
methods in the Value class.
REFACTOR: *BREAKING CHANGE* remove all the boolean strict, verbose, noCase, and
noNested parameters from methods in the Value class.
REFACTOR: *BREAKING CHANGE* add ToString method overloads to the IStringList
interface that include the empty boolean parameter and modify the
other ToString method overloads to make use of them.
REFACTOR: *BREAKING CHANGE* add cached boolean parameter to the WriteTraceInfo
method of the IInformationHost interface.
REFACTOR: *BREAKING CHANGE* add an InterpreterDisposed property to the IAlias
interface. this is necessary to facilitate being able to remove the
referenced delegate from the list of interpreter disposal callbacks
for the target interpreter during alias removal.
REFACTOR: *BREAKING CHANGE* add an AdjustColors method to the IHost interface.
REFACTOR: *BREAKING CHANGE* add an IsCanceled method to the IEngineManager
interface.
REFACTOR: *BREAKING CHANGE* on the IScriptEventArgs interface, rename the Types
property to NotifyTypes and the Flags property to NotifyFlags and add
an InterruptType property.
FEATURE: add TargetFramework to the [info engine] sub-command to query the
target framework of the library. also added the associated element to
the platform array.
FEATURE: add [array random] sub-command to return a random element name and/or
value from an array.
FEATURE: add [file rmdir] sub-command to delete one or more empty directories.
FEATURE: add the ability to trace interactive command matching and execution.
FEATURE: add experimental support for private procedures (i.e. they may only be
executed from within the context of the script file that created them).
this feature is experimental and is subject to change and/or removal.
also, add NoReplace, NoRename, and NoRemove flags to silently ignore
attempts to replace, rename, or remove a procedure, respectively.
FEATURE: add [interp set] and [interp unset] sub-commands to get, set, and unset
variables in child interpreters.
FEATURE: add byte, guid, interpreter, number, object, single, type, uri, value,
variant, and version string classes to the [string is] sub-command.
FEATURE: add GetAssemblyVersion, GetEagleVersion, and GetTclPatchLevel methods
to the Utility class.
FEATURE: add [debug complaint] sub-command to return the complaint currently
stored for the current thread.
FEATURE: add [debug invoke] sub-command to lookup and invoke a command in the
isolated interpreter with the exact arguments specified.
FEATURE: add [debug callback] sub-command to allow the isolated interpreter to
be notified via a script when the parent interpreter is interrupted in
some way.
FEATURE: add optional options variable name argument to the [catch] command,
compatible with TIP #90 (e.g. for Tcl 8.5).
FEATURE: add optional encoding argument to the [string bytelength] sub-command.
FEATURE: add [object search] sub-command to search for the specified type name
among the currently imported namespaces and loaded assemblies.
FEATURE: add [string is dict] sub-command to verify that a string conforms to
the structure of a dictionary.
FEATURE: add -isolated option to the [interp create] sub-command to allow child
interpreters to be created in an isolated application domain. modify
the [interp alias] subsystem to support aliases where the target is in
a different application domain.
FEATURE: allow the Tcl shell executable used by the test suite to be overridden
via either the -tclsh command line option or the Tcl_Shell environment
variable.
FEATURE: add -fixed option to the [file version] sub-command to return the fixed
file version information (i.e. language and code page independent).
FEATURE: modify the TclBuild and TclWrapper classes to take into account the
release level when attempting to determine the best available native
Tcl library. rename the Tcl_ReleaseType enum to Tcl_ReleaseLevel.
FEATURE: add [tcl recordandeval] sub-command to evaluate a Tcl script using the
Tcl_RecordAndEvalObj native Tcl API.
FEATURE: add Exceptions property to the ITclApi interface and TclExceptions
property to the ITclManager interface. also, add [tcl exceptions]
sub-command to enable script-level access to this new property.
FEATURE: add LoadSettingsViaScriptFile method to the Utility class to provide
the ability to load settings from the global variables set by a script
file, evaluated in an isolated interpreter.
FEATURE: add -nocomplain option to the [tcl update] sub-command to suppress the
error message caused by the inability to release the module reference
count (e.g. because the native Tcl library was unloaded).
FEATURE: add IsTclThread method to the ITclManager interface. this method will
return non-zero if the current thread was responsible for loading the
native Tcl library.
FEATURE: add callback, IClientData, and wait parameters to the CreateTclThread
method of the ITclManager interface. the first two parameters allow
the caller to be notified after each event has been processed by the
TclThread. the wait parameter allows the caller to block until the
TclThread is ready to receive events.
FEATURE: add an error line parameter to the TclThread.QueueEvent method. add an
error line parameter to the GetResult and SetResult methods of the
IEvent interface.
FEATURE: add -inverse option to the [lsearch] command to support checking the
specified text against a list of patterns.
FEATURE: add experimental [array copy] sub-command to copy an array, optionally
making a deep copy.
FEATURE: add optional boolean argument to the [time] command to enable tracking
and reporting of the minimum and maximum number of microseconds taken
for an iteration of the script.
FEATURE: add -noStart option to the [test2] command and NoTestStart interpreter
flag to allow the "start" indicators for tests to be omitted from the
output of the [test2] and [test1] commands, respectively.
FEATURE: add -unicode option to the [exec] command to support capturing output
in the UTF-16 encoding.
FEATURE: support overriding the Eagle "safe" interpreter creation behavior of
the Eagle Package for Tcl (Garuda) via an environment variable and/or a
Tcl variable in the package namespace. when enabled, this forces the
creation of an Eagle "safe" interpreter even if the Tcl interpreter the
package is being loaded into is "unsafe".
FEATURE: modify the [host writebox] sub-command to work with non-standard hosts
by adding the -noboxcolors, -nocolors, and -noposition options.
FEATURE: add ExecuteArguments property to the IDebugger interface, set it from
within the evaluation engine, and display it with the other debugger
information in the default host.
FEATURE: add [object lmap] sub-command to collect the [object foreach] results
into one final result. also, add -collect option to [object foreach]
to do the same thing.
FEATURE: add [host flags] sub-command to allow the flags for the interpreter
host to be queried.
FEATURE: add [array foreach] and [array lmap] sub-commands to allow for very
efficient iteration over the element names and values in the array.
FEATURE: add [interp immutable] sub-command to allow the interpreter to operate
in a mode where adding entities and setting new variables is allowed;
however, existing entities cannot be modified or removed and variables
cannot be modified or unset.
FEATURE: add interactive #done command to allow for the interactive loop to be
unconditionally exited, optionally with a specific return code and
result.
FEATURE: add interactive #tcancel, #tcode, and #tvalue commands to allow the
TraceInfo output properties to be set during debugger watchpoints.
FEATURE: *BREAKING CHANGE* add MakeVariableFast method to the IVariableManager
interface. this method can be used to disable (or reenable) all the
extra extensibility steps taken in the script variable subsystem (e.g.
traces, watches, notifications, post-processing, etc) in order to speed
up access to a specific script variable.
************************* Beta 1.0.4691.37889 RELEASE *************************
BUGFIX: fix the handling for out-of-range tcl_precision values in the expression
evaluator subsystem. prior to this fix, an out-of-range tcl_precision
value could cause the interpreter call stack to become imbalanced if an
expression was evaluated resulting in a decimal or double value.
BUGFIX: fix error line handling for certain Evaluate* method overloads in the
Engine and Interpreter classes.
BUGFIX: make sure to deserialize the return code in the ScriptException class.
BUGFIX: resolve the Tcl module file name when a TclApi object is created via the
NativePackage class, used by the Eagle Package for Tcl (Garuda).
BUGFIX: for test debug-1.4, if the initially saved DebugTextWriter is null, make
sure that it gets restored properly.
BUGFIX: for tests infoCommands-1.1, infoCommands-1.3, and infoCommands-1.5, add
support for passing when obsolete commands [getf], [setf], and [unsetf]
are defined.
BUGFIX: skip adding "unsafe" and non-standard functions to "safe" and standard
interpreters, respectively. also, skip adding non-standard operators to
standard interpreters.
BUGFIX: add the missing COM_TYPE_CACHE and TYPE_CACHE compile-time options to
the list maintained by the core library.
BUGFIX: cleanup opaque object handles in the global call frame when the global
namespace is deleted via the [namespace delete ::] command.
BUGFIX: prevent nested package index searches from the [package scan] command
and/or other mechanisms that do not modify the auto-path variable.
BUGFIX: centralize and fix the semantics for the directory separator character
trimming performed by the PathOps class to prevent removing the one and
only character, even if it happens to be a directory separator (e.g.
when running on Unix).
BUGFIX: make sure that the release preparation tool uses the correct patch level
for all built binaries, even when the default build configuration is not
enabled.
BUGFIX: prevent orphaned engine, interactive, test, and variable contexts from
being leaked, especially via the ScriptThread class and from threads
created by scripts.
BUGFIX: skip setting the auto_path, tcl_library, and null variables when the
NoVariables interpreter creation flag is used.
BUGFIX: prevent "dead" native Tcl resources from being transferred to nested
interpreters created via the [interp create] sub-command.
REFACTOR: *MAJOR* add extensive protections for an interpreter being disposed
during the execution of any executable entity (e.g. a command) to the
Engine class, call frame management throughout the core library, the
interactive loop code, and all supporting methods.
REFACTOR: make the ContextManager class more robust against disposal issues and
any potential race conditions regarding the static LocalDataStoreSlot
fields. add Purge*Contexts methods to the IContextManager interface
to support cleaning up after orphaned contexts. revise key comparison
semantics for the Interpreter*ContextDictionary classes via a custom
implementation of the IEqualityComparer<IInterpreter> interface.
REFACTOR: modify implementation of the Interpreter.GetHashCode method to allow
for complete use of the long integer id field. add IdNoThrow property
to the IInterpreter interface for use by the InterpreterDictionary
class. add GetHashCodeNoThrow method to the IInterpreter interface.
REFACTOR: add Broadcast and Safe flags to the NotifyFlags enumeration. these
flags may be used to send notifications to interpreters from other
threads and "safe" interpreters, respectively. also, by default,
interpreters from other threads will no longer receive any global
notifications.
REFACTOR: add ThreadFlags.NoAbort flag. also, modify the ScriptThread class to
support it by forbidding use of the Thread.Abort method when the flag
has been set.
REFACTOR: revise the delegate type detection performed by the core marshaller
conversion methods to allow for short-circuiting in the common cases.
REFACTOR: make sure all unsupported command and sub-command options are listed
and flagged as such, regardless of build configuration.
REFACTOR: consistently use the CommandFlags.NativeCode value only when needed.
REFACTOR: make the Eagle._Cmdlets.Script and Eagle._Tasks.Script constructors
protected instead of public.
REFACTOR: make the P/Invoke delegates for the GetWindowTextLength, GetClassName,
and GetWindowText Win32 APIs are marked as Unicode.
REFACTOR: if necessary, reset the current procedure call frame when popping a
procedure call frame marked as automatic.
REFACTOR: modify the [test1] and [test2] commands to handle exceptions escaping
from the Engine class, even though such an occurrence is extremely
rare (e.g. out of memory, hard stack overflow, etc). this change is
necessary in order to enable testing of these types of exceptional
conditions.
REFACTOR: make sure all non-standard commands, functions, and operators are
flagged as being non-standard.
REFACTOR: enhance the assembly path search performed by the Eagle Package for
Tcl (Garuda) so that it will look inside the generic LKG directory.
also, allow the associated tests to be run from the source checkout
directory even when the EAGLE environment variable is not set.
REFACTOR: revise how the property accessor prefix matching is performed by the
core marshaller.
REFACTOR: enhance the release archive verification tool to allow it to verify
the contents of the setup archives created with Inno Setup.
REFACTOR: internally, allow a timeout to be specified for interpreter readiness
checking.
REFACTOR: make the [debug eval] and [debug subst] commands handle errors like
the [interp eval] command does.
REFACTOR: all the core functions and operators now implement the IExecute
interface in addition to the IExecuteArgument interface. however,
third-party functions need not follow this pattern. also, the core
operators are now marked with any extra operator flags they may
require using the new OperatorFlagsAttribute class.
REFACTOR: allow policy tracing to be globally enabled via the new PolicyTrace
property of the GlobalState class.
REFACTOR: modify the FormatOps.WrapOrNull method overloads to handle disposed
objects with more grace.
REFACTOR: keep track of whether an external execution context is active for the
interpreter using the new ExternalExecution engine flag.
REFACTOR: add Disposed property to the IDebugger interface. also, add a new
exception class named InterpreterDisposedException to indicate an
object has been disposed that is critical to the operation of the
interpreter containing it, including the interpreter itself. this
new exception class is reserved for use by the core library and it
should not be used by any third-party code.
REFACTOR: when the PrivateRemove* methods call the WrapperDictionary.Remove
method, pass the token of the entity to be removed in addition to the
name. doing this prevents a potentially disposed entity from being
accessed by the WrapperDictionary object itself.
REFACTOR: display the ErrorInfo property of the interpreter in the default host
output.
REFACTOR: centralize logic for comparing file names in the new IsEqualFileName
and CompareFileNames methods of the PathOps class.
REFACTOR: allow individual operators to be disabled (i.e. where the engine will
refuse to execute them). this was already possible for functions.
REFACTOR: add ParentBinder property and experimental SelectMethodIndex method to
the IScriptBinder interface. also, promote the ObjectArrayList class
to public in support of this change.
REFACTOR: specially flag all procedures and variables added for the core script
library, making it easier to determine which procedures and variables
are third-party.
REFACTOR: improve output produced by the interactive #version command.
REFACTOR: centralize test configuration and suffix handling to allow the tests
for the Eagle Package for Tcl (Garuda) to run properly under a wider
variety of test setups.
REFACTOR: make sure the EagleShell project is selected by default as the startup
project in Visual Studio. add solution files containing only the core
library and shell projects.
REFACTOR: update Fossil tool w/source to version 19ca7c6c54d685ac.
REFACTOR: *BREAKING CHANGE* remove public constructors for the ParseToken and
ExpressionToken classes. instances of these classes may be created
via their static factory methods.
REFACTOR: *BREAKING CHANGE* add a boolean strict parameter to the AddFunction
method of the IEntityManager interface.
REFACTOR: *BREAKING CHANGE* add a second boolean parameter to the MakeSafe and
MakeStandard methods of the ISecurityManager interface.
REFACTOR: *BREAKING CHANGE* rename all the *Watch enumeration values and their
related methods to be *Watchpoint.
REFACTOR: *BREAKING CHANGE* rename/reorder values in the OptionBehaviorFlags
enumeration.
REFACTOR: *BREAKING CHANGE* remove the wrapper and validate boolean parameters
and add a LookupFlags parameter to all overloads of the following
methods on the IEntityManager interface: GetAlias, GetCallback,
GetCommand, GetDbConnection, GetDbTransaction, GetFunction,
GetIExecute, GetIdentifier, GetObject, GetPackage, GetPlugin,
GetPolicy, GetProcedure, GetScope, GetChildInterpreter, GetTrace,
MatchCommand, MatchIExecute, MatchPlugin, MatchProcedure. modify the
IResolve.GetIExecute, IResolveManager.GetIExecuteViaResolvers,
ITclManager.GetTclInterpreter, and ITclManager.GetTclThread methods in
the same manner.
FEATURE: in ShellMainCore, support automatically reading and adding command line
arguments from an optional file named after the process executable with
the string ".args" appended to it. the arguments added from the "args"
file, if any, are processed before any arguments passed on the command
line itself.
FEATURE: add -channels option to the [host reset] sub-command to allow the
standard channels for the interpreter to be forcibly reset.
FEATURE: add [info sysvars] sub-command to return the list of all variables that
were added for use by the script library.
FEATURE: add [lmap] command that is 100% compatible with the one described in
TIP #405 (e.g. for Tcl 8.6).
FEATURE: add interactive #prflags command to get or set the procedure flags for
the interpreter. also, add -library option to the [info commands]
sub-command in support of this change.
FEATURE: add [package relativefilename] sub-command to allow a fully qualified
file name to be converted into a package relative file name, based on
the package index file names known to the interpreter. also, modify
the core host to be capable of getting scripts based on their package
relative file names.
FEATURE: add -noinitialize option to the [interp create] command to allow the
script library initialization to be skipped for the new interpreter.
FEATURE: add -standard and -nonstandard options to the [info commands],
[info functions], and [info operators] sub-commands. allow the
[info functions] and [info operators] sub-commands to be used from a
"safe" interpreter.
FEATURE: add -standard option to the [interp create] sub-command.
FEATURE: add [interp expr] and [interp subst] commands to evaluate expressions
and perform string substitutions using child interpreters.
FEATURE: add [debug shell] command to allow the shell to be invoked, using any
arbitrary interpreter, including the current interpreter. this may
cause the shell to be invoked recursively.
FEATURE: dramatically improve concurrency when using the native Tcl integration
classes. also, add -timeout option to the [tcl update] command.
FEATURE: enhance the universal option parser to allow the processing behavior
for unexpected non-option arguments to be modified.
FEATURE: support overriding the CLR loading behavior of the Eagle Package for
Tcl (Garuda) to favor using the minimum supported version of the CLR
rather than the latest supported version via an environment variable
and/or a Tcl variable in the package namespace. this feature only
applies when the Eagle Package for Tcl (Garuda) is compiled for the
.NET Framework 4.0. also, support looking for an Eagle assembly file
name that contains the major version of the CLR (e.g. Eagle_CLRv4.dll).
FEATURE: add support for Visual Studio 2012 and the .NET Framework 4.5. modify
the console host to support the newly available Is*Redirected methods
of the System.Console class.
FEATURE: add [info frameworkextra] command to return supplementary information
about the version of the .NET Framework being used.
FEATURE: add round2 and round3 math functions to allow for greater control over
the rounding of numbers decimal and double values.
FEATURE: add -preFile and -postFile command line options to allow a script file
to be evaluated before and/or after the script library is initialized,
respectively.
FEATURE: *BREAKING CHANGE* rename the #eval and #subst interactive commands to
#deval and #dsubst, respectively. also, add a new #eval interactive
command to allow for evaluation of one or more arguments using the
interactive interpreter (i.e. not the isolated debugger interpreter).
************************* Beta 1.0.4629.29317 RELEASE *************************
BUGFIX: *MAJOR* fix incorrect handling of variable change detection for [vwait]
when operating on array elements.
BUGFIX: fix an access violation in the Eagle Package for Tcl (Garuda) while the
Tcl library is being finalized via the TclWrapper class.
BUGFIX: when creating an IntPtr instance to represent an address based on an
integer value, always use the 64-bit overload, not the 32-bit one.
BUGFIX: fix variable event for the interpreter not getting reset when using
[vwait] on a variable that does not yet exist after using [vwait] on a
variable that does exist.
BUGFIX: in the TestScriptStream method of the Eagle._Tests.Default class, the
end-of-line sequence used must start with a carriage-return, even on
non-Windows systems. this allows the test basic-1.47 to run and pass
on non-Windows systems.
BUGFIX: for test exec-1.1, do not attempt to access the ::env(ComSpec) variable
on systems where it may not exist (e.g. Unix).
BUGFIX: when the Eagle test package is loaded by native Tcl, make sure the test
constraint overrides are copied over to the Tcltest package.
BUGFIX: fix error message returned by the [tcl load] command when the Tcl_Init
function fails.
BUGFIX: make sure all the variables used by the test prologue and epilogue are
unset prior to using any of them.
REFACTOR: update Fossil tool w/source to version 2b56641fb941a72a.
REFACTOR: improve the [checkForTiming] script library helper procedure to allow
it to check the timing accuracy of queued scripts as well.
REFACTOR: for test socket-1.3, work around SF bug #3545363 (i.e. random hangs
when using [socket]) by forcing the use of IPv4.
REFACTOR: for now, disable test socket-2.2 when running on Mono; otherwise, the
test suite may hang.
REFACTOR: enhance the [parray] script library procedure to allow matching modes
other than glob to be used. also, modify the [pdict] script library
procedure to pretty print the passed dictionary.
REFACTOR: the CommandCallback class now formally implements the IGetInterpreter
interface.
REFACTOR: add AliasFlags property to the IAliasData interface.
REFACTOR: cleanup and modularize the title building/handling logic in the stock
interpreter hosts. also, fix a cosmetic issue with spacing.
REFACTOR: *BREAKING CHANGE* add InteractiveMode property to the
IInteractiveManager interface and modify the #tclsh interactive
command to set this property based on the current interactive
evaluation mode.
REFACTOR: *BREAKING CHANGE* add RefreshTitle method to the IInteractiveHost
interface. this method may be called to inform the interpreter host
that its title may need to be updated.
REFACTOR: *BREAKING CHANGE* move all alias-related values from the CommandFlags
enumeration to the new AliasFlags enumeration.
REFACTOR: *BREAKING CHANGE* the underlying types for the IVariable.ArrayValue,
ITraceInfo.OldValues, and ITraceInfo.NewValues properties have been
changed from ObjectDictionary to ElementDictionary.
REFACTOR: *BREAKING CHANGE* modify the GetDateTime2 method of the Value class to
accept an optional format argument (i.e. it may be null). also, make
the remaining public GetDateTime method overload private.
FEATURE: add -aliasreference option to all commands that make use of the
MarshalOps.FixupByRefArguments and/or MarshalOps.FixupReturnValue
methods, including [object create], [object invoke], etc.
FEATURE: add -format option to the [clock scan] command (COMPAT: Tcl).
FEATURE: add [uri upload] sub-command to allow uploading of name/value pairs or
files, synchronously or asynchronously.
FEATURE: add -inline option to the [uri download] command to support downloading
data and returning it without using a file. by default, the encoding
is UTF-8; it may be changed by specifying an encoding name using the
second argument (i.e. the argument that would have been the file name).
FEATURE: add -evaluateEncoded command line option to allow one or more base64
encoded strings to be evaluated. this is useful for strings that may
contain complex quoting constructs that would otherwise conflict with
the operating system command line quoting.
FEATURE: *BREAKING CHANGE* add aliasReference parameter to the several AddObject
method overloads in the IScriptThread interface.
FEATURE: *BREAKING CHANGE* add aliasReference parameter to the several overloads
of the Utility.FixupReturnValue method.
************************* Beta 1.0.4567.36231 RELEASE *************************
BUGFIX: fix issue with [interp alias] being unable to create linked aliases
between two interpreters if the names just so happen to be the same.
REFACTOR: modify [calculateBogoCops] script library procedure so that it can
work in native Tcl as well.
REFACTOR: improve error messages returned by the [object foreach] sub-command
when the call to the GetEnumerator method on the object throws an
exception.
REFACTOR: for the [calculateBogoCops] and [evalWithTimeout] script library
procedures in the test package, make sure the [after] event queue is
empty.
REFACTOR: add an overload of the Script.Create method that takes one parameter
(i.e. the script to be evaluated).
REFACTOR: the NullEnumerator class should follow the IDisposable pattern.
REFACTOR: *BREAKING CHANGE* rename [info id] sub-command to [info identifier].
also, modify the GetIdentifier method of the IEntityManager interface
to support CallFrame, IExecute, Host, and Resolve identifier kinds.
FEATURE: add experimental ScriptEnumerator class to allow implementation of the
IEnumerator interface via three scripts (i.e. one per method).
FEATURE: keep count of all entities executed by the engine. also, modify the
IFunction and IOperator interfaces to add the IUsageData interface.
FEATURE: add [namespace qualifiers], [namespace tail], and [namespace which]
sub-commands. for now, only the global namespace is supported.
FEATURE: add -typeidentity option to the [object invoke] sub-command to return
the type of any object. also, add TypeIdentity method to the Utility
class.
FEATURE: add Yield method to the IEventManager and IEngineHost interfaces.
************************* Beta 1.0.4511.33815 RELEASE *************************
BUGFIX: *MAJOR* fix incorrect parsing of the "?" conditional expression operator
that can cause some nested conditional expression constructs to produce
incorrect results.
BUGFIX: a non-static method must be used when the core marshaller attempts to
automatically choose one of the supported delegates types (for a command
callback); otherwise, delegate types with exactly one argument may match
up incorrectly with the ThreadStart delegate type.
BUGFIX: all primary entry points into the engine should combine their flags with
those of the interpreter in a consistent manner.
BUGFIX: the [info commands] sub-command should show hidden commands for "unsafe"
interpreters when the -hidden flag is used.
BUGFIX: add missing host type test constraints to tests host-1.*.
BUGFIX: support the NoColor environment variable without the need to load a host
profile.
BUGFIX: modify test remotingServer-1.3 to prevent it from creating a variable.
this is necessary because the target interpreter may be different from
the current one.
BUGFIX: only use the String.Compare method overload that takes a cultureInfo
parameter when compiled for the .NET Framework 2.0 SP2 or higher.
BUGFIX: the updater project needs to detect when it is being compiled for the
.NET Framework 4.0.
BUGFIX: fix error message for the #tclshrc interactive command when the file
cannot be found.
BUGFIX: the test benchmark-1.14 should save and restore the current directory.
BUGFIX: fix intermittent race condition in test object-10.24 that can result in
the interpreter for the created script thread being disposed prior to
the Send method being called.
BUGFIX: honor the ForceSoftEof flag and perform end-of-line translations in the
Engine.ReadScriptStream method when reading a predetermined number of
characters.
BUGFIX: add missing ObjectGroup attributes to various [expr] functions.
BUGFIX: when handling errors during command line processing, report the original
argument as it was passed to the shell. also, prevent any command line
argument consisting only of "-" or "/" characters from being matched.
BUGFIX: always set the name of threads created by the ScriptThread class, even
when they will not be started upon creation.
BUGFIX: add special handling for test constraints needed when running the test
suite in Tcl (e.g. the NETWORK compile-time option).
BUGFIX: *BREAKING CHANGE* for [info script], stop automatically resolving full
paths for script files that may not exist on the local file system.
REFACTOR: prevent tests expr-3.99, function-2.16, function-3.1, parser-20.*,
parser-2.1, and parser-5.* from running on Mono due to differences in
stack size and the string representations of flag Enum values. also,
fork test clock-1.1 to account for formatting differences in locale
specific long date and time between the DateTime framework class and
the GetDateFormat function of the Win32 API.
REFACTOR: allow boolean strings (e.g. false, true, etc) to be used for index
arguments to any commands that use the Value.GetIndex method.
REFACTOR: cleanup style issues in the expression handling classes. also, check
the expression and parse state objects upon entry into each method.
REFACTOR: add end-of-options support to the [uri create] sub-command.
REFACTOR: add GetBaseException method to the RuntimeOps class and modify the
Engine class to call it instead of performing the same logic inline.
REFACTOR: revise how the default capacity for StringBuilder objects created by
the core library is calculated.
REFACTOR: update Fossil tool w/source to version b22cc4eb73c34401.
REFACTOR: add support for NeverGC and NeverWaitForGC environment variables to
prevent the core library from manually collecting garbage and/or
waiting for pending finalizers to finish, respectively. also, add
another optional boolean argument to the [debug collect] command to
override this new behavior.
REFACTOR: make test interp-1.12 clear the cached interpreter reference from the
core host, in case a core host derived class has external references
that may keep it alive, which would prevent the parent interpreter
from being disposed via the GC (i.e. which is the whole point of the
test).
REFACTOR: enhance ability to troubleshoot the batch tools that call other batch
tools using the CALL command and/or use the PUSHD/POPD commands.
REFACTOR: enhance the release archive verification tool to make it more useful
to other projects.
REFACTOR: adjust the regular expression pattern for the directory extracted from
the fossil info command result used by the test prologue. this seems
to be necessary when running on Mono due to differences in the regular
expression implementations.
REFACTOR: in the default implementation of the WriteBox method, make sure to
validate the configured box character set.
REFACTOR: remove GetCallOptions and GetOptions methods from the implementation
of the [library] command.
REFACTOR: mark [expr] ParseState objects to be cached as immutable.
REFACTOR: make sure the interpreter field of the ScriptThread class is set to
null prior to actually disposing of the interpreter it refers to.
REFACTOR: *PERF* adjust the initial capacity calculations for the StringBuilder
objects used in the Parser.SplitList, Parser.Quote, and Parser.Brace
methods to improve their performance.
REFACTOR: *BREAKING CHANGE* add boolean resolve parameter and fullPath output
parameter to the GetStream method of the IEngineHost interface. when
the resolve parameter is non-zero, the full path for the stream, if
applicable, should be placed in the fullPath output parameter by the
interpreter host. if the interpreter host cannot determine the full
path for requested stream, the fullPath output parameter should be set
to null instead.
REFACTOR: *BREAKING CHANGE* rename the NoPolicies engine flag to NoPolicy.
REFACTOR: *BREAKING CHANGE* revise how the Variant class converts its values to
the DateTime type. the default IFormatProvider, DateTimeStyles, and
DateTimeKind should all be used. also, move the DefaultDateTimeKind
variable from the RuntimeOps class to the Value class.
REFACTOR: *BREAKING CHANGE* add IsDisposable property to IWrapper interface.
this property is never allowed to throw an ObjectDisposedException
because it is used by the CheckDisposed method of the default wrapper
to determine if an ObjectDisposedException should be thrown when the
wrapper itself is accessed after having been disposed. these changes
prevent an Interpreter that is being disposed via the finalizer from
generating superfluous exceptions.
REFACTOR: *BREAKING CHANGE* rename the plugin flags Unsafe, Native, and Safe to
UnsafeCode, NativeCode, SafeCommands, respectively. also, rename the
command flag Native to NativeCode.
REFACTOR: *BREAKING CHANGE* add verbose parameter to the RefreshAutoPathList
method of the Utility class.
FEATURE: add WaitForStart method to the IScriptThread interface to allow callers
to wait for the thread event loop to start, optionally with a timeout.
FEATURE: add tqputs and tqlog script library helper procedures to allow test log
output to be queued until the test log file has been setup by the test
package.
FEATURE: add removeConstraint script library helper procedure to test package.
FEATURE: add BooleanToInteger expression flag to enable automatic conversion of
boolean results from the expression engine to their equivalent integer
values.
FEATURE: support the AsyncCallback delegate type in the core marshaller. this
allows scripts to more easily interact with the various asynchronous
methods provided by the .NET Framework.
FEATURE: add DEBUG_TRACE and DEBUG_WRITE compile-time options to allow most of
the non-essential runtime diagnostic messages to be disabled. also,
revise all usage of the Debug and Trace framework classes by the core
library.
FEATURE: add ShouldTraceToHost method to the Utility class and the TraceToHost
interpreter flag to support third-party code sending trace listener
output to the interpreter host. also, add ArrayEquals method to the
Utility class to allow third-party applications and plugins to easily
compare two byte arrays for equality.
FEATURE: support setting and/or resetting the argc and argv script variables
when the supplied argument array is null by adding an overload of the
SetArguments method to the IInterpreter interface. also, support the
same semantics during interpreter creation using a new CreateFlags
value named SetArguments.
FEATURE: add -traceToHost command line option and TraceToHost environment
variable to enable writing trace listener output to the interpreter
host. this option is currently supported by custom shells only. the
default shell does not make use of the interpreter flag set by this
option.
FEATURE: add two optional boolean arguments to the [info body] sub-command to
enable formatting of the returned body with its corresponding line
numbers.
FEATURE: add -core option to the [info commands] sub-command to limit the list
of returned commands to only those provided by the core library.
FEATURE: add -stdin option to the [exec] command to have the value of specified
variable written to the standard input stream of the created process.
FEATURE: add -nocommands, -nofunctions, -nopolicies, -notraces, -noprovide,
-noresources, and -noisolated options to the [load] command to allow
for fine-grained control over the plugin loading process.
FEATURE: add -callback and -callbackflags options to the [uri download]
sub-command to allow downloads to be completed asynchronously. also,
add -trusted option to enable trusting the custom software updates SSL
certificate for the duration of synchronous downloads. the -trusted
option cannot be used with the -callback option and the -callbackflags
option is ignored if the -callback option itself is not present.
FEATURE: add flags math function to allow the interpreter expression flags to be
modified while an expression is being evaluated. this function cannot
be used by a "safe" interpreter.
FEATURE: support loading managed assemblies via an opaque object handle that
refers to a readable and seekable Stream object.
FEATURE: *BREAKING CHANGE* make the [invoke] command compatible with TIP #284.
FEATURE: *BREAKING CHANGE* add FunctionFlags attribute and use it to mark all
included functions as "safe", "unsafe", and/or "standard". the script
engine will enforce the "safe" and "unsafe" flags for functions unless
the NoSafeFunction engine flag is used. also, add -safe and -unsafe
options to the [info functions] sub-command. add two overloads of the
GetFunctionFlags method to the Utility class.
************************* Beta 1.0.4472.20308 RELEASE *************************
BUGFIX: *MAJOR* fix integral type promotion rules with wide integers in the
expression parser and type conversion subsystems.
BUGFIX: *MAJOR* fix formatted event names not being unique enough, which could
result in race-condition like behavior for certain operations involving
the Event, ScriptThread, and TclThread classes.
BUGFIX: the string representations for the float (System.Single) and double
(System.Double) versions of the positive and negative infinity values
should be obtained using the invariant culture.
BUGFIX: the signed-byte type should not be listed in the list of non-integral
types maintained by the Value class.
BUGFIX: check the return code prior to evaluating the pre-init script, if any.
BUGFIX: in the [configureTcltest] procedure, only try to create the aliases to
the Tcltest shim commands if they are not already present.
BUGFIX: for test garuda-1.2, make sure the active test configuration and suffix
are passed into the child test shell so that Garuda can locate the Eagle
core library in non-default build configurations.
BUGFIX: stop returning the wrong full path name for scripts found by the core
host on the file system.
BUGFIX: fix issue with [source] command argument handling related to file names
that look like options.
BUGFIX: prevent ArgumentException from being thrown by [string map] when there
are duplicate entries in the map.
BUGFIX: avoid throwing ObjectDisposedException from inside the Dispose method of
the Interpreter class (EventManager).
BUGFIX: avoid throwing ObjectDisposedException from inside the ShellMainCore
method of the Interpreter class.
BUGFIX: make sure calls to PushActiveInterpreter and PopActiveInterpreter match
in the Interpreter.Create method, even when exceptions are thrown.
BUGFIX: add missing compile option test constraints to tests basic-1.36,
debug-1.3, and object-2.8.
BUGFIX: add missing [error] command calls in tests interp-1.10 and interp-1.11.
BUGFIX: when running on Mono, skip the hack for Mono bug #471359 if the wanted
type is System.Object because everything is assignable to System.Object
and we always want to lookup opaque object handles.
BUGFIX: for tests basic-1.38, object-14.7, and object-14.8, use the correct
option name to control the expected return codes (e.g. use -returnCodes
instead of -returnCode).
BUGFIX: consistently use [info exists] when checking tcl_platform for the test
constraints.
BUGFIX: add the correct culture and compile-time option test constraints when
running the test suite in native Tcl.
BUGFIX: for test object-4.10, avoid a superfluous warning from candle.exe when
using WiX version 3.5 or higher with an Eagle library compiled for WiX
version 3.0.
BUGFIX: in the release preparation tool, always avoid trying to delete the log
file that is currently in use.
BUGFIX: for the interactive #cmd (and related) commands, skip the command name
itself when building the argument string to pass to the child shell.
also, use the correct (engine) event flags while waiting for the child
shell to exit.
BUGFIX: make the interactive loop tolerant of null command input. also, add
comments to clarify the processing of overridden interactive commands.
BUGFIX: fix compilation issues with the HISTORY compile-time option when the
core library is being compiled with the THREADING compile-time option.
BUGFIX: the debugger variable in the Interpreter class should be private. also,
make sure all context members are reset during disposal whether or not
the core library was compiled with the THREADING compile-time option.
BUGFIX: synchronize access to the private static data in the NativeOps class
when compiled for Unix. also, generally cleanup the code.
BUGFIX: when calling the GetScript, GetStream, and QueueWorkItem methods of the
IEngineHost interface, check if the interpreter host is in an isolated
application domain and fallback to using the saved core host instead in
that case. this is done to avoid problems when marshalling types that
are not easily serializable between application domains.
REFACTOR: add support for the UInt16, UInt32, and UInt64 types to the Number
and Variant classes.
REFACTOR: make tests library-2.1, lsort-9.2, lsort-9.3, lsort-9.4, lsort-9.5,
and lsort-9.7 more resilient to differences in runtime implementation
details.
REFACTOR: change how BuildInfo.cs, PatchLevel.cs, and pkgVersion.h files are
handled by the release preparation tool to make it more flexible.
REFACTOR: move some of the "synthetic" test constraints dealing with native Tcl
to better homes within the test constraints package. also, make sure
the global "no" array is obeyed when adding these test constraints.
REFACTOR: for now, stop using the IInterpreter interface for the IObjectType
interface.
REFACTOR: add support for the test_statistics global variable to keep track of
certain statistical information about the current test run. for now,
this variable is not used by the test suite; however, it will be used
in the near future.
REFACTOR: add NoTrusted and NoVerified environment variables to support the
ability to disable assembly file trust checking and assembly strong
name signature verification, respectively, during the interpreter
creation process.
REFACTOR: add IsDefaultAppDomain method to the RuntimeOps and Utility classes.
REFACTOR: cleanup and unify naming of all threads created by and/or used with
the core library.
REFACTOR: by default, skip waiting for all pending finalizers to complete when
collecting garbage if called from a non-default application domain
context. this appears to be necessary due to a deadlock in the GC
when using remoting from a thread that contains a user-interface and
that happens to be running in a non-default application domain. the
deadlock be may be limited to circumstances where the user-interface
thread is synchronously waiting for a call into the core library to
complete (and is therefore unable to service the GC because it is
blocked in a synchronous call to GetMessage, etc?).
REFACTOR: add test constraint for checking the current test configuration.
REFACTOR: expose the four argument overload of the Value.GetInteger2 method.
REFACTOR: modify how the test suite handles the -preTest and -postTest command
line options. now, elements of the new test_script global variable
are used instead of using the test_flags elements directly.
REFACTOR: rename the FormatOps.Process method to FormatOps.ProcessName.
REFACTOR: export the machineToPlatform script library procedure from the test
package to Tcl scripts.
REFACTOR: rename all the local variables and parameters of the CreateFlags type
from flags to createFlags.
REFACTOR: display the LibraryPath, AutoPathList, and ScriptFlags properties of
the interpreter in the default host output.
REFACTOR: modify the EagleCopyConfigurations and EagleCleanConfigurations build
targets to use the OutputPath build property and then rename them to
CopyConfigurations and CleanConfigurations, respectively.
REFACTOR: modify the CopyLibrary build target to recursively copy the library
files of the project while maintaining their directory structure.
also, modify the EagleCleanPackage build target to handle cleaning the
copied files recursively.
REFACTOR: modify the EventManager.WaitForEventEnqueued method to more closely
follow the pattern of the EventManager.WaitForEmptyQueue method.
REFACTOR: modify the EventManager.HandleBackgroundError method to check if the
interpreter has been disposed (i.e. so that none of its callers,
including the EventManager.ProcessEvents method, need to perform this
check anymore).
REFACTOR: rename and revise the semantics of the TraceMethodName methods of the
FormatOps class.
REFACTOR: add commercial plugins to the binary archive exclusion lists.
REFACTOR: more code cleanup for the included BinaryEditor build tool.
REFACTOR: add INTERACTIVE_COMMANDS compile-time option to allow all interactive
commands to be enabled (or disabled).
REFACTOR: move code for the interactive #check command out of the Interpreter
class and into the RuntimeOps class.
REFACTOR: move all interactive command implementations out of the Interpreter
class into the InteractiveOps class.
REFACTOR: move various private static members out of the Interpreter class to
the EntityOps, RuntimeOps, SetupOps, and SocketOps classes.
REFACTOR: modify release preparation tool to avoid using the reserved character
escaping hacks that were necessary when constructing the various test
suite arguments. also, always rely on the targets file containing the
build types and their associated build properties instead of embedding
those build properties in the release preparation tool itself.
REFACTOR: improve compatibility with custom command processors by using __ECHO
instead of _ECHO in the batch tools. skip the tests bigDirectory-1.*
when not using the default Windows Command Processor (i.e. cmd.exe).
REFACTOR: add support for the upcoming WiX version 3.6 and Mono version 2.12.
REFACTOR: revise the semantics for figuring out the default stack size for new
threads, especially on Unix or when running on Mono.
REFACTOR: replace all usage of the DateTime.Now and DateTime.UtcNow properties
with the TimeOps.GetNow and TimeOps.GetUtcNow methods, respectively.
REFACTOR: revise how the default value of the Quiet property is computed during
the creation of interpreters (i.e. it used to be hard-coded).
REFACTOR: stop setting the global ThrowOnDisposed flag from the NativePackage.
REFACTOR: allow the EagleTest package to load successfully in both safe Tcl and
Eagle interpreters.
REFACTOR: for test object-2.3, use the newly created TestToHexadecimalString
wrapper method instead of using the ArrayOps class directly.
REFACTOR: for the [test2] command, when test isolation is enabled, treat any
application domain or interpreter creation errors as a test failure.
REFACTOR: in the default host, revise display formatting for the CultureInfo
property of the interpreter.
REFACTOR: in the updater, revise display formatting for CultureInfo objects.
REFACTOR: tweak the updater to work around the broken WinForms sizing on Mono.
REFACTOR: remove unused build property from the release preparation tool.
REFACTOR: modify the timing loop in the [time] command.
REFACTOR: add values to the ExecutionPolicy enumeration to support more robust
X509 certificate checking, XSD schema validation, and several modes.
REFACTOR: per request, update all copyright dates to 2012.
REFACTOR: use the new [tresult] script library procedure to report the overall
test result messages in the test epilogue and elsewhere.
REFACTOR: support overriding the VERBOSE compile-time option based on the
EagleVerbose build property.
REFACTOR: add the DefaultQuiet, GetDefaultQuiet, and ShouldBeQuiet values to the
control output of the default host.
REFACTOR: update WinRAR support in build tools to version 4.10.
REFACTOR: enhance the test path initialization in the EagleTest package in order
to better support the embedded script library scenario.
REFACTOR: search architecture and platform specific directories for sqlite3.dll
in the test prologue, if necessary.
REFACTOR: add ScriptFlags property to the IInterpreter interface to control how
the engine searches for scripts that cannot be found by their path
information alone. also, add support for the new property to both the
InterpreterHelper and InterpreterSettings classes.
REFACTOR: in the Engine.GetScriptFile method, make sure the interpreter passed
in is valid. also, use the new ScriptFlags interpreter property to
control exactly how the search for the script is conducted.
REFACTOR: resize the button text in the updater user-interface. allow the core
directory to be retargeted at runtime. report the number of bytes and
characters received in the HTTP response.
REFACTOR: modify the [namespace inscope] command to use a tracking call frame.
REFACTOR: add ResolveData property to the ICallFrame interface for use by custom
resolvers only. also, add GetCallFrame method to the IResolveManager
interface.
REFACTOR: move all the OptionDictionary building static methods for the [object]
command to the RuntimeOps class.
REFACTOR: revise plugin resource handling done by the interpreter and move the
methods responsible to the RuntimeOps class.
REFACTOR: add NoBinder flag to the ObjectFlags enumeration to have the core
marshaller skip querying the Binder property of the interpreter.
REFACTOR: update Fossil tool w/source to version a15214e83c3adb3e.
REFACTOR: update MsgGen tool w/source (from the WiX project) to beta version
3.6.2221.0. also, update the core library components to accommodate
all the changes.
REFACTOR: *PERF* slight performance improvement to Parser.ScanElement method.
REFACTOR: *PERF* only track non-[source] script locations if a special flag is
set in the interpreter.
REFACTOR: *BREAKING CHANGE* add IExecute property to the ICallFrame interface.
REFACTOR: *BREAKING CHANGE* rename the Eagle library and test packages to allow
for future package hierarchy changes.
REFACTOR: *BREAKING CHANGE* add ICallFrame parameter to the GetIExecute method
of the IResolve interface.
REFACTOR: *BREAKING CHANGE* change the utc parameter of the Value.GetDateTime*
methods to DateTimeKind.
REFACTOR: *BREAKING CHANGE* add GetString method to the IPlugin interface.
technically, this is a breaking change; however, for all plugins that
derive from the default plugin, implementing this new method is purely
optional because the base class provides a default implementation that
simply does nothing.
REFACTOR: *BREAKING CHANGE* add both OptionDictionary and IClientData parameters
and/or members to the ChangeTypeCallback and ToStringCallback delegate
types and to the IChangeTypeData interface. also, modify the various
InvokeChangeTypeCallback, InvokeToStringCallback, and ToString methods
of the IScriptBinder interface with similar changes.
REFACTOR: *BREAKING CHANGE* revise semantics of the command line help options.
also, generally improve the interactive help.
REFACTOR: *BREAKING CHANGE* add an interpreter parameter to the About method of
the IPlugin interface.
REFACTOR: *BREAKING CHANGE* add name (input) and text (output) parameters to all
the Engine.ReadScriptStream method overloads to support stream policy
checking. also, add a name parameter to all the Engine.EvaluateStream
and Engine.SubstituteStream method overloads in addition to all the
EvaluateStream, EvaluateGlobalStream, SubstituteStream, and
SubstituteGlobalStream method overloads of the IEngineManager
interface. finally, unify the now common TextReader reading logic
into a new method named ReadScriptTextReader.
REFACTOR: *BREAKING CHANGE* modify the internals of the Engine.ReadScriptStream
method to be more consistent with the Engine.ReadScriptFile method.
by default, the Engine.ReadScriptStream method will now read beyond a
soft end-of-file. the old (legacy) behavior can be restored by using
the ForceSoftEof engine flag when calling the method. also, modify
the Engine.ReadScriptFile method to support policy checking after the
content of the file has been read.
REFACTOR: *BREAKING CHANGE* modify the behavior of [info script] with an empty
string argument. it will now reset the script file name to null.
REFACTOR: *BREAKING CHANGE* modify semantics for the Copy method of the Result
class.
REFACTOR: *BREAKING CHANGE* for the [sql execute] command, rename the rarely
used -type option to -commandtype.
FEATURE: add MatchPlugin method to the IEntityManager interface.
FEATURE: add ICacheManager interface, which is implemented by the Interpreter
class. the ClearCaches method on this interface allows one or more of
the internal caches for the interpreter instance to be cleared by the
caller. also, allow the internal caches to be disabled via the cache
flags field of the interpreter.
FEATURE: add -debug option to the [exec] command to help troubleshoot issues
encountered with executing external commands.
FEATURE: add full support for returning an IDataReader opaque object handle from
the [sql execute] command when the -execute option is set to Reader and
the -format option is set to DataReader (which is a newly added value).
FEATURE: add FormatOption method to the Option class.
FEATURE: add a new build target named CopyArchitectureExternals to copy the
architecture specific external files to the build output directory.
FEATURE: display the static NewHostCallback property of the Interpreter class
from the WriteEngineInfo method of the default host.
FEATURE: add InteractiveLoopCallback property to the IDebugManager interface to
allow the debugger to call into a custom interactive loop whenever
breaking into debug mode is necessary. also, display this property in
the default host output when called in the same application domain.
FEATURE: also search for library (and other) scripts using the interpreter to
attempt and resolve them via the various resource managers of all the
loaded plugins.
FEATURE: add Text, HashValue, and HashAlgorithm properties to the IPolicyContext
interface. also, add StreamDecision property to the ISecurityManager
interfaces.
FEATURE: add ExtractPolicyContextAndText method to the Utility class to support
custom stream policy implementations. also, add GetAssemblyDescription
method to query the description attribute of the specified assembly.
FEATURE: add Validate method to the Utility class to allow third-party plugins
access to simple XSD schema validation. also, add FormatWrapOrNull
method overloads to the Utility class to help format diagnostic output.
FEATURE: add the release archive verification tool to the source distribution.
FEATURE: modify the interactive #show command to optionally show empty content.
FEATURE: add combineFlags script library helper procedure to combine two flags
enumeration values into a string suitable for parsing by Enum.Parse.
FEATURE: support embedding an extra user-defined resource in the core library.
FEATURE: add -full option to the [clock format] command, for use with the -iso
option, to return an ISO8601 DateTime string that includes the number
of fractional seconds and the UTC indicator.
FEATURE: add NowCallback property to the IEventManager interface to allow the
concept of the current time to be overridden (i.e. to support virtual
time).
FEATURE: add DemandStrongName method to the IInterpreter interface to force a
security demand for the StrongNameIdentityPermission based on the
strong name key that was used to sign the Eagle core library.
FEATURE: add DemandCertificate method to the IInterpreter interface to force a
security demand for the PublisherIdentityPermission based on the X509
certificate that was used to sign the Eagle core library.
FEATURE: add test constraint checking for Visual Studio 2005, 2008, and 2010.
FEATURE: create a targets file that contains the necessary build properties for
all the standard (both official and unofficial) build types.
FEATURE: add -reconfigure command line option to recreate the interpreter based
on the specified interpreter settings file.
FEATURE: add DefaultQuiet environment variable to automatically enable quiet
mode for all interpreters created after it has been set.
FEATURE: add -verifiedonly and -trustedonly options to the [load] command to
check and enforce the strong name signature and Authenticode signatures
and certificates on the plugin file prior to loading it, respectively.
FEATURE: add [debug onexit] command to toggle whether or not the script debugger
is entered upon exiting an engine context.
FEATURE: add [file objectid] command to return the object Id of the specified
file or directory, if available.
FEATURE: add #tclshrc interactive command to launch the configured text editor
to edit the configured shell startup file.
FEATURE: add #scflags interactive command to get or set the script flags for the
interactive interpreter.
FEATURE: *BREAKING CHANGE* add ScriptFlags parameter to the Interpreter.Create
method overload that previously took 16 parameters (i.e. the one in
which every possible creation parameter was fully specified).
FEATURE: *BREAKING CHANGE* add an Options method to the IPlugin interface.
technically, this is a breaking change; however, for all plugins that
derive from the default plugin, implementing this new method is purely
optional because the base class provides a default implementation that
simply does nothing. also, enhance the [info plugin] sub-command to
include the options returned by it.
FEATURE: *BREAKING CHANGE* change the [info source] command and allow it to take
two, three, or four arguments. when invoked with two arguments, it
will work just as before. when invoked with three arguments, it will
now return only the file name of the specified procedure. when invoked
with four arguments, it will either return only the file name (if the
value of the fourth argument is zero) or all available information
about the source location of the specified procedure (if the value of
the fourth argument is non-zero).
************************* Beta 1.0.4375.38149 RELEASE *************************
BUGFIX: in the updater, recognize the literal string "invariant" to represent
the invariant culture.
REFACTOR: update Fossil tool w/source to version cb52442608ce154d.
************************* Beta 1.0.4375.30934 RELEASE *************************
BUGFIX: the ObjectTraceCallback method should manage reference counts for array
element names that represent opaque object handles, please see ticket
#b31de3de14.
BUGFIX: the [array set] command should fire traces so that reference counts for
opaque object handles can be managed, please see ticket #ba63bb559a.
BUGFIX: the [unset -nocomplain] command should work on the global env array.
BUGFIX: make sure that opaque object handles contained in the global env array
are handled properly.
BUGFIX: the traces for an individual variable, if any, must execute before those
that are for the entire interpreter.
BUGFIX: fix compilation issues with the Eagle Package for Tcl (Garuda) on 64-bit
platforms.
BUGFIX: allow the Eagle Package for Tcl (Garuda) tests to pass on machines where
the Tk package is not available.
BUGFIX: make sure to use the -success option to [exec] throughout the entire
test suite, wherever applicable.
BUGFIX: in the SetExceptionErrorCode method, the syncRoot field must be used
instead of the SyncRoot property just in case the interpreter has been
disposed. also, skip setting the error code if the interpreter has been
disposed or deleted.
BUGFIX: release ITypeInfo COM object references via Marshal.ReleaseComObject.
BUGFIX: always check the return value of the various Engine.CreateThread method
overloads to make sure the thread was created successfully.
BUGFIX: prevent infinite recursion in the MarshalOps.IsSimpleListType method if
a type contains generic arguments that refer to itself. also, rename
the method to IsSimpleGenericType.
BUGFIX: in the core marshaller, implicit conversions of a generic object to a
string should be restricted to those deriving from the List<T> type.
BUGFIX: stop assuming that package version numbers can be parsed correctly as a
number in double format.
BUGFIX: when creating an interpreter, never automatically fallback to using the
current culture; instead, use the invariant culture.
BUGFIX: adjust the wait slop microseconds value to half the maximum wait time;
otherwise, the potential exists for the actual wait time to exceed the
requested wait time by an excessive amount. also, adjust the wait slop
divisor to match up with the minimum wait time.
BUGFIX: correct argument lists for String.Format used by various DebugTrace
method calls in the Engine and Interpreter classes. without this fix,
an unhandled exception may be thrown if another exception is raised and
caught during certain method calls into the Interpreter and/or Engine
classes.
BUGFIX: stop the settings.xml test file being excluded from the binary release
archives.
BUGFIX: harden percent calculations in the runAllTests script library procedure
against divide by zero errors when there are no non-skipped test files.
BUGFIX: when building package paths, skip adding the package version unless the
package name itself is also being used (i.e. it is not null or empty).
BUGFIX: resolve various style and correctness issues as revealed by FxCop.
BUGFIX: add missing compile option test constraints for Windows. also, correct
regular expression patterns for various test results where the escaped
period should have been used (i.e. to match a literal period).
BUGFIX: in the InterruptCancelThread method, make sure to always clear the
cancelThread field of the interpreter if the thread is no longer alive.
also, in the CancelThreadStart method, do not blindly catch exceptions,
like ThreadInterruptedException, while sleeping.
BUGFIX: *BREAKING CHANGE* when running in an isolated application domain, use
the directory containing the Eagle core library for the binary path to
be used by scripts (e.g. when locating packages, [info binary], etc).
BUGFIX: *BREAKING CHANGE* raise an error when an attempt is made to read from an
undefined write-only variable.
REFACTOR: adjust the test prologue to allow the checking for test suite files,
fields, and properties to be skipped.
REFACTOR: add a Condition attribute to most calls of the Delete task used by the
custom build targets. this is not strictly required, even when there
are no files; however, it makes the intent clearer.
REFACTOR: add several overloads of the IErrorManager.CopyErrorInformation method
to support different result handling semantics.
REFACTOR: revise build infrastructure to more easily support its use by external
projects. these changes are primarily focused on the location and
name of the strong name key files used for signing output assemblies.
REFACTOR: query the ITypeInfo of a COM object using both the IProvideClassInfo
and IDispatch interfaces and allow either one to match the interface
type name being sought.
REFACTOR: when running on Mono, do not use a default stack size of zero for new
threads as it seems to cause problems for some older versions of Mono,
preventing them from creating the thread.
REFACTOR: the [info culture] command and the eagle_platform(culture) variable
will no longer use an empty string to represent the invariant culture.
REFACTOR: add detailed comments in the all.eagle file used to run the test suite
for the core library.
REFACTOR: modify the compileCSharp script library procedure to add the DEBUG and
TRACE defines to the compilation options if the core library was also
compiled with them.
REFACTOR: fix error checking when attempting to create directories in the batch
tools.
REFACTOR: add Fossil versionable setting files for the file patterns to ignore
when detecting extra files and/or files that contain carriage-returns.
REFACTOR: exclude more files generated automatically by Visual Studio 2010 and
Komodo 6.x from the source release archives.
REFACTOR: improve source location tracking for all tokens created by the script
and expression parsers. change the active script file name stack to
an active script location stack. for Argument objects, keep track of
their original source location. the IScript interface now inherits
from the IScriptLocation interface. add a ViaSource property to the
IScriptLocation interface to keep track of whether the source location
was pushed because of the [source] command or some similar mechanism.
REFACTOR: report counts of test files that failed and/or leaked when reporting
the percent of test files completed.
REFACTOR: *BREAKING CHANGE* modify the compileCSharp script library procedure to
accept arguments to enable in-memory assembly generation, debug symbol
generation, and strict compiler error checking (i.e. treat warnings as
errors).
REFACTOR: *BREAKING CHANGE* revise how the opaque database object handles
returned by the [sql] command are constructed.
REFACTOR: *BREAKING CHANGE* add an IHost parameter to the ScriptThread.Create
method.
REFACTOR: *BREAKING CHANGE* create a formal interface named IScriptThread for
use with the ScriptThread class. this is considered a breaking change
because using the ScriptThread class type itself for field, property,
and parameter declarations is now formally deprecated.
FEATURE: add -vendorPath command line option to set the vendor path environment
variable to the specified value.
FEATURE: add SetVariableLink method to the IVariableManager interface. this new
method is used to create variables in the interpreter linked to a field
or a non-indexed property of an instance or class. conceptually, this
feature is very similar to the concept of linked variables as they are
implemented by native Tcl.
FEATURE: for the [sql execute] command, add a -valueflags option and support
optional per-parameter value flags. also, skip trying to process empty
strings for the paramType and paramSize fields of the command parameter
arguments.
FEATURE: add the getReturnType and getDefaultValue script library procedures to
return the effective return type for an object member and the default
value for a given type, respectively.
FEATURE: add [debug procedureflags] command to return or set the flags for the
specified procedure.
FEATURE: add [info windows] command to return the list of top-level windows on
the current desktop, optionally matching the specified pattern.
FEATURE: add Visual Studio 2008/2010 settings files to the source repository
suitable for working with the official NuGet.org and SymbolSource.org
packages as well as the .NET Framework source code itself.
FEATURE: add -type option to the [object members] command to override the type
used when looking up members.
FEATURE: add NewHostCallback static property to the Interpreter class to allow
external applications and plugins to provide custom interpreter host
implementations if one is not explicitly specified by the caller during
the interpreter creation process.
FEATURE: add -clientdata and -data options to the [load] and [unload] commands
to control the IClientData instance passed to the plugin constructor
and/or the Initialize method. also, support loading and unloading
plugins into/from child 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 shared variable event. this avoids a race
condition where event(s) being used are disposed prematurely.
BUGFIX: make sure calls to the DebugOps.Complain method use the overload that
includes an interpreter parameter if one is readily available.
BUGFIX: if an exception is thrown while creating an interpreter, make sure that
the partially created interpreter gets disposed. also, suppress the
exception unless the ThrowOnError flag is set.
BUGFIX: when building the auto-path list for the interpreter, avoid attempting
to add duplicate directories (i.e. merge the global auto-path list with
the one from the interpreter).
BUGFIX: when running the test suite in native Tcl, prevent the format.eagle test
file from cleaning up (via ::tcltest::cleanupTests in format.test),
except from the test epilogue.
BUGFIX: the [file normalize] command should remove trailing slashes.
BUGFIX: fix handling of the -logFile test suite option in spawned test shells.
BUGFIX: when starting the interactive loop from ShellMainCore, make sure to use
the original command line arguments (as provided by the caller).
BUGFIX: add missing detection of leaked TclThread objects in the test suite.
BUGFIX: make sure the assembly related plugin flags are set for the static core
plugins.
BUGFIX: the test object-10.4 needs to be constrained by the availability of
symbols for the core library.
BUGFIX: avoid repeated calls to the AttributeOps.GetAssemblyTitle method from
the GlobalState class.
REFACTOR: make sure that all exception diagnostic messages include the current
thread Id.
REFACTOR: update Fossil tool w/source to version 20111021125253.
REFACTOR: modify the [cleanupThread] script library procedure to be more verbose
and robust when dealing with stale threads.
REFACTOR: if necessary, retry the precision timing test constraint check to get
a more accurate reading.
REFACTOR: improve console integration in the updater by attempting to attach to
an existing console instead of always opening a new one (i.e. when run
via the command line).
REFACTOR: when running tests via the [runAllTests] script library procedure,
track and report all file names where any resources are leaked.
REFACTOR: add basic diagnostic messages to the Create, PrivateInitialize, and
PrivateInitializeShell methods of the Interpreter class.
REFACTOR: when waiting on a variable, detect STA threads and act accordingly
(i.e. pump messages if necessary).
REFACTOR: while waiting for a variable, make sure to wake-up immediately upon
emptying the event queue [managed by the event manager] or an event
being enqueued to the event queue [managed by the event manager].
REFACTOR: revise and enhance the handling of assembly related plugin flags (e.g.
for strong-name and Authenticode signature checking), keeping track of
whether a signature and/or certificate is present and whether it is
valid and/or trusted using different flags.
REFACTOR: modify the #test and #ptest interactive commands so that they handle
the full set of meta-characters supported by [string match].
REFACTOR: various refinements to unit tests and infrastructure, including test
command line support for populating the "no" array.
REFACTOR: attempt to return a meaningful result for [info nameofexecutable] on
Mono even when running in an isolated application domain.
REFACTOR: add [testClrExec] script library procedure to help execute a managed
executable, taking into account whether it needs to be executed via
Mono.
REFACTOR: if the TYPE_CACHE compile-time option is enabled, cache all successful
Type.GetType and Assembly.GetType lookups based on the actual name
used to resolve the type, fully qualified or otherwise.
REFACTOR: *BREAKING CHANGE* reform usage patterns for string constants included
in the Eagle Package for Tcl (Garuda), including the ones exposed in
the public header file.
REFACTOR: *BREAKING CHANGE* major internal changes to the event manager. all
events are now sorted by priority in addition to date and time. the
normal events and idle events are now stored in two different queues
internally for much faster access. track the maximum event count
(both idle and non-idle) that an event manager has seen. add an
EventPriority parameter to all the QueueScript and QueueEvent method
overloads on the IEventManager interface. also, add EventPriority
parameter to the DequeueAnyReadyEvent, DoOneEvent, ProcessEvents, and
ServiceEvents methods on the IEventManager interface. make sure that
the "current" time advances despite the fact that the system clock has
a resolution typically limited to 10 milliseconds. also, add the the
following properties to the IEventManager interface: IdleEventCount,
TotalEventCount, MaximumEventCount, and MaximumIdleEventCount.
REFACTOR: *BREAKING CHANGE* avoid using String.Format to construct the error
messages when a variable is undefined or not present because these
conditions occur a lot on the hot path when waiting for a variable to
be created or [re-]defined.
REFACTOR: *BREAKING CHANGE* add args parameter to the GetStartupCreateFlags and
ProcessStartupOptions methods of the Interpreter class.
REFACTOR: *BREAKING CHANGE* make sure that no XML serialization functionality is
referenced or used if either the XML or SERIALIZATION compile-time
options are disabled.
REFACTOR: *BREAKING CHANGE* prevent the ApplicationObject, PolicyObject,
ResolverObject, and UserObject of the InterpreterSettings class from
being serialized. also, add unit tests for the InterpreterSettings
class.
REFACTOR: *BREAKING CHANGE* Modify the ShellArgumentCallback delegate to accept
a list of strings instead of an array of strings. Also, modify the
PopFirstArgument and PopLastArgument methods of the Utility class in
the same fashion.
REFACTOR: *BREAKING CHANGE* Modify WaitVariable method of the IVariableManager
interface to accept an event wait handle and a boolean indicating
whether or not messages should be pumped during the wait operation.
REFACTOR: *BREAKING CHANGE* Modify the DoOneEvent and ServiceEvents methods of
the IEventManager interface to accept a boolean indicating whether or
not messages should be pumped during the wait operation.
FEATURE: add -trace option to the [test2] command to emit diagnostic messages
before and after the startup, body, and cleanup blocks of the test.
FEATURE: add [haveEagle] script library procedure to the Eagle Package for Tcl
(Garuda). it will return non-zero if the Eagle core library has been
loaded and is available for use. optionally, it will return the full
version of the Eagle core library using a variable nominated by the
caller.
FEATURE: add GetInteractiveCommandNames and GetInteractiveCommandHelp methods to
the Utility class to support external applications and plugins looking
up interactive commands.
FEATURE: add [after counts] and [after dump] commands to return diagnostic
information about the event queues for the interpreter.
FEATURE: add AddObject method to the ScriptThread class to add objects to the
contained interpreter. add WaitForEvent method to the ScriptThread
class to wait for an event to be enqueued. add WakeUp method to the
ScriptThread class to force the event queue to be processed. add Name
property to the ScriptThread class to help identify the thread in the
debugger.
FEATURE: add static IsPendingWait method to the Interpreter class. this method
will return non-zero if the interpreter has any outstanding calls to
the Wait or WaitVariable methods pending.
FEATURE: add [debug pluginflags] command to get or set the current plugin flags
for the interpreter.
FEATURE: add -allownull option to [sql execute] to control whether or not NULL
column values are returned. if so, they are converted to an empty
string. by default, this option is disabled (i.e. legacy behavior).
also, add and revise unit tests for the [sql] command.
FEATURE: new -arguments command line option to read command line arguments from
the specified file (the string "-" or "stdin" may be used to specify
that arguments should be read from the standard input stream).
FEATURE: add -current option to [exit] to use the exit code currently stored in
the ExitCode property of the interpreter.
************************* Beta 1.0.4291.26291 RELEASE *************************
BUGFIX: *MAJOR* fix issue with the [if] command that can cause a script ending
with it, including a procedure body, to return the value of the command
immediately preceeding it, if no scripts are evaluated for any of the
then/else clauses associated with the [if] command invocation.
BUGFIX: when the event manager encounters an error via a dispatched event,
really ignore it when the stopOnError parameter is false.
BUGFIX: make sure [info binary] returns the correct path even when running in an
isolated application domain.
BUGFIX: the value for EngineAttribute.RuntimeOptions should not be an [octal]
value of 010000 (typo).
BUGFIX: revise core marshaller handling for Enum parameters. previously, it was
impossible to call any methods having nullable parameters of enumerated
types, ByRef or otherwise.
BUGFIX: make the build tool use the base project configuration (i.e. without the
optional All/Dll suffix) when the COREONLY environment variable is
defined.
BUGFIX: fix the [tsource] script library procedure so that it saves and restores
the [tcltest::test] procedure using the correct (i.e. global) namespace.
BUGFIX: fix tests infoPlugin-1.1.* and object-6.1, allowing them to pass even if
strong-name signing has been disabled for the built assemblies.
BUGFIX: fix tests library-3.1 and library-3.2 on 64-bit operating systems when
32-bit Tcl DLLs are detected (i.e. avoid trying to load them).
BUGFIX: when processing command line arguments, make sure to refresh the cached
host after processing any argument that can potentially execute external
code.
BUGFIX: the DoOneEvent method of the Interpreter class needs to use a try/catch
block in case the interpreter has been disposed.
BUGFIX: the IsVariableNameDirty method of the Interpreter class needs to check
if the interpreter has already been disposed while holding the lock.
BUGFIX: the Sleep method overload called by the WaitVariable method in the
Interpreter class needs to check if the interpreter has been disposed
prior to grabbing the current host while holding the interpreter lock.
BUGFIX: the engine should only reset the script cancellation flags once upon
entry at level zero, not once for each command executed at level zero.
BUGFIX: use the syncRoot field instead of the SyncRoot property in the Ready
method of the Interpreter class (i.e. bypass the disposal checking for
the interpreter because that is one of the checks that the Ready method
itself performs). also, since the Engine.IsCanceled and Engine.IsHalted
methods are called directly by the Interpreter.Ready method, modify them
to use the field as well.
BUGFIX: in the event manager, do not attempt to handle any background errors if
the interpreter has been disposed.
BUGFIX: in WaitVariable, skip clearing the variable wait flags if the parent
interpreter has been disposed.
BUGFIX: avoid deadlocks when an interpreter calls the ClearEvents or QueueScript
methods of its own event manager.
BUGFIX: during interpreter disposal, do not attempt to dispose objects with the
NoDispose flag set (i.e. objects not owned by the interpreter).
BUGFIX: prevent the methods related to introspecting the current stack trace
from being inlined by the CLR (e.g. DebugOps.GetMethod).
BUGFIX: refresh the cached interactive host in the interactive loop after each
command is processed.
BUGFIX: do not attempt to update the last interactive input if the interpreter
is invalid.
BUGFIX: correct shutdown logic for the GC test thread by the interactive loop.
it will now be shutdown only by the interactive loop that started it.
BUGFIX: in the execShell script library procedure, wrap the name of the Eagle
shell executable in quotes when running on Mono (i.e. since it is then
the first formal argument and not the file name itself, which is simply
"mono").
BUGFIX: for the result of test error-1.5, truncate the name of the file being
evaluated using ellipsis.
BUGFIX: when adding the file name of a ParseToken to the result of the ToList
method, convert null to empty string.
BUGFIX: in the PowerShell cmdlet, make sure the interpreter gets disposed if it
is still valid upon entry into the Dispose method.
BUGFIX: in Garuda, make the GarudaObjCmd function static. also, when running on
the .NET Framework 4.0, release the ICLRMetaHost and ICLRRuntimeInfo
interface pointers only if the ICLRRuntimeHost interface pointer is
being released as well.
BUGFIX: fixup time measurements to microseconds for non-native or non-Windows
builds of the core library.
BUGFIX: fix test tclLoad-1.12.4 to use the native package Tcl interpreter for
the nested call to [tcl eval].
BUGFIX: in the Garuda test suite, check for the testBinaryPath variable before
trying to read it.
BUGFIX: fix nesting of [regsub -eval] invocations. remove the RegsubClientData
property from the IEngineContext interface and the Interpreter class.
modify the active interpreter stack to allow any IClientData (i.e. in
this case, a RegsubClientData) to accompany each interpreter in the
stack. also, modify the [regsub] command implementation itself to use
this new stack-based RegsubClientData passing technique.
BUGFIX: fix the [getDictionaryValue] script library procedure to avoid returning
the wrong value when a previous value could match the name being sought.
BUGFIX: *BREAKING CHANGE* the engine should not assume that all threads require
the same maximum stack size, especially since the default stack size is
normally 16MB.
REFACTOR: revise call frame cleanup code to be generally more robust.
REFACTOR: add an AssemblyRelease attribute to allow each public release to carry
additional information about its nature.
REFACTOR: the ShellMainCore method will now honor the quiet mode for the current
interpreter by not directly emitting any error messages after it has
been enabled.
REFACTOR: revise handling of command resolution errors in the background error
handler (i.e. report any command resolution error). also, allow the
default background error handling to be disabled.
REFACTOR: remove the CommandFlags.Native value from the [after] command as this
command does not actually call into any native code. also, add the
CommandFlags.Native value to the [sql] and [test2] commands as they
may call into native code.
REFACTOR: add Virtual value to the VariableFlags enumeration. variables with
this flag are assumed to be handled by custom trace callbacks and
cannot be handled directly by the core marshaller or used with most
of the [array] sub-commands.
REFACTOR: for the test suite, issue a warning if the Eagle core library is not
strong-name signed OR is strong-name signed with an unrecognized key.
REFACTOR: move code for adding and removing scopes from the Scope command class
into the Interpreter class, preserving the existing locking semantics.
REFACTOR: allow the test configuration to be unset via a -preTest option to the
test suite.
REFACTOR: make sure all the example commands are tagged with an ObjectGroup
attribute.
REFACTOR: add expression parser tests related to parsing function names that
start with NaN, Inf[inity], or a number.
REFACTOR: double the default thread join timeout when running on Mono because
its threading is much slower.
REFACTOR: add [getGarudaDll] script library procedure to return the full path
and file name for the Garuda DLL.
REFACTOR: add test garuda-1.2 to test Eagle to Garuda integration. also, rename
the garuda-1.0 test to garuda-1.1.
REFACTOR: rename the scope-* tests so that their ordering is consistent with
their file names.
REFACTOR: rename the try-* tests to avoid duplicate names.
REFACTOR: check for and display any duplicate test names that are found while
running the test suite (or individual test files). also, keep more
careful track of skipped tests (i.e. by name).
REFACTOR: when running the interactive #test and #ptest commands with a specific
pattern, make sure the sort ordering of the files is consistent with
running the entire test suite.
REFACTOR: fine-tune the expected times for the stack overflow benchmark tests.
REFACTOR: for now, disable testing Tk 8.4/8.5 integration when running in Eagle.
REFACTOR: attempt to support running the Excel integration tests using expired
trial versions of the product. also, enhance cleanup and diagnostics
for the tests excel-1.* and excel-2.*.
REFACTOR: modify the test suite to output periodic reports on the percentage of
test files completed.
REFACTOR: add [formatDecimal] script library procedure to the test package and
remove inline formatting hacks from the benchmark test file and the
test epilogue.
REFACTOR: set the global errorCode variable to the type of the exception thrown.
currently, this is done at key points in the engine and for all core
commands, functions, and operators that catch their own exceptions.
the key points in the engine include any place where an exception is
thrown from the Execute method of the IExecute or IExecuteArgument
interfaces and subsequently caught by the engine itself.
REFACTOR: in the test suite, replace uses of the [lappendArgs] script library
procedure with [list].
REFACTOR: in the test exec-1.1, use env(ComSpec).
REFACTOR: avoid using the C# keyword __arglist when running on Mono as it does
not appear to work.
REFACTOR: skip test basic-1.28 when running on Mono (Mono bug #710567).
REFACTOR: for the tests basic-1.32 and basic-1.33, allow NullReferenceException
and/or NotSupportedException in the results of the method calls due to
implementation differences between the default binders on the .NET
Framework and Mono.
REFACTOR: skip tests clock-1.17, clock-1.18, and parser-3.2 when running on Mono
(Mono bugs #710522, #710512, #710537).
REFACTOR: when adding directories to the auto_path, make them Unix style (i.e.
with forward slashes).
REFACTOR: in the updater, when using the WinVerifyTrust API, only prompt the
user for files downloaded from the Internet.
REFACTOR: show variable names when displaying the information for a call frame.
REFACTOR: skip breaking into the debugger (or writing an error message) when
termination or resource disposal failures are detected while exiting
unless the BREAK_ON_EXITING compile-time option is enabled.
REFACTOR: add a simpler overload of the Create method to the Script class.
REFACTOR: add diagnostic messages to the ScriptEventCallback method of the
EventManager class. these messages are enabled only when the event
being processed has the debug flag set.
REFACTOR: add diagnostic messages to the WaitVariable method of the Interpreter
class. also, add a new variable flag, WaitTrace, to enable these
diagnostic messages.
REFACTOR: allow ThreadOps.CreateEvent to create auto-reset events if requested.
also, move the default join timeout constant to the ThreadOps class.
REFACTOR: swap test numbers for tests tclLoad-1.12.2 and tclLoad-1.12.3.
REFACTOR: update the Tcl headers and library included with the Garuda project to
Tcl 8.6 beta 2.
REFACTOR: remove workaround for the MSBuild Exec task error detection from the
winForms-5.2 test and add it to the release preparation tool instead.
REFACTOR: update Fossil tool w/source to version 9bfa186be09f3f95.
REFACTOR: *BREAKING CHANGE* rename the NewTraceListener method of the Utility
class to NewDefaultTraceListener.
REFACTOR: *BREAKING CHANGE* in FixupReturnValue, do not use an existing opaque
object handle if the opaque object handle name has been specified by
the caller unless the AllowExisting object flag has been specified.
REFACTOR: *BREAKING CHANGE* rename TestGenericList to GenericList.
REFACTOR: *BREAKING CHANGE* move the [tsource] and [testShim] script library
procedures to the EagleTest package.
REFACTOR: *BREAKING CHANGE* add noCancel parameter to the WaitVariable method.
this allows for the wait operation to continue even if a running
script is canceled or unwound. also, add a NoCancel engine flag and
change the Ready method of the Interpreter class to support bypassing
script cancellation checking during the interpreter readiness checks.
REFACTOR: *BREAKING CHANGE* add maxStackSize and isBackground paremeters to all
the CreateThread method overloads of the Engine and the corresponding
methods of the IEngineHost interface. also, add the ThreadStackSize
property to the IInterpreter interface.
FEATURE: add -packagePath option to [test2] to control the the sub-directories
probed for private assemblies in the isolated application domains.
FEATURE: add support for per-vendor customizations during interpreter creation
via a new VendorPath environment variable and a vendor.eagle script.
FEATURE: add DoesScopeExist method to the IEntityManager interface.
FEATURE: add -datetimebehavior and -datetimeformat options to the [sql execute]
command to control how DateTime values are converted to strings prior
to being added to the results.
FEATURE: add -procedure and -shared options to the [scope create] and
[scope open] commands. the -procedure option can be used create or
open a scope based on the innermost active procedure body (e.g. a named
procedure or lambda expression). if there is no active procedure body,
an error is raised. for lambda expressions, all scopes created with
the -procedure option will be shared by all lambda expressions. scopes
created and/or opened without the -shared option will be per-thread and
per-interpreter; otherwise, they will be per-interpreter only (i.e.
shared by all threads).
FEATURE: add -preTest and -postTest command line options to the test suite.
these options can be used to evaluate a script before and/or after any
tests are run, respectively.
FEATURE: add -time option to the [test2] command. this option can be used to
enable the output of timing information for the test setup, body, and
cleanup scripts.
FEATURE: add [info hwnd] sub-command to return information about the specified
window.
FEATURE: add [garuda dumpstate] sub-command to allow full introspection of the
internal state of the Garuda package.
FEATURE: add [garuda clrexecute] sub-command to execute an arbitrary managed
method via the ICLRRuntimeHost::ExecuteInDefaultAppDomain CLR API.
FEATURE: add DebugTextWriter and TraceTextWriter properties to the IDebugManager
interface. the DebugTextWriter property is used by the core library
when reporting serious runtime errors (i.e. via DebugOps.Complain).
the TraceTextWriter is reserved for future use by the core library.
FEATURE: add an EmptyEvent property and a WaitForEmptyQueue method to the
IEventManager interface. the WaitForEmptyQueue method allows an
application or plugin to wait until there are no events in the queue
(i.e. all previously queued events have been canceled, discarded, or
dequeued).
FEATURE: add various overloads of the EvaluateGlobal* and SubstituteGlobal*
methods to the IEngineManager interface.
FEATURE: add public ScriptThread class to allow applications and plugins to
create and manipulate dedicated scripting threads.
FEATURE: include a simple PowerShell script that can install the cmdlet.
FEATURE: add #rlimit interactive command to display or set the recursion limit
for the interactive interpreter.
FEATURE: add NoLoop environment variable to support the ability to skip entering
the interactive loop.
FEATURE: expose FormatBreakpoint, FormatErrorVariableName, GetStringFromObject,
HasFlags(BreakpointType), SetVariableDirty, and SetVariableUndefined
methods via the Utility class for use when implementing custom variable
trace callbacks.
FEATURE: *BREAKING CHANGE* by default, when using the -commandline option to
[exec], only surround arguments with quotes if they contain at least
one reserved command line character (e.g. a space). also, add a new
-quoteall option to force the legacy behavior of surrounding every
argument with quotes.
FEATURE: *BREAKING CHANGE* allow applications and plugins to process custom
shell arguments to ShellMainCore via a supplied callback. also, expose
the MatchSwitch, PopFirstArgument, and PopLastArgument methods via the
Utility class for use when processing shell arguments.
************************* Beta 1.0.4221.27588 RELEASE *************************
BUGFIX: *PERF* for the CacheDictionary class, prevent the TrimExcess method from
doing its expensive work more than once per minute. also, remove some
unnecessary uses of the ContainsKey method.
BUGFIX: fix updater bug in handling of non-existent directories in the target
file names.
BUGFIX: make sure the release preparation tool sets the PACKAGE_PATCHLEVEL
environment variable prior to building the Garuda binary packages.
BUGFIX: make sure the release preparation tool modifies the default build type
used by the updater project (i.e. in the BuildInfo.cs file).
REFACTOR: update Fossil tool w/source to version ba15af450d33b2fd.
REFACTOR: make the Engine.SetThrowOnDisposed method public. this method can be
used to disable exceptions caused by accessing previously disposed
objects; however, it is provided only as a last resort and its use is
not recommended.
FEATURE: support running the test suite with/via the NCover code coverage tool.
************************* Beta 1.0.4215.24284 RELEASE *************************
BUGFIX: fix bug in how the updater synchronizes the lists of source and target
files.
BUGFIX: prevent parent and child 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, #grinfo, 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 primary] 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,
#grinfo, #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 parent interpreter by several sub-commands of
[interp].
BUGFIX: when clearing events after a test, use the isolated test interpreter,
not the main interpreter.
BUGFIX: allow the entire eagle_tests array to be unset.
BUGFIX: make [info exists] and [array] work with the global eagle_tests array.
BUGFIX: add missing NotifyFlags.Unwound flag to the NotifyFlags.All value. add
missing NotifyType.XmlBlock to the NotifyType.All value.
BUGFIX: fix isolated debugger interpreters not being initialized correctly.
BUGFIX: make sure the native Tcl integration tests cleanup after themselves even
if there is a failure in the test setup script.
BUGFIX: the AddTrustedDirectories and AddTrustedUris methods of the Interpreter
class should validate their arguments and avoid attempting to add
duplicate entries.
BUGFIX: fix percentage faster reporting for the benchmark tests.
BUGFIX: fix [clock format -format %Z] when used with a time in UTC.
BUGFIX: fix boolean expression truth values for integer values that do not fit
within a byte, see CodePlex bug #8141.
BUGFIX: fix [object resolve] when running on the .NET Framework 4.0 after having
been compiled for the .NET Framework 2.0.
BUGFIX: make sure to clear the resolvers, traces, and runtime options for the
interpreter after all the commands and plugins have been terminated.
BUGFIX: the EagleTest and EagleToolkit projects should prepare their plugins
prior to adding them to the interpreter.
BUGFIX: the EagleTest example shell should actually do something when the Run
button is pressed. also, revise how the embedded script resources are
included and used.
BUGFIX: acquire the interpreter lock prior to accessing or modifying the list of
trusted paths.
BUGFIX: prevent any runtime option information from being leaked into "safe"
interpreters.
BUGFIX: acquire the static 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 GetParentInterpreter
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 per-interpreter (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" child 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, parentInterpreter, PackageUnknown, processEvents,
serverSockets, childName, Unknown, and ValidateXml.
REFACTOR: implement save/restore semantics for the console title. this can be
disabled by using the NoTitle host property or environment variable.
REFACTOR: the [namespace unknown] command and the engine should use the Unknown
property, not the unknown field.
REFACTOR: add policy flags to the IPolicyData and IScriptPolicy interfaces.
modify the script policy handling to be capable of (optionally) adding
the arguments of the command being invoked in the target interpreter
to the policy script prior to evaluation.
REFACTOR: change the formal type of the Interpreter.ExitCode property to the
ExitCode enumeration.
REFACTOR: by default, we no longer directly expose the Tcl wrapper and related
functionality. the Interpreter class now provides all the necessary
integration functionality, please see the included TclSample project
for details.
REFACTOR: rename the IPluginData.Tokens property to IPluginData.CommandTokens.
REFACTOR: the WriteArgumentInfo method should output the code and result to be
useful for breakpoints.
REFACTOR: all [open] and [source] calls that require a stream are now handled by
the IHost.GetStream method. also, the default channel buffer size is
now 4K.
REFACTOR: make naming of the private Interpreter and Engine methods more
self-explanatory and more consistent. all methods named Private* are
only for use by the Interpreter and Engine classes, respectively.
REFACTOR: move the command count code to a new method, Engine.UpdateStatistics.
REFACTOR: revise the semantics used by the script engine for getting a script
file from the interpreter host. move the code to a new method named
GetScriptFile.
REFACTOR: use a more flexible and robust method of querying the IHost properties
in the WriteHostInfo method of the default host.
REFACTOR: make the SavePosition and RestorePosition methods of the default host
work correctly even if the host does not support positioning.
REFACTOR: prevent the Interpreter class from assuming that the IHost has color
support.
REFACTOR: move the public environment variable support methods to the Utility
class.
REFACTOR: move the SubstitutionFlags checking methods to the Parser class.
REFACTOR: attempt to prompt the user prior to canceling a runaway script in the
interactive shell.
REFACTOR: modify the Argument and Result classes to support implicit conversions
from the Enum, Exception, Version, ResultList, and StringBuilder
classes.
REFACTOR: support keeping track of basic usage statistics about the internal
caches.
REFACTOR: review and revise all the custom GetHashCode implementations.
REFACTOR: modify the semantics of the Interpreter.GetExecuteViaResolvers and
Interpreter.GetVariableViaResolvers methods to allow for simplified
errors and/or subsequent resolvers to be skipped through the use of
the standard exceptional return codes (i.e. the Return, Break, and
Continue values). currently, the default resolver never uses these
return codes.
REFACTOR: eliminate all the unnecessary uses of both the Array.GetLength and
Array.GetLowerBound methods. remove superfluous array rank checking.
arrays declared as one-dimensional at compile-time do not need their
ranks checked at runtime.
REFACTOR: modularize the logic for querying the active script file name and move
it from [info script] to the Interpreter.GetScriptFileName method.
REFACTOR: centralize the default match modes for all StringOps.Match calls.
REFACTOR: cleanup custom comparer implementations to make them more robust and
uniform. also, add new custom comparer implementation that wraps the
StringOps.Match method.
REFACTOR: make the names of the console color settings more consistent with the
naming scheme of the related methods.
REFACTOR: revise handling of the header flags by the interactive loop. now, the
interpreter header flags are never automatically modified. they are
copied upon entry to local header flags for use by the interactive
loop.
REFACTOR: add public APIs for managing a Tcl library using an Eagle interpreter.
These changes remove the need for external projects to rely on the
private classes supplied by the TCL_WRAPPER compile-time option.
also, modified the TclSample project to use only the newly provided
public APIs for Tcl library management.
REFACTOR: cleanup, modularize, and reorganize the DebugOps class to make it more
flexible and robust.
REFACTOR: use [object invoke] for [parray] to work around Mono bug #636939.
REFACTOR: some bulk cleanup of dead code.
REFACTOR: the [object dispose] sub-command now accepts a variable number of
objects to dispose. in addition, a -nocomplain option has been added.
REFACTOR: the core host now supports multiple profiles.
REFACTOR: modularize the KeysAndValues method used by various custom containers
and make it totally generic and general purpose.
REFACTOR: move the zero argument overload of the ToList method from the IToken
interface to the IScriptLocation interface. it is now common to both
interfaces and needs to be defined at the lowest level.
REFACTOR: move all methods common to the StringList and StringPairList custom
containers into their own interface, IStringList. add new method
implementations when necessary to achieve feature parity between these
two classes. add implicit conversions from StringPairList to Argument
and Result objects. modify most callers of the StringList.MakeList
method to use new overloads that take objects instead of strings to
reduce the necessity of explicit ToString calls.
REFACTOR: *PERF* targeted expression performance optimizations. cache the
current thread Id on a per-thread basis in thread static data to avoid
permission demands. when compiled for the .NET Framework 4.0, cache
the Enum.TryParse method for each type as it is used. when resolving
variables, prevent interpreter readiness checks from being performed
by the parser via SplitVariableName.
REFACTOR: make sure the eagle_platform(sourceId) element is not set for "safe"
interpreters.
REFACTOR: remove incorrect uses of the SecurityPermission attribute. also, use
the SecurityCritical attribute instead when compiling for the .NET
Framework 4.0. the documentation seems unclear; however, based on my
current understanding, when a type is marked with a LinkDemand or
SecurityCritical attribute, it can only be called [directly] from code
that is fully trusted (e.g. other managed code within the Eagle core
library itself). the Eagle core library is specifically designed to
shield all native methods from all untrusted inputs and/or malicious
intent by applications, plugins, and [non-administrative] users.
however, this protection will only work if my understanding of the
SecurityCritical and LinkDemand attributes is 100% correct. when in
doubt, disable the NATIVE compile-time option (e.g. using the command
line argument /property:EagleNative=false to MSBuild).
REFACTOR: revise semantics of the WindowWidth, ContentWidth, and ContentMargin
properties for the default host. improve output of host information.
REFACTOR: cleanup integration points for the debugger subsystem.
REFACTOR: make sure all the test context members are marked as private in
non-threaded builds.
REFACTOR: revise and reform usage of the NET_40 and MONO compile-time options.
REFACTOR: cleanup the way Windows and Unix native APIs are declared and used.
REFACTOR: make variable name formatting in error messages more consistent.
REFACTOR: mark the [getf], [setf], and [unsetf] commands as obsolete.
REFACTOR: support limiting the width of boxes via the BoxWidth property of the
default host. by default, this limit is disabled.
REFACTOR: cleanup usage of the IPair<T> interface.
REFACTOR: cleanup and modularize the command and expression parser subsystems.
REFACTOR: cleanup and modularize the ScriptBinder class and usage of it. add
IScriptBinder public interface to expose custom binding functionality
to applications and plugins. add an IBinder interface to formalize
the functionality provided by the Binder class. the IScriptBinder
interface now inherits from the IBinder interface.
REFACTOR: modify the path scrubbing semantics used by [info script] in "safe"
interpreters to preserve full path information when the script being
evaluated resides underneath the base directory.
REFACTOR: adjust the window dimensions required for the FullSize host size and
add a new size host size SuperFullSize.
REFACTOR: simplify the creation of an interpreter with the default options.
REFACTOR: removed the unused list field from all the String*Comparer classes.
REFACTOR: add a ClientData property to the Channel class and a GetOptions method
to the ChannelStream class.
REFACTOR: bypass multiple Mono compiler bugs by moving the CommonOps.Generic<T>,
CommonOps.Generic<T1, T2>, and ArrayOps.Generic<T> inner classes to
their own file (GenericOps.cs) and making them outer classes (Mono bug
#635720).
REFACTOR: disable the sample custom build tasks by default when building with
XBuild (Mono bug #635767).
REFACTOR: modify the Script class to accept a group and description. modify the
XML schema accordingly.
REFACTOR: enhance the robustness of the benchmark tests. also, report the
percentage differences between the actual and expected elapsed time
values.
REFACTOR: cleanup all the sample ICommand and IPlugin implementations.
REFACTOR: cleanup, extract, and modularize common code from all the default
policy implementations.
REFACTOR: in a "safe" interpreter, the [info interps] sub-command should only
return the child interpreters of that interpreter.
REFACTOR: make the In, Out, and Error properties for the console host work on
Mono.
REFACTOR: *BREAKING CHANGE* rename all non-flag enumerations to their singular
form, including ReturnCodes.
REFACTOR: *BREAKING CHANGE* cleanup implementation of the [debug memory] and
[file information] commands, isolating the use of native code to the
low-level APIs. also, the [debug memory] command now returns the
status of GC memory as well as the status of system memory, when
available.
REFACTOR: *BREAKING CHANGE* the ICommand, IProcedure, and ISubCommand interfaces
now inherit from the new IDynamicExecute interface. the engine will
detect and use the delegate provided by this interface instead of
simply calling the Execute method if it is provided.
REFACTOR: *BREAKING CHANGE* cleanup implementation of the SubCommandFromEnsemble
method. also, support returning the matching ISubCommand in addition
to the name. finally, replace all usage of the SubCommandFromEnsemble
method with the new TryExecuteSubCommandFromEnsemble method.
REFACTOR: *BREAKING CHANGE* remove the obsolete interactive commands #flags and
#result. please use the #finfo and #rinfo interactive commands
instead.
REFACTOR: *BREAKING CHANGE* move all internal and external TraceListener support
methods to the DebugOps and Utility classes, respectively.
REFACTOR: *BREAKING CHANGE* rename all methods of the Engine and Interpreter
classes that deal with IExecute objects from <verb>Execute to
<verb>IExecute. also, rename the enumeration values associated with
IExecute objects.
REFACTOR: *BREAKING CHANGE* rename the Unmanaged command and plugin flag values
to Native.
REFACTOR: *BREAKING CHANGE* move the GetFlags method from the IHost interface to
the IInteractiveHost interface. rename some overloads of the
WriteResult method to WriteResultLine or WriteResultInfo, depending on
their actual functional role.
REFACTOR: *BREAKING CHANGE* further cleanup of the IHost interface by breaking
more pieces off into their own sub-interfaces. the new IEngineHost
interface is designed to support the minimal subset of functionality
required by the script engine. the new IDebugHost interface is
designed to support the minimal subset of functionality required by
the script debugger. the new IStreamHost interface is designed to
group all the Stream related properties and methods in one place.
REFACTOR: *BREAKING CHANGE* rename the global tests variable to eagle_tests.
test constraints are accessed via the addConstraint, getConstraints,
and haveConstraint procedures from now on.
REFACTOR: *BREAKING CHANGE* rename the IInfoHost interface to IInformationHost.
REFACTOR: *BREAKING CHANGE* move [info tclcommands], [info tclinterps], and
[info tclthreads] to the [tcl command list], [tcl interps], and
[tcl threads].
REFACTOR: *BREAKING CHANGE* rename the Expression class to ExpressionParser and
break out the expression evaluation methods into a new
ExpressionEvaluator class.
REFACTOR: *BREAKING CHANGE* for [clock format], rename the -timezone option to
-isotimezone.
REFACTOR: *BREAKING CHANGE* remove the [info env] sub-command. now that
[info exists] can be used on the global env array, this sub-command is
useless.
FEATURE: add Engine.EvaluateScript method overloads that take an IScript object.
FEATURE: support strict output parameter type checking for the [library] and
[object] commands using the new -strictargs option.
FEATURE: allow [package require NativeTcl] to load the Eagle-specific native Tcl
library (i.e. the one located in the Eagle library directory, if any).
FEATURE: add AddExecuteCallback method to the IInterpreter interface to allow
delegates to be used for command implementations.
FEATURE: add [host reset -interface] sub-command and the IHost.Reset method to
facilitate a cooperative reset of the interpreter host interface.
FEATURE: add ImageRuntimeVersion to the [info engine] sub-command to query the
version of the CLR the assembly was compiled against.
FEATURE: add Disposed property to the IInterpreter interface. this property is
required for certain scenarios where the validity of the interpreter
needs to be determined (e.g. from a secondary thread) to avoid throwing
exceptions from inside the Engine and/or Interpreter classes.
FEATURE: add [file drive] sub-command to return drive information for the given
path.
FEATURE: add [debug sysmemory] sub-command to query the system memory status.
currently, this feature is limited to Windows.
FEATURE: add IsTclReady method to the IInterpreter interface. this method is
used to determine if the specified Tcl library and interpreter are
ready for use.
FEATURE: add QueueTclThreadEvent method to the IInterpreter interface. this
method is used to queue events to the specified Tcl worker thread.
FEATURE: add -isolated option to the [test2] command. this option allows the
test setup, body, and cleanup scripts to be evaluated in an isolated
interpreter created just for the test. the interpreter creation flags
that affect command visibility (e.g. "safe" mode flags) are inherited
by the isolated interpreter.
FEATURE: add overloads of the Engine.EvaluateScript and Engine.SubstituteString
methods that do not require engine flags (i.e. the default flags are
used).
FEATURE: support simple integration with SQL Server stored procedures via the
new Engine.EvaluateOneScript and Engine.SubstituteOneString methods.
FEATURE: expose the Profile and NoColor properties via the IHost interface. all
custom host implementations are expected to honor the values of these
properties when displaying information.
FEATURE: expose the Unknown property of the IInterpreter interface. the value
of this property is the name of the command or procedure to be called
when a command cannot be found by any resolvers. setting this property
to null causes all unknown command resolution to be skipped.
FEATURE: add the ResetResolvers, GetResolver, and AddResolver resolver API
methods to the IInterpreter interface.
FEATURE: add the -default option to the [object create], [object invoke], and
[library call] sub-commands to allow names of non-existent variables to
be specified for output parameters when calling methods.
FEATURE: add [info processors] sub-command for compatibility with Tcl TIP #377.
FEATURE: add eagle_platform(permissionSet) element to hold the effective CAS
policy permissions. this element is only available if the CAS_POLICY
option was enabled at compile-time.
FEATURE: add [debug ontoken] and [debug token] sub-commands to allow token-level
breakpoints to be set. each breakpoint is based on a source file name
and a line number range. add [debug breakpoints] sub-command to allow
these breakpoints to be queried.
FEATURE: add -microseconds option to the [clock clicks] sub-command.
FEATURE: add [interp target] sub-command to get the relative target path for an
alias (COMPAT: Tcl).
FEATURE: add the [debug onexecute] sub-command to toggle whether or not named
commands and procedures can trigger a breakpoint. add the
[debug ontest] sub-command to toggle whether or not named tests can
trigger a breakpoint. add the [debug test] sub-command to control or
return the named tests that can trigger a breakpoint.
FEATURE: expose -quote option to [regsub] and revise the list quoting rules for
the substitution specification. the new rule is that only portions of
the match value itself are quoted.
FEATURE: the [info cmdcount] sub-command now accepts an optional argument that
will return the number of times the specified command or procedure has
been executed.
FEATURE: add support for official release binaries configured to run on the .NET
Framework 4.0.
FEATURE: new #trustdir and #trustclr interactive commands to display, add to, or
clear the list of trusted directories for the interpreter.
FEATURE: add [interp nopolicy] and [interp policy] sub-commands to allow full
script-level control of command policies in nested child 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 child interpreters (i.e. traversal
of nested child 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, #grinfo, and #hisinfo interactive commands to
display detailed information about the previously stored complaint, the
local result, the global 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 child interpreters. for now, the path
arguments to the [interp] command always refer to child interpreters in
the current interpreter (i.e. no traversal of nested child interpreters
is performed). also, aliases should now work properly with multiple
interpreters (i.e. the source and target interpreters no longer have to
be the same).
FEATURE: add [debug paths] sub-command to allow detailed introspection of the
possible locations for the script library.
FEATURE: add [host echo], [host errchan], [host inchan], and [host outchan]
sub-commands to control the host input/output channels for use by the
interactive shell.
FEATURE: add a ClientData property to the IPolicyData interface.
FEATURE: add Interpreter.DetectLibraryPath method to help embedded users detect
the script library in common locations.
FEATURE: add [array values] sub-command to return a list of values in an array,
optionally restricted by a matching mode and pattern.
FEATURE: the core marshaller now supports automatically converting a list of
strings to a one-dimensional array of the specified type.
FEATURE: add SyntaxType property to the IToken interface for later use in syntax
highlighting support.
FEATURE: the setup now has full support for the .NET Framework 4.0 if Eagle has
been built against it. the official setup will still be built against
the .NET Framework 2.0 for the foreseeable future.
************************* Beta 1.0.3828.11878 RELEASE *************************
BUGFIX: skip test object-4.10 (WiX) when the test data files are not available.
BUGFIX: modify the #suspend and #resume interactive commands to prevent them
from taking into account the enabled state of the debugger.
BUGFIX: add the Types, Command, and Result properties of the IDebugger interface
to the debugger output.
BUGFIX: fix exception with the 4-argument version of [string last], see CodePlex
bug #6333. added tests to cover all the corner cases of [string first]
and [string last].
BUGFIX: the #go and #halt interactive commands should be available even when the
debugger has been disabled at compile-time.
BUGFIX: use DoesModuleExist in AddModule, not DoesDelegateExist (typo).
BUGFIX: the GetBasePath method must check for a null assembly argument.
BUGFIX: check for null entity names prior to using them in all the applicable
Interpreter.Add* methods.
BUGFIX: the default plugin should not assume that the plugin version is valid.
REFACTOR: enhance command list output generated by the interactive help so that
it aligns the command names within their respective columns and
includes the total number of interactive commands available.
REFACTOR: preliminary support for custom command and variable resolvers.
REFACTOR: reform usage of the debugger in the interactive loop.
REFACTOR: add notifications for setting the Cancel, Unwind, and Halt properties
of the Interpreter.
REFACTOR: modify [object verifyall] to skip over assemblies that were loaded
from the global assembly cache (by default); this behavior may be
overridden by passing a non-zero boolean value as the optional first
argument.
REFACTOR: *BREAKING CHANGE* revise the IFunction, IHost, IObject, IObjectType,
IPackage, and IProcedure interfaces and the constructors of the
default classes to make use the new I*Data interfaces. this is
technically a breaking change for all external users of these
interfaces; however, there should not really be any of those at this
point.
FEATURE: add [tcl complete] sub-command to check the completeness of a Tcl
command.
FEATURE: add PostProcess boolean flag to the ITraceInfo interface. also, add
the ability to disable post-processing of values for all variables in
the interpreter.
FEATURE: add [debug halt] sub-command to completely unwind the interpreter call
stack and all but the outermost interactive loop. correct behavior
when the HaltEvaluate method is used from a command invoked via the
interactive loop.
FEATURE: add #resh and #fresh interactive commands to help manage the halt flag.
FEATURE: add [debug suspend] and [debug resume] sub-commands to allow direct
management of the overall debugger state from scripts.
FEATURE: support two optional arguments to [debug break]. the first argument,
if supplied, must be a boolean value. a non-zero boolean value is used
to indicate that an error should be raised if the breakpoint is hit
when the debugger is disabled. the second argument is a string. if
supplied, it should contain a message about the breakpoint (e.g. a
description of its location and/or the reason it may have been hit).
************************* Beta 1.0.3796.36942 RELEASE *************************
BUGFIX: make sure that all non-creatable classes are marked as static and that
static policy methods have the most restrictive visibility (private).
BUGFIX: add missing Exit, HasAliases, and NextId members to the IInterpreter
interface. verify that the IInterpreter interface now contains exactly
the members it should.
BUGFIX: fix bug in the construction of Variant objects. if the constructor that
accepts an object was used with a type not supported by the base class,
the resulting Variant object would have an invalid (null) value. also,
modify the cloning semantics slightly to allow the object to be cleanly
marshalled by reference.
BUGFIX: fix various small portability issues with Mono on Unix. the Mono C#
compiler still fails to compile the library due to issues with its
generics implementation.
REFACTOR: make all invalid and reserved enumeration values consistent with each
other whenever possible. also, only define enumerations if the
required features are enabled at compile-time.
REFACTOR: centralize logic that determines if breakpoints can be hit during the
evaluation of scripts, expressions, etc.
REFACTOR: slightly revise engine flags handling used when the engine modifies
the errorCode and errorInfo variables.
REFACTOR: allow all interpreter readiness checks OR just the checks unrelated to
native stack checking to be skipped by using the appropriate values in
the interpreter flags.
REFACTOR: the [exit] command should accept ExitCodes enumeration values as well
as integers for use as exit codes.
REFACTOR: revise how the debugger and built-in interpreter hosts are created.
REFACTOR: revise and enhance error reporting for the expression parser.
REFACTOR: cleanup and revise the sample projects.
REFACTOR: *BREAKING CHANGE* revise the IAlias interface and the constructor of
the default alias to make use of the new IAliasData interface. this
is technically a breaking change for all external users of the IAlias
interface; however, there should not really be any of those at this
point.
REFACTOR: *BREAKING CHANGE* revise the ICommand interface and the constructor of
the default command to make use the new ICommandData interface. this
is a breaking change for all commands that derive from the default
command.
REFACTOR: *BREAKING CHANGE* revise the IPlugin interface and the constructor of
the default plugin to make use the new IPluginData interface. this is
a breaking change for all plugins that derive from the default plugin.
REFACTOR: *BREAKING CHANGE* revise all internal handling of application domains.
unfortunately, this is a breaking change for all plugins because an
extra parameter is required in the call to the constructor so that it
can keep track of the application domain to which it belongs.
REFACTOR: *BREAKING CHANGE* rename [info lastpid] to [info previouspid] to avoid
confusion. this is a breaking change for any scripts that use the
[info lastpid] sub-command. also, rename IError.LastReturnCode to
IError.PreviousReturnCode. a few other things were renamed as well
(for consistency); however, they are all non-public.
REFACTOR: *UNFINISHED* add all of the necessary plumbing to enable plugins to be
loaded into isolated application domains AND for the commands defined
in those plugins to be automatically added to the interpreter. this
is NOT a security feature. this feature is currently disabled by
default for three reasons: first, it requires that the Interpreter
and Number classes derive from ScriptMarshalByRefObject, which causes
quite a few legitimate compiler warnings regarding direct field access
by the core commands. second, several of the components marked with
the Serializable attribute need custom ISerializable implementations
to avoid Unicode encoding issues (i.e. when we want to put raw binary
data into a "Unicode" string via the TwoByteEncoding or something else
similarly evil). third, any policies contained with a plugin cannot
currently be loaded into the isolated application domain. finally, it
is highly likely that variable traces will never be allowed in plugins
loaded into isolated application domains.
FEATURE: add interactive #again command to execute the last interactive input
again.
FEATURE: add -debug option to [test2] to allow detailed analyses of test result
matching issues.
FEATURE: add PublicKey to the [info engine] sub-command to query the public key
of the library. also added the associated element to the platform
array.
FEATURE: add [object alias] and [object unalias] sub-commands to allow direct
management of object (or type) aliases from scripts.
************************* Beta 1.0.3771.06643 RELEASE *************************
BUGFIX: make sure all the projects can use the ConsoleColor enumeration even
when compiling without console support.
BUGFIX: make sure hosts are setup even if they are changed after the interpreter
has been created.
BUGFIX: skip attempting to query the default colors from hosts that do not have
color support.
BUGFIX: skip attempting to query and/or set sizes and positions for hosts that
do not support it.
BUGFIX: fix compilation issues when console support, native code, and/or Tcl
integration are disabled.
BUGFIX: fix (split) tests object-12.2, object-12.3, object-13.1, object-13.2,
and object-97.3 to work with the .NET Framework 4.0.
BUGFIX: skip test object-4.10 (WiX) when running on the .NET Framework 4.0.
BUGFIX: fix assembly strong-name detection logic on Mono.
BUGFIX: add missing [socket] test constraint to tests socket-1.1, socket-1.2,
socket-1.3, socket-2.1, socket-3.1
BUGFIX: make sure the test path is fully qualified.
BUGFIX: correct usage of LibraryPathSetting by the web service.
BUGFIX: only define the NoHistory, NoCallbackQueue, NoBreakpoint, and NoWatch
flags and their associated methods if the required features are enabled
at compile-time.
BUGFIX: only define NotifyTypes and NotifyFlags values if they are used by the
library based on the options enabled at compile-time.
BUGFIX: prevent all parts of the notification system from being compiled into
the library unless the NOTIFY and/or NOTIFY_OBJECT options are enabled
at compile-time. this includes the ScriptEventArgs class and the
IScriptEventArgs interface.
BUGFIX: prevent all parts of the Code Access Security (CAS) support from being
compiled into the library unless the CAS_POLICY option is enabled at
compile-time.
BUGFIX: correct creation and usage semantics for both the Script class and the
IScript interface.
BUGFIX: add missing ObjectId attributes to all delegates and several classes.
BUGFIX: the UriKind.RelativeOrAbsolute value should not be used when attempting
to validate absolute URIs.
BUGFIX: fix issue with [exec -shell] when a new process is not actually created.
prevent remote URIs from being treated like local file names. cleanup
and improve the clarity of the code. enforce transactional semantics
with regard to the returned process Id.
BUGFIX: fix bug in expression parser that prevented it from properly parsing any
expressions contained within other [bigger] strings.
BUGFIX: fix Interpreter creation flags issue in SetupDebugger that resulted in
redundant interpreters being created.
BUGFIX: fix infinite recursion issue between the Engine.IsThrowOnDisposed and
Interpreter.CheckDisposed methods.
BUGFIX: make sure the test suite never uses the [puts] command directly unless
it is absolutely necessary.
BUGFIX: in build tools, only search sub-directories when absolutely necessary.
REFACTOR: cleanup and modularize handling of environment variables.
REFACTOR: make the available interactive help consistent with the features that
are enabled at compile-time.
REFACTOR: allow embedding of user-defined text into the primary assembly via the
new AssemblyText attribute.
REFACTOR: add special-case code to the engine to detect and gracefully handle a
command marking the interpreter as exited (i.e. bail out instead of
trying in vain to execute any further commands).
REFACTOR: make field and [virtual] property usage consistent in the ParseToken,
ParseState, ExpressionToken, and ExpressionState classes.
REFACTOR: add interactive input properties to the IInterpreter interface to
facilitate better integration with the input processing done by the
interactive loop.
REFACTOR: add an overload of the IHost.ReadKey method that does not require the
console and deprecate the one that does.
REFACTOR: *PERF* tweak performance of several critical code paths through the
parser and the interpreter.
REFACTOR: consistency and robustness fixes to regular expression match checking,
engine exception notifications, and assembly type introspection.
REFACTOR: revise the return value type checking to be more consistent and less
brittle for types that can/should be converted to a string. also,
make sure the core marshaller type checking methods are consistently
named.
REFACTOR: cleanup creation and usage semantics for the random number generators.
REFACTOR: cleanup and modularize the disposal logic for the Interpreter class.
REFACTOR: reduce confusion between the engine callback queue and the collection
of cached callback delegates by renaming the callback queue related
variables, methods, enumeration values, and compile-time constants.
REFACTOR: enable [unfinished] AppDomain management support by the interpreter to
be excluded at compile-time. it is now excluded by default.
REFACTOR: when compiled without console support, use an IHost that supports
just enough functionality to actually complete the test suite.
REFACTOR: add the necessary code to differentiate between delay-signed and
fully-signed strong-named assemblies. this will not work on Mono (in
Unix).
REFACTOR: use the latest available .NET Framework by default when building from
the command line via the build tool. the .NET Framework 2.0 or 3.5
may be selected manually by setting the NETFX20ONLY or NETFX35ONLY
environment variables, respectively.
REFACTOR: modify .NET Framework detection build targets and revise how the
related compile-time constants are used.
REFACTOR: *BREAKING CHANGE* rename the DebuggerFlags enumeration along with all
the related fields and variables to HeaderFlags, everywhere. the new
name more precisely describes the actual effects of these flags.
REFACTOR: support selectively displaying header information based on the size
of the display area. this feature may require further usability
tweaks.
REFACTOR: disable the isolated debugger interpreter by default. it can be
enabled by specifying the Debug flag when creating the Interpreter or
later by executing the command [debug setup true true].
REFACTOR: *BREAKING CHANGE* rename IScript.Id to IScript.Name. rename IEvent.Id
to IEvent.Name. also, both interfaces now inherit from IIdentifier.
FEATURE: new #iflags interactive command to get and set the interpreter flags.
FEATURE: add built-in support for the ADO.NET 2.0 Provider for SQLite (a.k.a.
System.Data.SQLite) to the [sql] command.
FEATURE: add ObjectIds to the [info engine] sub-command to query the object Ids
for all types in the library. also added the associated element to the
platform array.
FEATURE: support reading and evaluating scripts, from files and streams, inside
XML that conform to the schema compiled into the library (i.e. from the
file Eagle.xsd). also, added an engine flag to disable this behavior.
FEATURE: allow engine notifications to be disabled on a per-call basis by using
the new NoNotify engine flag. this flag only applies to the methods of
the Engine class.
FEATURE: add experimental [object verifyall] sub-command to verify strong-name
signatures and check for Authenticode certificates on all assemblies in
the current AppDomain.
************************* Beta 1.0.3756.18875 RELEASE *************************
BUGFIX: for the PowerShell cmdlet, change all the boolean parameters to use the
provided SwitchParameter type (i.e. UseSwitchParameterInsteadOfBoolean).
BUGFIX: make sure that all public components that are not designed to be created
(i.e. they only contain static members) have a private constructor.
BUGFIX: fix tclLoad-1.1 test to check for Tcl 8.6 or higher (i.e. it uses script
cancellation).
BUGFIX: fix tclLoad-1.5 test to check the return code of CreateTclThread, which
can fail on some systems (e.g. the .NET Framework 2.0 RTM on Windows
2000 SP4).
BUGFIX: make the lsort-9.2, lsort-9.3, lsort-9.4, and lsort-9.5 tests to accept
correct answers that differ from the ones provided by the .NET Framework
2.0 SP2.
BUGFIX: fix diagnostic output issue for clean tool. make it quieter by default.
BUGFIX: fix ERRORLEVEL handling for Winodws 7 in all batch file based tools.
BUGFIX: save and restore the sleep time property for the interpreter in the
tests that modify it.
BUGFIX: make test object-4.10 (WiX) work properly on Mono despite an extraneous
line feed in the captured [exec] output.
BUGFIX: skip tests array-1.12 and array-1.13 in Tcl, see SF bugs #2889257 and
#2889293.
BUGFIX: fork test upvar-8.3 into pre-tcl86 and post-tcl86 versions due to a
change in the returned error message.
BUGFIX: prevent multiple debugger prompts when the Break environment variable is
initially set during shell startup.
BUGFIX: fix error line number management in the interactive loop.
BUGFIX: fix out-of-bounds error for the interactive #iinfo command when there
are no active script file names.
BUGFIX: do not display the Interpreter.Complaint string in red unless there is a
valid one (i.e. it is not null or empty).
BUGFIX: make the default host properly display null object values.
BUGFIX: add missing ThreadId, BackgroundError, and Precision members to the
IInterpreter interface.
BUGFIX: only compile the file IExecuteCache.cs if the EXECUTE_CACHE compile
option is enabled.
BUGFIX: remove some extraneous "File Not Found" outputs in the build tools. fix
error checking semantics in the release preparation tool when returning
from the build tool. also, correct some typos in diagnostic messages.
enable skipping the build steps in the release preparation tool. also,
run WinRAR in the background when creating the self-extracting archives.
BUGFIX: make sure that the -alias option works even when there is an existing
opaque object handle name that refers to the same object.
BUGFIX: [object members] needs to return assembly qualified type names. second,
it should not return duplicate member names when method signatures are
not selected. third, it should not return the method attributes unless
they are specifically requested.
BUGFIX: fix detection of assembly qualified names when confronted with types
containing multiple generic type parameters.
BUGFIX: fix implicit opaque object handle leak in test winForms-4.1.
BUGFIX: fix callback leaks in tests object-4.5, object-10.2, object-10.3,
object-10.5, vwait-1.4, vwait-1.5, vwait-1.6, vwait-1.7, winForms-4.1,
winForms-5.1, winForms-5.2, winForms-7.1, winForms-8.1, and xaml-1.1.
BUGFIX: add null pattern checking to the substring case for StringOps.Match.
BUGFIX: prevent nonexistent custom test prologue/epilogue files from causing the
test suite to raise errors.
BUGFIX: make upvar-10.1 test pass when logging has been explicitly disabled.
REFACTOR: cleanup the processing and displaying of command line arguments in the
test suite prologue.
REFACTOR: allow for testing to be halted on the first test failure via the test
suite flag -stopOnFailure. this flag has no effect if the test suite
is running inside Tcl.
REFACTOR: add plumbing to support displaying the color settings for the host via
the #hinfo interactive command.
REFACTOR: issue a trace warning when the status and/or value of nonexistent
options are requested.
REFACTOR: make the banner, legalese, and interactive help displays respect all
color settings. also, generally reform all color handling to be more
robust and conservative with respect to the chosen interpreter host.
REFACTOR: make all usage of Interpreter.thisPackageName more robust.
REFACTOR: enable the CommandCallback class to skip creating opaque object
handles for callback scripts.
REFACTOR: expose getColumnValue and getRowColumnValue to Tcl. however, they
will only work in Tcl 8.5 or higher.
REFACTOR: embed the source identifier from the Fossil checkout into the primary
assembly via the new AssemblySourceId attribute.
REFACTOR: support overriding the default settings for project compilation on a
per-user basis.
REFACTOR: add an experimental caching dictionary class. for now, it is disabled
by default because it still needs work.
REFACTOR: make the interactive #iinfo and #show commands idempotent and
capable of displaying the local result as well as the global one.
also, make it clear (via flags) whether a result is local or global.
REFACTOR: make the default host handle colors and formatting for non-standard
return codes is a more customizable way.
REFACTOR: make it clear in the interactive shell when the primary assembly has
been Authenticode signed.
REFACTOR: cleanup the setup and revise the component names and descriptions.
REFACTOR: allow None to be recognized as a ConsoleColor for the purposes of
loading the host profile.
REFACTOR: add unit test to demonstrate that interactive script cancellation can
work properly from a secondary thread.
REFACTOR: make the build tool select the latest available .NET Framework version
(and the matching solution file) unless the NETFX20ONLY environment
variable is defined.
REFACTOR: revise how the web service handles settings and flags (i.e. allow them
to be modified via environment variables and/or the web configuration
file).
REFACTOR: add the public IGetInterpreter and ISetInterpreter interfaces and make
use of them in the library. they are designed to provide an official
way to get and/or set the interpreter instance associated with a given
component.
REFACTOR: provide a cleaner way to construct package directories while embedded
within an application (e.g. the script library directory containing
the init.eagle file).
REFACTOR: the source archive now includes the source code and binary for the
sha1sum tool.
REFACTOR: the official setup now requires the .NET Framework 2.0 SP2 or higher.
it has been generally available since 2009/01/16 and is supported on
all operating systems supported by the RTM version. if this does not
meet your needs, the setup may be customized and rebuilt using Inno
Setup (http://www.jrsoftware.org/) and the provided setup source code.
REFACTOR: make sure that the unit test suites for third-party plugins have easy
access to check for defined test constraints.
REFACTOR: further cleanup/modularize output handling in the PowerShell cmdlet.
REFACTOR: *SHELL* by default, we now dynamically load and call the interactive
loop entry point in the Eagle library (i.e. Interpreter.ShellMain).
this enables the shell to use any compatible version of the Eagle
library, not just the one it was built against.
REFACTOR: *BREAKING CHANGE* rename IHost.WriteDebuggerHeader/Footer to
IHost.WriteHeader/Footer.
FEATURE: new -trace command line option is used to enable tracing to the
console without having to set the Trace environment variable.
FEATURE: add #canexit interactive command to toggle whether scripts are allowed
to exit the application.
FEATURE: add [host namedcolor] sub-command to query the color and/or set values
for a named color setting. to standardize getting and setting named
color settings across all kinds of interpreter hosts, new overloads of
the IHost.GetColors and IHost.SetColors methods have been added.
FEATURE: add [object callbackflags] sub-command to set the flags on a callback.
FEATURE: add [object removecallback] sub-command to remove callbacks.
FEATURE: add -fail and -message options to [exit]. allow the interpreter host
to reject exit attempts.
FEATURE: add -ignorestderr option to [exec] (see TIP #267 from Tcl 8.5).
FEATURE: add -noCancel option to [test2] to prevent the entire evaluation stack
from being unwound by the script being tested. also, make the -noExit
option apply to the setup and cleanup script blocks as well as the test
body itself.
FEATURE: add the ability to disable throwing exceptions when a disposed [Eagle]
object is accessed. this feature can be activated for all object types
by setting the NoThrowOnDisposed environment variable (to anything). in
addition, an Interpreter will no longer throw an exception when it is
accessed after being disposed unless the ThrowOnDisposed flag was
specified in the interpreter creation flags.
FEATURE: add the ability to break into the debugger when Interpreter.Create is
called. this is necessary to support debugging Eagle when it is
embedded within an application that is not a shell. this feature can
be activated by setting the Break environment variable (to anything)
prior to creating the Interpreter or by using the BreakOnCreate
interpreter creation flag.
FEATURE: add the WiX integration project EagleExtensions. this project contains
a WiX preprocessor extension that allows Eagle variables, commands, and
scripts to be used in WiX authoring. this project will not build (i.e.
it will be skipped automatically) unless you have WiX version 3.0 or
higher installed (version 3.5 or higher is recommended). the necessary
files have also been added to the setup.
************************* Beta 1.0.3736.02044 RELEASE *************************
BUGFIX: the [string format] command should provide a way to prevent numeric
and/or date interpretation of its arguments.
BUGFIX: prevent incremental builds from rebuilding everything due to the issue
described in Microsoft Connect FeedbackID 470485. in summary, producing
an XML documentation file during the build process prevents incremental
builds from working correctly (i.e. they always rebuild everything).
BUGFIX: prevent warnings about being unable to overwrite in-use files in the
BuildTasks output directory by skipping the custom build tasks for the
Sample project when building inside Visual Studio. for more detailed
information on this issue, search the Microsoft .NET Development Forums
for the threads 7ff580c8-bc13-444a-b887-e8909c82629c, entitled "Custom
task dll in use after build" and 4d67b00b-07ef-4fa3-b581-234fca5caac0,
entitled "Task dll is locked after build".
BUGFIX: if necessary, set env(HOME) based on the HOMEDRIVE and HOMEPATH
environment variables (COMPAT: Tcl).
BUGFIX: fix the rotate-left (<<<) and rotate-right (>>>) operators.
BUGFIX: make sure to use the built-in Enum.TryParse when compiling for the .NET
Framework 4.0 or higher.
BUGFIX: check for null array of methods passed to FindMethodsAndFixupArguments.
BUGFIX: remove optional argument decorations from the result of [info args].
BUGFIX: make [info default] return accurate information now that optional
arguments are supported.
BUGFIX: display array searches when variable information is displayed.
BUGFIX: fix handling of [host close] by the interactive loop.
BUGFIX: change the default return value of _Hosts.Console.IsOpen to true so the
interactive loop can work properly on Mono.
BUGFIX: make sure the System.Management.Automation.dll is not copied into the
output directory by MSBuild.
BUGFIX: fix the file name handling logic in Engine.*ReadScriptFile.
BUGFIX: make sure that using the NoTitle and/or NoIcon options does not break
console Ctrl-C support.
BUGFIX: prevent thread contexts from being re-created by blocking notifications
during interpreter disposal.
BUGFIX: only tear down the thread specific data for a particular interpreter in
Interpreter.DisposeThread.
BUGFIX: check breakpoints when exiting from a substitution call.
BUGFIX: prevent infinite recursion via [unknown] (i.e. if it tries to execute a
nonexistent command).
BUGFIX: do not allow exceptions to escape from the GetScript and Prompt methods
of the IHost interface.
BUGFIX: the core IHost implementation should not modify the provided script
name using FormatOps.ScriptTypeToFileName.
BUGFIX: the test project must use the Engine.QueueWorkItem method instead of
using the thread pool directly. also, it must handle all the corner
cases for the IHost.GetScript method (i.e. the IHost implementation may
opt to return the text of the requested script, a local file name, or a
remote URI).
BUGFIX: better error reporting for interactive #rehash command.
BUGFIX: fix "best" build selection issue in TclWrapper, the debug affinity of a
particular build must not prevent higher priority builds with the same
version number from being selected.
BUGFIX: make Engine.ReadScriptStream stop consuming characters from the stream
when it encounters an end-of-file character.
BUGFIX: fix the Ctrl-C handler not being managed correctly when [host close]
and/or [host open] are used.
BUGFIX: fix the -line and -linestop options to [regexp] and [regsub] to
properly conform to the Tcl specification.
BUGFIX: fix [info subcommands] when used with a command alias.
BUGFIX: fix core marshaller handling of array arguments that are already of the
required type.
BUGFIX: fix core marshaller handling of arrays with zero length bounds.
BUGFIX: fix typos related to an incorrect usage pattern for the LooksLikeOption
and BadOption methods.
BUGFIX: fix [sql execute -type NonQuery ...] to return the same integer value
returned by the .NET Framework method (i.e. number of rows affected).
BUGFIX: mark _Commands.Alias as "safe" because it provides no functionality by
itself.
BUGFIX: in Tcl, revise and export [exportAndImportPackageCommands] from the
script library for use by third-party packages.
BUGFIX: fix the variable leak detection support logic in runAllTests. the
global variable test_file is set by the Interpreter itself and must be
unset prior to recording the global variable count for accounting
purposes.
BUGFIX: fix the shift-left (<<) and shift-right (>>) operators with respect to
negative shift values (COMPAT: Tcl 8.4).
BUGFIX: remove a redundant call to FixupVariants from the rotate-left (<<<)
operator.
BUGFIX: fix race condition for the interpreter notification flags (e.g. the
NoNotify flag) that can occur when multiple threads are trying to fire
event notifications in very close proximity to one another.
BUGFIX: slightly relax checking of the build configuration directory name in the
PathOps.GetBasePath method.
BUGFIX: The Example usage of FormatResult should use the actual return code and
should include the error line number where applicable.
BUGFIX: make sure the DefineConstants list includes the EXECUTE_CACHE define and
that the list itself ends with a null element for better C# syntactical
correctness.
BUGFIX: improve compliance with the PowerShell 2.0 cmdlet standard. make error
reporting more robust and consistent.
BUGFIX: to improve compatibility, do not derive enumerated types from uint.
BUGFIX: attempt to mitigate disposing of [Tcl in] an Interpreter on a different
thread than it was created on, please see ticket #1335fd994e. this is
only a partial fix. it skips attempting to dispose of the Tcl subsystem
if it has not been used. failing that, it attempts to put all the Tcl
related objects into a global (static) cache for later transfer if and
when an Interpreter is created on the correct thread. finally, more
detailed diagnostic messages are provided to aid in debugging this
situation.
BUGFIX: fine-tune result handling in the Interpreter creation code. the Result
[object] for a successful call should be null (or an empty string if the
script library initialization is performed).
BUGFIX: in Debugger.CreateInterpreter, check if the Interpreter was sucessfully
created before using it.
BUGFIX: fix an incorrect directory name handling bug in clean tool when cleaning
up after plugins when there are spaces in the source code root directory
name.
BUGFIX: fix Mono runtime version detection (broken as of Mono 2.6.0?). also,
adjust version number checking in the test suite (i.e. version.eagle) to
be slightly more relaxed.
BUGFIX: correct long file name handling in the object-4.8 (i.e. the PowerShell
custom cmdlet) test.
BUGFIX: add administrator constraint support for tests object-4.6 and object-4.8
(Windows Vista/7 specific). make the WMI test (i.e. object-4.6)
slightly more robust.
BUGFIX: change test library-1.1 to allow a NULL return value from the Windows
API function GetConsoleWindow if there is no interactive user (this may
be Windows Vista/7 specific).
BUGFIX: fix incorrect regular expression bug in the build version tagging tool.
BUGFIX: fix incorrect XCOPY flags specified for files bug in the build updating
tool.
BUGFIX: use a more robust method of unsetting environment variables in the
release preparation tool (i.e. because we do not want to accidentally
change the ERRORLEVEL).
BUGFIX: *BREAKING CHANGE* rename incorrectly named SetNoResultError routine to
SetNoResetError.
REFACTOR: simplify all the build tasks by factoring out common code into the
base class.
REFACTOR: simplify all the PowerShell cmdlets by factoring out common code into
the base class.
REFACTOR: there is no need to lock the Interpreter in PreSetup.
REFACTOR: centralize all code that deals with modifying the interpreter creation
flags and startup option handling (e.g. this is still accomplished via
the documented environment variables for now).
REFACTOR: organize all the Eagle projects within all the solutions into groups.
REFACTOR: update various version numbers for the Visual Studio 2010 RC.
REFACTOR: modify the #testdir interactive command to include the default core
and plugin test paths in the output.
REFACTOR: revise handling of the path variable (for use by third-party test
suites to locate their own files). the runTestPrologue helper
procedure will now set the path global variable to the directory
containing the file that invoked it immediately before running the
standard test prologue. also, the runTestEpilogue helper procedure
will now unset the path global variable immediately after running the
standard test epilogue.
REFACTOR: add a simpler overload of Engine.ReadScriptFile and use it when
appropriate.
REFACTOR: for [host], allow using the -relx and -rely options to augment the
values provided with the -x and -y options, if any.
REFACTOR: remove unnecessary helper routines from the engine.
REFACTOR: add experimental support for command lookup caching (resolve only).
REFACTOR: cleanup and modify the usage semantics of IHost.GetScript to properly
handle all the valid corner cases (i.e. the IHost implementation may
opt to return the text of the requested script, a local file name, or
a remote URI).
REFACTOR: optimize runtime detection of Mono.
REFACTOR: *PERF* minor Engine performance tweaks.
REFACTOR: enable compile-time exclusion of debugger support.
REFACTOR: cleanup [debug] and have it use the new debugger API.
REFACTOR: avoid redundant setting of the return code when processing optional
arguments in [info].
REFACTOR: make the internal debugger API and its usage more consistent.
REFACTOR: in Interpreter, validate strings prior to using File.Exists.
REFACTOR: move all non-console specific functionality from _Hosts.Console into
the new _Hosts.Core class.
REFACTOR: skip loading the host profile if requested. make the host profile
loader cleaner and more robust.
REFACTOR: skip setting up the host script cancellation interface if requested.
REFACTOR: add overloads to the Interpreter.Create and InteractiveLoop methods
that greatly simplify the process of creating and using interpreters
with relatively standard behavior.
REFACTOR: cleanup all the implementations of IHost.GetScript. enhance the core
IHost.GetScript implementation so that custom code is no longer
required to simply use an extra resource manager as a possible script
location.
REFACTOR: update Fossil tool w/source to latest release version 20091220213451.
REFACTOR: detect the build tool and operating system in use during the build
process. this enables build targets to be skipped that rely upon a
specific build tool (e.g. MSBuild) and/or operating system (e.g.
Windows).
REFACTOR: check for null return from GetMethods, GetParameters, and GetFields.
REFACTOR: enable compile-time exclusion of the dedicated test code used by the
unit testing framework.
REFACTOR: cleanup dedicated test code style.
REFACTOR: cleanup core parsing routines for style and usage.
REFACTOR: add baseline [string match] benchmarks.
FEATURE: add an example web services project EagleServices. this project is
considered highly experimental and should not be used in a production
environment. this project will not build (i.e. it will be skipped
automatically) unless you have the "Web Application Projects" project
type installed for the version of Visual Studio you are building with.
FEATURE: add -identity option to [object invoke] to allow for the explicit
invocation of the object return value handling from the core marshaller
(i.e. MarshalOps.FixupReturnValue) on any script-accessible object.
FEATURE: add -compiled, -explicit, and -reverse options to [regexp] and
[regsub].
FEATURE: new -ptest command line option and #ptest interactive command to
simplify running plugin-specific unit tests and/or suites.
FEATURE: test suite now runs cleanly on Windows 7 with or without administrator
rights.
************************* Beta 1.0.3620.08845 RELEASE *************************
BUGFIX: make sure that [array] does not operate on undefined variables.
BUGFIX: add support for optional arguments (via [proc] and [apply]) to implement
CodePlex feature #2985.
BUGFIX: make fetchAnUpdate type case-insensitive.
BUGFIX: flag variables as dirty only after the requested changes have been made
to them.
BUGFIX: modify [vwait] and WaitVariable to properly support multi-threaded
scenarios.
BUGFIX: make sure null lists passed to ListToEnglish do not cause exceptions.
BUGFIX: favor normal builds of Tcl over basekits. properly detect official
builds of Tcl for Windows that are threaded-by-default.
BUGFIX: allow test logging to be disabled.
BUGFIX: test socket-1.2 (and a few other tests) should not be skipped for Tcl.
the larger problem here involved differences in how Tcltest and Eagle
handle complex test constraint expressions.
BUGFIX: make [object resolve] work properly when running on the .NET Framework
4.0.
BUGFIX: do not force the creation of the script cancellation thread if no script
timeout has been set.
BUGFIX: when deleting the global namespace, honor all read-only flags.
BUGFIX: the [rename] command must remove leading colons from command names.
BUGFIX: make [info nameofexecutable] use forward slash as the directory
separator (COMPAT: Tcl). make [exec] pass the native executable file
name to the system.
BUGFIX: verify the EagleBinaryOutputPath and/or EaglePackageOutputPath build
properties are set before attempting to use them.
BUGFIX: the official build tools should perform build logging by default. also,
fix the ability to debug the build tools.
REFACTOR: cleanup the core list parsing routines.
REFACTOR: extend the IHost interface to allow hosts to handle calls to create
new threads and dispatch work items to the thread pool. also, allow
hosts to handle calls to put the current thread to sleep.
REFACTOR: add initial build support for Visual Studio 2010 and the .NET
Framework 4.0. add project files for Visual Studio 2010 Beta 2.
REFACTOR: make constants for the names of native DLLs that we call.
REFACTOR: modify the semantics of SetVariableValue2 to ensure both array and
scalar variables are setup correctly with respect to the elements
dictionary prior to the final phase of modifying a variable value.
REFACTOR: update Fossil tool w/source to latest release version 20091111162119.
REFACTOR: *BREAKING CHANGE* update and lock-down all strong-name keys for Eagle.
FEATURE: new [debug lockcmds], [debug lockprocs], and [debug lockvars]
sub-commands. these are used to modify the read-only flag of commands,
procedures, and variables, respectively.
FEATURE: support [do script until test] in addition to [do script while test].
FEATURE: support asynchronous engine operations via new public overloads of
EvaluateScript, EvaluateFile, SubstituteString, and SubstituteFile.
FEATURE: add get/set/unset operations on logical groups of variables via the new
GetVariableValues, SetVariableValues, and UnsetVariables Interpreter
interface methods.
FEATURE: new -initialize command line option is used to immediately initialize
the script library without entering the interactive loop.
FEATURE: new -postinit command line option is used to evaluate a script after
the script library has been initialized. also, the -preinit command
line option is now restricted to evaluating scripts prior to the script
library being initialized.
FEATURE: support evaluation of scripts from remote URIs via [source] and the
command line. also, added an engine flag to disable this behavior.
************************* Beta 1.0.3599.38186 RELEASE *************************
BUGFIX: fix typos in default host color property definitions.
REFACTOR: internal renaming and cleanup of coding conventions in the method
overload resolution engine (i.e. FindMethodsAndFixupArguments).
REFACTOR: add missing empty argument to several IHost interface methods.
REFACTOR: add baseline [object invoke] benchmarks.
REFACTOR: revise command line help.
REFACTOR: add new supported build configuration for embedding the primary
assembly into SQL Server.
FEATURE: add nested member name resolution to [object invoke]. the member name
argument may now consist of multiple parts separated by a period. this
feature simplifies the process of invoking deeply nested members. the
-nonested option to [object invoke] has been renamed to -nonestedobject
and a new -nonestedmember option has been added to allow this new
feature to be disabled.
FEATURE: add -limit option to [sql execute] to limit the number of rows returned
by a reader operation.
FEATURE: new [info ensembles] sub-command. returns all commands that contain
sub-commands (i.e. ensembles), optionally restricting the results
based on a pattern.
************************* Beta 1.0.3596.38043 RELEASE *************************
BUGFIX: make the [pwd] command return the current directory using the alternate
directory separator character, forward slash (COMPAT: Tcl).
BUGFIX: fix and cleanup interactive help for flags related commands. add
missing #ntypes interactive command.
BUGFIX: improve PathOps native path handling.
BUGFIX: when deleting the global namespace, make sure that the dirty flag is set
on deleted variables so that a pending wait on the variable will be
satisfied.
BUGFIX: make [array exists] semantics match the other [array] sub-commands.
BUGFIX: make [array names] on the global env array honor the matching mode.
BUGFIX: add the missing Tcl sub-commands [array anymore], [array donesearch],
[array nextelement], and [array startsearch].
BUGFIX: support the test suite files being in a directory unrelated to the
executable directory (i.e. isolated test suite support).
BUGFIX: prevent built release executables from having the full directory name
for the PDB files.
BUGFIX: allow variable watches and trace callbacks to modify the variable flags;
othersise, certain variable operations are impossible to accomplish via
variable watches and trace callbacks.
BUGFIX: fix PowerShell cmdlet lifecycle issues. the documentation is unclear;
however, it seems that the StopProcessing method is called in lieu of
the EndProcessing method if the operation is canceled.
BUGFIX: make [info exists] work with the global env array.
BUGFIX: catch exceptions when accessing environment variables via the env array.
BUGFIX: return errors when attempting to get or unset nonexistent global env
array elements.
REFACTOR: modify internal policy interfaces to handle script file policies.
REFACTOR: update Fossil tool w/source to latest release version 20091102131944.
FEATURE: optionally perform string substitution on interactive commands. this
feature is disabled by default. it may be enabled in the shell using
the interactive #isflags command with a SubstitutionFlags argument
value that does not evaluate to None. if any errors occur during the
substitution process, they will be reported to the console and the
command itself will not be executed. substitutions will be silently
ignored if the interpreter engine flags, interactive or otherwise, are
set to prohibit them.
FEATURE: new -noexit command line option is used to enter the interactive loop
instead of exiting the process.
************************* Beta 1.0.3586.00247 RELEASE *************************
BUGFIX: use proper script library paths on Unix platforms.
REFACTOR: support keeping the primary assembly versions synchronized for a given
release of Eagle.
************************* Beta 1.0.3585.35575 RELEASE *************************
BUGFIX: fix [gets stdin] end-of-line detection on non-Windows platforms.
BUGFIX: add missing test constraints in the files basic.eagle, expr.eagle, and
function.eagle to allow the test suite to pass cleanly in Tcl 8.4
through Tcl 8.6.
BUGFIX: simplify the use of language version test constraints and unify some
tests that relied upon them.
BUGFIX: fix string operators (eq, ne, in, ni, etc) to stop them from converting
their arguments to a numeric value.
BUGFIX: make core marshaller return success if any matching methods are found
even if the match limit has not been met.
BUGFIX: avoid superfluously setting the foreground and background colors of the
console.
BUGFIX: remove hard-coded assumptions in the test suite "we are always running
inside the Eagle Shell" and "the interactive debugger is always
available".
BUGFIX: the PowerShell snap-in should be selected by default during setup if a
PowerShell install is detected.
BUGFIX: fix parsing of negative enumeration values.
BUGFIX: add more runtime guards to prevent scripts from using features that are
not available on Mono.
BUGFIX: avoid using native stack checking on non-Windows platforms, even if
support for it has been compiled in.
REFACTOR: first attempt to work around the "console hang" issue on Mono/BSD.
REFACTOR: *HACK* avoid the problematic overloads of the WaitAny/WaitOne methods,
primarily so that Mono does not crash with MissingMethodException.
REFACTOR: skip changing the Console icon if requested.
REFACTOR: improve diagnostic information for stack overflow conditions.
FEATURE: new -noinvoke option to [object create], [object invoke], etc. this
option returns the constructor(s) and/or method(s) that match the given
name and arguments without actually invoking them. new -noargs option
(for use with -noinvoke) that allows all the constructor(s) and/or
method(s) matching a particular name to be returned without regard to
the number and types of arguments they require.
************************* Beta 1.0.3581.42932 RELEASE *************************
BUGFIX: make all upvar-tcl tests self-cleaning.
BUGFIX: make [array get], [array names], [array size], and [array unset] work
with the global env array.
BUGFIX: add missing test suite outputs for better Tcl compatibility.
BUGFIX: prevent usage of waitForProcesses in socket-1.2 test for Tcl.
BUGFIX: the [uri softwareupdates] sub-command will not work on Mono. therefore,
it is now disabled for the Mono build.
BUGFIX: prevent Tcl isolated thread tests from running when a non-threaded build
of Tcl has been loaded.
BUGFIX: fix various errors and omissions in the interactive command help.
BUGFIX: *BREAKING CHANGE* rename [callback queue] to [callback enqueue] and fix
error message.
REFACTOR: revise interactive #check command. it now has the capability to
synchronously download an updated release of the specified type (e.g.
source, setup, or binary).
REFACTOR: make the evaluation engine callback queue an optional feature, enabled
by default.
REFACTOR: make it easier to discover the valid options for [object create] and
[object dispose].
FEATURE: new [uri join] sub-command. allows URI components to be joined in a
portable way without validation.
************************* Beta 1.0.3575.24043 RELEASE *************************
BUGFIX: *PERF* fix most of the performance issues caused by having per-thread
context data.
BUGFIX: handle ShouldContinue exception when using the PowerShell snap-in with a
non-interactive PowerShell host.
BUGFIX: prevent Engine.ResetReturnCode from attempting to access a null result.
BUGFIX: new [object foreach] sub-command fixes the inability to use managed
collections that support IEnumerable and do not support random access.
BUGFIX: remove hard-coding of the stdout channel as the constraint detection
reporting channel for the test suite.
BUGFIX: allow TclWrapper.Find and [tcl find] results to be restricted based on
version. this fixes test library-3.1 on systems that have really old
Tcl libraries (pre-8.4) installed.
BUGFIX: remove usage of Interpreter.GetActive from the _Comparers.Command class.
BUGFIX: findFiles and findFilesRecursive routines need to use [file normalize]
in both Tcl and Eagle.
BUGFIX: make [file pathtype] work better on non-Windows systems.
BUGFIX: *BREAKING CHANGE* make sure command tokens get removed from the
appropriate plugin when a command is deleted via [rename], etc.
unfortunately, this is a breaking change for all commands because an
extra parameter is required in the call to the constructor. no more
changes will be made to the ICommand interface or related semantics
prior to the final release.
REFACTOR: add experimental support for list representation caching. reworked
the interfaces of several internal and external routines to facilitate
this feature.
REFACTOR: cleanup and clarify parts of Tcl sample.
REFACTOR: *BREAKING CHANGE* cleanup and revise all interface methods for getting
access to the various entities managed by the interpreter. this is a
breaking change for external callers to those methods due to the
addition of an output parameter.
REFACTOR: revise logic for add and removing sets of commands. internal
modularization and cleanup.
************************* Beta 1.0.3560.39191 RELEASE *************************
BUGFIX: allow Tcl commands to be forcibly deleted even if evals are active.
BUGFIX: remove superfluous code from the tclLoad-1.6 test. also, modify Tcl
library constraint to check for Tcl version 8.6 or higher (requires
script cancellation).
BUGFIX: heavily revise locking semantics for the TclWrapper class to improve
concurrency in multi-threaded scenarios.
FEATURE: new -tcl option to the various object related commands that cause Tcl
commands to be created in the specified Tcl interpreter that expose the
underlying functionality of the object.
************************* Beta 1.0.3557.23265 RELEASE *************************
BUGFIX: do not use the new WaitAny method overload when built for the .NET
Framework 2.0 RTM or Mono (Mono bug #517208).
BUGFIX: work around Mono bug that causes the ManualResetEvent.WaitAny method to
return the value WAIT_IO_COMPLETION. the .NET Framework method never
returns this value and the framework documentation clearly forbids it.
BUGFIX: make [string match] and [string format] argument validation more
consistent.
BUGFIX: make [parray] line up all the values properly (COMPAT: Tcl). there is a
bug in Mono that prevents this from working properly and the old
behavior is used in that case.
BUGFIX: reset pending cleanup flag after the global namespace has been deleted.
BUGFIX: revise Excel automation tests to check for leftover processes. please
note that this may cause these tests to fail occasionally due to subtle
process timing issues external to Eagle.
BUGFIX: make handling of Interpreter.Create failures correct and consistent.
BUGFIX: do not try to use Windows dynamic loading functions when running on
Unix even if the binaries are built for Windows.
BUGFIX: add missing type checks for the Version and ReturnCodeList types in
Variant.IsNumber.
BUGFIX: remove incorrect use of argument list from exponent operator
implementation.
BUGFIX: correct namespace for TclThreadList and TclThreadDictionary.
BUGFIX: object reference counts should never be automatically reduced for the
global call frame.
BUGFIX: the [after] command must evaluate scripts in the global namespace.
BUGFIX: by default, the [after] command must not evaluate scripts until the next
call to [vwait] or [update].
BUGFIX: correct locking semantics in [after enable].
BUGFIX: the Interpreter.AddVariable method must remove leading colons from
variable names.
BUGFIX: fix a sticky result issue with the #halt interactive command. This was
caused by the [debug break] command recycling the previous result into
the current result.
BUGFIX: make sure all threads are created via Engine.CreateThread.
BUGFIX: expose TclThread.CancelEvaluateNoLock as public until the TclApi
threading semantics are finalized.
REFACTOR: revise the public Engine.ResetCancel interface (and private interfaces
such as Engine.ResetHalt and Engine.ResetReturnCode) to set a boolean
indicator, if any changes were actually made to the interpreter state.
REFACTOR: revise TclSample to allow multiple Tcl forms, one per thread. Each
form owns a Tcl interpreter.
FEATURE: new [after flags] sub-command. this allows the script to specify if
subsequent after events can be executed immediately or if they must
wait until the next call to [vwait] or [update].
************************* Beta 1.0.3551.24300 RELEASE *************************
BUGFIX: correct typo that put the ObjectId attribute in the wrong place for the
Sample.Class1 class.
BUGFIX: revise semantics for native stack checking by the engine and external
components (e.g. callers to CheckEvents).
BUGFIX: fix issue with non-null Tcl API object being left in the Eagle
interpreter in some cases of TclWrapper.Load failure.
BUGFIX: skip Tcl interpreter thread checking when the force flag is set in a
call to TclWrapper.DeleteInterpreter or TclWrapper.Unload.
BUGFIX: allow the Tcl API object for the Eagle interpreter to be initialized
externally if it has not been set already.
BUGFIX: allow external Tcl interpreters to be used if the TclWrapper flag has
been enabled for the Eagle interpreter.
BUGFIX: make sure the GetEngineContext, GetInteractiveContext, GetTestContext,
and GetVariableContext methods do not throw exceptions.
BUGFIX: verify proper thread for disposing Tcl subsystem.
BUGFIX: make Interpreter.MergeArguments handle corner cases better (e.g. allow
skipping of source and/or target command names).
BUGFIX: make CommonOps.FilterList with an empty input list a NOP.
BUGFIX: pass old procedure to update notification.
BUGFIX: add locks around composite get/modify/set variable operations in
[append], [lappend], and [lset].
BUGFIX: make TclWrapper error logging more consistent.
BUGFIX: find any event that is ready to be processed.
BUGFIX: fix typo in [open] error message.
BUGFIX: the [open] command can now re-open standard channels.
BUGFIX: add locks around access to the channel dictionary for the interpreter.
BUGFIX: fix CancelThreadStart to check for the Tcl_CancelEval delegate before
trying to use it.
BUGFIX: give names to created threads.
BUGFIX: fix issue with opaque object handle name formatting.
BUGFIX: always honor the ObjectFlags.NoDispose flag.
BUGFIX: check for each Tcl API function prior to each use. the intention here
is that specific features of Tcl may be programmatically disabled.
BUGFIX: make the inclusion of several private containers dependent on Tcl
support being enabled.
BUGFIX: remove TclObjectType.cs from the library projects because it is
incomplete and will not be ready for 1.0 RTM.
BUGFIX: check for null name/value arguments to be passed to Tcl variable access
routines.
BUGFIX: more consistent locking semantics in TclBridge and TclWrapper.
BUGFIX: check the interp argument to TclWrapper.Unload.
BUGFIX: preserve the Tcl interpreter prior to using the Tcl variable access
routines due to the potential for variable traces.
BUGFIX: be consistent in checking if an Interpreter has been disposed. also,
locking style cleanup.
BUGFIX: unique identifiers should be produced even if the interpreter is
invalid.
BUGFIX: tag DebugOps.Complain output with thread Id.
BUGFIX: fix omission of Policy value from the NotifyType enumeration.
BUGFIX: prevent exception when null value is passed as the text to
EvaluateScript.
BUGFIX: cleanup per-thread data for an interpreter upon thread exit.
BUGFIX: move SoftwareUpdateCertificateValidationCallback from SecurityOps to
SocketOps.
BUGFIX: remove all vestiges of non-working support for the .NET Compact
Framework. in order to actually make Eagle compile for and run on the
.NET Compact Framework (or for that matter, on Silverlight), a huge
development effort would be required for the purpose of porting it (i.e.
removing quite a few useful features). unfortunately, a similar effort
would be required to make Eagle run inside Silverlight (i.e. since it is
not based on the DLR).
BUGFIX: adjust handling of decimal digit checking to be in strict compliance
with underlying algorithmic requirements.
BUGFIX: add missing directories to the clean tool.
BUGFIX: use suffix environment variables in the release preparation tool.
BUGFIX: fix typo of TraceInfoForegroundColor in default host.
BUGFIX: slightly better path handling in test prologue.
REFACTOR: in the event of a failure in TclWrapper.Load, delete any created
interpreter directly instead of ending up doing it during unload via
the TclWrapper.DeleteInterpreter method.
REFACTOR: cleanup event processing to eliminate redundant object references.
REFACTOR: migrate most usage of the interpreter-specific DebugOps.Complain
method overload to use the new generic DebugOps.Complain method
overload instead. in the future, the interpreter-specific
DebugOps.Complain method overload will only be used to report errors
during the failure handling code where the failure actually involves
an interpreter and the error message cannot reflect the failure,
because it has already been set to reflect the failure of the
operation as a whole.
REFACTOR: cleanup and modularize the Tcl/Tk library file name detection and
parsing logic. detect Tcl installed as an Eagle package. add support
for basekits.
REFACTOR: the TCL_WRAPPER compile define is now enabled by default.
REFACTOR: add compile define EAGLE to the library projects. this will enable
code that can be used with or without Eagle to determine if
those integration features should be included or excluded.
REFACTOR: allow System.Net support to be excluded at compile-time.
REFACTOR: allow System.Console support to be excluded at compile-time.
REFACTOR: skip displaying empty information in the default debugger output (i.e.
the debugger header) to conserve space on the screen.
FEATURE: allow custom test prologue and epilogue files set via the environment
variables testPrologue and testEpilogue, respectively, to be evaluated.
FEATURE: new [interp alias], [interp aliases], and [interp bgerror]
sub-commands. the semantics of [interp alias] and [interp aliases]
conform to the Tcl standard for command aliases with some minor
differences primarily relating to error message text.
FEATURE: allow channel names in [open] and [socket] to be specified.
FEATURE: new [tcl preserve] and [tcl release] sub-commands.
FEATURE: add experimental support for isolated Tcl interpreter threads.
FEATURE: add EvaluateFile and SubstituteFile build tasks.
FEATURE: add asciidigit, asciialpha, and asciialnum types to [string is].
************************* Beta 1.0.3508.07783 RELEASE *************************
BUGFIX: totally removed the CancelInput property of the Interpreter (i.e. the
way it was being used was basically useless) and revised detection and
handling of redirected input in the interactive loop. the bug itself
can be seen by hitting ctrl-c when no script is being evaluated and
causes the process to exit.
BUGFIX: fix missing CheckDisposed calls in IsInputRedirected,
IsOutputRedirected, and IsErrorRedirected.
BUGFIX: fix error handling in IsVariableUndefined.
BUGFIX: check for null PreviousResult in [debug].
BUGFIX: slightly better error messages for [uri].
REFACTOR: switch to using HTTPS for online version checking (currently with a
self-signed certificate); this is secure because we check that the
public key of the certificate exactly matches what we expect it to be.
FEATURE: new [debug interactive] sub-command. this helps alleviate the
long-standing limitation that [debug break] and other interactive loop
constructs are prohibited by default in non-interactive shell modes.
************************* Beta 1.0.3497.38353 RELEASE *************************
BUGFIX: prevent superfluous use of the EagleLibraryResGenUnsetReadOnly build
target.
BUGFIX: do not copy EagleCmdlets to the BuildTasks output directory.
BUGFIX: fix failure of SetupConsole for NOP case when called upon to un-setup
the console.
BUGFIX: add proper save/restore semantics for the InteractiveThread property of
the interpreter in the interactive loop.
BUGFIX: properly lock access to interpreter processEvents flag from [vwait].
BUGFIX: fix launching of nested shells when running on Mono (primarily for the
test suite).
BUGFIX: the background error handler should be changeable per-interpreter.
BUGFIX: remove the useless termOffset field from Interpreter.
BUGFIX: fix confusion about which pieces of private data in Interpreter are
logically per-thread.
REFACTOR: *MAJOR* cleanup and reorganization of all private data in Interpreter.
REFACTOR: expose Tcl wrapper functionality if TCL_WRAPPER is defined.
FEATURE: add support for standard mode (where all non-standard commands are
hidden). in this context, a non-standard command is one that is not
available in Tcl 8.4, 8.5, or 8.6 (i.e. it is specific to Eagle).
FEATURE: add getColumnValue/getRowColumnValue helper procedures to the script
library.
FEATURE: add naive filter/map/reduce helper procedures to script library.
************************* Beta 1.0.3441.01503 RELEASE *************************
BUGFIX: add more I/O tests. fix incorrect and failing tests io-1.2 and io-1.4
due to using the wrong overloads of channel.Read() in [fcopy].
BUGFIX: revise and cleanup test suite summary handling. report the overall
result (i.e. the interp exitCode) based on the specified test pass
threshold, if any.
BUGFIX: make sure that Tcl can run all the socket tests.
BUGFIX: correct unnecessary exposure of initializeTests to Tcl.
BUGFIX: correct failing test function-3.1 on Mono due to srand() result
checking.
BUGFIX: correct multiple failing tests on CLR 4 due to overly strict version
checking.
************************* Beta 1.0.3438.42186 RELEASE *************************
BUGFIX: replace the misuse of Engine.HasNoWatch in ProcessOps with
Engine.HasNoEvent.
BUGFIX: fix duplicate ObjectId attribute values.
BUGFIX: by default, disable use of the soon to be deprecated CAS policy APIs
(CLR 4).
BUGFIX: simplify checks for null encoding in [gets], [puts], and [read].
BUGFIX: make sure that the test suite sets the ExitCode to non-zero if any of
the specified tests fail.
BUGFIX: fix check for the SignCode tool in the Authenticode build target.
BUGFIX: add EagleCmdlets target to the sign batch tool.
BUGFIX: adjust verbose descriptions of PowerShell cmdlet actions.
BUGFIX: skip building EagleCmdlets project if the necessary reference assembly
System.Management.Automation is not present.
FEATURE: new [fcopy] command; the -command option from Tcl is not implemented.
FEATURE: allow PowerShell snap-in to be installed (optionally) from the setup.
************************* Beta 1.0.3434.03009 RELEASE *************************
BUGFIX: fix unintended limitations on the use of the ApplicationObject and
UserObject properties of the interpreter object during its creation.
BUGFIX: custom build task interpreter should have strict auto-path option set.
BUGFIX: *BREAKING CHANGE* rename Strings class in the Eagle._Constants namespace
to _String for consistency.
FEATURE: implement cmdlets and a snap-in for use with PowerShell.
************************* Beta 1.0.3432.35303 RELEASE *************************
BUGFIX: fix issue with exponentiation operator and numeric values that end up
with the decimal type. added more tests.
************************* Beta 1.0.3431.42578 RELEASE *************************
BUGFIX: include executable name in the test log. add support for tagging the
test log file name by build variant, etc.
BUGFIX: preserve DateTime and StringList values while evaluating an expression.
REFACTOR: modify how the expression engine handles operators and how functions
and operators are added to the interpreter. add FunctionFlags to the
public IFunction interface. add OperatorFlags to the private
IOperator interface.
************************* Beta 1.0.3426.35077 RELEASE *************************
BUGFIX: fix [proc] to remove leading colons from the procedure names.
BUGFIX: add [package unknown] support to implement CodePlex feature #2986.
************************* Beta 1.0.3414.39083 RELEASE *************************
BUGFIX: correct failing test library-3.2 to use the file name of the Tcl library
that it also loads via [tcl load] for [library load].
BUGFIX: allow variable watches and asynchronous event processing to be skipped
when evaluating a script.
BUGFIX: fix the Tcl auto-selection algorithm to select a higher version even if
the debug configuration does not match.
************************* Beta 1.0.3405.26077 RELEASE *************************
BUGFIX: fix test tclSubst-1.1 failing due to tests library-3.1 and library-3.2
removing the Tcl binary directory from the search path even if they did
not actually add it; modified the script library routines addToPath and
removeFromPath to return non-zero if they actually alter the search path
to facilitate this fix.
BUGFIX: fix usage of the interpreter Interactive property in some tests. add
missing test description to test debug-1.1 and add clarifying comments
to test delayOut-1.1.
BUGFIX: allow opaque object handle names to be used in Type option values (e.g.
in the -parametertypes option to [object create] and [object invoke]).
BUGFIX: add build targets and infrastructure to remove read-only attributes on
source files that may need to be regenerated during the build process.
************************* Beta 1.0.3399.29054 RELEASE *************************
BUGFIX: *PERF* in the expression parser, do not switch on the operator name.
BUGFIX: fix [exec] to set ::errorInfo upon a non-zero exit status of the child
process (COMPAT: Tcl).
BUGFIX: fix [global] and [variable] handling inside a linked call frame.
BUGFIX: fix usage of CurrentFrame where it was incorrectly assuming that it
could not be a linked call frame (i.e. a frame with no variables).
BUGFIX: fix [package require] version comparisons (now non-exact by default).
REFACTOR: modify Example to demonstrate custom command execution policies and
how to use the interactive loop.
REFACTOR: preliminary support for tracking source line numbers in the script and
expression parsers.
************************* Beta 1.0.3393.01573 RELEASE *************************
BUGFIX: properly handle redirected input (special thanks to Matthew Wilson).
BUGFIX: lock read access to interpreter fields in default host.
BUGFIX: cleanup and add missing interpreter fields to default host information
displays.
BUGFIX: when resolving member arguments, we do NOT want to try to interpret the
argument value as an array variable name is they provided us an actual
string and the destination type is a character array.
REFACTOR: also process environment variable options in test shell.
************************* Beta 1.0.3390.39648 RELEASE *************************
BUGFIX: bump stack safety margin to 384K/768K on x86/x64.
BUGFIX: also search for script library relative to application binary.
BUGFIX: do not show full debugger display for breakpoints and variable watches
unless the default debugger flags have been overridden by the user.
REFACTOR: output a debug trace when a native stack overflow is detected.
REFACTOR: revise Authenticode signing build integration.
************************* Beta 1.0.3383.21041 RELEASE *************************
BUGFIX: fix possible uncaught stack overflow issues in parser by tracking parser
nesting levels and triggering a native stack check if necessary and
enabled.
BUGFIX: make extra build tasks capable of being disabled.
REFACTOR: remove ResetResult call in EvaluateTokens, it should no longer be
needed.
************************* Beta 1.0.3375.38602 RELEASE *************************
BUGFIX: add missing NotifyType check to CheckNotifications.
BUGFIX: correct FormatOps.MethodName to return a non-decorated name; callers
that need decorated names must use FormatOps.MethodOverload.
BUGFIX: do not change the Initialized property of an IPlugin inside AddCommands
and RemoveCommands.
BUGFIX: correct policy name construction and handling.
REFACTOR: expose interpreter basic policy API.
REFACTOR: make PathDictionary container public.
************************* Beta 1.0.3363.28976 RELEASE *************************
BUGFIX: add missing monoBug constraint to fileIO-2.2.
BUGFIX: SendMessage / PostMessage need to be CharSet = Auto.
BUGFIX: remove some useless variable declarations in Unix builds.
BUGFIX: update CodePlex URL.
************************* Beta 1.0.3362.22704 RELEASE *************************
BUGFIX: correct usage error message for [unset].
BUGFIX: correct multi-threaded call frame management.
BUGFIX: fix race condition for globals, vars, and locals sub-commands of [info]
and the [debug watch] sub-command.
BUGFIX: fix test object-98.2 result (make insensitive to hash table ordering).
BUGFIX: for Mono build, do not use new SP2 overload of ManualResetEvent.WaitOne.
BUGFIX: constrain some fileIO tests based on platform.
************************* Beta 1.0.3348.06228 RELEASE *************************
BUGFIX: revise test usage of the Result.op_Implicit method.
BUGFIX: fix error message(s) for Value methods and simplify error handling
logic.
BUGFIX: fix Console.GetSize method to return buffer size, not window size.
BUGFIX: fix argument checking for WriteBox. make sure list is valid and check
screen bounds so that we will not fall off the bottom of the console
window.
BUGFIX: made testing of WriteBox more stringent and correct.
BUGFIX: fix error handling semantics for [host color] and [host position]
sub-commands.
BUGFIX: rename [tailcall] to [callback] because they were not true tailcalls.
converted to an ensemble.
FEATURE: new [host reset], [host size], [host boxstyle], [host outputstyle], and
[host writebox] sub-commands (primarily for testing the console output
subsystem).
************************* Beta 1.0.3344.10975 RELEASE *************************
BUGFIX: add protocol stream translation to guarantee cr/lf end-of-line output
sequences regardless of the end-of-line sequences present in the output
from [puts] (e.g. for Internet protocols).
BUGFIX: allow command history to be bypassed at the C# level.
REFACTOR: revise core marshaller to be more flexible and to provide more
accurate error messages.
************************* Beta 1.0.3342.22280 RELEASE *************************
BUGFIX: wrap stray use of remoting in #if REMOTING.
BUGFIX: fix [clock format] for blank or entirely whitespace formats.
BUGFIX: fix command line pre-processing for interactive-mode.
BUGFIX: fix call frame argument handling for lambda expressions.
BUGFIX: correct passing a StringList to the ArgumentList constructor.
BUGFIX: adding formal arguments for scope creation inside of apply needs to skip
the lambda expression.
BUGFIX: correct initialization semantics for Tcl "safe" interpreters.
BUGFIX: add missing version-specific Mono test constraints when running in Tcl.
BUGFIX: correct appendArgs with no arguments.
BUGFIX: modularize and correct logic for importing package commands into the Tcl
global namespace.
BUGFIX: correct quirky test package detection logic in the test suite.
BUGFIX: fix isolated socket client test to enable run-in-Tcl support.
BUGFIX: update all Mono test constraints to take into account issues that have
been fixed for Mono 2.4.
BUGFIX: make server sockets more robust and work around the ExclusiveAddressUse
exception issue on Mono 2.0/2.2 and Mono on Unix.
BUGFIX: fix sql test case for Mono 2.2+.
BUGFIX: fix shared log file handling by selectively emulating Tcl's file sharing
semantics.
REFACTOR: *SECURITY* the file association added by setup now uses "safe" mode.
this means that simple double-clicking a script file which contains
any commands not marked as "safe" will fail with an error message.
REFACTOR: streamline and expose "safe" interpreter handling via the shell.
REFACTOR: extract and add method for adding object aliases.
FEATURE: add -alias option to [tcl create] for simpler Tcl script evaluation.
************************* Beta 1.0.3339.05242 RELEASE *************************
BUGFIX: add build dependency on the script library files to the
EagleLibraryResGen target.
BUGFIX: fix reference counts for opaque object handles returned from a procedure
(with or without using an intermediate variable). opaque object handles
used in this way must be explicitly disposed because an extra reference
is added when the procedure returns to prevent it from being disposed
when the call frame is popped. the exact behavior is subject to change
in future releases; however, explicitly disposing an opaque object
handle is the preferred way of cleaning up objects, especially those
that implement IDisposable.
BUGFIX: allow compilation to specifically target .NET Framework 2.0 RTM (i.e.
prevent features introduced in later service packs from being used).
BUGFIX: make sure to reverse any path modifications made in the library3 test so
that it does not affect the tcl-subst test.
BUGFIX: make sure we can find init script even if the base directory name
matches the name of the build configuration (e.g. Debug).
BUGFIX: do not strip blank lines entered during a multi-line interactive
command.
REFACTOR: revise how native console handles are queried and used.
FEATURE: add compileCSharp script library procedure for easily compiling C# code
from a script. added tests.
FEATURE: new [object refcount] sub-command. this is primarily for testing
purposes and may be removed in a future release.
FEATURE: new [host mode] sub-command.
************************* Beta 1.0.3335.35607 RELEASE *************************
BUGFIX: tests should remove object namespaces they import.
BUGFIX: add support and tests for server sockets.
BUGFIX: correct synchronization in TclApi.
BUGFIX: correct DoOneEvent/Unload issues (e.g. Tcl_Exit) in TclWrapper.
BUGFIX: add missing monoBug constraint to fileIO-1.11.
BUGFIX: do not skip monoBug/monoCrash tests in Tcl.
BUGFIX: use -nocomplain when unsetting variables outside of tests.
BUGFIX: add null checks to SubCommandPolicy/DirectoryPolicy.
BUGFIX: add native threadId to the interpreter at creation time.
BUGFIX: correct threadId tests in TclApi (Tcl is bound to native threads, not
managed).
REFACTOR: add notification for engine command execution.
FEATURE: add support for command history tracking.
************************* Beta 1.0.3325.09846 RELEASE *************************
BUGFIX: build/release tool fixes.
BUGFIX: fix [file dirname] for invalid paths and paths that represent the root
of the drive.
BUGFIX: correct loading semantics for the console settings file.
BUGFIX: correct and expand file-io tests to cover different encodings.
BUGFIX: correct buggy global-upvar test.
BUGFIX: correct locale-sensitivity in object2 test.
************************* Beta 1.0.3323.06882 RELEASE *************************
BUGFIX: *PERF* fix performance regression caused by removing usage of fast mode
for getting enum names/values.
BUGFIX: fix buggy [string map] argument counting. fix use of -maximum, added
tests.
BUGFIX: enable hack for native stack checking on x64 due to lack of NtCurrentTeb
export in NTDLL.
BUGFIX: write all temporary test files to $env(TEMP).
BUGFIX: do not try to load 32-bit Tcl DLLs when running as a 64-bit process.
BUGFIX: correct locale-sensitive date/time checking in tests.
BUGFIX: work around interpreter disposal race condition on Mono.
REFACTOR: change internals of the PolicyData mechanism.
************************* Beta 1.0.3321.08911 RELEASE *************************
BUGFIX: correct retry semantics for getting enum names/values. disable fast
mode for now as it is not 100% stable. correct error message semantics.
BUGFIX: added protection against using Tcl interpreters and/or objects on the
wrong thread.
BUGFIX: correct usage of IDisposable. All IDisposable objects now call
CheckDisposed for every public member.
BUGFIX: give error on invalid options to [regsub].
BUGFIX: call frame flag matching semantics.
BUGFIX: do not return hidden commands and procedures via [info].
BUGFIX: result handling in GetStartupFileName and GetScript.
BUGFIX: fix [file attributes] command for reading single option.
BUGFIX: work around bug in Mono Binder implementation.
BUGFIX: correct AssemblyUri attribute handling for plugins.
BUGFIX: correct quoting of text in scripted parser access, adjust tests.
BUGFIX: cleanup object disposal code/options to be more correct and consistent.
BUGFIX: fix premature disposal of console resources.
BUGFIX: fix etranenous case in TranslateRegSubSpec.
REFACTOR: modularize and granularize interpreter creation options.
REFACTOR: increase consistency with bad value/option handling.
REFACTOR: allow support for Tcl stardlls to be disabled at compile-time.
REFACTOR: skip changing the Console title if requested.
REFACTOR: flag all commands as either "safe" or "unsafe". preliminary support
for "safe" interpreters and host policies implemented in managed code
to allow hidden commands to be executed.
************************* Beta 1.0.3315.03693 RELEASE *************************
BUGFIX: fix missing NotifyTypes from status display.
BUGFIX: make NativeOps.LoadLibrary via dlopen() work on more platforms (e.g.
OpenBSD), this time with feeling.
BUGFIX: better error reporting for dynamic loading related errors.
************************* Beta 1.0.3314.36410 RELEASE *************************
BUGFIX: SingleFile build needs to allow for embedding packages in the library
(e.g. EagleTest). Refactored package management subsystem to be more
uniform and robust given this requirement.
BUGFIX: make NativeOps.LoadLibrary via dlopen() work on more platforms (e.g.
OpenBSD).
BUGFIX: add test constraints for optional commands.
BUGFIX: add test constraint that detects non-working dlopen().
BUGFIX: force stack size calculation when entering interactive loop.
BUGFIX: fix some unit tests to be skipped on Tcl 8.6 (error message formatting).
BUGFIX: fix [update] on Unix.
REFACTOR: new public interface IEvent.
REFACTOR: *BREAKING CHANGE* changed how the notifier handles notification flags.
notifications are now divided into types (NotifyType) and sub-types
(NotifyFlags). this is potentially a breaking change for any plugins
that currently implement the INotify interface; however, I am not
aware of any third-party plugins that currently do this. the
rationale behind this change is simple, not enough event types could
be represented in the previous setup and the whole point of
notifications is that they are fine-grained.
************************* Beta 1.0.3312.40289 RELEASE *************************
BUGFIX: *PERF* reduce the number of native stack checks.
BUGFIX: *PERF* perform type conversions without throwing exceptions.
BUGFIX: *PERF* perform integer value range checks/conversions without throwing
exceptions.
BUGFIX: incorrect escaping of pipe character in batch file tools.
BUGFIX: insufficient parameter validation in batch file tools.
BUGFIX: log test results in Tcl as well as Eagle.
BUGFIX: incorrect interpretation of [sql] parameter values as characters.
BUGFIX: incorrect entry point definition for SetErrorLevel tool.
BUGFIX: incorrect string-to-integer function for SetErrorLevel tool.
BUGFIX: [string format] for values that are bigger than a byte and smaller than
a character.
BUGFIX: encoding reform, added custom TwoByte encoding for plugins that need to
support Unicode character values that are invalid in UTF-16 (i.e.
0xD800 to 0xDBFF and 0xDC00 to 0xDFFF).
BUGFIX: correct ArrayOps to use generics.
BUGFIX: correct build for .NET Framework 2.0 pre-SP2.
BUGFIX: allow [subst] to be properly canceled.
BUGFIX: prevent InvalidOperationException when Debug environment variable is
used and the Console input is redirected.
BUGFIX: make argument quoting and ERRORLEVEL handling in batch tools more
consistent.
BUGFIX: correct platform name for non-Windows builds.
BUGFIX: fix [info] sub-commands to be more consistent.
BUGFIX: make runtime detection more correct and consistent.
BUGFIX: correct engine fetching of errorInfo and errorCode to include the
GlobalOnly flag.
BUGFIX: correct interactive flag management in interactive loop.
BUGFIX: correct incorrect regexp matching in some tests, Mono constraints.
BUGFIX: correct enum parsing on Mono in non-Mono builds.
BUGFIX: correct [file list] error handling.
BUGFIX: fix Tcl library search semantics for FreeBSD / OpenBSD.
BUGFIX: fragile overload resolution, make the marshaller optionally accept a
list of parameter types to resolve any ambiguities.
BUGFIX: correct support for TIP #336 (Tcl_Get/SetErrorLine).
BUGFIX: detect and correct case where the Tcl library is unloaded out from
underneath the interpreter.
BUGFIX: acquire and hold lock while processing command deletion callbacks from
Tcl.
BUGFIX: do not always display array elements and links for #vinfo.
BUGFIX: fix disposing bridged Tcl command objects (test tclLoad-1.2 GC race).
BUGFIX: target condition cleanup for build targets.
BUGFIX: cleanup all files copied by custom build targets.
BUGFIX: properly support selectively running/skipping certain test files and/or
names.
REFACTOR: miscellaneous internal changes.
FEATURE: check for updated versions via interactive #check command.
FEATURE: new [uri download] sub-command.
FEATURE: new [file tempname] sub-command.
FEATURE: new [info whitespace] sub-command.
************************* Beta 1.0.3304.19486 RELEASE *************************
BUGFIX: *PERF* parse enum values without throwing any exceptions.
BUGFIX: fix enum parsing of flag options on Mono.
BUGFIX: test constraint cleanup (mono, windows, interactive, performance).
BUGFIX: allow [file delete] to recursively remove directories.
************************* Beta 1.0.3301.37337 RELEASE *************************
BUGFIX: cleanup and correct shell command line usage information.
BUGFIX: make evaluations keep track of their error line number.
BUGFIX: make build targets check for required tool files.
BUGFIX: make clean tool delete test log files on Mono.
BUGFIX: add TIP #148 related constraints for tests list-1.[1-4].
BUGFIX: escape curly braces in test results that use regexp matching.
BUGFIX: disable tests on Mono that are .NET Framework specific.
BUGFIX: disable tests object-7.1 and object-10.1 on Mono due to crashes.
BUGFIX: make [file tail] handle an empty string gracefully.
BUGFIX: allow options to declare that conversions from string to System.Type or
type lists should be case-insensitive.
BUGFIX: disable verbose mode for conversions from string to System.Type.
BUGFIX: allow test debug-3.1 to work with standard stack sizes.
BUGFIX: add missing embedded test package to the test project.
BUGFIX: make tests object-12.1 and object-12.2 pass on Mono (i.e. do not rely on
reflection member ordering).
BUGFIX: make test tclLoad-1.2 complain quietly (i.e. this test expects to cause
a complaint; however, it should not block).
FEATURE: make update tool copy test suite files.
FEATURE: add interactive #test command to shell to run the test suite or a
subset thereof.
FEATURE: add runtime detection of the framework (e.g. Mono or .NET) and the
version thereof (e.g. 2.0, 2.2, 4.0, etc).
FEATURE: add Quiet property to Interpreter. non-zero prevents complaints from
being presented to the user via IHost or a modal dialog box.
FEATURE: add -verbose option to [object], [sql], and [xml] sub-commands to
enable detailed error reporting for type searches.
FEATURE: add build target to run the shell.
FEATURE: add build target to run the test suite.
************************* Beta 1.0.3299.00874 RELEASE *************************
BUGFIX: fix [string map] with empty mapping list.
BUGFIX: fix utf8/unicode encoding issues in Tcl wrapper.
BUGFIX: fix potential race conditions for tclApi object with locking.
BUGFIX: fix removal of variable links that refer to variables in an undefined
call frame.
BUGFIX: correct error information preservation semantics for try/finally.
BUGFIX: properly save/restore the interpreter engine flags for nested
interactive loops.
BUGFIX: allow unsetting of the entire env array.
BUGFIX: leading :: specifiers for variable pattern matching.
BUGFIX: major re-factoring of call frame semantics (COMPAT: Tcl).
BUGFIX: all public containers now have custom ToString methods.
BUGFIX: upvar to an array element now works.
BUGFIX: unset -nocomplain should never raise an error.
BUGFIX: uplevel argument handling.
BUGFIX: AddVariable handling of undefined, yet existing variable in call frame.
BUGFIX: array set handling of pre-existing variables.
BUGFIX: info globals did not return Tcl compatible results (include defined
links to undefined variables).
BUGFIX: robustify internal list building and filtering operations.
BUGFIX: allow re-targeting of variable links (COMPAT: Tcl).
BUGFIX: properly dispose referenced modules of NativeDelegate.
BUGFIX: make sure null variables are not counted as defined by
DoesVariableExist.
BUGFIX: make sure error messages are presented for attempting to unset/reset/get
an undefined variable.
BUGFIX: when re-using an existing undefined array variable as a scalar, make
sure to unflag it as an array.
BUGFIX: force lappend to honor variable traces.
BUGFIX: core marshaller was not matching property method names correctly.
BUGFIX: properly add custom errorInfo in error command.
BUGFIX: prevent catch command from messing up custom set errorInfo.
BUGFIX: file dirname now properly returns "." for file names with no directory
information.
BUGFIX: fix closing and re-opening the console host, must re-setup.
BUGFIX: properly use implicit/explicit conversion operators for ByRef types.
BUGFIX: when cleaning up call frames, we cannot remove linked variables that
link to the same call frame (exception).
BUGFIX: remove final end-of-line character when reading entire stream with
-nonewline.
BUGFIX: correct end-of-line handling for files read via [source].
BUGFIX: fix off-by-one condition in [string range].
BUGFIX: fix server object disposal issue in remoting test code.
BUGFIX: fix security restrictions issue with remoting server test method(s).
BUGFIX: fix end-of-stream detection for network streams (i.e. [read] command).
BUGFIX: fix [source] for files with the Macintosh end-of-line sequence.
BUGFIX: sample project assemblies must be signed to load properly.
BUGFIX: properly marshal byte array values in rows returned from [sql].
REFACTOR: carefully change how undefined variables are handled as they
transition from scalar to array or vice-versa.
REFACTOR: remove [interp alias] of Tcl test suite compatibility routines and use
namespace export/import instead.
REFACTOR: [debug result] outputs unformatted text and omits trailing newlines.
REFACTOR: totally refactor entire test suite functionality, make fully Tcl
compatible.
REFACTOR: change all uplevel/upvar related tests to use new functionality.
REFACTOR: add test file all.eagle, which will eventually contain all Eagle
tests.
REFACTOR: change all tests to use the test suite (pending).
REFACTOR: forbid direct use of Complain that takes an IHost.
REFACTOR: naming police for format strings.
REFACTOR: call frames now have a unique frame Id.
REFACTOR: call frames may now be marked with arbitrary name/value pairs.
REFACTOR: variables now have a link index, which refers to the element of a
linked array.
REFACTOR: major changes to level references (also Interpreter --> Value).
REFACTOR: all non-variable related call frames are now marked as such.
REFACTOR: call frames are now marked as invisible when necessary (i.e. uplevel).
REFACTOR: change call frame index and level interface members to long.
REFACTOR: call frames now support ToList() semantics.
REFACTOR: revise [read] to always use channel.Read().
FEATURE: new -purge option to [unset] to force purge of undefined variables from
the call frame.
FEATURE: new EagleRunTests compile-time property to run the full test suite when
building the shell project.
FEATURE: add support for case-insensitive options.
FEATURE: allow, through the usage of ##<integer> notation, traversal of all
call frames, including invisible ones. This feature is not supported
by Tcl.
FEATURE: new icommand, iresult, restore, and variable [debug] sub-commands added
to correct some minor functionality gaps.
FEATURE: new Interpreter public API RestoreCommands to restore commands in the
core command set currently missing from the interpreter.
FEATURE: new [tcl select] sub-command added. used to return the preferred
locally installed Tcl build without loading it.
FEATURE: new -exitCode, -noCase, -noData, and -noExit options for [test2]
command. these enable various special case test scenarios.
FEATURE: new -nocase and -match options for [unload].
************************* Beta 1.0.3285.13304 RELEASE *************************
BEGIN: ChangeLog.