Dear Community, We are pleased to announce the availability of the Next Scripting Framework (NSF) 2.1.0. This is a maintenance release. Since the release of 2.0.0, there have been more than 360 commits to our code repository. The Next Scripting Framework was tested with Tcl 8.5.19 and Tcl 8.6.6 on Linux, Mac OS X, and in Windows enviroments (MinGW, VC). Diff stats since 2.0.0: 171 files changed, 30137 insertions(+), 13932 deletions(-) Major changes relative to 2.0.0 are: o) o) o) Variable-traces reform: ... o) Improved robustness: * Tcl command resolvers and command literals: Up to and including Tcl 8.6.6, there were subtle and unwanted interactions between Tcl's command resolvers (which are used by NSF dispatcher for colon-prefixed messages and helper commands) in certain corner cases and Tcl's command literals. The issue and patches were reported upstream to the Tcl core by Gustaf Neumann and will enter an upcoming patch release (8.6.7). Our regression test-suite was extended accordingly to track the issue. See Tcl Fossil tickets ... and ... * Finalizing NSF and NSF object systems: In this release, the finalization procedures of NSF (on process exits, thread exits, and interp teardowns) has been revised. For example, NSF's ExitHandler is guaranteed to be called just once in the above scenarios (e.g., to avoid double frees of NSF structures). * UnsetTracedVars: Provide for a two-pass deletion logic during object shutdown, to account for unset traces possibly reviving an object variable under deletion. This corresponds to a recent memleak fix to Tcl itself. See also Tcl Fossil ticket 4dbdd9af144dbdd9af14. o) Improved scripted shells (e.g., nxsh, xotclsh): * There is now an alternative implementation of nx::shell: nx::shell2. It is used by all four shell scripts. nx::shell2 builds on Tcl's event loop, rather than while + update. This avoids blocking the Tk main window (update). In addition, nx::shell2 is closer to Tcl's native shells (e.g., no extra lines on enter, catches EOF). * The improved shells now accept stdin input (-c option). * They are more robust: Don't quit due to inner [return] calls, [exit] is handled gracefully. * Shell tests were added (shells.test). o) Minor logging reform at the C-level (NsfLog, interp) so that "nsf::configure debugLevel /severity/" will print error messages at a level equal or greater than the given severity (0, 1, 2, 3). For example, "nsf::configure debugLevel 0" will print everything, and "nsf::configure debugLevel 3" will print just error messages while omiting warnings etc. This does not entail changed logging semantics, but helped remove some confusion at the C level. o) Improved NSF/C code generator: Allows for specifying and generating enum types. o) API changes: NX: Dropped: Added: * property/ variable ?-trace set|get|default? XOTcl2: Dropped: Added: * instproc/proc ?-returns ...?: XOTcl2 methods can now specify a return-value checker, similar to NX methods. NSF: Dropped: Added: * ::nsf::parseargs * ::nsf::current level o) Documentation (API and examples): Added: - New Rosetta implementations: Inheritance/single Add object variable dynamically Tree traversal Tokenizer Updated: - Object.man: * Added missing description on 'info lookup parameters' and 'info lookup syntax'. * Correct description of Object->copy. - current.man: Added description of 'level' option. - Extended/ updated Rosetta implementations: Inheritance/multiple Polymorphic copy Multiple distinct objects o) Code changes (C): * Removed all implicit type-conversions, signed/unsigned comparisons as flagged by the following gcc/clang flags (ensure cleanness on 64bit) -Wconversion -Wsign-conversion -Wfloat-conversion -Wsign-compare. * Reduced variable scopes. * Guarded against potential Tcl_Obj leaks, esp. when using NsfMethodNamePath(), as indicated by valgrind. * Refactored functions for topological sorting (TopoSort()) to avoid redundancies. * Addressed 16 code-quality issues as indicated by Coverity Scan, incl. control-flow issues (risking NULL dereferencing), dead code branches, etc. * Removed uses of deprecated functions: Tcl_AppendResult, ... * Based on the improve NSF/C code generator, proper enum types are used in generated function signatures and the respective control structures (switch). o) Packaging: * Updated TEA to 3.10 * Support for MSVC 14 (VS 2015; win/makefile.vc) The Next Scripting Framework 2.1.0 (containing NX and XOTcl 2.1.0) can be obtained from https://next-scripting.org/. The detailed ChangeLog is available at https://next-scripting.org/xowiki/download/file/ChangeLog-2.0.0-2.1.0 Best regards - Gustaf Neumann - Stefan Sobernig