Index: ChangeLog-2.0.0-2.1.0.log =================================================================== diff -u -r94e5a49cc2744d41f38580279d51dc69046be8a8 -r82d9a841583bf6f8ab50c5a2cd1b111abee9440d --- ChangeLog-2.0.0-2.1.0.log (.../ChangeLog-2.0.0-2.1.0.log) (revision 94e5a49cc2744d41f38580279d51dc69046be8a8) +++ ChangeLog-2.0.0-2.1.0.log (.../ChangeLog-2.0.0-2.1.0.log) (revision 82d9a841583bf6f8ab50c5a2cd1b111abee9440d) @@ -192,221 +192,170 @@ 2016-09-29 Stefan Sobernig - nsf.c, methods.test: - - DispatchUnknownMethod: Make sure that arcane method names make - it into proper unknown error mesages (incl. names representing - invalid Tcl lists); tests included; checked by valgrind [4b78042] + * nsf.c, methods.test (DispatchUnknownMethod): Make sure that + arcane method names make it into proper unknown error mesages + incl. names representing invalid Tcl lists; tests included; + checked by valgrind [4b78042] - Documentation: - - Adding yet another Rosetta example: Add object variable - dynamically. [ed0f5cb] - - Fix typo [e33e0a2] + * Documentation + (rosetta-add-variable.tcl): Adding yet another Rosetta example: Add object variable + dynamically. [ed0f5cb] + (rosetta-add-variable.tcl): Fix typo [e33e0a2] - shells.test: - - Adjust shell tests for latest changes to stacktrace formatting - [56f9658] triggered by [2c896da] + * shells.test: Adjust shell tests for latest changes to stacktrace + formatting. [56f9658] triggered by [2c896da] 2016-09-28 Stefan Sobernig - Documentation: - - Improve output spec in Rosetta example. [8648ec7] - - Adding another Rosetta example: Multiple distinct objects. [cc85907] + * Documentation: + (rosetta-multiple-distinct.tcl, rosetta-tree.tcl): Improve output + spec in Rosetta example. [8648ec7] + (rosetta-multiple-distinct.tcl): Adding another Rosetta example: + Multiple distinct objects. [cc85907] 2016-09-23 Gustaf Neumann - nsf.c: - - Add thread IDs to debug lines (in threaded builds). [e20e1c1] + * nsf.c: Add thread IDs to debug lines (in threaded builds). [e20e1c1] 2016-09-21 Stefan Sobernig - Test suite: - - tcl86.test: Make cmd-literal tests conditional on a (future) Tcl release: 8.6.7 - [40ff115] - - destroy.test: Adding a second UnsetTracedVars test, this time + * Testsuite: + (tcl86.test): Make cmd-literal tests conditional on a (future) Tcl release: 8.6.7 + [40ff115] + (destroy.test): Adding a second UnsetTracedVars test, this time for the per-object namespace case. [2330f51] 2016-09-20 Stefan Sobernig - destroy.test: - - Add missing test on UnsetTracedVars. [c29e5d3] + * destroy.test: Add missing test on UnsetTracedVars. [c29e5d3] 2016-09-19 Stefan Sobernig - - Nsf_CmdDefinitionRelease(): Fix documentation [23581e9] + * nsfCmdDefinitions.c (Nsf_CmdDefinitionRelease): Fix + documentation [23581e9] + * nx-shell.tcl (nx::shell2): Provide complete errorinfo, not just + top-level line [2c896da] - - nx::shell2: Provide complete errorinfo, not just top-level line - [2c896da] - 2016-09-16 Gustaf Neumann + * nsf.c (NsfFinalizeCmd): Remove manually mixinRegObjs during + cleanup to silence sanity checking for object refcounts. [9395752] - - - - Remove manually mixinRegObjs during cleanup to silence sanity - checking for object refcounts. [9395752] + * nsfObj.c (NsfMixinregGet): Fix typo in comment. [73a82fc] - - - - - fix typo [73a82fc] - 2016-09-15 Gustaf Neumann + * nsf.c (NsfFinalizeCmd): Add pthread id to debug message [b36a57b] - - - - add pthread id to debug message [b36a57b] - 2016-09-13 Stefan Sobernig + * nsf.c (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. [d710110] - - 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 - http://core.tcl.tk/tcl/info/4dbdd9af144dbdd9af14). [d710110] - -2016-09-12 Stefan Sobernig - - - - Add a to-do on an assertion failure under 8.5 [839e421] - 2016-09-09 Stefan Sobernig + * nx.tcl (VariableSlot->value=get): Substitute set for get, which + is a tick faster. [bb688b8] - - Substitute set for get, which is a tick faster [bb688b8] + * Documentation (rosetta-tree.tcl): Rosetta example: Tree + traversal. [f769aa3] - - - Adding another Rosetta example: Tree traversal [f769aa3] - 2016-09-06 Stefan Sobernig + * nx-shell.tcl (::nx::shell2): Harden nx::shell against inlined + return statements. [da0791d] - - Add to-do on variable slots [3941350] + * Documentation (rosetta-tokenizer.tcl): Added first additional + Rosetta example. [b689afd] + * source-highlight-with-pp: Make src highlighter independent from + Tcl version. [8e929f8] - - Harden nx::shell against inlined return statements [da0791d] - - - - Added first additional Rosetta example [b689afd] - - - - Make src highlighter independent from Tcl version [8e929f8] - -2016-09-02 Stefan Sobernig - - - - Adding some minor todos [9422ecb] - 2016-09-01 Stefan Sobernig + * Makefile.in: Keep valgrind settings for the future. [0187626] - - Keep valgrind settings for the future [0187626] + * nsf.c (ObjectCmdMethodDispatch): Get refcounting on method-path + lists right, fixing one actual (valgrind) and another potential + Tcl_Obj leak. [6cb02ec] - - - ObjectCmdMethodDispatch(): Get refcounting on method-path lists - right, fixing one actual (valgrind) and another potential Tcl_Obj - leak [6cb02ec] - 2016-08-31 Stefan Sobernig + * nsf.c + (ParamDefsNames): Fix another Tcl_Obj leak and optimize + code slightly, Tcl_Obj is only allocated once the string-matching + operation suceeded. [253e9e6] + (NsfForwardPrintError): Fix another instance of the + NsfMethodNamePath leak. [0739b93] + (NsfMethodName): Avoid unnecessary append operation between lists, + previously leaking the source list Tcl_Obj. [8a650e1] + (ArgumentParse): Addressing a series of Tcl_Obj leaks (valgrind). [2dbfbf4] - - ParamDefsNames(): Fix another Tcl_Obj leak and optimize code slightly - (Tcl_Obj is only allocated once the string-matching operation - suceeded) [253e9e6] - - - - NsfForwardPrintError(): Fix another instance of the NsfMethodNamePath - leak [0739b93] - - - - NsfMethodName(): Avoid unnecessary append operation between lists, - previously leaking the source list Tcl_Obj [8a650e1] - - - - ArgumentParse(): Addressing a series of Tcl_Obj leaks (valgrind) - [2dbfbf4] - 2016-08-22 Gustaf Neumann + * nsf.c (AssertionAddProc): Removing dead assignment. [1e25f4b] - - - - removing dead assignment [1e25f4b] - 2016-08-14 Stefan Sobernig + * nsf.c: + (TopoSortSub): Make intended true/false comparisons based on int + explicit. [ce32c79] + (TopoSort): cleanup (pt. 3): re-factored TransitiveSubClasses() + and DependentSubClasses() into one caller function of + TopoSortSub(). [a9057d3] + (TopoSort): cleanup (pt. 2): renamed TopoSort() to TopoSortSub() to + match TopoSortSuper. [49bad0b] - - TopoSortSub(): Make intended true/false comparisons based on int - explicit [ce32c79] - - - - TopoSort(): cleanup (pt. 3): re-factored TransitiveSubClasses() and - DependentSubClasses() into one caller function of TopoSortSub() - [a9057d3] - - - - TopoSort(): cleanup (pt. 2): renamed TopoSort() TopoSortSub() (to - match TopoSortSuper) [49bad0b] - 2016-08-13 Stefan Sobernig + * nsf.c (TopoSort): cleanup (pt. 1). [2caa518] - - TopoSort(): cleanup (pt. 1) [2caa518] - 2016-08-10 Stefan Sobernig + * nsf.c + (GetNextArguments): Address CID 102646. [e982277] + (NsfObjInfoObjectparameterMethod, NsfParamDefsFilter): Removed two + unused functions: NsfObjInfoObjectparameterMethod() and + NsfParamDefsFilter(). Makes CID 88775 obsolete.[308a912] + (MakeProc): Address CID 88770. [566ca93] - - Add TODO [adb6c74] - - - - GetNextArguments(): Address CID 102646 [e982277] - - - - Removed two unused functions: NsfObjInfoObjectparameterMethod() and - NsfParamDefsFilter(). Makes CID 88775 obsolete [308a912] - - - - Address CID 88770 [566ca93] - 2016-08-09 Gustaf Neumann + * nsfError.c + (NsfObjWrongArgs, NsfObjErrType): Remove occurrences + of deprecated Tcl_AppendResult() in overall code. [299a221] + (NsfPrintError): Avoid computing string length twice. [b8fe2d4] - - - - Remove occurrences of deprecated Tcl Call Tcl_AppendResult() in - overall code [299a221] + * nsfStubLib.c: Remove 2 occurrences of deprecated + Tcl_AppendResult. [8e079b5] + * nsf.c, nsfInt.h (NsfLog, RUNTIME_STATE): Small logging reform, + renaming "debugLevel" to "logSeverity" and introduce logging + messages which have a severity larger or equal than a given log + severity; so; "nsf::configure debugLevel 0" will print everything, + and "nsf::configure debugLevel 3" will print just error messages + while omiting warnings etc. This is not a change in logging + semantics, but removes some confusion at the C level. Therefore, the + nsf::configure option "debugLevel" was not changed. - - - - improve variable for logging from "debugLevel" to - "logSeverity" (print logging messages which have a - severity larger equal the then given value; so; - "nsf::configure debugLevel 0" will print everything, and - "nsf::configure debugLevel 3" will print just error - messages and omit warnings etc.) - - this is not a change in sematics, but removes some - confusion in the code. therefore the configure name was - not changed - - Remove 2 occurrences of deprecated Tcl Call Tcl_AppendResult() in - nsfStubLib [8e079b5] - - - - - - don't compute string length twice [b8fe2d4] - 2016-08-07 Gustaf Neumann + * nsf.c (ExitHandler): Address potential double freeing problem of + runtime states. ExitHander should never be called twice on the + same interp. Therefore, provide for deleting ExitHandler in the + ExitProc, as well as for deleting ExitHandler and + ThreadExitHandler in the ThreadExitProc. [4ff9a50] - - Address potential double freeing problem of runtime - states: - - the ExitHander() should never be called twice on the same interp. - Therefore delete in the ExitProc the ExitHandler AND the - ThreadExitHandler and in the ThreadExitProc also both. [4ff9a50] - 2016-08-04 Gustaf Neumann + * gentclAPI.tcl, nsfAPI.decls: Code generator was changed to + create enum types instead of enum values for NSF API, use enum + types in code. [aa5b3f4] - - code generator changes: - - create enum types instead of enum values for nsf API - - use enum types in code [aa5b3f4] - 2016-08-04 Stefan Sobernig Index: doc/Announce2.1.0 =================================================================== diff -u -rce6a43ba9ffe0327d21f517f4e69b769c33b91de -r82d9a841583bf6f8ab50c5a2cd1b111abee9440d --- doc/Announce2.1.0 (.../Announce2.1.0) (revision ce6a43ba9ffe0327d21f517f4e69b769c33b91de) +++ doc/Announce2.1.0 (.../Announce2.1.0) (revision 82d9a841583bf6f8ab50c5a2cd1b111abee9440d) @@ -14,35 +14,58 @@ Major changes relative to 2.0.0 are: -a) +o) -b) +o) -c) +o) -d) Improved robustness: +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 in certain corner - cases (which are used by NSF dispatcher for colon-prefixed messages - and helper commands) 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. + 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): -e) Updated MongoDB interface: - - ... + * Don't quit due to inner [return] calls. -f) API changes: +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 is 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: + Dropped methods: Added methods: @@ -52,14 +75,16 @@ ::nsf::current level -g) Documentation (API and examples): +o) Documentation (API and examples): Added: - New Rosetta implementations: Inheritance/single Add object variable dynamically + Tree traversal + Tokenizer Updated: @@ -78,15 +103,26 @@ Polymorphic copy Multiple distinct objects -h) Code changes (C): +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). -i) Packaging: Updated TEA to 3.10 +o) Packaging: Updated TEA to 3.10 The Next Scripting Framework 2.1.0 (containing NX and XOTcl 2.1.0) can be obtained from https://next-scripting.org/.