2016-12-12 Stefan Sobernig * configure.ac, configure (AC_INIT): Rather add link to SF ticketing as PACKAGE_BUGREPORT define. [d5c3562] 2016-12-12 Gustaf Neumann * nsf.c, nsfAPI.decls (NsfConfigureCmd): Remove configure options "trace" and "profile". [4b20700] 2016-12-11 Stefan Sobernig * win/makefile.vc: Set title for summary.tcl. [88f1605] * interp.test: Import auto_path from parent interp so that "package req" works as expected. [3e47756] * nsfInt.h, nsfError.c (NsfDStringVPrintf): The logic assumes _vsnprintf being used under MSVC. However, under Tcl 8.5.*, the mapping is missing from tclInt.h. Fill this gap. [295ac11] 2016-12-11 Gustaf Neumann * nsf.c (TclDeletesObject): Fix bug that sneaked-in in last commit. [7f016c4] (Nsf_DeleteNamespace): Remove unneeded code in cases, when compiled with NDEBUG. [af86f66] * nsf.c: Prefer boolean expressions, reduce number of implicit signed/unsigned conversions. [7c9627d] * nsfStack.c (NsfShowStack): Remove always false statement used for controlling output of showstack. [b44aabd] * Makefile.in: Remove duplicated flag "TCL_NO_DEPRECATED" [cfa9e21], make cppcheckcmd configurable. [15b9823] 2016-12-10 Gustaf Neumann * nsf.c: Address cmdflags conversion, prefer unsigned int over unsigned long. [2d51c0b] 2016-12-09 Stefan Sobernig * nsf.c (ProcDispatchFinalize): Silence compiler warning on ckfree. [641e77f] 2016-12-09 Gustaf Neumann * nsf.c (InvokeShadowedProc): Fix debug output when compiled without --enable-profile. [b99c256] 2016-12-09 Stefan Sobernig * win/makefile.vc: Register missing test scripts. [5c55039] 2016-12-09 Gustaf Neumann * nsf.c (ProcDispatchFinalize): Fix debug output wen compiled without --enable-profile. [e2dfaca] 2016-12-09 Stefan Sobernig * win/rules.vc: Remove artifact from OPTDEFINES. [a7d6bf4] * win/rules.vc: Avoid type-cast warnings under 64bit MSVC (MSVC > 1300) toolchains due to compiler flags missing from Tcl headers and from rules' OPTDEFINES. Reported as http://core.tcl.tk/tclconfig/tktview?name=ab69a602bf. [ccc0e58] 2016-12-09 Gustaf Neumann * nsf.c (ProcDispatchFinalize): Move result reporting of nsf::procs into ProcDispatchFinalize(). This fixes the result value reporting and timings for nsf::procs. [1723e95] 2016-12-07 Gustaf Neumann * nsf.c (NsfProcStub): Make sure that stub proc is used when "-deprecated" is set. * nsf.tcl: Use "Debug" severity for -debug messages. [4befd49] 2016-12-02 Stefan Sobernig * nsf.c (GetObjectFromObj, TclDeletesObject): Remove two earlier fixes to deal with ::nsf::object::alloc failing under cmd deletion/recreation. The issue has been tackled more generally by a Tcl-side fix. Background: Since 2005 (commit fcb9ab1df3a9b2d1), in Tcl the cmdEpoch state in delete traces and delete callbacks has been compromised. Bumping the epoch of the cmd under deletion before executing the traces and callbacks had the potential of caching the cmd under in Tcl_Objs beyond its deletion (at least in our code path). In July 2017 for 8.7a (commit 54fac92610d3bdd9), this potential realised by removing a guard expression on CMD_IS_DELETED in the Tcl_Obj cache invalidation logic, which had protected from such invalid caches as a side effect. As of today (8.7a, commit 71fa1f9c91), the underlying timing problem of epoch bumping has been resolved. [f314d0a] reverts [bab0e88, 75a78fb, 646eda3] 2016-11-23 Stefan Sobernig * nsf.c (NsfMethodAliasCmd): Tcl 8.7 is more picky about typePtr and intrep being in line. We need to NULL the typePtr explicitly. TclFreeIntRep does so for us as good Tcl citizens, rather than setting bodyObj->typePtr == NULL directly. [438e614] 2016-11-11 Stefan Sobernig * nx.tcl (VariableSlot->setCheckInstVar): Use method parameter 'value' rather than object variable 'default'. [361fa32] * nx.tcl, parameters.test (Object->object variable): Support for substdefault has been entirely missing so far. Added basic tests. [7bcc1f1] 2016-11-03 Stefan Sobernig * interceptor-slot.test: Adding a first test case. [71f9dc8] 2016-11-03 Gustaf Neumann * nsf.c (ObjectDispatchFinalize): Address potential crash when a filter calls a filter which calls unknown. [641d41d] * nsfInt.h: Prefer lower case "U" suffix to improve readability. [4b4a734] 2016-11-02 Stefan Sobernig * xotcl2.tcl (Class->unknown): Use ::nsf::current explicitly to avoid NX/XOTcl2 self hickups. [a147560] 2016-10-28 Gustaf Neumann * Documentation (tk-ludo.tcl): Regenerated documentation. [c8cc440] * tk-ludo.tcl, nx-shell.tcl: Remove useless expr statements. [f691059] 2016-10-27 Stefan Sobernig * xotcl2.tcl (Class->unknown): Fix regressions due to uplevel mambo-jumbo. [020d3d6] (Class->unknown): Make sure that Class->unknown bypasses filter and mixin frames. [9dcea26] 2016-10-26 Stefan Sobernig * nsf.c (ExitHandler): Re-locate clearing history from finalize to ExitHandler. [59b4e8c] 2016-10-22 Stefan Sobernig * nsf.c (NsfFinalizeCmd): Clear Tcl's history list explicitly before finalizing NSF. See also Tcl ticket 1ae12987cb. [6be629e] 2016-10-16 Stefan Sobernig * nx.tcl (nx::Class->unknown): Rewrite unknown message to include '?...?'. [371cc41] * nsfStack.c: Unify writing style. [114df8b] * nsfProfile.c: Fix typos in code comments. [5447fe0] * nsfFunPtrHashTable.c: Fix typos in code comments. [6e37cdb] 2016-10-15 Gustaf Neumann * nsfError.c: Cleanup: remove spurious blank in error message, fix typo in print string. [e0da9e0] 2016-10-15 Stefan Sobernig * nx.tcl: Commit missing unknown message change. [dafe310] 2016-10-15 Gustaf Neumann * nsf.h, nsfError.c: (NsfNoCurrentObjectError): Improve comment and signature. [5abaa15] Improve wording of other comments, keep comments within the limits of the header/trailer line. [5abaa15] 2016-10-14 Stefan Sobernig * Testsuite: Adjust the test suite for the latest rewording of the nx::Class unknown message. [2717622] * nsfError.c: Fixed typos and unified writing style in code comments. [f139db6] * nsfObj.c: Fix some typos and align writing style. [1ce1f6a] 2016-10-14 Gustaf Neumann * nsf.c: Fix typos in comments, align commenting style. [5ba5873] * nx.tcl: Make xotcl::Class->unknown hint more explicit and verbose. [4dda010] 2016-10-13 Stefan Sobernig * nsf.c: (ObjectSystemsCleanup): Remove interp resolvers explicitly before the physical cleanup round. [371e0e3] (DeleteProcsAndVars): Silence compiler warning and reduce variable scope (spotted with memtracking on). [7992ec4] 2016-10-12 Stefan Sobernig * shells.test: Add two tests on try/finally. [ce511c8] * nx-shell.tcl: Extend the exit wrapper to include Tcl 8.6 try [8f55f92] Make sure that the proper exit code is provided when leaving the -c stdin mode. [f83d0a1] 2016-10-12 Gustaf Neumann * shells.test: Add two more tests of plain tclsh. [0c79f62] Remove superfluous (and incorrect) tests. [3f7e49e] reverting [152c1d3] Extend regression test for shell with tests in [info nameofexecutable] rather than in nxsh [152c1d3] * nsf.c (NsfLog): Don't call Tcl eval operations from NsfLog() in phyical destroy round. 2016-10-12 Stefan Sobernig * shells.test: Add some more tests. [31727ed] * nx-shell.tcl (nx::shell2): Rewrote in-shell exit support to avoid Tcl's native exit and to unwind gracefully to avoid NSF refcount leaks on exit; bumped package number. [0956bd0] 2016-10-10 Gustaf Neumann * nsf.c, nsfInt.h: Improve sanity test in ISOBJ(): obj->bytes might only be NULL when type is given. [472a3c5] 2016-10-09 Stefan Sobernig * TEA (tcl.m4): Updated m4/tcl.m4 to most recent TEA version: 3.10, regenerated autotools artifacts. [4a30a3a] 2016-10-08 Gustaf Neumann * nsfUtil.c: Cleanup of strnstr() (when the clib function is not available). [a8b3805] * generic/*: Cleaning up white spaces (mostly strip trailing spaces, remove a few tabs). [77ba24e] Cleanup of type conversions. [1d1ca56] Reduce variable scopes. [fbd52e6] 2016-10-07 Gustaf Neumann * nsf.c: Cleanup of type conversions in first ~18000 lines. [4e70d6d] 2016-10-07 Stefan Sobernig * current.man (current.man): Extend doc on nx::current to include nx::current level [d49b5f9] 2016-10-07 Gustaf Neumann * nsf.c: Cleanup of type conversions in first ~6000 lines. [099e1ee] * nsf.c, nsfAPI.* (NsfCurrentCmd): New subcommand "nsf::current level", which returns an empty string when outside an NSF frame/level. [8465a13] (NsfCurrentCmd): Keep compatibility with traditional "nsf::current activelevel" by returning 1, if we are not on an NSF frame. [8465a13] reverting [dbd850e]. 2016-10-06 Gustaf Neumann * nsf.c (NsfCurrentCmd): Return from "nsf::current callinglevel" the value 0 (instead of 1), when it is called outside of an NSF frame, which has an NSF object associated. [dbd850e] 2016-10-05 Stefan Sobernig * nsf.c (UnsetTracedVars): Silence compiler warning under 8.5 by providing an explicit cast. [abfaf40] * Documentation (rosetta-single-inheritance.tcl):Add another Rosetta example: Inheritance/Single [c7738a3] (rosetta-multiple-inheritance.tcl): Fix typo L3 -> C3 [3617b69] (Object.man): Include missing doc in 'info lookup parameters' and 'info lookup syntax' [4bfe0ad] 2016-10-04 Stefan Sobernig * nsf.c: (ParamOptionParse): 'virtualobjectargs' and 'virtualclassargs' defaulted to ConvertViaCmd when parsed from Tcl spec; explicitly set ConvertToNothing to match the intended semantics and to avoid false warnings (e.g., missing type=virtualobjectargs type checker). [03b838a] (NsfParameterInfoCmd): Correct two typos in in-code comment. [6d563e2] 2016-10-02 Stefan Sobernig * Makefile.in: Register Rosetta examples. [ec6103a] 2016-10-02 Gustaf Neumann * nsf.c, nsf.h: Make NSF compilable with "-DTCL_NO_DEPRECATED". [9cce0c1] 2016-10-01 Stefan Sobernig * Documentation: Remove redundant Rosetta example implementations. [14d4d3a] (rosetta-multiple-inheritance.tcl): Added another Rosetta example: multiple inheritance. [92c1ac3] 2016-09-30 Stefan Sobernig * nsf.c (RemoveInstance): Fix typo and improve wording of nsf::log warning slightly. [8a106d9] * Documentation (Object.man): Correct the documentation bit on Object->copy. [4b2d241] (rosetta-clone.tcl): Added another Rosetta example: Polymorphic copy [922c0ab] 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] * 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] 2016-09-28 Stefan Sobernig * 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] 2016-09-21 Stefan Sobernig * 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] 2016-09-19 Stefan Sobernig * nsfCmdDefinitions.c (Nsf_CmdDefinitionRelease): Fix documentation [23581e9] * nx-shell.tcl (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] * nsfObj.c (NsfMixinregGet): Fix typo in comment. [73a82fc] 2016-09-15 Gustaf Neumann * nsf.c (NsfFinalizeCmd): 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] 2016-09-09 Stefan Sobernig * nx.tcl (VariableSlot->value=get): Substitute set for get, which is a tick faster. [bb688b8] * Documentation (rosetta-tree.tcl): Rosetta example: Tree traversal. [f769aa3] 2016-09-06 Stefan Sobernig * nx-shell.tcl (::nx::shell2): Harden nx::shell against inlined return statements. [da0791d] * Documentation (rosetta-tokenizer.tcl): Added first additional Rosetta example. [b689afd] * source-highlight-with-pp: Make src highlighter independent from Tcl version. [8e929f8] 2016-09-01 Stefan Sobernig * Makefile.in: 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] 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] 2016-08-22 Gustaf Neumann * nsf.c (AssertionAddProc): 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] 2016-08-13 Stefan Sobernig * nsf.c (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] 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] * 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. 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] 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] 2016-08-04 Stefan Sobernig * nsf.c, nsfCmdDefinitions.c, nsfEnumerationType.c (ExitHandler, Nsf_CmdDefinitionRelease): Provide for releasing/deleting the hash table for cmd definitions. [843e576] (ExitHandler, Nsf_EnumerationTypeRelease): Provide for releasing/deleting the hash table for enumeration-type converters in ExitHandler. [843e576] * nsfFunPtrHashTable.c (FreeFunPtrEntry): Remove deletion handler for cmddef and enumeration-type hash entries, not needed currently. 2016-08-02 Gustaf Neumann * generic/**.c: Code cleanup (remove various code smells by adding const declarations, preferring boolean tests, avoid "for" loops without a block, don't pass non-initialized value in an array on index [0], reducing variable scope, preferring single returns statements in functions, dont't use CONST unless defined by Tcl API. [8eecbe5] * nsf.c: Limit effects of namespace-imported classes. [3b5f62d] 2016-08-01 Stefan Sobernig * nsf.c (FilterSearchAgain): Avoid running into an invalid pointer access, when the physical deletion of "del" conflicts with following the next link in the cmdList in the loop's increment statement (only iff del == cmdList). Re-organized for into a while loop, to avoid otherwise redundant code. [0311e86] 2016-07-28 Stefan Sobernig * nsf.c (GetClassFromObj): Fix invalid memory access as indicated by valgrind. [a9448f8] 2016-07-27 Gustaf Neumann * nsf.c (InterpColonCmdResolver): Make intentions about clientData clear to static checker. [1663346] (NsfProcStubDeleteProc, NsfProcAdd): Use consistent comment styles. [e13bc9e] (NsfProcAdd, ListMethod, NsfParseArgsCmd): Move declarations to the begin of a code block, remove debug code. [abc4952] * nsfCmdDefinitions.c, nsfEnumerationType.c, nsfFunPtrHashTable.c: Remove commented code from the previous implementation. [7243f88] * Makefile.in: Add pre-8.7 Makefile.in (missed in last commit). [ae36129] 2016-07-26 Stefan Sobernig * nsf.c, nsfInt.h (NsfProcStubDeleteProc): Protect against potentially dangling namespace references from within ::nsf::procs::*. The wrapper cmd's namespace of an nsf::proc might already have been deleted when ::nsf::procs::* shuts down finally. This showed up during a Tcl_Exit (NSF's ExitHandler) as an invalid memory access via (dangling) namespace pointers as indicated by valgrind. [c39e939] 2016-07-26 Gustaf Neumann * generic/stubs8.7/: Let NSF compile against Tcl 8.7 (current trunk version of Tcl). [56d1814] 2016-07-25 Gustaf Neumann * nsf.c, tcl86.test: Continued work on cmd resolvers: Fix test, when OS specific cmd resolver is used from a NSF_CSC_CALL_IS_COMPILE frame; improved output from __db_show_obj: put results into one line instead of multiple lines; new debug function __db_get_obj: return into about a tcl_obj in form of a dict (in general, one should not rely on Tcl_Obj internals, especially when upgrading over major Tcl versions, but for testing/understanding behavior etc., such a command is helpful; extended regression test. [21686b8] 2016-07-21 Stefan Sobernig * tcl86.test: Revive and include test case on Bug 3418547. [f5b034e] 2016-07-21 Gustaf Neumann * tcl86.test: Add test for the global cmd literal sharing. [3dbd5a1] * nx.tcl: Adding "/obj/ info method disassemble" for disassembling methods. [ 3dbd5a1] 2016-07-17 Stefan Sobernig * nsf.c (NsfParseArgsCmd): Fix memory leak. [ae50486] 2016-07-16 Stefan Sobernig * nsf.c (SetInstVar): Correct book-keeping for NSF's memcount feature. [6a3890e] 2016-07-15 Stefan Sobernig * nsfCmdDefinitions.c (Register): Avoid inline comment style. [34c49c5] * nsf.c (NsfFinalizeCmd): Suppress cppcheck warning: adding explicit int cast. [9fc2766] * nsfError.c (NsfDStringVPrintf): Promote log statement to Tcl panic. [c7b7511] (NsfDStringVPrintf): Make log statement conditional on NDEBUG. [2a16d79] 2016-07-15 Gustaf Neumann * nsf.c (DispatchDestroyMethod): Handle cases of objects becoming deleted after the interp (which should not happen) more gracefully. [800c3a0] 2016-07-15 Stefan Sobernig * nsfError.c (NsfDStringVPrintf): Rephrase err message. [8d2096e] 2016-07-14 Stefan Sobernig * nsfError.c (NsfDStringVPrintf): Suppress cppcheck warning: unused variable assignment. [34e5bc1] * nsf.c (NsfParseArgsCmd): Suppress cppcheck warning: reduce variable scope. [8fd1f04] 2016-05-21 Gustaf Neumann * nsfmongo.c (NsfMongoRunCmd): return the result of ::mongo::run. [4dccd3f] 2016-05-04 Stefan Sobernig * Documentation: Link version numbering in man pages to autoconf tooling, similar to the NaviServer setup, update copyright dates in man pages where needed. [0228cdf] 2016-04-30 Stefan Sobernig * Documentation (nxsh.man): Update man page for nxsh, adding description of -c option. [30cf844] 2016-04-29 Stefan Sobernig * Testsuite (Makefile.in): Register shells.test. [be3c675] (shells.test): Some cleanup and adding basic test cases. [3ee0ac9] 2016-04-21 Stefan Sobernig * Shells (nxsh, xotclsh): Scripted shell reform which provides an alternative nx::shell impl (nx::shell2), 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). [2a5945f] 2016-04-19 Gustaf Neumann * nsfmongo.c, mongoAPI.*: Improved mongodb interface for json/bson parsing; rename function mongo::json to mongo::json::generate; introduce mongo::json::parse. [e3e8f37] 2016-04-08 Stefan Sobernig * Object.man: Fix doc on introspection for configure options. [4276fbd] 2016-04-04 Gustaf Neumann * nsf.c (ComputeParameterDefinition, ProcessMethodArguments): Cleanup up and improve debug statements. [96f4410] * nsfAPI.decls (__profile_get): Remove redundant spec line. [e365540] * nsf.tcl (volatile): Improve indentation. [a41b0fa] 2016-03-30 Gustaf Neumann * xotcl2.tcl: Added "-returns" flag to XOTcl's instprocs/procs, very similar to "-returns" in NX. Extended serializer to handle "-returns" flag and extended regression test, accordingly. [353fdf4] 2016-03-26 Gustaf Neumann * nx.tcl (setCheckedInstVar): Fix one case in interaction between get-trace and default value. [f6ddb05] 2016-03-25 Stefan Sobernig * Testsuite (library/pkgIndex.tcl): Make XOTcl tests runnable again from plain tarball/git checkout. [20e59a8] 2016-03-25 Gustaf Neumann * nx.tcl (setCheckedInstVar): Allow combination of "-trace get" with default value (was previously disallowed); extended regression tests. [7e20ec3] * nsfError.c (NsfDStringVPrintf): Minor cleanup. [4f44840] 2016-03-23 Stefan Sobernig * TEA (makefile.vc): Custom shell target. [842266c, da35de9] (makefile.vc): Add base-address support; see http://core.tcl.tk/tcl/tktview?name=0ef5e653. [3a06b2c] * nsfError.c (NsfDStringVPrintf): Improve documentation. [b75b19b] (NsfDStringVPrintf): Another attempt to sort out the vs*printf() mess between runtimes. [626a121] 2016-03-18 Stefan Sobernig * TEA: (makefile.vc): Update win compilation units. [a8c598f] * nsf.c (Nsf_ConvertToBoolean, NsfConfigureCmd, ArgumentDefaults) (NsfObjectSystemCreateCmd): Rename one more 'bool' identifier. In MSVC 14 (Visual Studio 2015) and newer, 'bool' is a proper type, not a typedef anymore. 'bool' cannot be used as identifier anymore; see C2632. [90b08e1,40e347d] 2016-03-18 Gustaf Neumann * nsfAPI.*, nsf.c (NsfParseArgsCmd): Add new command "nsf::parseargs" to parse an argument vector against a parameter definition and to set the resulting variables in the current scope; extended regression test. [546f8dd] * nsf.c, nsfStack.c, nsfProfile.c: Substitute Tcl_Time for "struct timeval" as well as Tcl_GetTime for gettimeofday in profiling code to improve portability; esp. Windows. [dc4e227] 2016-03-16 Gustaf Neumann * nsfInt.h: Newer versions of GCC 6 handle now as well nonnull asserts gracefully, so we can turn off its deactivation for GCC 6. [433266d] 2016-03-07 Gustaf Neumann * serializer.tcl: Fix serializing of info internals for XOTcl2. [f9f501f] 2016-03-05 Gustaf Neumann * nsfmongo.c: Reduce verbosity and apply white-space changes. [4ca97ca ] 2016-02-19 Stefan Sobernig * nsf.c (NSGetFreshNamespace, NsfDebugShowObj): Address two more GCC 6 pedantic warnings. [ab19daf] * nsfFunPtrHashTable.c, nsfCmdDefinitions.c, nsfEnumerationType.c: Re-factored new hashtable infrastructure (based on function-pointer keys) to support method-definitions (and future uses as well). [c01b411] 2016-02-15 Gustaf Neumann * nsfCmdDefinitions.c: Added Tcl_HashKeyType cmdPtrHashKeyType for command pointers. [760d5e6] 2016-02-12 Gustaf Neumann * nsf.c, nsfDebug.c: Move initializations after nonnull asserts. [67efaa6, acee8b7] 2016-02-11 Gustaf Neumann * nsf.c (NsfParamDefsVirtualFormat): Ease life of static checkers. [f382a52] 2016-02-10 Gustaf Neumann * nsf.c (GetAllInstances): Removed one more possible NULL comparison with a non-null value. [8e97011] 2016-02-03 Stefan Sobernig * Documentation (alias.man.inc, forward.man.inc, method.man.inc): Updating doc fragments on debug/deprecated methods. [f56a194] * methods.test, object-system.test: Adding some missing test on recently added introspection methods. [3c1482d] 2016-02-03 Gustaf Neumann * nsfProfile.c: (NsfProfileDeprecatedCall): Fix comment. [6d1f42a] 2016-02-03 Stefan Sobernig * Object.man, forward.man.inc, alias.man.inc, method.forward.inc, info.man.inc: Adding doc fragments for new info submethods, as well as deprecated and debug flags. [74410fa] 2016-02-01 Gustaf Neumann * serializer.tcl: Improve robustness of serializer, otherwise "::nx::Object::slot::__info" triggers an exception. [494410d] 2016-01-27 Gustaf Neumann * nsf.c (GetClassFromObj): Provide for refcounting before and after the call tp NsfCallObjectUnknownHandler. [e05bd93 ] 2016-01-26 Gustaf Neumann * nsf.c (Nsf_ConvertToClass, NsfRuntimeState): Let NSF create classes with ::nsf::object::unknown handler on the fly, when C functions are called with objects of type class. This is necessary for triggering creation attempts in trace via ::nsf::object::alloc /cls/ /obj/. [6c041dc] 2016-01-25 Gustaf Neumann * xotcl2.tcl, pkgIndex.tcl, serializer.tcl: Bump version number of XOTcl to 2.1. [52a6105] 2016-01-22 Gustaf Neumann * generic/*.c: Updated copyright notices, version number. [4fa580a] * accessor.tcl: Add editor hint. [5fe3bf0] * nsfUtil.c: Move assignment aster nonnull assertions. [a3fe572] * nsf.c (MixinInvalidateObjOrders, MixinSearchMethodByName): Turned all for-loops controlled over a nonnull value into while loops. [e5a42b6] * README: Update version numbers in README. [4468c69] * README.release: Fix description. [1a70aea] 2016-01-19 Gustaf Neumann * nsf.c, nsfAPI.*, nsfCmdPtr.c, nx.tcl, slottest.xotcl, accessor.test, cget.test, parameters.test: Slot trace reform incl. a redesign of slot interface of traces. Variables contain cmds and variable references to slot-specific methods with the same interface as slot-setters. When new flag -trace is set, a trace will be registered calling either: value=get /obj/ /variableName/; or value=set /obj/ /variableName/ /value/; or value=default /obj/ /variable/; on the slot. Updated regression test accordingly. [dadf28e] 2016-01-12 Stefan Sobernig * xotclsh.in, xowish.in: Make sure minor versions >2.1 are accepted. [286f946] * xotclsh.in, xowish.in: Use nx::shell. [4b92980] * nxsh.in, nxwish.in: Use nx::shell. [4bf0e8a] * nx-shell.tcl: (nx::shell): Started refactoring scripted shell environment into a single, package location (nx::shell) to ease sharing between nxsh & friends, as well as to facilitate implementingNX/XOTcl shells in wrapped applications (tclkits). [6c6f313] (nx::shell): Avoid poluting global namespace. [f1bfcbc] 2016-01-11 Gustaf Neumann * README.release: Update release hints. [2c69f59] 2016-01-08 Gustaf Neumann * nsf.c (NsfDStringEval): Make sure to reset prevPreventRecursionFlags to value before the call. [7ca41c6] (NsfDStringEval): Changed interface of to control behavior via bitflags (this is after all more readable than a argument list of "0" and "1"s); added optional recursion prevention for functions called via NsfDStringEval (handling NSF_EVAL_DEBUG, NSF_EVAL_LOG, NSF_EVAL_DEPRECATED); added regression tests for potential recursive calls. [e367957] * xotcl2.tcl: Added flags "-debug" and "-deprecated" to XOTcl 2 "instproc", "proc", "instforward" and "forward" methods. [ccca1a5] 2016-01-07 Gustaf Neumann * nsf-cmd.test: Add absolute path in returned proc defintion to regression test. [a775d31] * nsf.tcl: Add result in debug exit calls. [2771c4c] 2016-01-05 Gustaf Neumann * nsf.c (ListMethod): Return fully qualified name for "::nsf::cmd::info definition" when called on plain procs. [fd0f246] 2015-12-30 Gustaf Neumann * nx.tcl, serializer.tcl: Generalize method serialization of forwarders. [8cbd921] 2015-12-29 Gustaf Neumann * nsf.h: Fix compilation when DTRACE but no PROFILE is activated. [74b39c5] * nsf.c, nsfProfile.c: Prefer boolean expressions in assert() statements. Make sure, we do not pass null values to nonnull arguments. [a529b8f, 22f4e55] * Makefile.in: Add etags target. [bce3456] 2015-12-25 Gustaf Neumann * nsf.c, nsfInt.h, nsfProfile.c, configure.ac: Substitue all remaning ObjectName and ClassName for variant with trailing "_", where appropriate; allow nsf::procs with zero arguments or plain arguments (when "-debug" is used); extended regression test; bump version number to 2.1. [a0faba2] * serializer.tcl: Provide for backward compatibility in method serializer. [c04d6db] 2015-12-22 Gustaf Neumann * nsfError.c (NsfDStringVPrintf): Fix potential memory corruption bug in NsfDStringVPrintf. [cf9bbe0] 2015-12-19 Gustaf Neumann * serializer.tcl: Added handling of "-debug" and "-deprecated" in serializer; allow export of nsfprocs via "exportMethods declaration" in order to keep otherwise excluded cmds in the result. Hardened serializer (use e.g. "::namespace" instead of "namespace" when there is a potential conflict with a method named "namespace", prefer nsf::directdispatch, etc.); extended regression test. [6a55e4e] * nx.tcl: Added flags "-debug" and "-deprecated" to further NX method-defining methods. [183cd0a] 2015-12-18 Gustaf Neumann * nx.tcl (nx::Class, nx::Object): Added flags "-debug" and "-deprecated" to "?object? method"; extended regression test. [2d609d0] (nx::Class, nx::Object): Added new introspection options; extended regression test: /cls/ info method debug /cls/ info method deprecated /obj/ info object method debug /obj/ info object method deprecated [53113de] * nsf.c, serializer.tcl, nsf-cmd.test: Handling "deprecated" and "debug" properties for nsf::proc (in "nsf::cmd::info definition /proc/" and serializer). [63fb7c1] 2015-12-17 Gustaf Neumann * nsf.c, nsf.tcl, nsfAPI.*, nsfProfile.c, nsfStack.c: New method properties nsf::method::property /obj/ /method/ debug ?0|1? nsf::method::property /obj/ /method/ deprecated ?0|1? [8854eef] 2015-12-13 Gustaf Neumann * nsf.c, nsfAPI.*, nx.tcl (nx::Object): New introspection method "/obj/ info baseclass"; extended regression test. [5a162b0] (nx::Object, nx::Class): new introspection methods "/obj/ info object method callprotection /m/" and "/cls/ info method callprotection /m/"; extended regression test. [07b40a4] 2015-12-12 Gustaf Neumann * serializer.tcl: Fix ::Serializer->methodSerialize when called for per-object methods. [2f76d3a] * next-migration.txt: Fix editing bug in documentation. [c105770] 2015-11-30 Gustaf Neumann * generic/*, gentclAPI.tcl: New macros NSF_nonnull_assert() and nonnull_assert(). Background: The unreleased gcc6 with "-pedantic" complaints since recently about asserts, in which nonnull conditions implied by nonnull declarations are explicitly tested, and spits out warnings like "warning: nonnull argument [...] compared to NULL". The new macros turns off asserts, when gcc6 is used. [16a0288] * nsf.c, nsfAPI.*, nsfInt.h, nsfProfile.c, nsfShadow.c: Profile trace enhancements, add optional argument "-builtins" to "nsf::__profile_trace" to trace a selected list of built-ins. Every element of the list passed to "-builtins" might contain a cmd name and optionally a maximum number of arguments to be shown ,typically 0 or 1. Generalized NsfReplaceCommand* logic to become more general usable (e.g. for the builtins mechanism of nsf::__profile_trace). [19c8474] 2015-11-27 Gustaf Neumann * nsfProfile.c: Remove redundant prototype. [f1ac62f] * nsf.c, nsfInt.h, nsfProfile.c, nsfAPI.*: Use standard logging for "nsf::__profile_trace -verbose true" by using the standard logging mechanism, we can redefining "::nsf::log" to output e.g. trace in a GUI. Add argument "-dontsave" to nsf::__profile_trace to avoid saving trace in memory. Refactor trace and debug output to deliver lists. This makes it easier to postprocess the results from Tcl. [55c89d7] * nsf.h: Place arguments of preprocessor macros into parentheses. [6953255] 2015-11-23 Gustaf Neumann * nsfInt.h (NsfObjectSystem): Silence cppcheck 1.71. [a792884] 2015-11-08 Gustaf Neumann * nsf.c (ParameterMethodDispatch, NsfNSCopyVarsCmd, NsfOConfigureMethod): Keep Tcl error messages, when Tcl_ObjSetVar2 fails. [74d126b] (AutonameIncr, NsfOConfigureMethod, ParameterMethodDispatch): Handle result of Tcl_ObjSetVar2() in all cases. [2d42793] (NsfOConfigureMethod, NsfOCgetMethod): Don't swallow errors triggered from variable write traces in configure. [a709e3e] 2015-11-06 Gustaf Neumann * nx.tcl, xotcl2.tcl: Fixed a bug that disallowed the combination of valuecmd and valuechangedcmd for a single property (many thanks to Zoran for pointing this out). [3946480] * nsf.c (Nsf_ThreadExitProc, ArgumentDefaults): White-space changes. [dbe0bb3] 2015-11-05 Gustaf Neumann * parameters.test: Whitespace change. [aca62da] 2015-10-16 Stefan Sobernig * mkIndex.tcl: In certain build situations, we might still run under Tcl 8.4 because it comes as a legacy OS battery. Tcl modules are >= 8.5 only. [b137911] 2015-10-01 Gustaf Neumann * nsf.c, nsfAPI.*, nx.tcl, serializer.tcl: New command "nsf::method::forward::property" in analogy to "nsf::method::property" for reading+writing introspection of forwarders (important for serializer, when different target objects are specified, to map the per-object forwarder); extended regression test; bumped version number of serializer to 2.1. [f31c1a0] 2015-09-27 Gustaf Neumann * nsf.c, nsfInt.h: Reduce implicit conversions, write body of if-statements as blocks, whitespace changes, prefer boolean expressions, add likely/unlikely hints. [afbb465] 2015-09-26 Gustaf Neumann * generic/*.c: Prefer boolean expressions, reduce implicit conversions, write body of if-statements as blocks, whitespace changes, update licenses. [2e1a88e] 2015-09-21 Gustaf Neumann * Makefile.in, autogen.sh, configure.ac: Support building NSF from some other directory than the root directory; raise no error, when NSF is built with mongo + profile enabled. [1c9684a] 2015-08-11 Gustaf Neumann * nsf.c (NSDeleteChild, DispatchDestroyMethod): Improve robustness of destroy: in case an error happened in a destroy method in implicit delete operations, a crash was possible, since the state of the object to be delete was somewhat unclear: it might or might not have been deleted. Now, the object is explicitly kept longer around to allow proper handling. [19058de] * nx.tcl: Don't raise an error, but add warning in cases, slot data is inconsistent. [71a3245] 2015-07-29 Gustaf Neumann * nsf.c (ObjectSystemsCheckSystemMethod): Don't define variables inside a block. [9e1cdbe] (NextGetArguments): Address coverty CID 102646, second attempt. [f3ca6a1] (ObjectDispatch): Address covertiy CID 88773. [f90a7fa] * gentclAPI.tcl, nsfAPI.h: Revert overeager part of the change. Remove logically dead code as flagged by Coverity. Move assignments after assertions in generated code. [cad3e31,ec070e9,0e247f6] 2015-07-29 Stefan Sobernig * README.release: Adding details how to upload Coverity builds. [6d4bc2b] 2015-07-29 Gustaf Neumann * nsf.c (FilterInvalidateObjOrders): Remove expressions which were always true. [bd4d7d0] (FilterInvalidateObjOrders): Turn for() loop into a repeat-until loop, since in first iteration, the loop controlling expression was always true. [33aa1b2] (CleanupDestroyClass): Address coverty CID 88774. [6adb5d9] (NsfOResidualargsMethod): Address CID 88776. [1a7f8ba] 2015-07-28 Stefan Sobernig * README.release: Adding Coverity instructions. [b43b9e2] 2015-07-28 Gustaf Neumann * nsf.c: Move dereferencing of members after assertions. [00186f9] * nsf.c (NsfRelationClassMixinsSet): Move assertion after assignment. [9f90d6b] (NSDeleteChild): Fix potential bug on Tcl-triggered cmd-delete operations, where destroy returns non-TCL_OK and name of the object could not be retrieved anymore in error message. [92d76b8] (ParameterMethodDispatch): Attempt to make Coverty happy (CID 88769). [a4eaf4e] (FreeAllNsfObjectsAndClasses): Remove test, since it is covered already by assertions. [accdf4b] * nsf.c, nsfInt.h (NsfParamDefs): Removed NsfParamDefs.slotObj and single occurance for memory-management since it is not used for the time being [08dedac] (NsfProcClientData, MethodDispatch, ObjectDispatch): Write body-blocks of if on separate lines; change variable name "validCscPtr" to "isValidCsc", since it is a boolean and not a ptr Tcl coding guidelines; prefer explicit comparisons. [6c7bb9b] 2015-07-28 Stefan Sobernig * nsf.c (MethodDispatch): Fix compiler warning on typecast mismatch. [4e2b21c] * nsfObj.c (MixinregSetFromAny): Re-arrange control flow as to match other uses in the code base (CID 88777). [1527180] 2015-07-27 Stefan Sobernig * nsf.c (ResolveMethodName): Guard against potential null pointer dereference (CID 88771). [ca7f760] (FreeAllNsfObjectsAndClasses): Remove unneeded NULL check as dereferencing already occurred before; check for NULL earlier (CID 88780). [2638eb9] 2015-07-23 Stefan Sobernig * nsfObj.c (MixinregSetFromAny): Fix crash through explicit null dereferencing when an invalid list string-rep is provided as mixinreg (CID 88777); added tests [207a8f5] * nsf.c (MakeProc): Silence false-positive warning, due to missing returns_nonnull annotation (CID 88770). [a757c1a] 2015-07-17 Stefan Sobernig * nsf.c: (ConvertViaCmd, ConvertToObjpattern, GetSlotObject): Check return values of GetObjectFromObj explicitly (CID 88763, 88764, 88765). [8357e61] (ObjectSystemsCheckSystemMethod): Mark TCL_ERROR path as unlikely. [c0e1053] (ObjectSystemsCheckSystemMethod): Re-order control flow to remove otherwise dead IF-branch (CID 88768). [1eaf0a3] (NsfMethodPropertyCmd): Dropped option 'slotobj' as it is obsolete. Also fixes CID 88767. [6c9eb2e] (ListMethod): Make sure that 'info method exists' returns 0 for (plain) NX objects; added some tests. [0b1ac7f] (ListCmdParams): Removed logically dead code (CID 88779). [c2e5725] * Documentation (info.man.inc): Make empty-string ambiguity explicit for 'info method *'. [497451f] 2015-07-16 Stefan Sobernig * nsfStack.c (NsfShowStack): Removed logically dead code. CID 88766. [caee18f] 2015-04-07 Gustaf Neumann * nsfInt.h: Fix compilation when compiled without --enable-profile. [6c58e11] 2015-04-06 Gustaf Neumann * gentclAPI.tcl, nsf.c, nsfProfile.c: Improve profiling support and added profile support for undispatched methods (i.e. implemented via CallDirectly). New function for controlling profile trace "nsf:__profile_trace -enable /bool/ ?-verbose /bool/?". [c5f2227] 2015-04-03 Stefan Sobernig * nsfDebug.c, nsfInt.h, nsf-cmd.test: Silence varargs warning -Wgnu-zero-variadic-macro-arguments under clang --std=c99 -pedantic, tested under gcc, clang 3.6, and MSVC; added tests. [714726d] 2015-04-01 Gustaf Neumann * nsf.c, nsfError.c, nsfProfile.c: Changed trace facility to append to a variable to minimize interactions for results and return codes, which happen via nsf::log; added more convenient function for adding to DStrings: Nsf_DStringPrintf; renamed NsfDStringPrintf to NsfDStringVPrintf; replaced complex macros for tracing by functions. [453ad27] 2015-03-31 Gustaf Neumann * nsf.c, nsfAPI.*, nsfInt.h, nsfProfile.c: Added experimental "nsf::configure trace" feature, which can be enabled when compiled with profile support. trace turns on automatically profile. [e1c25b4] 2015-01-22 Gustaf Neumann * nsf.c, nsfDebug.c, nsfStack.c: Improve cleanness of compilation when "-pedantic" is used. [bf951b5] 2015-01-05 Gustaf Neumann * nsf.c, nsfDebug.c, nsfObj.c: Assignments after assertions. [658c5ca] * Makefile.in: Add -DNDEBUG=1 to flags passed to cppcheck, since cppcheck reports checked cases as warnings. [efb84f6] 2015-01-02 Gustaf Neumann * generic/*.c: Prefer const over CONST unless Tcl API. [dbd95b0] 2015-01-01 Gustaf Neumann * Documentation: Strip old content from announce file. [5bdfdb7] 2014-12-13 Gustaf Neumann * gentclAPI.tcl, nsfAPI.h, mongoAPI.h: Use same definition for ObjCmds as in Tcl; prefer "const" over "CONST" unless in Tcl interface. [62beaf1] * Documentation (doc/example-scripts/*): Regenerate doc pages with asciidoc 8.6.9, fix paths. [24cb8f4] * nsf.c, nsf.h (NsfLog): Align log levels with NaviServer/AOLserver. [6b00c4e] 2014-12-11 Gustaf Neumann * nsf.c, nsfmongo.c: Fix all complaints from clang static analyzer 3.6. [919f731] 2014-12-06 Gustaf Neumann * Documentation (next-migration.txt, next-tutorial.txt): Update date in documentation. [d725e5e] * Makefile.in: Make sure to rm .o files in stub directory. [4f7f7c1] * mktar.sh: Make sure to omit Mac OS X hidden file from tarballs. [9fe4a51] 2014-12-04 Gustaf Neumann * generic/*.c: Prefer boolean expression in tests over expressions of other types. [24571ae] 2014-12-01 Gustaf Neumann * aolstub.c, nsf.c, nsfEnumerationType.c, nsfInt.h: Add const declarations, improve compilation with --std=c99 -pedantic. [9e00fd1] * nsfInt.h, nsfUtil.c, nsfmongo.c: Make compilation clean with clang 3.6. [81a1f96] * nsf.c, nsfStack.c: Make compilation clean under clang 3.6. [1173a57] 2014-11-25 Gustaf Neumann * nsf.decls: Add NsfArgumentError() to stub interface, since this might be used by C packages using the interface generator. [9e8610b] * nsfmongo.c: Add mong::json to the interface, bump version number for mongo interface to 0.4. [9e8610b] 2014-10-29 Stefan Sobernig * Documentation (doc/*.man, man-princexml.css): Fix PDF rendering and man markup. [83b89fe]