2026-09-15 Stefan Sobernig * nsf.h: Fix name of function-like macro that, otherwise reported undefined in non-CLANG environments [548bba10] 2026-09-15 Gustaf Neumann * Announce2.5.0: Refresh 2.5.0 announcement highlights and compatibility notes [19156f3c, 5624b78e] - Clarify release scope (NSF/NX/XOTcl 2.5.0) and update highlight list - Rewrite Tcl 9 ABI note: require separate builds for Tcl 9.0 vs 9.1 - Reorganize/expand change summaries (dispatch, parseargs, validation, zip flushing, MongoDB JSON/oid additions, hardening/build) - Update acknowledgements, diff stats, and tested Tcl versions/CI links - Rename doc reference from "info const" to "info consts" * nx-zip.tcl: Avoid double detach of ns_connchan in zip streaming [8d973a9e] 2026-09-12 Stefan Sobernig * nsf-gridfs.test: Make test script location independent [403470bf] * README.md: Update instructions regarding MongoDB NSF binding [86e2295f,4dbd4d8b] 2026-09-11 Stefan Sobernig * nsfmongo.c (NsfMongoJsonGenerate): Replace deprecated BSON function bson_as_json() [3115c207] * nsfmongo.c: Tcl-9 compat reform, adopt TCL_SIZE_T to avoid stack corruption (bewetween two int variables) in at least one function (NsfMongoCollectionQuery) [c162436e] 2026-09-11 Gustaf Neumann * nsf.h: Correct fallthrough macro name to NSF_FALL_THROUGH [f99d0442] 2026-09-10 Gustaf Neumann * nsf.h: Add leading semicolon to NS_FALL_THROUGH macro [41132f64] - Prefix fallthrough attribute with `;` for clang and GCC >= 7 - The leading semicolon seems necessary for native GCC 2026-09-09 Gustaf Neumann * Makefile.in, nsf.c, nsf.h, nsfmongo.c: Harden clang builds and quiet uninitialized warnings [e8715485] - Add extra clang warning flags (-Wconditional-uninitialized, -Wimplicit-fallthrough, -Wswitch-enum) when supported - Initialize potentially uninitialized locals and add missing switch break to satisfy stricter diagnostics - Make NSF_FALL_THROUGH clang-aware via __has_attribute(fallthrough) - Fix GridFS logging format specifiers for size_t (%zu) 2026-08-28 Gustaf Neumann * nsf.c (NsfConfigureCmd): Debug level with Tcl_GetIntFromObj [865abffa] * nsfProfile.c, nsf.c (NsfConfigureCmd, NsfProfileDebugExit): Return proper booleans and widen profile elapsed time [52b275ce] - Use Tcl_SetBooleanObj() for VarExists-based commands/methods - Avoid truncation/overflow in profile timing by computing elapsed as Tcl_WideInt - Print elapsed with TCL_LL_MODIFIER for portable wide-int formatting - Minor cleanup: collapse debug level decl/init in NsfConfigureCmd() * add-format-attributes.tcl, stubs*/nsfDecls.h: Annotate generated stubs with printf format attributes [b0580f43] - Add add-format-attributes.tcl to post-process nsfDecls.h files - Hook script into genstubs for stubs 8.5–9.1 and keep it idempotent - Apply NSF_attribute_format() to printf-like APIs and stub-table members - Update default Tcl 9.1 source path to tcl9.1b1 * nsf.c (ObjectCmdMethodDispatch): Panic on missing call frame in protected ensemble dispatch [e1716e3a] - Add non-null assertion for `framePtr0` after `CallStackGetTopFrame()` - Provide clearer failure mode/message when dispatch occurs without an active frame * Makefile.in: Add Tcl 9.x stub generation and configurable src dirs [e5244963] - Switch TCL_SRC_DIR_85/86/87 to `?=` so callers can override defaults - Add TCL_SRC_DIR_90 and TCL_SRC_DIR_91 for Tcl 9.0 and 9.1 sources - Extend `genstubs` target to generate stubs for Tcl 9.0 (tclsh9.0) and 9.1 (tclsh9.1) * nsfInt.h, nsf.c (CmdListDeleteCmdListEntry, CmdListRemoveDeleted, RemoveFromClassMixinsOf, RemoveFromObjectMixinsOf, RemoveFromObjectMixins, RemoveFromClassmixins, RemoveFromObjectMixins, NsfRelationSetCmd): Harden cmdlist deletion path and mark panic as unreachable [e3e33dd5] - Remove redundant NULL check in CmdListDeleteCmdListEntry() - Add NSF_NONNULL_OR_PANIC() after CmdListRemoveFromList() at all callsites to catch unexpected failures when removing selected deletion entries - Introduce NSF_UNREACHABLE() and use it after Tcl_Panic to aid optimizer and silence static-analysis false positives 2026-08-27 Gustaf Neumann * Makefile.in: Panic on broken internal non-null invariants [7a923d1c] - Add NSF_NONNULL_OR_PANIC() macro to enforce non-null invariants in all builds - Replace debug-only assert/nonnull_assert checks with Tcl_Panic + context messages - Guard ensemble frameType access against NULL cscPtr in NsfCurrentCmd to avoid crash paths * nsf.c (NsfCallMethodWithArgs, VarHashCreateVar, ImportInstVarIntoCurrentScope): Handle VarHashCreateVar failure in colon var resolver [08d61134] - Document VarHashCreateVar/VarHashTableCreate semantics and caller contract - Add NULL checks after VarHashCreateVar to avoid deref/crash in fetch/import - Return TCL_ERROR from InterpColonVarResolver when variable creation fails - Side effect: missing local/instance variable now yields explicit error path * nsf.c (NsfObjInfoHasMixinMethod, NsfObjInfoHasTypeMethod): Normalize boolean conversion for Tcl_SetBooleanObj [d068b949] - Replace cast-to-int with explicit ternary in mixin/type checks - Avoid relying on non-0 integer semantics from HasMixin/IsSubType * nsf.c, nsf.h, nsfAccessInt.h, nsfInt.h, nsfPointer.c: Fix strict compiler warnings and argument handling [b3442c15] Fix init dispatch argument splitting, format-string mismatches, pointer formatting, copy-size conversions, and variable hash access. Add Tcl 9.1 stub declarations and improve protected-method diagnostics. * Makefile.in: Add compiler-specific warning detection [0a4a8a29] Detect GCC and Clang versions and enable extended warning sets only for sufficiently recent compilers. Probe less portable compiler-specific flags before adding them, and allow users to override the computed conversion, format, definition, and tidy warning groups. 2026-08-21 Stefan Sobernig * Adjust author dates in COPYRIGHTs and various source files [309ac77c] 2026-07-21 Stefan Sobernig * nsf.c (Nsf_ConvertToInt32): Rewritten to use Tcl_GetSizeIntFromObj [10963b4c] 2026-07-20 Stefan Sobernig * Announce2.5.0: Adding stats [7f7cdaf8] 2026-07-17 Stefan Sobernig * nsf.c, nsfError.c, nsfShadow.c, nsfProfile.c: Use TCL_AUTO_LENGTH instead of TCL_INDEX_NONE for clarity [15a6a9b2] 2026-07-16 Stefan Sobernig * nsf.c: Applied TCL_SIZE_MODIFIER as well as some missing TCL_SIZE_T/ T_SIZE_OBJC [8335e141] * nsf.c: TIP 494 reform INT_MAX -> TCL_SIZE_MAX [f281a7dc] * nsf.c, nsf.h: Provide for more TIP 494 compat macros and apply them throughout NSF's core [c9d8e13c] 2026-07-15 Stefan Sobernig * nsf.h, nsfCmdPtr.c: Rename macro to match correct TIP number: 629 -> 626 [616b7999] * Adding to release documents [f03382d3] 2026-07-14 Stefan Sobernig * doc/*.man: Regenerate documentation: man & asciidocs [cd3c413a] * Bump version numbers: 2.5.0 [9d412404, 5b3e9937] * appveyor.yml: Adding 9.1b0 to Appveyor build matrix [76c7126b] * build.yml: Updating build arrays [7055bde6] 2026-07-09 Stefan Sobernig * nsfShadow.c, nsf.c, interp.test: Introduced in Nov '25, safe interps in 9.* are no longer equipped ::tcl::unsupported::* commands. This caused an unwanted interaction, as NSF shadows ::tcl::unsupported::disassemble unconditionally. This was fixed by disabling shadowing of this command except for PRE9 builts. [a0623ece] 2026-07-06 Gustaf Neumann * asmAssembleTemplate.c, nsfAsmAssemble.c, nsf.c, nsfCompile.c: Completed Tcl 9.1 command-accessor cleanup. Replace remaining direct accesses to legacy Tcl Command fields using the version-neutral NSF command-accessor macros [194481d4]. Background: Tcl 9.1 removes the legacy objProc/objClientData fields from struct Command and uses the TIP 627 objProc2/objClientData2 path consistently. Some remaining debug, assertion, bytecode, and assembler paths still referenced the old fields directly. Changes include: - Replace remaining Command.objProc assertions and debug output with TCL_COMMAND_OBJPROC(cmd). - Update assembler instruction generation to store command procs via TCL_COMMAND_OBJPROC(cmd) and client data via Tcl_Command_objClientData(cmd). - Update bytecode initialization to pass the version-correct object command client data to TclRegisterUserOpcode(). - Keep NSF-owned objProc fields, such as alias/forwarder cached proc pointers, unchanged. - Ensure resolver lookup only returns TCL_OK when a non-NULL Tcl_Command was actually resolved. This completes the internal Command layout abstraction needed for Tcl 9.1 while preserving the existing Tcl 8.5–9.0 code paths via compatibility macros. 2026-06-17 Gustaf Neumann * nsf.h: Continued Tcl 9.1 compat reform [ea05be59]: - decouple handling of TIP 626 from unsafe hash lookup idiom in 9.1 - Moved NsfFindHashEntry macro in PRE91 gating - Use Tcl_FindHashEntry for Tcl 9.1+ to prevent empty cmd entries - Keep legacy Tcl_CreateHashEntry(..., NULL) lookup for pre-9.1 builds - Move comment to document why the behavior differs across versions 2026-06-17 Gustaf Neumann * nsf.c, nsf.h, nsfAPI.h, nsfAccessInt.h, nsfInt.h, nsfPointer.c, nsfShadow.c, nsfStack.c, interp.test, object-system.test: - Add Tcl 9.1 compatibility macros for TIP 627 command procedure handling: use Tcl_ObjCmdProc2, Tcl_CreateObjCommand2, Tcl_NRCreateCommand2, Tcl_NRCallObjProc2, and TclObjInterpProc2 when available. - Map internal command accessors to the Tcl 9.1 Command layout, where objProc/objClientData/nreProc are replaced by objProc2/objClientData2/nreProc2. - Replace direct comparisons against TclObjInterpProc with TCL_OBJINTERPPROC so scripted Tcl procs and scripted NSF methods are detected correctly under Tcl 9.1. - Replace direct Command.objProc accesses with TCL_COMMAND_OBJPROC(cmd) in method classification, parameter lookup, debug output, direct dispatch, and alias handling. - Introduce NsfFindHashEntry() for lookup-only hash-table access, using Tcl_FindHashEntry() for Tcl 9.1+ to avoid creating an empty Tcl command-table entries. - Update method lookup, precedence-list search, command resolver lookup, assertion lookup, filter lookup, variable listing, method listing, forward listing, and pointer lookup paths to avoid accidental empty hash entries. - Preserve and restore the NRE command proc when shadowing Tcl commands, and clear it while an NSF replacement proc is installed. - Fix Tcl_Size-related debug output formatting in argument parsing and object tracing. - Temporarily skip the safe-interpreter creation subtest for Tcl 9.1, where nsf::interp create -safe still needs follow-up work. Tcl 9.1 removes the legacy objProc/object-client-data fields from the struct Command and uses TIP 627's Tcl_ObjCmdProc2 path consistently. The old NSF shortcuts therefore misclassified scripted methods, created invalid NULL-valued command-table entries during lookups, and could leave stale NRE dispatch state when replacing Tcl commands. [af8933b4] 2026-06-17 Gustaf Neumann * stubs9.1/nsfDecls.h, stubs9.1/nsfDecls.h, stubs/nsfStubInit.c: Add Tcl 9.1 stub headers and stub vector init; add generated public stub declarations for NSF API (nsfDecls.h); add generated internal stubs hook scaffolding (nsfIntDecls.h); add stub vector initializers and hook wiring (nsfStubInit.c) [ef47e094] 2026-06-16 Gustaf Neumann fix: guard mongo client pool push/pop with mutex - Lock poolMutex around mongoc_client_pool_push() in NsfMongoClose - Keep poolMutex held until after mongoc_client_pool_pop() in NsfMongoConnect - Prevent races on shared mongoClientPool access under USE_CLIENT_POOL [987c69c8] 2026-06-13 Stefan Sobernig * build.yml: Update build matrix, switch to Tcl's GH mirror to obtain tarballs, fix expression 2026-04-21 Gustaf Neumann * Makefile.in: Order pkgIndex installation after library install: make install-pkgIndex depend on install-libraries, prevent parallel make install from overwriting the generated top-level pkgIndex.tcl, render parallel installs of NSF more robust: preserve the appended NSF package stanza under parallel installs [f5f68fcd, 8a10a787] 2025-09-11 Hector Romojaro * nsf.c (ExitHandler): Fix memory leak by reworking ExitHandler conditional call to Tcl_Release(interp) This fix reworks the previous change to avoid Tcl_AsyncDelete errors while keeping the memory consumption low, by calling Tcl_Release(interp) only from the thread that owns "interp", instead of only when executed on the main thread. [3fb596eb] 2025-06-26 Gustaf Neumann * build.yml: Updated build matrix (GH) compiler versions to reduce number of failures on github.com/nm-wu/nsf [5e6e6afa] * tcl.m4: Updated to track upstream [7886f92d] 2025-06-23 Gustaf Neumann * nsf.c (ExitHandler): Avoid async handler deletion errors by tracking the main thread. This commit introduces a static main_thread_id variable to record the main thread's pthread_t identifier at Nsf_Init time. This allows ExitHandler to conditionally call Tcl_Release(interp) only when executed in the main thread. This change prevents fatal runtime errors such as: Fatal: Tcl_AsyncDelete: async handler deleted by the wrong thread The fix Applies only when TCL_THREADS is defined and has no impact on single-threaded and non-WIN builds. Many thanks to Oleg Checkulaev for the testing and cleanup [301c760f, f1c20554] 2024-11-05 Gustaf Neumann * nsf.c: Improve comments and debug code to compile cleanly [bf409a2d, 124093bf] 2024-10-08 Gustaf Neumann * serializer.tcl: Reduce verbosity [2b4b817c] 2024-10-08 Stefan Sobernig * doc/Announce2.5.0: Adding to announcement: 2.5.0 and 25th anniversary [b27afbdc] 2024-10-06 Gustaf Neumann * ChangeLog-2.0.0-2.1.0.log, ChangeLog-2.4.0-HEAD: Improved spelling [87ba4a57] * xotcl2.tcl, Httpd.xotcl, Mime.xotclTcl 9 fix: fixed handling of leading "~" in file paths. In the Unix shell tradition, leading "~" in file paths denotes to the home directory. In Tcl9, we have to use [file home] instead. [d861f735] 2024-10-06 Gustaf Neumann * nx.tcl: Added method nx::Object->"info consts" A "const" is a variable that cannot be altered later. So far, such constant variables have to be created via the Tcl 9 "const" cmd, like in the example below. The introspection method "/obj/ info consts" is very similar to "/obj/ info vars", but it lists only unmodifiable variables. [0ca02a31] 2024-10-06 Gustaf Neumann * tutorial2.html: Fixed typo (space was missing) [f56a27fa] * nsf.c (ParamFreeInternalRep): Re-establish sanity check [be661e5a] * nsf.c, nsfObj.c: minor cleanup of debug and log messages [27f3f462] 2024-10-04 Gustaf Neumann * nsf.c (ExitHandler): Improved warning message, when Tcl command "::history" is not defined [6862550e] * nsf.c: Updated year in comment [15dbd946] 2024-10-04 Gustaf Neumann * nsfInt.h: Fix for otherwise false positive in memcount statistics. Before, we saw messages like the following accompanied with wrong memcount statistics, when running library/xotcl/tests/testo.xotcl [7ce64a20] ******** MEM COUNT ALERT: Trying to free 0x14f91fc10 , but was not allocated 2024-10-04 Gustaf Neumann * parameters.test: improved decoupling of test cases [59dadd01] 2024-10-04 Stefan Sobernig * doc/Announce2.4.1, ChangeLog-2.4.0-HEAD: Add Announce2.4.1 and ChangeLog-2.4.0-HEAD drafts [deebac4d] 2024-10-03 Stefan Sobernig * nsf.c (NsfParamWrapper, ParamDupInteralRep): Tcl 9 reform: Refcounting nsfParam intrep was simplified and fixed by removing the canFree flag, now relying purely on the refcounts. This fixes a memory leak when a Tcl_Obj holding an nsfParam intrep gets duplicated. [0361c4b0] 2024-10-03 Gustaf Neumann * nsfObj.c (MethodFreeInternalRep): Added casts to debug output [5ee4c3c7] * nsf.c, nsf.h (CompiledColonLocalsLookupBuildCache): Make handling of colonLocalVarCache more type-safe Since the usual macro TCL_SIZE_T does not work together with the macros for the memcount macros, a new typedef "Nsf_Tcl_Size_t" was introduced. Using a typedef is better and eases maintenance. The new typedef has a "Nsf_" prefix, since it is defined in nsf.h. [64ee56cd] * nx.tcl: Address leak of NsfMethodContext with Tcl 9. This is not a fully satisfying fix, since it just fixes the symptom, not the cause. Also the old variant is supposed to run free of this issue. However, we are talking here about a single Tcl_Obj inside the NX object system, so the harm is very limited. More details in the ticket. [3dcb0fb1] * Makefile.in: Removed mostly obsolete hint on AOLServer [1c2a0be9] * nsf.c (NsfProcDeleteProc): Fix memcounting by adjusting type spec, otherwise leading to a wrong false positive on memcount tests [0922b668] 2024-09-27 Gustaf Neumann * nsf.c (Nsf_Init): Tcl 9 reform: One needs 'Tcl_InitStubs(interp, "8.5-",...)' instead of 'Tcl_InitStubs(interp, "8.5",...)', since the semantics are seemingly the same as in "package require ...". [3ba8209e] Without this change, we see in the NaviServer regression test the following error message: version conflict for package "tcl": have 9.0.0, need 8.5 while executing "load {} Nsf" invoked from within "ns_ictl update" (procedure "ns_cleanup" line 8) invoked from within 2024-07-14 Stefan Sobernig * win/rules.vc: Tcl 9 reform: Tcl does not add a version infix to the stub library name [7fd955bd] 2024-07-11 Stefan Sobernig * appveyor.yml: Fix appveyor build descriptor [3702c134] 2024-06-26 Gustaf Neumann * nsf.c, nsf.h: Fix for transitional bug due to NS_TCL_HAVE_TIP626 Deactivating NS_TCL_HAVE_TIP626, since this needs more work to deal with the two different types of commands (before and after the TIP) [19220221] * When we activate NS_TCL_HAVE_TIP626 (TIP supporting > 2^31 * elements in object vectors), Tcl defines different objProcs * (Tcl_ObjCmdProc and Tcl_ObjCmdProc2) where the usage of these * depends on a cmdWrapperProc. Unfortunately, the resolving of * these are performed via CmdWrapperInfo, which is not exported. We * have to think how to resolve these to make this working as with * prior Tcl versions. 2024-06-19 Gustaf Neumann removed debugging output for NS_TCL_HAVE_TIP626 [6a3286e8] 2024-06-19 Stefan Sobernig * nsf.h: Remove leftover in header file [6baa11e7] 2024-06-18 Gustaf Neumann * nsf.c, nsf.h: Tcl 9 reform: Improved cleanness of compilation [083692dd] 2024-05-03 Gustaf Neumann * nsf.c, nsf.h: Tcl 9 reform: Improved cleanness of compilation [a9ab0550] 2024-02-11 Gustaf Neumann * rosetta-unknown-method.tcl: Improved spelling [e34b17e5] * nx.tcl: Fixed misleading name of variable [285f60aa] 2024-02-11 Gustaf Neumann * nx.tcl: Fixed handling of invalid parameter specs This bug was occurring e.g. with an invalid parameter spec as in :property {fiscalyear:integer, required} where an additional space was introduced. The bug was reported by Maksym Zinchenko on the xotcl mailing list (many thanks for that!) and lead to an attempt of adding an empty parameter option. Now, an error is generated in this case. [32fd4c6b] 2024-01-20 Gustaf Neumann * nsf.c: Improved comment [f2bfddf1] 2024-01-16 Gustaf Neumann * nsf.c, nx.tcl, Access.xotcl: improved spelling [3234688f] * nsf.c, testx.xotcl: Fix potential crash and swallowed error. The change fixes 2 bugs: - When a non-existing method was called in a situation where * a filter with guards is registered, and * all guards are failing, and * the method to be called after the filter does not exist nsf was crashing - There was no code to produce the proper error message in such situations [91e563ce] 2023-12-05 Gustaf Neumann * nsf.c, tests/*.test: Improved spelling [43373d98] * langRef.xotcl: Fix typo [c5416441] * testo.xotcl: Tcl 9 reform: TIP 673 removed "trace variable", which was deprecated since the release of Tcl 8.4. However, since Tcl does not warn about deprecations, so it was not detected until TIP #673 removed the command for Tcl9. Whitespace changes [5f06502c, c2980f95] 2023-11-30 Gustaf Neumann * nsf.c: nsf:parseargs: honor "required" settings. The previous version was accepting e.g.: nsf::parseargs -asdict { {-state:wordchar,required} {-revision_id:integer,required} {-return_url:localurl "."} } {} i.e. passing empty argument list where the first two arguments are required. Now, the error is flagged properly [ef60fd6e] 2023-11-17 Gustaf Neumann * nsf.c, nsfProfile.c: Tcl 9 reform: Provide clean compilation for current Tcl 9 [7c55d2af] 2023-11-14 Gustaf Neumann * nsf.h: Tcl 9 reform: reflect type change of Tcl TIP 666 (use Tcl_Size for object count in TIP 627) [a24fe86a] 2023-09-09 Gustaf Neumann * mongoAPI.h, nsfmongo.c (mongo::oid::gettimestamp): New API call to obtain creation timestamp from OID [7fd68223] 2023-09-03 Gustaf Neumann * nx.tcl, accessor.test: Whitespace cleanup [bdae7a1f] 2023-08-23 Stefan Sobernig * accessor.test: Added tests to document the behaviour for internally generated per-slot accessor methods * nx.tcl (VariableSlot), properties.test: Make sure that calling delete on a single-valued property/ variable errors out, like calling add * nx.tcl (defineIncrementalOperations): Rewrite to avoid repetitive computations * nx.tcl: First take on fixing definition of incremental slot operations, in presence of custom provided ones (esp. value=delete) [83355de2] 2023-06-12 Stefan Sobernig * nx.tcl: Make sure to return "switch" for object parameters via info-introspection. Added some tests. [65d13b7b] 2023-06-10 Gustaf Neumann * nsf.c: Provided a Tcl_DupInternalRepProc() function for Tcl_ObjType "nsfParam" Recent versions of Tcl9 call Tcl_DupInternalRepProc() for Tcl_ObjType "nsfParam", which was a placeholder function before, leading to a Tcl_Abort(). The provided implementation provides now a basic logic for "duplicating" internal representations of parameter lists based on refcounts (somewhat similar to ProcBodyDup), but it has to be tested further, with a proper test case. The call of the Tcl_DupInternalRepProc function happens so far during the startup of NaviServer compiled with Tcl9. It might be necessary to overthink the competing logics of the "canFree" member and the reference count. For now, the intention is to get the NaviServer + Tcl9 regression test stop from aborting [d7a71fbd] 2023-04-19 Gustaf Neumann * nsf.c, nsf.h, nsfInt.h: Cleanup after TIP 660 [6f3bbd8f] 2023-04-18 Stefan Sobernig * appveyor.yml: Force use of SCP in newer OpenSSH > 9 releases, otherwise defaulting to SFTP [cf765c0d] 2023-04-16 Gustaf Neumann * nsf.c, nsfCmdPtr.c, nsfObj.c: Fixed warnings detected with branch "disabletcl8api" The Tcl9 native interface is based on "Tcl_Size" instead of "int", but the default mode hides these differences via some macro-magic. Typical such cases are API calls like: Tcl_ListObjLength(interp, methodObj, &length); Tcl_ListObjGetElements(interp, methodObj, &oc, &ov) The macro-magic queries the size of the provided parameters and uses the old or new interface depending on it (while hiding some more potential problems, a compiler can detect). The branch "disabletcl8api" removes the macro-magic and reveals the potential problem areas, where the code is still depending on the old 32bit interface. This commit fixes such cases and the collateral damage. [10f06c20] 2023-04-16 Gustaf Neumann * nsf.h: Tcl 9 reform: Deactivate support of TIP 626 for the time being When NS_TCL_HAVE_TIP626 (TIP supporting > 2^31 elements in object vectors) is activated, Tcl defines different objProcs (Tcl_ObjCmdProc and Tcl_ObjCmdProc2) for the old and new API, where the usage of these depends on a cmdWrapperProc. Unfortunately, the resolving of these API calls is performed through the wrapper via CmdWrapperInfo, which is not exported. We have to think how to resolve these to make this working as with prior Tcl versions. [4b2efda0] * Makefile.in: Added missing dependency for forcing recompilation [818bfb7f] 2023-04-16 Gustaf Neumann * nsf.c, nsfAPI.h, mongoAPI.h: Tcl 9 reform: Provide support for TIP 627 (Tcl 8.7a6+ and Tcl 9) TIP 627 introduces support for > 2^31 elements in object vectors (e.g., number of words in a single Tcl command). For details, see https://core.tcl-lang.org/tips/doc/trunk/tip/627.md To provide also backwards compatibility, this change uses the macros TCL_COMMAND_OBJPROC, TCL_CREATEOBJCOMMAND, TCL_NRCALLOBJPROC, TCL_NRCREATECOMMAND, TCL_OBJCMDPROC_T, and TCL_OBJC_T. [745c46b4] 2023-04-15 Gustaf Neumann * nsf.c: Updated copyright notice [d9d5b503] 2023-03-16 Gustaf Neumann * Script.xotcl: changed file encoding to UTF-8 to improve robustness in various Tcl9 variants (e.g. TIP 657) [6f1b0bd8] 2023-01-03 Gustaf Neumann * nx-zip.tcl (returnZipFile): Added optional parameter channel to returnZipFile to ease usage in the background Many thanks to Antonio Pisano for the suggestion! [7dbbd336] 2022-12-19 Gustaf Neumann * asmAssembleTemplate.c, nsfAsmAssemble.c, nsf.c, secure-webserver.xotcl, trace.xotcl, tests/*.test: improve spelling [3e1001ff] 2022-12-19 Gustaf Neumann * nsf.c, nsf-cmd.test, returns.test: Added support for return value checker for nsf::proc One can now specify "-returns ...." in nsf::proc commands the same way as in nx/XOTcl2 methods. nsf::proc ... /procName/ /arguments/ ?-returns /valueconstraint/? /body/ When return value checkers are defined, these are returned by the usual introspection interface. % nsf::proc ::foo {-a:integer} -returns integer {return 1} % nsf::cmd::info definition ::foo ::nsf::proc ::foo -a:integer -returns integer {return 1} % nsf::cmd::info returns ::foo integer The regression test was extended to cover these cases. [b44ba341] 2022-12-19 Gustaf Neumann * nx-shell.tcl, nx-zip.tcl, serializer.tcl, doc/*.man: Improved spelling [84277b25,da2688b9] 2022-12-17 Gustaf Neumann * doc/next-tutorial/value-checkers*: Fixed omission of checkers in graphic [f308a675] * nsfCompile.c, nsfAssemble.c, asmAssembleTemplate.c, nsfAsmAssemble.c, asmAssembleTemplate.c: Tcl 9 reform (cont'd) [fcfefac7] * nsf.c (Nsf_ConvertToTclObjType), returns.test: Fix bug, where Tcl's "string is" checker modified result, when used as a return value checker. The new code saves and restores the original result value. The regression test was extended. Many thanks to Antonio Pisano for pointing out this issue. [07564105] 2022-11-22 Gustaf Neumann * nsfInt.h (CHARTYPE): generalize handling of "is " calls by defining CHARTTYPE. The macro was developed earlier on NaviServer, and is used in nsf for "upper", "space" and "alpha" character checkers [f0bca18a] * nsf.c, nsfObj.c (TCL_OBJTYPE_V0): Tcl 9 reform: Provide an initializer for the new size_t field of Tcl_ObjType [a2f1d967] * nsfCompile.c: Tcl 9 reform: Avoid macro TCL_OUT_LINE_COMPILE (many thanks to Jan Nijtmans) [30e90f77] 2022-09-29 Gustaf Neumann * nx-zip.tcl (flushBuffer): In NaviServer mode, flush buffers after every file. This avoid potential interger overruns in Tcl, when sending many large files over slow lines. [94dce307] 2022-08-15 Stefan Sobernig * README.release: Clarify how to produce HTML documentation for sourceforge.io [a7fcb6d4]