Index: doc/Announce2.1.0 =================================================================== diff -u -rc6c4a9ed2e8d3375bf80e670cd09e3640a9fbf0d -rd25cbc8bfb736f46df4c03faf716640e29411364 --- doc/Announce2.1.0 (.../Announce2.1.0) (revision c6c4a9ed2e8d3375bf80e670cd09e3640a9fbf0d) +++ doc/Announce2.1.0 (.../Announce2.1.0) (revision d25cbc8bfb736f46df4c03faf716640e29411364) @@ -14,61 +14,215 @@ Major changes relative to 2.0.0 are: -a) +o) Improved robustness: -b) + * Tcl command resolvers and command literals: -c) + 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. -d) + 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. + + * Serializer: + + The combined NX and XOTcl2 serializer has been extended to cover + newly added features (esp., NSF procs, method flags) and has been + improved based on experiences from multi-threaded NSF/Tcl applications + (NaviServer). Improvements and fixes relate to "info" methods and + forwarders. + +o) Slot-traces reform: ... -e) Updated MongoDB interface: - - ... +o) Improved scripted shells (e.g., nxsh, xotclsh): -f) API changes: + * 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's + behavior is more akin to Tcl's native shells (e.g., no extra lines + on enter, catches EOF). - Dropped methods: + * The improved shells now accept stdin input (-c option). - Added methods: + * They are more robust: Don't quit due to inner [return] calls, + [exit] is handled gracefully. + * Shell tests were added (shells.test). - Added (sub-)commands: +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. - ::nsf::current level +o) Improved NSF/C code generator: Allows for specifying and generating + enum types. -g) Documentation (API and examples): +o) API changes: + NX: + + Features added: + + /obj/ object property|variable ?-trace set|get|default? ... + /cls/ property|variable ?-trace set|get|default? ... + + /obj/ info baseclass + + /cls/ info method callprotection + /cls/ info method debug + /cls/ info method deprecated + /obj/ info baseclass + /obj/ info object method callprotection + /obj/ info object method debug + /obj/ info object method deprecated + /cls/ public alias -deprecated|-debug /method/ ... + /cls/ public forward -deprecated|-debug /method/ ... + /cls/ public method -deprecated|-debug /method/ ... + /obj/ public object alias -deprecated|-debug /method/ ... + /obj/ public object forward -deprecated|-debug /method/ ... + /obj/ public object method -deprecated|-debug /method/ ... + + Features removed: none + + Changes to existing features: none + + XOTcl2: + + Features added: + + * New -return flag: XOTcl2 methods can now specify a return-value + checker, similar to NX methods. + + /cls/ instproc -returns /method/ ... + /obj/ proc -returns /method/ ... + + (TODO: what about instforward/ forward?) + + * New -deprecated and -debug flags: + + /cls/ instforward -deprecated|-debug /method/ ... + /cls/ instproc -deprecated|-debug /method/ ... + + /obj/ forward -deprecated|-debug /method/ ... + /obj/ proc -deprecated|-debug /method/ ... + + + Features removed: none + + (TODO: what about old trace interface: valuechangedcmd & friends?) + + Changes to existing features: none + + NSF: + + Features added: + + * ::nsf::parseargs + * ::nsf::current level + * new flag "-notrace" for "nsf::var::set" and "nsf::var::get" + * new flags "-debug" and "-deprecated" for "nsf::proc" + * New option: nsf::method::property /obj/ /method/ deprecated ?0|1? + * New option: nsf::method::property /obj/ /method/ debug ?0|1? + * New proc: nsf::method::forward::property + * New proc: nsf:__profile_trace -enable /bool/ ?-verbose /bool/? + * New option: nsf::configure trace + + Features removed: none + + Changes to existing features: none + +o) Documentation (API and examples): + Added: - New Rosetta implementations: - Inheritance/Single - + Inheritance/single + Add object variable dynamically + Tree traversal + Tokenizer Updated: - - Object.man: Added description on 'info lookup parameters' and + - Object.man: + + * Added missing description on 'info lookup parameters' and 'info lookup syntax'. + * Correct description of Object->copy. + + * info baseclass (TODO: check) + + - alias/forward/method: added debug/ deprecated switches, + - current.man: Added description of 'level' option. -h) Code changes (C): + - Extended/ updated Rosetta implementations: + Inheritance/multiple + Polymorphic copy + Multiple distinct objects + +o) Code changes (C): + + * Refactoring: There is now a common infrastructure for hashtables + using function pointers as keys (as required for NSF/C command + definitions and enumerations). * 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 more than 18 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). -i) Packaging: Updated TEA to 3.10 +o) Packaging & distribution: -The Next Scripting Framework 2.1.0 (containing NX and XOTcl 2.1.0) can -be obtained from https://next-scripting.org/. + * Updated TEA to 3.10 + * Support for MSVC 14 (VS 2015; win/makefile.vc) + * Debian package: + * MacPorts port: + * Part of the KitCreator battery: https://kitcreator.rkeene.org/fossil/ + * Part of the kbskit battery: https://sourceforge.net/projects/kbskit/ -The detailed ChangeLog is available at -https://next-scripting.org/xowiki/download/file/ChangeLog-2.0.0-2.1.0 +The Next Scripting Framework 2.1.0 (containing NX 2.1.0 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.log + Best regards - Gustaf Neumann - Stefan Sobernig