Index: ChangeLog-2.1.0-2.2.0.log =================================================================== diff -u -r671e0d551f266b4a9156872dc06263388d23e703 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- ChangeLog-2.1.0-2.2.0.log (.../ChangeLog-2.1.0-2.2.0.log) (revision 671e0d551f266b4a9156872dc06263388d23e703) +++ ChangeLog-2.1.0-2.2.0.log (.../ChangeLog-2.1.0-2.2.0.log) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -1,16 +1,16 @@ -2018-07-10 Gustaf Neumann +2018-07-10 Gustaf Neumann * serializer.tcl: Fix buggy case when blueprints are used to - update interpreters with preexisting objects and classes. There, - it was possible that objects are turned into baseclass objects, - when the application classes are deleted. [94421e32] + update interpreters with preexisting objects and classes. There, + it was possible that objects are turned into baseclass objects, + when the application classes are deleted. [94421e32] 2018-07-04 Gustaf Neumann * Announce2.0.0, Announce2.0b5, Announce2.1.0, - rosetta-singleton.html, rosetta-sudoku.html, next-migration.txt, - next-tutorial.txt, tutorial2.html, Announce-1.1.1, Announce-1.5.0, - tutorial.html: Improve spelling [37fe2bc4] + rosetta-singleton.html, rosetta-sudoku.html, next-migration.txt, + next-tutorial.txt, tutorial2.html, Announce-1.1.1, Announce-1.5.0, + tutorial.html: Improve spelling [37fe2bc4] 2018-07-02 Stefan Sobernig @@ -20,30 +20,30 @@ 2018-07-02 Gustaf Neumann * nsf.c (NsfDebugGetDict): MSVC seems to be bad on const - expressions [fe7198d3] + expressions [fe7198d3] * starmethod.tcl: Add starmethod design study [d6d259af] * xotcl2.tcl: Improve spelling [bada4fa1] * bagel.tcl: Fix typo [7f7d32cd] 2018-07-01 Gustaf Neumann * nsf.c: Improve comments, unify comment formatting and whitespace - cleanup [469e0c36] + cleanup [469e0c36] * nsf.c: Properly initialize resultObj in all cases [0f0e846e] * nsf.c: Remove dead assignments, initialize variables also on error paths [1725225a] * nsfmongo.c: Make sure to initialize all variables also in error - cases [88e3e5d4] + cases [88e3e5d4] * nsf.c: Reduce number of implicit type conversions; avoid use of - macros [8325cbad] + macros [8325cbad] * nsf.c: Improve alignment of prototypes and function definitions - [0ad07ea5] + [0ad07ea5] 2018-06-29 Stefan Sobernig * nsf.c (ObjectCmdMethodDispatch, FindNextMethod): Balance book-keeping - in memcounts for Tcl_Objs (technically, an unmatched decrement would - suffice). [9131bba5] + in memcounts for Tcl_Objs (technically, an unmatched decrement would + suffice). [9131bba5] * nsf.c (NsfProcDeleteProc): Fix freeing of colonLocalVarCache and balance book-kepping on memcounts for colonLocalVarCache. [bbeae255] * nsf.c (ObjectCmdMethodDispatch): Silence static check of GCC 8.1 @@ -56,7 +56,7 @@ 2018-06-29 Gustaf Neumann * nsf.c (ForwardArg): Address CID 294171 and change construct for - strpbrk [72a0a428] + strpbrk [72a0a428] 2018-06-29 Stefan Sobernig @@ -71,8 +71,8 @@ 2018-06-28 Stefan Sobernig * nsf.c (NsfDebugGetDict): Make use of strncat more robust by setting - the destination length to the remainder of the output buffer. - [ea63ea31] + the destination length to the remainder of the output buffer. + [ea63ea31] * nsf.c (ForwardArg): Provide a const'ed pointer to strpbrk, as required [CID 294162]. [500a581f] * nsf.c (ParamDefsFormat): Fix overrun in memcpy by correcting the @@ -82,57 +82,57 @@ 2018-06-27 Stefan Sobernig * nsf.c (ParamDefsStore, NsfProcDeleteProc): Provide for counting a - reference to the execNsPtr from the NsfProcContext structure. While I - could not devise a script-level path to pull out the rug (execNsPtr) - out from under NsfProcContext clients, I can only also not exclude the - latter (from future C-level paths?). Better act defensively. [1a486b9a] + reference to the execNsPtr from the NsfProcContext structure. While I + could not devise a script-level path to pull out the rug (execNsPtr) + out from under NsfProcContext clients, I can only also not exclude the + latter (from future C-level paths?). Better act defensively. [1a486b9a] * nsfInt.h (STRING_NEW): Silence GCC 8.1 warnings on truncation risk - using strncpy; made me wonder whether STRING_NEW would not be more - robust against mis-computations of the destination-buffer length by - using snprintf (mainly because snprintf does not nul-pad the - destination buffer and always nul-terminates the destination buffer)? - [d96dedf3] + using strncpy; made me wonder whether STRING_NEW would not be more + robust against mis-computations of the destination-buffer length by + using snprintf (mainly because snprintf does not nul-pad the + destination buffer and always nul-terminates the destination buffer)? + [d96dedf3] 2018-06-26 Stefan Sobernig * parameters.test: Adding two test cases to cover previously missed - code branches leading to leaking NsfMethodNamePath uses. [bf61b8a8] + code branches leading to leaking NsfMethodNamePath uses. [bf61b8a8] 2018-06-25 Stefan Sobernig * nsf.c (ArgumentParse): Handle NsfMethodNamePath result correctly. - [6042ab05] + [6042ab05] * nsf.c (NsfSetterMethod): Handle NsfMethodNamePath result correctly. - [76da4309] + [76da4309] * nsf.c (ObjectCmdMethodDispatch): Close another Tcl_Obj leak incurred - by not handling the result from NsfMethodNamePath. [424b6e1f] + by not handling the result from NsfMethodNamePath. [424b6e1f] * nsf.c (FindNextMethod): Plumb another memleak (valgrind). The Tcl_Obj computed by NsfMethodNamePath must be refcount corrected. [87bc503b] * nsf.c (AliasGet): Plumbing a memleak found by valgrind. The computed - Tcl_Obj from AliasIndex must be refcount-managed explicitly, - otherwise the path via AliasGet leaks it. [31c114ee] + Tcl_Obj from AliasIndex must be refcount-managed explicitly, + otherwise the path via AliasGet leaks it. [31c114ee] 2018-06-20 Stefan Sobernig * appveyor.yml: Provide for MSVC builds (pt. 2) [611f73cb, - f5ff0c4b, 9eda6984, 900390cf, d78609db] + f5ff0c4b, 9eda6984, 900390cf, d78609db] * per-object-mixins.tcl: Fix an example script that got broken a long, long time ago. [skip ci] [49ae7bc3] 2018-06-19 Stefan Sobernig * appveyor.yml: Provide for MSVC builds (pt. 1) [f848dc5f, - ae03d540, 457f8a80] + ae03d540, 457f8a80] 2018-06-18 Stefan Sobernig * .travis.yml: Add allowed failures to Travis setup [9e5f074e] * appveyor.yml: Set allowed failures on Tcl development branches; - report failure on first failing build [f718572e] + report failure on first failing build [f718572e] * nsf.c (ParamOptionParse), nsfInt.h: Provide for own MAX and MIN - macros, the ones reused implicitly from Tcl's tommath have vanished - in 8.7 branches; and are not provided otherwise, at least in MinGW - settings. Fixes 8.7 builds for MinGW under Win. [8a1a43a3] + macros, the ones reused implicitly from Tcl's tommath have vanished + in 8.7 branches; and are not provided otherwise, at least in MinGW + settings. Fixes 8.7 builds for MinGW under Win. [8a1a43a3] * appveyor.yml: Provide for MSYS2/ MinGW builds (pt. 2) [95fa4f4b, 89fc03bf, 2ab16701, a9454bc8, a691997b, 71dd75a1, 25c6fca9, 03d5b57a, 1b07fc0e, bd720946, 59986a2a, f207ce19, 00eb377b, @@ -142,52 +142,52 @@ 2018-06-17 Stefan Sobernig * appveyor.yml: Provide for MSYS2/ MinGW builds (pt. 1) [2b4c8032, - 96b79f58, 05d909f4, 45f37041] + 96b79f58, 05d909f4, 45f37041] 2018-06-04 Stefan Sobernig * nsf.c (ListSuperClasses): Fix refcounting for 8.5 non-threaded only, - otherwise the patternString becomes unavailable once a preemptive - decrement has been performed, leading to unexpected info results. - [0e8f3a70] + otherwise the patternString becomes unavailable once a preemptive + decrement has been performed, leading to unexpected info results. + [0e8f3a70] * nx-test.tcl (run): Avoid use of [try], to render the test suite - independent from the presence of 8.6 or tcllib's try. This may be - reverted, once 8.5 support is dropped. [9ba75adb] + independent from the presence of 8.6 or tcllib's try. This may be + reverted, once 8.5 support is dropped. [9ba75adb] 2018-06-01 Gustaf Neumann * configure.ac: Add COMPILE_NSF_STUBS to compile flags under - windows [554234e8] + windows [554234e8] * nsfStubLib.c: Make stublib initialization more robust and - provide meaningful error message in case of misconfigurations - [fe5d4828] + provide meaningful error message in case of misconfigurations + [fe5d4828] 2018-05-30 Stefan Sobernig * .travis.yml: Provide first attempt at Travis build array and - build script [fffcee32, 2e1926a7, c216c592, f4ca149d, 79e5563d, + build script [fffcee32, 2e1926a7, c216c592, f4ca149d, 79e5563d, 63295a8d, 21d83785] 2018-05-29 Stefan Sobernig * .travis.yml: Add an initial Travis CI descriptor; simplify - descriptor, for the time being [ea4ef787, e41cd6fd] + descriptor, for the time being [ea4ef787, e41cd6fd] * Makefile.in: Polishing [b3a3d83c] 2018-05-23 Gustaf Neumann * next-migration.txt, README, Announce-1.1.0: Improve spelling [5c0a0300] * nsfmongo.c: Use mongoc_iovec_t instead of struct iovec iov to - improve cross-platform compatibility [8eea27e0] + improve cross-platform compatibility [8eea27e0] 2018-05-21 Gustaf Neumann * source-highlight-with-pp, bagel.tcl, - rosetta-multiple-distinct.tcl, rosetta-tokenizer.tcl, aolstub.c, - gentclAPI.tcl, nsf.c, nsfFunPtrHashTable.c, nsfShadow.c, - nx-zip.tcl, nsfmongo.c, nx-mongo.tcl, nx.tcl, xotcl2.tcl: Improve - comments [ae081c0f] + rosetta-multiple-distinct.tcl, rosetta-tokenizer.tcl, aolstub.c, + gentclAPI.tcl, nsf.c, nsfFunPtrHashTable.c, nsfShadow.c, + nx-zip.tcl, nsfmongo.c, nx-mongo.tcl, nx.tcl, xotcl2.tcl: Improve + comments [ae081c0f] 2018-05-17 Gustaf Neumann @@ -201,7 +201,7 @@ 2018-04-25 Gustaf Neumann * nx-test.tcl, nx-mongo.tcl, nx.tcl: Fix duplicated words in code - documentation [0556efb3] + documentation [0556efb3] * rosetta-sudoku.tcl: Fix double word in code documentation [f52f9988] * nsf.c: Fix double worlds in code documentation [c78a90d7] @@ -218,15 +218,15 @@ * nx-mongo.tcl: Whitespace changes [4131e4eb] * nx-mongo.test, nx-mongo.tcl: Added class names into - serialization syntax (__class). This change allows us to make - better use of polymorphism with (e.g. embedded) class - structures. Previously, it was necessary, that the called object had to - know the class of the serialized object, now it is as well - possible to use as well specializations; fix bug, where default - value for properties lead to errors, when no propery options where - given. [3fc67997] + serialization syntax (__class). This change allows us to make + better use of polymorphism with (e.g. embedded) class + structures. Previously, it was necessary, that the called object had to + know the class of the serialized object, now it is as well + possible to use as well specializations; fix bug, where default + value for properties lead to errors, when no propery options where + given. [3fc67997] * mongodb/README: Update version numbers of mongo's c-driver older - versions stopped working on MacOS High Sierra. [120d6714] + versions stopped working on macOS High Sierra. [120d6714] * nsf.c (NextSearchAndInvoke): Fix typo [7831bb96] 2018-04-05 Gustaf Neumann @@ -246,11 +246,11 @@ 2018-03-11 Stefan Sobernig * nsf.c (ListMethod): Provide a disassemble implementation based - on ::tcl::unsupported::disassemble. [::nsf::cmd::info disassemble] - is generally available, the info ?object? method variants only in - development mode. Implementation covers proc methods and + on ::tcl::unsupported::disassemble. [::nsf::cmd::info disassemble] + is generally available, the info ?object? method variants only in + development mode. Implementation covers proc methods and ::nsf::procs. Along the way, prettify some code paths in - ListMethod. [1919d17f] + ListMethod. [1919d17f] 2018-03-08 Gustaf Neumann @@ -259,17 +259,17 @@ 2018-03-06 Stefan Sobernig * nsf.c (Nsf_Init): Mark the namespace "::nsf::classes" and its - children using "NS_SUPPRESS_COMPILATION". In 8.6+, this guards any - commands in these auxiliary namespaces to be picked up by the bytecode - compiler (if accessed in an unintended manner). [52340117] + children using "NS_SUPPRESS_COMPILATION". In 8.6+, this guards any + commands in these auxiliary namespaces to be picked up by the bytecode + compiler (if accessed in an unintended manner). [52340117] * nsf.c (ByteCompiled): Patch the proc command's namespace - unconditionally, for 8.5 and 8.6. [4d5e72a9] + unconditionally, for 8.5 and 8.6. [4d5e72a9] 2018-03-03 Gustaf Neumann * nsf.c (NsfDebugGetDict): Avoid potentially dangerous call - strcat(); remove unneeded assignment [0948fdce] + strcat(); remove unneeded assignment [0948fdce] 2018-03-02 Gustaf Neumann @@ -281,20 +281,20 @@ 2018-02-25 Gustaf Neumann * nsf.c, nsfInt.h, nsfStack.c: Add const declarations, reduce - variable scopes, break longish lines [efe655ee] + variable scopes, break longish lines [efe655ee] 2018-02-21 Stefan Sobernig * dtrace/README: Fix call example, updated instructions to cover - SIP deactivation, minor corrections. Added one more D script: - nsf_calltime.d. [bf3b2a85,ee6699cd] + SIP deactivation, minor corrections. Added one more D script: + nsf_calltime.d. [bf3b2a85,ee6699cd] * nsfDTrace.h: Re-generated. [ee6699cd] * nsf.c (NsfConfigureCmd): Fix NSF_DTRACE=1 builds. [8a3defd6] * gentclAPI.tcl, nsfAPI.decls (createconverter): Support for "-global 1" flag that will cause the options array corresponding to an - enumeration to become available as a global, properly Nsf_* prefixed - symbol. Used for NsfConfigureCmd and the corresponding DTrace probe, - for now. [40299a6f] + enumeration to become available as a global, properly Nsf_* prefixed + symbol. Used for NsfConfigureCmd and the corresponding DTrace probe, + for now. [40299a6f] 2018-02-19 Gustaf Neumann @@ -308,16 +308,16 @@ 2018-02-19 Gustaf Neumann * nsf.c: Adding const declarations, variable name cleanup - [75e891c9] + [75e891c9] * nsf.c, nsfCmdPtr.c: Reduce number of returns before end of - function, ease live for static checker, use more "const" declarations [b655363c] + function, ease live for static checker, use more "const" declarations [b655363c] 2018-02-18 Gustaf Neumann * testx.xotcl: Comment and improve linebreak [992c4419] * nsf.c: Prefer bool over int, reduce number of gotos, reduce - number of returns before end of function, reduce variable scopes, - add "const" declaration, white-space changes [e9cd20a4] + number of returns before end of function, reduce variable scopes, + add "const" declaration, white-space changes [e9cd20a4] 2018-02-17 Gustaf Neumann @@ -344,47 +344,47 @@ 2018-02-11 Gustaf Neumann * nsf.c, cget.test (CGetParamLookup): Add Tcl_Obj caching to cget - argument; reduced usage of goto statements; reduced size of - largish function [343d881f] + argument; reduced usage of goto statements; reduced size of + largish function [343d881f] * nsfInt.h (ObjTypeStr): Introduce macro ObjTypeStr for commonly used idiom [23843225] * nsf.c: Prefer boolean over int [b513759e] * nsf.c (ColonCmdCacheRequiredRefetch): coloncmd reform (part 4) - performs validation for per-object cases, provide more detailed - statistics (when compiled with COLON_CMD_STATS) - [050f0e85] + performs validation for per-object cases, provide more detailed + statistics (when compiled with COLON_CMD_STATS) + [050f0e85] 2018-02-10 Gustaf Neumann * nsf.c (NsfParamDefsNonposLookup, ColonCmdCacheSet): Reduce - memory consumption by caching only cmds in non-volatile - Tcl_Objs. Add optional statistics, when COLON_CMD_STATS is - defined. [fd53af3f] + memory consumption by caching only cmds in non-volatile + Tcl_Objs. Add optional statistics, when COLON_CMD_STATS is + defined. [fd53af3f] * nsf.c (NsfDListInit, NsfDListAppend, NsfDListFree): Add NsfDList - functions similar to Tcl_DString, but operating on void* instead - of char and use it for ColonCmdCache data [ac0c6dda] + functions similar to Tcl_DString, but operating on void* instead + of char and use it for ColonCmdCache data [ac0c6dda] * nsf.c (NsfDList): coloncmd reform (part 3): Leep a per-interp - list of colon command cache entries to avoid memory leaks in cases - the objects are converted [40317187] + list of colon command cache entries to avoid memory leaks in cases + the objects are converted [40317187] * nsf.c (ParamDefsGetReturns): Simplify handling of "returns" - object. no need to require paramdefs, when just returnsObj is - needed [5d0e4380] + object. no need to require paramdefs, when just returnsObj is + needed [5d0e4380] * nsf.c (TopoSortSub): Simplify expression [b7c03b14] * nsf.c (NsfMethodPropertyCmd): Remove unneeded variable [e75c61b1] 2018-02-09 Gustaf Neumann * nsf.c (NsfFindClassMethod, ObjectDispatch), nsfInt.h, nsfObj.c: - coloncmd reform improves dispatch of [:method ...] by up to 30%; - generalized code and apply for object-specific commands as well - [68df0e0f, 4be7360a] + coloncmd reform improves dispatch of [:method ...] by up to 30%; + generalized code and apply for object-specific commands as well + [68df0e0f, 4be7360a] 2018-02-09 Stefan Sobernig * msgcat.test: Added a small collection of basic tests covering msgcat - usage from within NSF/NX objects and classes. Tested successfully - with mainline Tcl 8.6 and the TIP-490 branch "tip490-msgcat-oo-2". - [071b5e4d] + usage from within NSF/NX objects and classes. Tested successfully + with mainline Tcl 8.6 and the TIP-490 branch "tip490-msgcat-oo-2". + [071b5e4d] 2018-02-07 Gustaf Neumann @@ -393,15 +393,15 @@ 2018-02-06 Gustaf Neumann * nsf.c (MakeProcError, PushProcCallFrame, InvokeShadowedProc): Pass - execNsPtr to byte-compiler (which might be different to - procPtr->cmd->nsPtr) [fb310a1d] + execNsPtr to byte-compiler (which might be different to + procPtr->cmd->nsPtr) [fb310a1d] 2018-01-30 Stefan Sobernig * nsf.c (NextSearchAndInvoke): Relax the pre-conditions, objv can - actually be NULL (see test cases). Besides, the assertion was not - reflected by a corresponding nonnull constraints on the - NextSearchAndInvoke prototype. [42350dca] + actually be NULL (see test cases). Besides, the assertion was not + reflected by a corresponding nonnull constraints on the + NextSearchAndInvoke prototype. [42350dca] 2018-01-27 Gustaf Neumann @@ -412,48 +412,48 @@ 2018-01-26 Gustaf Neumann * nsf.c, nsf.h, nsfEnumerationType.c, nsfPointer.c, nsfProfile.c: Remove - unused arguments [625e5b42] + unused arguments [625e5b42] * nsf.c: Use Boolean type on more occasions; fix incorrect - comments; fix mixture of Tcl result code and 0/1 integers - [b2902b78, e2dd2f44, 3f46f0b1] + comments; fix mixture of Tcl result code and 0/1 integers + [b2902b78, e2dd2f44, 3f46f0b1] 2018-01-25 Gustaf Neumann * nsf.c: Improve type cleanness for clang 6.0 [c783c671] * nsf.c, gentclAPI.tcl, nsfAPI.h, nsfObj.c: Align prototypes with - function definitons and minor code cleanup + function definitions and minor code cleanup [6e5500ed] * nsf.c: Write separate commands in different lines (esp. for control structures) [048913c4] * nsf.c, nsfAPI.decls, nsfAPI.h, nsfInt.h, nsfProfile.c, nsfStack.c: Align - naming of variables in function prototypes and definitions + naming of variables in function prototypes and definitions [ed886327] * nsf.c, nsfStack.c: Mark unused arguments as UNUSED [23bf0a56] 2018-01-24 Gustaf Neumann * gentclAPI.tcl, nsf.c, nsfAPI.decls, nsfAPI.h: Make argument - names more regular improve alignment of prototype names with - function definitions [9ffb7a5c] + names more regular improve alignment of prototype names with + function definitions [9ffb7a5c] * nsf.c: Fix typos [d45807d8] * generic/*.h, generic/*.c: Improve alignment of prototypes with function definitions improve - regularity of variable names [8552f707] + regularity of variable names [8552f707] * generic/*.h, generic/*.c: Prefer meaningful name in function - prototypes align names in .decls file with prototypes in the .c - and .h files [866971d8] + prototypes align names in .decls file with prototypes in the .c + and .h files [866971d8] 2018-01-22 Gustaf Neumann * nsf.c (ExitHandler), nsfEnumerationType.c (Nsf_Init), nsfInt.h (Register): Remove - unused arguments [88a4a36b] + unused arguments [88a4a36b] * nsf.c (ExitHandler), nsfCmdDefinitions.c - (Nsf_CmdDefinitionInit), nsfInt.h (Nsf_EnumerationTypeGetDomain): Remove - unused argument [9c4fabbf, 9cae9f80] + (Nsf_CmdDefinitionInit), nsfInt.h (Nsf_EnumerationTypeGetDomain): Remove + unused argument [9c4fabbf, 9cae9f80] 2018-01-20 Gustaf Neumann * nsf.c (MakeProc): Minor cleanup (adjust comments, reduce - variable scope) [1dad927c] + variable scope) [1dad927c] 2018-01-19 Stefan Sobernig @@ -468,33 +468,33 @@ * contains.test: Fix another 86/85 glitch [2125f114] * nx-test.tcl (try): Make test suite working under 8.5, - again. [1d2bdbea] + again. [1d2bdbea] 2018-01-18 Gustaf Neumann * nsf.c (MakeProc, NsfProcContext): Execution namespace reform: - Add execution namespace to proc context instead of altering the - namespace of the command. This fixes strange behavior of "info - commands ::o::p", which might have returned "::p"; provide - compatibility with Tcl 8.7a2; extend regression test [3ccbf141] + Add execution namespace to proc context instead of altering the + namespace of the command. This fixes strange behavior of "info + commands ::o::p", which might have returned "::p"; provide + compatibility with Tcl 8.7a2; extend regression test [3ccbf141] * Makefile.in, alias.test, double-alias.test: Extended regression - test [df76a8d9] + test [df76a8d9] 2018-01-16 Gustaf Neumann * nsf.c (Nsf_Init): Get the "int" type from the Tcl_Obj directly, - which will continue to work in Tcl 9.0. [2d77e6cc] + which will continue to work in Tcl 9.0. [2d77e6cc] * nsf.c (Nsf_Init): Provide compatibility with TIP #484 on wideInt - [382055d5] + [382055d5] * nsf.c, alias.test: Deactivate solution to the tcl87a2 problem - for now, since we need a different solution with this for - recursive aliases [392fda7d] + for now, since we need a different solution with this for + recursive aliases [392fda7d] * nsf.c (ObjectDispatch): Improve wording in comment [42f38005] * nsf.c (ParamOptionParse): Remove shadowing variable [d8f6dd4d] * nsf.c (ParamDefsFormat, ParamOptionParse): reduce implicit - conversions [fa4eedf5] + conversions [fa4eedf5] * nsf.c (NsfMethodAliasCmd): Transitional fix for tcl87a2 problem - [63f7ad6c] + [63f7ad6c] 2018-01-15 Gustaf Neumann @@ -504,38 +504,38 @@ 2018-01-14 Gustaf Neumann * nx.tcl, parameters.test: Avoid stripping of substdefault from - properties [ed365a90] + properties [ed365a90] * nx.tcl, parameters.test, substdefault.test: Add handling of - extended substdefault options to per-object variables; improve - default value checking for slot-less variables; transform - associated array into a dict; extended regression tests [babe6447] + extended substdefault options to per-object variables; improve + default value checking for slot-less variables; transform + associated array into a dict; extended regression tests [babe6447] 2018-01-13 Gustaf Neumann * nsf.c (MakeProc): Delete pre-existing commands explicitly - [918dad99] + [918dad99] 2018-01-12 Gustaf Neumann * nsf.c (MakeProc): Provide fully qualified names to - Tcl_ProcObjCmd() to avoid potential problems in newer Tcl versions - [79bca8ba] + Tcl_ProcObjCmd() to avoid potential problems in newer Tcl versions + [79bca8ba] 2018-01-05 Gustaf Neumann * nsf.c, nx-test.tcl, destroy.test, forward.test: Make it possible - to use error code for cmd result comparison; add some NSF specifc - error code [5ab2ad98] + to use error code for cmd result comparison; add some NSF specific + error code [5ab2ad98] * nsf.c, disposition.test, parameters.test: Provide error hint for - "invalid value constraints" errors [dc94a1f1] + "invalid value constraints" errors [dc94a1f1] * nsf.c: Add error message, when present [50d4fe25] * nsf.c (ParamDefsFormat, ParamDefsFormatOption) - (ParamDefsRefCountDecr): Reduce number of strlen() operations - [11f14cc1] + (ParamDefsRefCountDecr): Reduce number of strlen() operations + [11f14cc1] * nsf.c: whitespace changes [01ea26cd] * nsf.c (ParamDefinitionParse, ParamDefsFormat), nx.tcl, - xotcl2.tcl: Fold "substdefault" and "substdefaultoptions" into a - single parameter option "substdefault" [b6fa8004] + xotcl2.tcl: Fold "substdefault" and "substdefaultoptions" into a + single parameter option "substdefault" [b6fa8004] 2018-01-04 Stefan Sobernig @@ -544,24 +544,24 @@ [b70b7fe7] * nsf.c (ParamSetFromAny2): Fix inline comment. [b62efa58] * nsf.c (ParamOptionParse, ParamDefinitionParse, ParamDefsParse), - parameters.test: Small "type=" converterArg reform. Provided - additional parameter in param-parser machinery, to communicate a - (namespace) qualifier into ParamOptionParse. This way, the unqualified + parameters.test: Small "type=" converterArg reform. Provided + additional parameter in param-parser machinery, to communicate a + (namespace) qualifier into ParamOptionParse. This way, the unqualified type=* values are now expanded to qualified names (definition scope): method parameters, nsf::is, nsf::parseargs, setter methods. Type=* in - object parameters are currently expanded at the slot level, could also - be added. New tests were added, existing ones adjusted to reflect the - new behaviour. [f0d2956f] + object parameters are currently expanded at the slot level, could also + be added. New tests were added, existing ones adjusted to reflect the + new behaviour. [f0d2956f] 2018-01-03 Gustaf Neumann * nsf.c, nsfAPI.decls, substdefault.test: New command "nsf::definitionnamespace" plus regression tests [7f58a3a3] * nsf.c (ParamOptionParse): Fix typo in comment [3301d272] * nsf.c (ParamParse, ArgumentDefaults): Implement - substdefaultoptions (for now, just providing the bitmask); added - substdefault.test; rename static function ParamParse() to - ParamDefinitionParse(); break overlong lines [25212e40] + substdefaultoptions (for now, just providing the bitmask); added + substdefault.test; rename static function ParamParse() to + ParamDefinitionParse(); break overlong lines [25212e40] 2018-01-02 Gustaf Neumann @@ -570,34 +570,34 @@ 2018-01-01 Gustaf Neumann * nsf.c (NsfDebugGetDict): Use snprintf() instead of sprintf() to - protect better against potential buffer overflows [37c87756] + protect better against potential buffer overflows [37c87756] * nsf.c (CompiledColonLocalsLookup): Remove old-style - CompiledColonLocalsLookup and use colonLocalVarCache variant - instead. [b916a5a3] + CompiledColonLocalsLookup and use colonLocalVarCache variant + instead. [b916a5a3] 2017-12-31 Gustaf Neumann * parameters.test: Fix leftover from the time, when we could call - accessor methods without "get" [6ef0a130] + accessor methods without "get" [6ef0a130] 2017-12-31 Stefan Sobernig * nx.tcl, nx-mongo.tcl (parseParamSpec): Render target parameter - non-positional, so that MetaSlot.parseParamSpec() becomes backward - compatible. Adjusted callsites of parseParamSpec. [5ac8b093] + non-positional, so that MetaSlot.parseParamSpec() becomes backward + compatible. Adjusted callsites of parseParamSpec. [5ac8b093] 2017-12-30 Gustaf Neumann * nx-mongo.tcl (parseParameterSpec): Add missing argument to parseParameterSpec [5d495b6d] * mk_predefined.tcl: Improve portability (restict length of literal strings <= 4095) [1c256d87] * parameters.test: Deactivate two problematic tests for the time - being to allow regression test to run [868e7224] + being to allow regression test to run [868e7224] 2017-12-29 Gustaf Neumann * generic/*.c, *.log, library/*: Fix typos, updaty copyright years - according to commits [0de05aae] + according to commits [0de05aae] * nsf.c: Prefer boolean test, remove commented-out code [b84afe7e] 2017-12-24 Gustaf Neumann @@ -607,16 +607,16 @@ 2017-12-21 Stefan Sobernig * nsf.c (ParamParse): Fix crash when ParamParse is called with an - empty-string argument, e.g. nsf::parameter::info type "". Tests - provided. [2f921800] + empty-string argument, e.g. nsf::parameter::info type "". Tests + provided. [2f921800] 2017-12-20 Stefan Sobernig * nsf.c (NsfParseArgsCmd): Fix another edge case (empty spec and/or empty argv), added more tests. See also TODO. [9bd2c31a] * nsf.c (NsfParseArgsCmd): Fix nsf::parseargs for the case of Tcl-only - params, otherwise, it crashes due to an uninitialized params - structure. Added some tests. [54277a59] + params, otherwise, it crashes due to an uninitialized params + structure. Added some tests. [54277a59] 2017-12-19 Stefan Sobernig @@ -627,26 +627,26 @@ * nx.tcl (Class.variable): Clean up a left-over. [03bde7ee] * nx.tcl (Class.variable()): Re-order the substdefault-handling block - to render it more meaningful. [7e754788] + to render it more meaningful. [7e754788] * nx.tcl (substdefault): Unify and harden substdefault handling. Both, - per-class and per-object substdefault should now behave similarly in - absence of a pair of evaluation brackets. Also, an attempt is made to - capture ill-formed input to subst earlier ([info complete]). An actual - substdefault reform, however, must tackle the [subst] calls - (-novariables?) and make the calls more robust (at the script and C - level; [apply]-like?). Added some tests for documentation. [dc801eac] + per-class and per-object substdefault should now behave similarly in + absence of a pair of evaluation brackets. Also, an attempt is made to + capture ill-formed input to subst earlier ([info complete]). An actual + substdefault reform, however, must tackle the [subst] calls + (-novariables?) and make the calls more robust (at the script and C + level; [apply]-like?). Added some tests for documentation. [dc801eac] 2017-11-30 Stefan Sobernig * Parameters.test: Simplify test case slightly. [efd3c005] * nx.tcl (MetaSlot.parseParameterSpec): Refine handling of the - type converter to expand unqualified names to the "nearer" - namespace, i.e., namespace of the slot-owning object) rather than + type converter to expand unqualified names to the "nearer" + namespace, i.e., namespace of the slot-owning object) rather than "". Along the way, intercept invalid type=* values earlier (empty - string, "::"). Added some tests. [f177ffa3] + string, "::"). Added some tests. [f177ffa3] * nsfDebug.c: Remove duplicate array entry. [e9dc4cee] * nsfDebug.c (NsfInitPkgConfig): Provide NSF configuration data via the - TIP 59 interface (::nsf::pkgconfig). [0ca1bf1c] + TIP 59 interface (::nsf::pkgconfig). [0ca1bf1c] 2017-11-18 Gustaf Neumann @@ -661,7 +661,7 @@ 2017-11-15 Gustaf Neumann * nsf.c, method-parameter.test: Don't allow bytearrays as name of - non-pos args [8ac4f64a] + non-pos args [8ac4f64a] 2017-11-09 Gustaf Neumann @@ -670,23 +670,23 @@ 2017-11-08 Stefan Sobernig * nsf.c, nsfInt.h, nsfObj.c: Make epoch counters unsigned ints, so - doubling the number of possible epochs. [1aa07d20] + doubling the number of possible epochs. [1aa07d20] * nsf.c: Unify cmd flags cast (unsigned long -> unsigned int) [a25c4bed] * nsf.c (ObjectCmdMethodDispatch): Simplify and cleanup condition expressions. [20c5ebb6] * nsf.c (ObjectCmdMethodDispatch), submethods.test: Enable private - checking on ensembles, added test cases to capture the intended - behaviour behind -local and/or private for ensemble methods. [96e318fb] + checking on ensembles, added test cases to capture the intended + behaviour behind -local and/or private for ensemble methods. [96e318fb] 2017-10-24 Gustaf Neumann * nsf.c (NsfColonCmd, NsfSelfCmd): Move GetObj() after tests of - non-null asserts [543954d5] + non-null asserts [543954d5] 2017-10-20 Gustaf Neumann * nx-mongo.tcl: Fix collateral damage of protection changes by - making methods public [9429c5df] + making methods public [9429c5df] * nsfStack.c: Move prototypes to begin of file [b2c4a961] * nsfStack.c: Don't shadow variable names. [09a7e327] * nsfStack.c: Remove commented code, add missin nonnull-assert, @@ -695,19 +695,19 @@ 2017-10-19 Stefan Sobernig * nsf.c (NsfMethodForwardCmd): Provide correct scoping condition when - requesting a method handle for a submethod forwarder. Added basic - tests. [8b19916c] + requesting a method handle for a submethod forwarder. Added basic + tests. [8b19916c] 2017-10-13 Stefan Sobernig * nsf.c, nsfStack.c: Bump copyright years. [bc16933e] * nsf.c (ObjectCmdMethodDispatch), protected.test: For ensemble or - submethod dispatches, since ever, call protection had not been - enforced at all. This commit enables call protection (protected) - for ensembles and adds basic tests. + submethod dispatches, since ever, call protection had not been + enforced at all. This commit enables call protection (protected) + for ensembles and adds basic tests. * nsfStack.c (GetSelfObj): To allow one to resolve the self reference - at arbitrary callstack levels, separate GetSelfObj into a GetSelfObj - macro for the topmost self and GetSelfObj2. [4e48f104] + at arbitrary callstack levels, separate GetSelfObj into a GetSelfObj + macro for the topmost self and GetSelfObj2. [4e48f104] 2017-10-06 Gustaf Neumann @@ -716,14 +716,14 @@ 2017-10-02 Stefan Sobernig * nsf.c (NsfCCreateMethod): During a shutdown, in a filter setting, - objv is not necessarily populated. Prior to this fix, the following - crashes on exit for "ObjStr(objv[1])": [86becbe0] + objv is not necessarily populated. Prior to this fix, the following + crashes on exit for "ObjStr(objv[1])": [86becbe0] 2017-09-19 Gustaf Neumann * nsf.c (RemoveInstance, CallStackDoDestroy) - (MixinInvalidateObjOrders, TclDeletesObject, CleanupDestroyClass): Add - likely/unlikely for NSF_DURING_DELETE checks [57d67eeb] + (MixinInvalidateObjOrders, TclDeletesObject, CleanupDestroyClass): Add + likely/unlikely for NSF_DURING_DELETE checks [57d67eeb] * nsf.c, nsfError.c, nsfProfile.c: Code cleanup [5df12821] 2017-09-06 Gustaf Neumann @@ -735,16 +735,16 @@ 2017-09-04 Gustaf Neumann * nsf.c (AliasAdd, AliasGet, AliasDelete): Optimization for - aliases, avoiding unboxing and re-boxing values as Tcl_Objs - [0e77a312] + aliases, avoiding unboxing and re-boxing values as Tcl_Objs + [0e77a312] * nsf.c: Minor cleanup and optimizations [5b6d88f8] * nsfUtil.c (strnstr): Avoid call of strncmp() in common cases - [3b1402ae] + [3b1402ae] 2017-08-31 Gustaf Neumann * nsf.c (CompiledLocalsLookup): Add cache for compiled locals - starting with a colon to avoid repeated linear searches. + starting with a colon to avoid repeated linear searches. * nsf.c (ParamOptionParse): Reduce number of string comparisons in ParamOptionParse() * nsf.c (ParamOptionParse, NsfProcDeleteProc): Factor out ProcContextRequire() * varresolution.test: Extend regression test [9c0e4571] @@ -753,23 +753,23 @@ * nsf.c, nsfStack.c: Minor cleanup [fa5f1303] * nsf.c (MethodDispatch): Remove first argument of MethodDispatch, - which is apparently not needed [18c7294b] + which is apparently not needed [18c7294b] * nsf.c, nsfInt.h (CompiledLocalsLookup): Avoid mixed declarations - and code [a4b53da8]; added experimental definition of - NSF_CONSTANT_COMPILED_LOCAL_LOOKUP [d9a45933] + and code [a4b53da8]; added experimental definition of + NSF_CONSTANT_COMPILED_LOCAL_LOOKUP [d9a45933] 2017-08-20 Stefan Sobernig * nsf.c (FindNextMethod): Provide revised, streamlined implementation - of FindSelfNext as FindNextMethod. FindSelfNext is maintained, but - unused for the time being. [cc7500b2] + of FindSelfNext as FindNextMethod. FindSelfNext is maintained, but + unused for the time being. [cc7500b2] 2017-08-20 Gustaf Neumann * nsf.c, nsfStack.c: Cleanup and optimization [fd0a160a] * nsfStack.c: White space changes [f1549882] * nsfStack.c: Reduce number of returns before end of function - [b64700f0] + [b64700f0] * nsf.c, nsf.h, nsfInt.h: Whitespace changes, typos [3f78bdd8] * nsfInt.h: More macro definition after GNU definitions [394c8d71] * nsf.h: Remove redundant definition [263d34ee] @@ -779,13 +779,13 @@ 2017-08-20 Stefan Sobernig * nsf.c (NsfCurrentCmd), nsfStack.c (CallStackNextFrameOfType): Render - [current isnextcall] aware of ensembles. Extended submethods.test to - cover [current isnextcall] within ensembles. [adedd712] + [current isnextcall] aware of ensembles. Extended submethods.test to + cover [current isnextcall] within ensembles. [adedd712] 2017-08-18 Stefan Sobernig * nsf.c (FindSelfNext): Render [current nextmethod] aware of - ensembles. Added basic tests. [2c338821] + ensembles. Added basic tests. [2c338821] 2017-08-15 Gustaf Neumann @@ -794,39 +794,39 @@ 2017-08-09 Stefan Sobernig * submethods.test: Clean up ensembles on top-level - objects. [2a10ca19] + objects. [2a10ca19] * nx-test.tcl (nx::test case): As (ensemble) methods are currently not - covered by the auto-cleanup feature of "nx::test case", I took care - of not cleaning up the per-class ensemble slots while the alias is - still available. This led to dangling aliases. [464ec0a0] + covered by the auto-cleanup feature of "nx::test case", I took care + of not cleaning up the per-class ensemble slots while the alias is + still available. This led to dangling aliases. [464ec0a0] * nsf.c (GetNextArguments): Ensemble method names via the colon - resolver were not cleansed for the colon, leading to a broken method - lookup chain. Fix for SF Ticket #1. Added basic tests. [404b5593] + resolver were not cleansed for the colon, leading to a broken method + lookup chain. Fix for SF Ticket #1. Added basic tests. [404b5593] 2017-08-07 Gustaf Neumann * nsf.c (MakeProc, NsfMethodCreateCmd): Remove failing assertion, - Tcl handles leading colons in proc names [71dcbd9c] + Tcl handles leading colons in proc names [71dcbd9c] 2017-06-18 Stefan Sobernig * nsf.c, forward.test (ForwardArg): Extend to recognize alternative element separators in list string reps - (NsfHasTclSpace). [bc7f267a] + (NsfHasTclSpace). [bc7f267a] * nsf.c, nsf-cmd.test (ObjectFindMethod): Extend to recognize all element separator chars (NsfHasTclSpace). [462bf8f1] * nsf.c, parameters.test (NsfMethodSetterCmd): Make list detection aware of all list separator chars (NsfHasTclSpace). [33d063a3] * nsf.c, parameters.test (NsfOResidualargsMethod): Extend XOTcl's - list-notation support to recognize all Tcl list separators - (NsfHasTclSpace). [5425e020] + list-notation support to recognize all Tcl list separators + (NsfHasTclSpace). [5425e020] 2017-06-14 Stefan Sobernig * nsf.c, nsfInt.h: Start housekeeping work on Tcl command/proc names - vs. NSF method names to avoid conflicts between ensemle methods and - e.g. whitespace-containing command names. Added helper macro - NsfHasTclSpace and some first tests. To be continued. [7e090d5c] + vs. NSF method names to avoid conflicts between ensemle methods and + e.g. whitespace-containing command names. Added helper macro + NsfHasTclSpace and some first tests. To be continued. [7e090d5c] 2017-06-03 Gustaf Neumann @@ -835,55 +835,55 @@ 2017-05-31 Stefan Sobernig * nsf.c (NsfMethodPropertyCmd,NsfForwardPropertyCmd): Remove extra - whitespace from error message. [67401de3] + whitespace from error message. [67401de3] 2017-05-29 Stefan Sobernig * methods.test: Add basic tests on composite names under the default unknown handler. [224bb589] * nsf.c (DispatchUnknownMethod): Sanitize messages emitted by - default unknown handler. Unless in the context of an ensemble - object (NSF_KEEP_CALLER_SELF, NSF_PER_OBJECT_DISPATCH), make sure - that the entire method name, incl. multi-word names, are fully - reported. [09b9e7c9] + default unknown handler. Unless in the context of an ensemble + object (NSF_KEEP_CALLER_SELF, NSF_PER_OBJECT_DISPATCH), make sure + that the entire method name, incl. multi-word names, are fully + reported. [09b9e7c9] 2017-05-28 Gustaf Neumann * nsf.c (FindCalledClass): Simplify code [c1ac4a3f] * nsf.c (NsfCmdList, RemoveFromObjectMixins, FilterAdd) - (FindCalledClass, FindSelfNext, NsfRelationSetCmd), nsfObj.c - (NsfFilterregGet, FilterregSetFromAny), nsfStack.c - (CallStackGetTopFrame0): Don't assume that CallStackGetTopFrame0() - returns != NULL; reduce variable scopes; reduce number of returns - before function end - [16324e94] + (FindCalledClass, FindSelfNext, NsfRelationSetCmd), nsfObj.c + (NsfFilterregGet, FilterregSetFromAny), nsfStack.c + (CallStackGetTopFrame0): Don't assume that CallStackGetTopFrame0() + returns != NULL; reduce variable scopes; reduce number of returns + before function end + [16324e94] 2017-04-29 Gustaf Neumann * nsf.c (NsfOCgetMethod): Make sure, paramPtr is always - initialized [be1aa824] + initialized [be1aa824] 2017-04-22 Gustaf Neumann * xotcl2.tcl, library/*: Use more straightforward Tcl idiom - [string index] to access first character of a string; standardize - spelling of names of products (Tcl, AOLserver, PostgreSQL) - [09b4bca7] + [string index] to access first character of a string; standardize + spelling of names of products (Tcl, AOLserver, PostgreSQL) + [09b4bca7] * doc/*.man: Use uniform spelling of "Tcl" [bf42a9bc] * nsfAssemble.c: Whitespace change [6450e201] * generic/*.c, library/*/*.tcl: Use uniform spelling of "Tcl", fix - more spelling errors [6af35a88, 0fd68504] + more spelling errors [6af35a88, 0fd68504] 2017-04-21 Gustaf Neumann * nsf.c (NsfDebugGetDict): Provide means to debug invalid coding - in Tcl_Objs [5561af6a] + in Tcl_Objs [5561af6a] 2017-03-03 Stefan Sobernig * nx.tcl (VariableSlot): Fix value=delete to actually accept and - implement "-nocomplain". Added tests (missing so far entirely) and - updated the man pages accordingly. [8f64a468] + implement "-nocomplain". Added tests (missing so far entirely) and + updated the man pages accordingly. [8f64a468] 2017-03-03 Gustaf Neumann @@ -892,21 +892,21 @@ 2017-03-02 Stefan Sobernig * nx.tcl, parameters.test (defineIncrementalOperations): Make sure - value=add and value=delete actually run value checkers and, in case - of "convert", pick up the conversion result. Added basic test. - [470bd5f5] + value=add and value=delete actually run value checkers and, in case + of "convert", pick up the conversion result. Added basic test. + [470bd5f5] 2017-03-01 Stefan Sobernig * nsf.c (ArgumentCheck): Set parentheses correctly. [0c9b20f1] * nx.tcl (makeIncrementalOperations, defineIncrementalOperations): Avoid repeated slot= entries in options. Fix a typo. [d2ca2655] * nsf.c (ArgumentCheck): Avoid double dispatching to value checkers - (built-in and type=*) for "slotset" parameters. Previously, configure - and then the value=set (value=add) method triggered one dispatch each. - Now, the configure pass skips the check and shifts sole responsibility - on the value=set/ value=add methods. Added basic test cases to - parameters.test to capture the intended call semantics. [daa771f5] + (built-in and type=*) for "slotset" parameters. Previously, configure + and then the value=set (value=add) method triggered one dispatch each. + Now, the configure pass skips the check and shifts sole responsibility + on the value=set/ value=add methods. Added basic test cases to + parameters.test to capture the intended call semantics. [daa771f5] 2017-03-01 Gustaf Neumann @@ -916,8 +916,8 @@ 2017-02-28 Gustaf Neumann * nsf.c (ForwardArgFix): Fix for potential bug in forwarder - code. It was possible that substituted %proc becomes freed too - early [980112e0] + code. It was possible that substituted %proc becomes freed too + early [980112e0] 2017-02-20 Stefan Sobernig @@ -928,25 +928,25 @@ 2017-02-20 Gustaf Neumann * xotcl2.tcl: Modernize programming style (if-then-else -> - if-else) [7fb9a460] + if-else) [7fb9a460] * nsf-mongo.test: Add test for regular expression matching in - conditions [3b027ad1] + conditions [3b027ad1] * nx-mongo.tcl: Make sure to initialize NSF object fetched from - mongo [ac40ee26] + mongo [ac40ee26] 2017-02-14 Gustaf Neumann * nx.tcl, contains.test: Use more modern returnstate handling - based on options, added regression tests [f5bba52e] + based on options, added regression tests [f5bba52e] 2017-02-14 Stefan Sobernig * next-migration.txt: Address some typos (thx to Guenter Ernst for reporting). [576c7576] * contains.test: Add two test cases to document the recent fix - [6b570a0b] on error and errorcode propagation in - contains. [1790b67d] + [6b570a0b] on error and errorcode propagation in + contains. [1790b67d] 2017-02-14 Gustaf Neumann @@ -964,10 +964,10 @@ 2017-01-18 Gustaf Neumann * nsfmongo.c, mongoAPI.h: Copy changed structure ParseContext - [3d447c3c] + [3d447c3c] * gentclAPI.tcl, nsfAPI.h: Prefer NULL over ConvertToNothing in - the terminating record, since the former is not available for - extensions [96479aa7] + the terminating record, since the former is not available for + extensions [96479aa7] 2017-01-18 Stefan Sobernig @@ -977,46 +977,46 @@ 2017-01-14 Gustaf Neumann * nsf.c (AssertionCheck, ListParamDefs, NsfMethodAliasCmd, NsfMethodPropertyCmd): Include - all enum values in case statements [cd3c5e04] + all enum values in case statements [cd3c5e04] * nsf.c: Use preprocessor variables more consistently [95656d26] * nsf.c (VarHashCreateVar, AssertionAddProc, ParamDefsStore. NsfStringIncrFree): Remove - old-style function definitions [b49b73b7] + old-style function definitions [b49b73b7] * nsf.c (NsfProcStub): Remove implicit conversion to 'unsigned int' from 'int' [d2e248fb] * nsf.c (ObjectCmdMethodDispatch,FreeUnsetTraceVariable, NsfNextCmd, NsfCurrentCmd): ISO - C90 forbids mixed declarations and code [4511d320] + C90 forbids mixed declarations and code [4511d320] * nsf.c (Nsf_Init): Don't shadow local variable [54e49b08] * nsf.c, nsfInt.h: Reduce memory consumption via better aligning - esp. on 64-bit machines [2076cebc] + esp. on 64-bit machines [2076cebc] 2017-01-13 Gustaf Neumann * nsf.c (GetObjectFromObj, ObjectCmdMethodDispatch) - (ObjectDispatch, ListCmdParams, ListMethod, NsfMethodSetterCmd) - (NsfObjectAllocCmd, NsfCurrentCmd, CscListRemove): Don't shadow - variables [22741a63] + (ObjectDispatch, ListCmdParams, ListMethod, NsfMethodSetterCmd) + (NsfObjectAllocCmd, NsfCurrentCmd, CscListRemove): Don't shadow + variables [22741a63] * nsf.c (NsfMemCounter): Modify STRING_NEW such that it is able to - produce "const char *" such that it uses ckalloc [84a4722d] + produce "const char *" such that it uses ckalloc [84a4722d] * nsf.c: Provide for clean compile with "-Wwrite-strings", added - const declarations [878a74b6] + const declarations [878a74b6] * nsf.c: Removed unneeded arguments; mark unused arguments as - UNUSED [b089be70] + UNUSED [b089be70] 2017-01-13 Stefan Sobernig * nx-pp.tcl (State): Add "substdefault" to two property specs to - fix markup generation for various token types (variables - etc.). [ac12ae10] + fix markup generation for various token types (variables + etc.). [ac12ae10] 2017-01-11 Stefan Sobernig * source-doc-beautifier.tcl: Allow for omitting the built-in title - line, to allow for custom doc and title preambles in example - scripts ("-notile" flag). [66e3a960] + line, to allow for custom doc and title preambles in example + scripts ("-notile" flag). [66e3a960] 2017-01-06 Gustaf Neumann * configure.ac, nsf.c: Added a new configure flag - "--enable-development=test" (in addition to "--enable-development" - or "--disable-development") for activating more expensive runtime - tests. "--enable-development" alone activates just assertion - checking [fccf09e0] + "--enable-development=test" (in addition to "--enable-development" + or "--disable-development") for activating more expensive runtime + tests. "--enable-development" alone activates just assertion + checking [fccf09e0] Index: README.release =================================================================== diff -u -r19e5b1b1ffd95cf1b4164c7053b61a3ec3dc8aa5 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- README.release (.../README.release) (revision 19e5b1b1ffd95cf1b4164c7053b61a3ec3dc8aa5) +++ README.release (.../README.release) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -59,13 +59,13 @@ * Summarize changes since the last release in doc/Announce-VERSION As source use e.g. git log --date-order --date=short|less - ~/scripts/git-changelog2 -- 2.0.0..HEAD --no-merges > ChangeLog-2.0.0-HEAD + ~/scripts/git-changelog2 -- 2.1.0..HEAD --no-merges > ChangeLog-2.1.0-HEAD Diffstats - git diff --stat 2.0.0..HEAD + git diff --stat 2.1.0..HEAD * Run spell checker over announcement + ChangeLog * git add announcement - - rebild documentation + - rebuild documentation * make doc * make pdfdoc (currently, it is necessary to manually edit next-tutorial.html and next-migration.html and replace setInterval() + next 4 lines by reinstall()) Index: doc/Announce2.2.0 =================================================================== diff -u -r671e0d551f266b4a9156872dc06263388d23e703 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- doc/Announce2.2.0 (.../Announce2.2.0) (revision 671e0d551f266b4a9156872dc06263388d23e703) +++ doc/Announce2.2.0 (.../Announce2.2.0) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -1,83 +1,129 @@ Dear Community, We are pleased to announce the availability of the Next Scripting -Framework (NSF) 2.2.0. +Framework (NSF) 2.2.0. The changes are mostly performance and +robustness improvements, providing better error messages etc. +See below for the details. -This is a maintenance release. Since the release of 2.1.0, ... Diff stats since 2.1.0: ... Major changes relative to 2.1.0 are: -- ... - New Features - NSF: - * New command: ::nsf::definitionnamespace - * New command: ::nsf::cmd::info disassemble * Robustness improvements: - + NsfHasTclSpace: ... + + + Use exact the same six space delimiter characters in NSF as in + plain Tcl to avoid surprises (internal API: NsfHasTclSpace()) + + + Improved parameter parsing: Don't allow bytearrays as name of + non-pos arguments, to avoid, that bytearrays get unwanted string + representations (and loosing potentially the pure bytearray + property). This could lead to problems with newer Tcl versions + when passing binary data to NSF procs and methods. + + * Performance improvements: - + The lookup for (bytecode-compiled) object variables is now - supported by a lookup cache to avoid repeated linear searches. - + The number of string comparisons (strcmp) was reduced - systematically, in method-parameter parsing and argument - handling. - + The number of strlen uses was reduced, especially in - method-parameter parsing and argument handling. + + coloncmd reform: dispatch of [:method ...] by up to 30% + by caching the result of the method lookup in a Tcl_Obj + + The lookup for (bytecode-compiled) object variables is now + performed via a sorted lookup cache to avoid repeated linear + searches for compiled-locals (especially an improvement for + unsuccessful searches) + + + Reduced number of string comparisons (strcmp()) via first-char + comparison in method-parameter parsing and argument handling. + + + Reduced number of strlen() operations, especially in + method-parameter parsing and argument handling. + + + Reduced memory consumption via better member aligning of + structs, esp. on 64-bit machines. + + + * New low-level helper-command: + + * "::nsf::definitionnamespace": determine the default namespace + for objects etc. as used internally in NSF + + * "::nsf::cmd::info disassemble", + "/cls/ info method disassemble", + "/obj/ info method disassemble": pendant to ::tcl::unsupported::disassemble. + - NX: * Improvements to incremental property methods: value=add and value=delete - * Improvements to substdefault handling: - + substdefault for properties and variables: make behaviour of - per-object and per-class substdefaults consistent, early check for - complete substitution scripts, ... - + substdefault options + * Improvements to handling of parameter option "substdefault", + which controls, what kind of substitution is expected at runtime + when a default value is used. + + + improved parameter option "substdefault": make behaviour of + per-object and per-class substdefaults consistent, early check + for complete substitution scripts + + + the "substdefault" options can control via a single argument whether + command/variable/backslash substitution is wanted. Examples: + 0x111 substitute all + 0x100 only command substitution + 0x010 only command substitution + 0x001 only backslash substitution + or any bit combination. + * Improvements to ensemble methods: - + Fix ensemble-method dispatch via colon dispatcher - + [current nextmethod] + [current isnextcall] are now fully aware - of ensemble methods, when being used from within. + + Fixed bug when ensemble-method was dispatched via colon dispatcher + (problem with leading colon) + + [current nextmethod] + [current isnextcall] return now proper + ensemble methods when necessary * Documentation (API and examples): + Added ... - + + Updated - substdefault (to-do) + substdefault (to-do ... ist oben beschrieben, wollen sie da Beispiele machen?) - XOTcl2: ... - MongoDB interface upgrade: - * Upgraded driver and utilities to mongodb-c-driver 1.9.3 and libbson 1.9.3. + * Upgraded driver and utilities to mongodb-c-driver 1.12.0 and libbson 1.12.0. * Add regular expression queries to conditions in nx::mongo * Improved portability between platforms/ OS * Added auto-cleanup of resources (objects) for long-living execution environments (destroy_on_cleanup). - * More robust serialisation of object graphs, by preserving birth - classes in serialization. + * More robust serialization of object graphs, by preserving original + classes in serialization/deserialization. + * Fixed default value handling under certain conditions -- nx::test +- nx::test: - * Provide for expressing expected results in terms of error codes, - rather than error messages. This is to prepare an upcoming reform - on providing error codes from within NSF more extensively. + * Provide support for expressing expected results in terms of error + codes, rather than error messages. This is to prepare an upcoming + reform on providing error codes from within NSF more extensively. -- DTrace support (Mac OS X): Adjusted NSF/DTrace integration for - changes on recent Mac OS X (incl. SIP). See dtrace/README for +- nx::serializer: + + * Fix potential problem in NaviServer ns_eval with blueprint updates + on objects, which were not created by the blueprint. Such objects + could loose their classes when these classes are cleaned-up on + blueprint evaluation. + +- DTrace support (macOS): Adjusted NSF/DTrace integration for + changes on recent macOS (incl. SIP). See dtrace/README for instructions. - Documentation: @@ -88,51 +134,50 @@ * Improved spelling: next-migration.txt, ... - Continued testing: NSF is now continuously built and tested under - Linux, Mac OS X, and Windows against different Tcl targets, using + Linux, macOS, and Windows against different Tcl targets, using different tool chains (gcc, clang, MinGW, MSVC). For this purpose, there is now an official GitHub mirror at: - https://github.com/nm-wu/nsf + https://github.com/nm-wu/nsf Build and test reports are available from: - https://travis-ci.com/nm-wu/nsf + https://travis-ci.com/nm-wu/nsf https://ci.appveyor.com/project/mrcalvin/nsf-2ylk0 - + - Maintenance & bug fixes: - * Execution namespace reform: NSF methods execute in their object's - definition namespace, and not in the the proc's origin - namespace. Rather than patching the proc commands namespace - unconditionally (leading to counter-intuitive results using - standard Tcl introspection on these commands), the execution - namespace is maintained in a context structure and patched for - executing the proc only. + * Execution namespace reform: as in earlier releases NSF methods can + execute in different namespaces such as their object's definition + namespace. Starting with NSF 2.2, the execution namespace is + maintained in a context structure and the namespace is just + changed while the proc is executing. This fixes some + counter-intuitive results using standard Tcl introspection on + these commands. - * Migration to 'bool' + * Migration to C type 'bool': + replace legacy 0/1 integer bools by proper types when possible. * Tcl 8.7: - Preliminary support for a future Tcl 8.7 (as of Dec 2, 2016; + Preliminary support for a future Tcl 8.7 (as of Dec 2, 2016; *** is this really the newest released version of Tcl 8.7?*** commit 71fa1f9c91). NSF compiles under 8.7a0 and its regression tests execute successfully. * Misc (esp. NSF/C): - + Reduced memory consumption via better member aligning of - structs, esp. on 64-bit machines. - + Bug fix: Avoid preemptive frees on %proc subsitution for - forwarder methods. + + Bug fix: Avoid preemptive frees on %proc substitution for + forwarder methods. + Aliases: Avoid Tcl_obj re-creations + Guarded against potential Tcl_Obj leaks, esp. when using "NsfMethodNamePath", as indicated by valgrind. - + Silenced warnings emitted by GCC 8.1+ on strncat and strncpy. + + Silenced warnings emitted by GCC 8.1+ on strncat() and strncpy(). + Addressed 5 code-quality issues as indicated by Coverity Scan, incl. control-flow issues (risking NULL dereferencing) and buffer overflows in string operations. + Silence warnings under MSVC 1914 - * New configure option: "--enable-development=test" + * New configure option: "--enable-development=test" *** what does this do exactly??? **** * Extended regression test suite: The test suite contains (for Tcl 8.6.8) now xxxx tests. Index: generic/nsfInt.h =================================================================== diff -u -rb6f285f739dbbb1c0808759854e0dcfb020bbc2e -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- generic/nsfInt.h (.../nsfInt.h) (revision b6f285f739dbbb1c0808759854e0dcfb020bbc2e) +++ generic/nsfInt.h (.../nsfInt.h) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -1357,8 +1357,10 @@ #define vsnprintf _vsnprintf #endif -/* There are six whitespace characters in Tcl, which serve as element - separators in string representations of Tcl lists. See tclUtil.c */ +/* + * There are six whitespace characters in Tcl, which serve as element + * separators in string representations of Tcl lists. See tclUtil.c + */ #define NsfHasTclSpace(str) \ (strpbrk((str), " \t\n\r\v\f") != NULL) Index: library/mongodb/README.md =================================================================== diff -u -r18f9c9f5cd397b444840f347b5176026c7aadff2 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- library/mongodb/README.md (.../README.md) (revision 18f9c9f5cd397b444840f347b5176026c7aadff2) +++ library/mongodb/README.md (.../README.md) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -22,9 +22,9 @@ The current version of the NSF mongo binding is 2.2 and was tested with - Tcl 8.5, 8.6 and 8.7 -- MongoDB v3.6.5 (released May 29, 2018) -- mongodb-c-driver 1.11.0 (released June 23, 2018) -- libbson 1.11.0 (released June 23, 2018) +- MongoDB 3.6.6 (released July 10, 2018) +- mongodb-c-driver 1.12.0 (released July 18, 2018) +- libbson 1.12.0 (released July 18, 2018) Follow the following steps to get MongoDB up and running and to compile the MongoDB driver for NX. @@ -38,10 +38,10 @@ ```` cd /usr/local/src - wget https://github.com/mongodb/mongo-c-driver/releases/download/1.11.0/mongo-c-driver-1.11.0.tar.gz - tar zxvf mongo-c-driver-1.11.0.tar.gz + wget https://github.com/mongodb/mongo-c-driver/releases/download/1.12.0/mongo-c-driver-1.12.0.tar.gz + tar zxvf mongo-c-driver-1.12.0.tar.gz rm -rf mongo-c-driver - ln -sf mongo-c-driver-1.11.0 mongo-c-driver + ln -sf mongo-c-driver-1.12.0 mongo-c-driver cd mongo-c-driver cmake . make Index: library/serialize/COPYRIGHT =================================================================== diff -u -r3ccf7f8d21448b7baa3b348a2f8d99a25e20de21 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- library/serialize/COPYRIGHT (.../COPYRIGHT) (revision 3ccf7f8d21448b7baa3b348a2f8d99a25e20de21) +++ library/serialize/COPYRIGHT (.../COPYRIGHT) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -1,7 +1,7 @@ /* * Next Scripting Framework * - * Copyright (C) 1999-2014 Gustaf Neumann (a) (b) + * Copyright (C) 1999-2018 Gustaf Neumann (a) (b) * Copyright (C) 1999-2007 Uwe Zdun (a) (b) * Copyright (C) 2007-2008 Martin Matuska (b) * Copyright (C) 2010-2014 Stefan Sobernig (b) @@ -14,7 +14,7 @@ * * (b) Vienna University of Economics and Business * Institute of Information Systems and New Media - * A-1090, Augasse 2-6 + * A-1020, Welthandelsplatz 1 * Vienna, Austria * * This work is licensed under the MIT License Index: library/serialize/pkgIndex.tcl =================================================================== diff -u -rf31c1a01c6a389f693b8db0f2204cbb46180fef1 -rb9bcc40ab502329b1e7bc4ed6602adf7bd5e614d --- library/serialize/pkgIndex.tcl (.../pkgIndex.tcl) (revision f31c1a01c6a389f693b8db0f2204cbb46180fef1) +++ library/serialize/pkgIndex.tcl (.../pkgIndex.tcl) (revision b9bcc40ab502329b1e7bc4ed6602adf7bd5e614d) @@ -1 +1 @@ -package ifneeded nx::serializer 2.1 [list source [file join $dir serializer.tcl]] +package ifneeded nx::serializer 2.2 [list source [file join $dir serializer.tcl]]