Fisheye: Tag 5bdfdb70f7570bda409acd24efbdc7e73b908c6b refers to a dead (removed) revision in file `ChangeLog-2.0b3-2.0b5'. Fisheye: No comparison available. Pass `N' to diff? Index: ChangeLog-2.0b3-2.0b5.log =================================================================== diff -u --- ChangeLog-2.0b3-2.0b5.log (revision 0) +++ ChangeLog-2.0b3-2.0b5.log (revision 5bdfdb70f7570bda409acd24efbdc7e73b908c6b) @@ -0,0 +1,1358 @@ +2013-06-07 Gustaf Neumann + + - fix typo + - remove doc target from "install-doc" since this takes a while in a + "make install" + - document tricky trace script setting in regression test + - use tcl8.5 commands instead of 8.4 idioms + - don't build doc always, since it takes a long time + - documentation update and regeneration of html docs + - add all tcl 8.5 cmds, nx methods + info methods + - add missing tcl-keywords to nx-mode.el + - adjust style files for document generation + - added rules for generating pdf to ease release management + - code cleanup + - updated HTML renderings of examples + +2013-06-06 Gustaf Neumann + + nsf.c: + - fix a bug in SlotContainerCmdResolver() when NSF_MEM_COUNT is + activated + - fix a small memory leak for PER_OBJECT_PARAMETER_CACHING + - all cases detectable with --enable-memcount=yes are fixed + - fix git command in release instructions + - fix label for debugging reference counts + - updated TODO + - reduce variable scopes + + nx::test: + - change test cases to newer interface + - don't use "namespace import nx::*" in test cases when not required + + nx::test: + - use the standard configure interface for configuring instead of + own version + - changed from nx::Test to nx::test (user never has to know that + nx::Test is a class). + +2013-06-05 Gustaf Neumann + + + - Eliminate all use of Tcl_GetStringFromObj() function. + - fix typos, example code + - further release work + +2013-06-05 ssoberni + + Fixed some typos and suggesting some rewording + +2013-06-05 Gustaf Neumann + + - initial checkin of nx-mode.el + - preparing 2.0b5 release + +2013-06-04 Stefan Sobernig + + Left a to-do in the nxdoc backend + Completed update of nxdoc for NX + +2013-06-04 Gustaf Neumann + + serializer.tcl + - added flag -objmap to Serialzer.deepSerialize to make serializer + usable for copying (-map is to coarse) + - extended regression test + +2013-06-04 Stefan Sobernig + + Adjusted nxdoc for the recent changes to NSF/NX + +2013-06-03 Gustaf Neumann + + nsf.c + - removed obsolete function AssertionAppendPrePost() + - removed obsolete function NsfNSCopyCmdsCmd() and ::nsf::nscopycmd + (handled now more general on scripting level in the "copy" method) + nx.tcl: + - "copy" method: fixed copying of class-level per-object methods + - extended regression tests + + nsf.c + - fixed a potential crash for objects having a wrapper-less alias defined + +2013-06-03 ssoberni + + nsf.c + - Make sure that the original error message is preserved when + calling destroy after a failed CMD or INITCMD + +2013-06-03 Gustaf Neumann + + nsf.c + - fixed a bug in "info methods returns" in cases, where no + returns info was available. + - we can "/obj/ copy" now objects/classes containing + * aliases + * setter + * ensemble methods + * method protections Instead of handling cmd copying in + NsfNSCopyCmdsCmd, it is replaced now by introspection. + - extended regression test + +2013-06-02 Gustaf Neumann + + nx::test: + - deactivate calling overhead calculation, since this is not reliable + (sometimes larger than the call). + + - improved handling of required configure parameters when + classes are changed dynamically. When configure parameter + are defined required, checking for the absence of required + parameter was only performed at creation time. When objects + were re-classed or their classes extended with required + parameters, later calls to configure did not trigger + exceptions. Now we check for the existence of the instance + variable which addresses most of these points, but in future + we might wish a more general solution (see comment for + futures releases) + + - when creation with an required configure parameter failed, delete the + half-baked object to avoid confusing states. + + - nx::test: show msg at start of test file + +2013-06-01 Gustaf Neumann + + - changed multiplicity of mixin, object-mixin, filter, + object-filter from 1..n to 0..n; rationale: when one has a + list of eg. mixins, which should be passed, one has to test + for the length before passing it, otherwise the empty list + would generate an error. Allowing 0..n makes the usage + simpler and the program shorter. + + nx.tcl: + - renamed variable option "-config" to "-configurable" to make its + intention clearer + +2013-05-31 Gustaf Neumann + + - traits: added ability to turn on verbosity for traits by using + nx::configure trait-verbosity on|off + + nx.tcl: + - replaced functionality of "/obj/ configure" by "/obj/ info + configure" to re-enable semantics of the plain configure + method, even when called without arguments. "/obj/ info + configure" is actually a convenience method to allow to + write o1 info configure instead of o1 info lookup configure + syntax + + package nx::class-method: + - convenience package similar to nx::plain-object-method + - allow for usage "C class method ..." in addition to "C object + method". + - made warnings configurable via nx::configure + class-method-warning on|off + - completed coverage and test cases + + package nx::plain-object-method: + - made warnings configurable via nx::configure + plain-object-method-warning on|off + - completed coverage and test cases + +2013-05-30 Gustaf Neumann + + nsf.c + - fixed potential infinite loop in pattern matching for + precedence lists + - cget: make error message closer to tcl conventions + - extended regression test + +2013-05-29 Gustaf Neumann + + - adapt to object methods + - prevent default value checking, when it is determined by a command + - completed coverage if plain-object-method.tcl + - provide warnings via plain-object-method.tcl via "nsf::log warn ..." + +2013-05-28 Gustaf Neumann + + - renamed initblock parameter from __initcmd to __initblock + - renamed nsf::configure parameter from "keepinitcmds" to + "keepcmds" + + - saving "keepcmds" in an associative array named + "__cmd(/parameternName)" to allow saving of multiple + parmeters with less name clash danger (when application + stays away from variables stating with double underscore) + + nx.tcl: + - removed "info is .." since it might raise more questions + than it solves + + - changed enumeration values for "-source" in + "info lookup methods" + "info lookup slots" + "info methods" + "info slots" + from + "all|application|baseclasses" + to + "all|application|system" + for consistency with "nsf::my" and "nsf::dispatch" which uses + "-system" as well + +2013-05-26 Gustaf Neumann + + Traits: + - changed from traits-as-objects to traits-as-classes. This + allows for higher orthogonality of traits and class definitions + and allows in principle traits for object-specific methods (not + fully implemented/tested) + - fixed property/variable inheritance in traits. + - remove spurious debug line + + Cleanup of nsfAPI.decls + - remove unneeded enumeration types + - use "typeName" to shorten reported names of parameters + - use camel case for reported names + + - changed ::nsf::parametersyntax(..) to + ::nsf::parameter::syntax(..) + + - xotcl2: adjusted manual parameter syntax entries to new conventions + +2013-05-24 Gustaf Neumann + + - added implementation for slots with traces+types for classes + - exception for incorrect defaults are thrown during slot creation + + - extended nsf::is, added parameter + * ?-configure? -- accept configure parameter options + * ?-name /name/? -- provide a parameter name for error message + + - simplified nx.tcl by using new nsf::is + - extended regression test + + - added partly implementation for slots with traces+types for + classes + + - fixed cases, where valuechangedcmd (and the other traces) did + not work with "configure" method. When slot traces are used, it + cleans other traces for the same operations. + + - extended regression test + +2013-05-23 Gustaf Neumann + + nsf.c: + - fix crash when "nsf::my" is called with a single argument + outside the object context. + - fix assert + - removed some TODOs from tests/parameters.test + + - parameter dispositions: We differentiate now between + "initcmd" and "cmd": an "initcmd" is only evaluated once, + but one can provide configure values for this parameter + later. a "cmd" is executed on every evaluation, it is only + possible to pass cmds to it. The trailing argument of the + configure parameters (used e.g. for scripted object/class + definitions) is now of type "cmd". Implementation not yet + complete (object cases are not correct). + + - streamline documentation + + C-code Generator: + - added "-typeName" for enumeration types that allows for + disambiguation of enumerations with different argument + names. Before that, the argument name determined the c-type + of the enumeration. Therefore it was not possible to use + argName "-type" for two different functions with a different + list of enumerators. + + - renamed option "-methodtype" to "-type" in + + /obj/ info methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ... + /obj/ info object methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ... + /obj/ info lookup methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ... + + - minor code cleanup + +2013-05-22 Gustaf Neumann + + - streamlined AddSlotObjects() + - cleanup of TODOs + - nsf.c: handle full-qualified name for private slots + (AddSlotObjects()) + - extended regression test + +2013-05-21 Gustaf Neumann + + - updated next-tutorial: + * bring definitions of properties and variables up to date + * fix "object methods" + + - XOTcl2: ensure public accessor when "-parameter ..." is used + + - extended parameter extractor: new functionality + + ::nsf::parameter get default /parameter/ ?/varname/? + ::nsf::parameter get type /parameter/ + /obj/ info parameter get default /parameter/ ?/varname/? + /obj/ info parameter get type /parameter/ + +2013-05-20 Gustaf Neumann + + - hopefully the last changes for ?object? + method|variable|property: defined + * "/obj/ delete object method" + * "/obj/ delete object property" + * "/obj/ delete object variable" + + - "info method syntax" returns now "/cls/ ...." + - "info object method syntax" returns now "/obj/ ...." + + - updated next-migration guide to reflect changes from the + configure reform + - make name fully qualified for symmetry reasons + - minor cleanup + + - nx-pp.tcl: fixed changed accessor handling, added cget to + highlight words + +2013-05-19 Gustaf Neumann + + - added new regression test info-variables.test + +2013-05-19 Gustaf Neumann + + Method and configure parameter reform, Part 3: + - added + + /cls/ info lookup variables -> list of handles + /obj/ info lookup object variables -> list of handles + /obj/ info variable definition|name|parameter /handle/ + + - nx.tcl: added forward compatible scripted implementation of "lmap" + - nsf.c: handle names for private slots in pattern provided to + AddSlotObjects(), used e.g. in "info lookup slots /pattern/" + +2013-05-18 Gustaf Neumann + + - dropped "/obj/ info slot definition /obj/" in favor of "/slotobj/ + definition" + +2013-05-17 Gustaf Neumann + + - nx.tcl: handle "incremental" in slot reconfigure + - nx.tcl: change defaultAccessor to "none" + +2013-05-17 Gustaf Neumann + + - Method and configure parameter reform, Part 2: In order to + streamline the interface further, we tried to follow the + idea to use "... info /plural word/" to obtain a set of + handles, and then a separate call to obtain the + details. Therefore, we replaced + + /cls/ info slot objects + /cls/ info slot definitions + /cls/ info slot names + /obj/ info object slot objects + /obj/ info object slot definitions + /obj/ info object slot names + /obj/ info lookup slots + by + + /cls/ info slots ?-type /type/? ?-closure? ?-source all|application|baseclasses? ?/pattern/? + /obj/ info object slots ?-type /type/? ?/pattern/? + /obj/ info slot definition /obj/ + /obj/ info lookup slots ?-type /type/? ?-source all|application|baseclasses? ?/pattern/? + +2013-05-16 Gustaf Neumann + + - Method and configure parameter reform + + /cls/ info configure parameters ?pattern? -> list of params + /cls/ info configure syntax -> syntax output + /obj/ info method parameters /methodName/ ?/pattern/? -> list of params + /obj/ info method syntax -> syntax output + /obj/ info lookup configure parameter ?/pattern/? -> list of params + /obj/ info lookup configure syntax -> syntax output + /cls/ info parameter list|name|syntax /param/ -> value + +2013-05-14 Gustaf Neumann + + - avoid crash in case NsfParameterGetCmd() is passed a plain value + +2013-05-13 Gustaf Neumann + + - minor documentation updates + +2013-05-10 Gustaf Neumann + + - initialize stub-tables only once + + - syntax formatter: use /value/ for denoting placeholder in + "... info method syntax ..." + +2013-05-07 Gustaf Neumann + + - parametersyntax: make placeholders explicit + + - moved "/obj/ info slot definition|..." to "/obj/ info object + slot definition|..." for consistency + + - provided "parametersyntax()" for "object mixin" and "object + filter" + +2013-05-05 Stefan Sobernig + + - win/makefile.vc: have the install target copy the public + headers as well + +2013-05-04 Stefan Sobernig + + - MinGW toolchains do not provide support _vscprintf(), so we + limit the use of it to MSVC; tested NsfDStringPrintf under + MinGW + + - Provide tcl library path to summary.tcl and remove + intermediate file from repo + + - Fixed the Win32 logic for computing the Tcl_DString in + NsfDStringPrintf(), tested for MSVC under x86 and amd64 + +2013-05-04 Gustaf Neumann + + - updating next-tutorial to object method syntax + +2013-05-03 Gustaf Neumann + + - updated migration guide + - update to new naming + +2013-05-03 ssoberni + + - Fix the 86-specific tests to reflect the object-modifier + reform + +2013-05-03 Gustaf Neumann + + - try to print arguments in one sweep in NsfDStringPrintf() + - remove "extern" declarations + +2013-05-02 ssoberni + + - Revised NsfDStringPrintf() for portability to + non-C99-compliant C runtimes (MSVC); remains to be tested + +2013-05-02 Gustaf Neumann + + - first and incomplete update of migration guide to new syntax + +2013-05-01 Stefan Sobernig + + - Re-enabling deletion of intermediate file in makefile + - Remove legacy build artifacts + + - Provide native Win build support for MSVC++ and MSVC, using + the Tcl 8.6 name templates. Tested using Visual Studio 12 + (VC and name in version 11). See makefile.vc for build + instructions for Win32 and Win64. + +2013-04-29 Gustaf Neumann + + - bumped version number to 2.0b5 + + - tested with NaviServer and OpenACS (new version of nx needs + as well a newest NaviServer, since ns_cache implementation + needs to be objectified; newest NaviServer version works as + well with older nx) + + - fix xotcl instance method serialization (still not covered + in regression test) + + - renamed "package require nx::class" to "package require + nx::class-method" in analogy to "nx::plain-object-method" + + - added "/obj/ object variable" and "/obj/ object property" + +2013-04-28 Gustaf Neumann + + + MongoDB + - added "nx::mongo::db drop collection /name/" + - returning status from "nx::mongo::db remove" as success (0 or 1) + - adjust to object interface + - reduce verbosity + - add error messages for slot lookup failures + + Updated MongoDB interface + - upgraded to c-driver 0.7.1 + - tested with MongoDB 2.4.4-pre + - new commands: + * mongo::run + * mongo::cursor::find + * mongo::cursor::next + * mongo::cursor::close + - adapted interface for c-driver 0.7.1 (e.g. new optional name for + mongo::index + + - nsfPointer.c: add parameter to Nsf_PointerDelete() for + allowing optional freeing + + - reduced default verbosity + - moved NsfConfigEnabled from nsf.h to nsfInt.h (no need to be + part of the public interface) + + - moved NSF_ARGPARSE_* macros to nsf.h (since arg parser is + public and uses these flags) + +2013-04-23 Gustaf Neumann + + Object-method Reform: + + - changed interface to object specific commands by requiring + an ensemble named "object". The rational behind is + essentially to use always the same info command to retrieve + object specific methods, no matter whether these are defined + on a plain object or an a class object (does not break the + "contract" what e.g. "info method" returns). + + Now we define methods via: + + /cls/ method foo {args} {...body...} + /cls/ object method foo {args} {...body...} + /obj/ object method foo {args} {...body...} + + Similarly, aliases, forwards and mixins are defined, e.g. + + /cls/ mixin add ... + /cls/ object mixin add ... + /obj/ object mixin add ... + /obj/ require object method ... + + The same change propagated as well to the "info" method. + Now we have: + + /cls/ info methods ... + /cls/ info object methods ... + /obj/ info object methods ... + + Similar, the object parameterization uses + + /cls/ create obj -object-mixin M + /cls/ create obj -object-filter f + /metacls/ create cls -mixin M1 -object-mixin M2 + /metacls/ create cls -filter f1 -object-filter f2 + + - as a consequence, + + a) "/cls/ class method ...", + "/cls/ class alias ...", + "/cls/ class forward ...", + "/cls/ class filter ...", + "/cls/ class mixin ...", + "/cls/ class info ..." + "/obj/ class method require method ..." + "/obj/ class method require public method ..." + "/obj/ class method require protected method ..." + "/obj/ class method require private method ..." + were dropped + + b) "/obj/ method ....", + "/obj/ alias ....", + "/obj/ forward ...." + "/obj/ filter ...." + "/obj/ mixin ...." + "/obj/ info method*" + "/cls/ create obj -mixin M" + "/cls/ create obj -filter f" + "/obj/ method require method ..." + "/obj/ method require public method ..." + "/obj/ method require protected method ..." + "/obj/ method require private method ..." + were dropped + + - added package nx::class to allow optionally the "class" notation + "/cls/ class method ..." (and friends, see (a)), and + "/cls/ class info ... + + - added package nx::plain-object-method to allow optionally + plain method b) "/obj/ method ...." (and friends, see (b)) + + - add support to slots to use ensemble methods as setters + +2013-04-17 Gustaf Neumann + + - allow explicit unsetting of -per-object flag in 0-argument + -flag=value notation + +2013-04-05 Gustaf Neumann + + - reduce variable scope + +2013-03-25 ssoberni + + - Improved wording in comment on NsfConfigEnabled() + - Irgh. Had forgotten about two-level stringification to + provide configuration macro expansions as strings in + NsfReportVars() + +2013-03-25 Stefan Sobernig + + - Adding a helper macro NsfConfigEnabled() to test for + active/inactive build-time configurations; rewrote + NsfReportVars() accordingly. This makes NSF compilable under + MSVC (VC11). Thanks are due to Stephan Adelsberger for + reporting the issue. + +2013-02-19 Gustaf Neumann + + - ByteCompiled(): fix indentation of preprocessor #if statements + - ByteCompiled(): ensure result setting in case HAVE_TCL_COMPILE_H is + not defined + - improve wording in rosetta example + +2013-01-22 Gustaf Neumann + + - more code cleanup + - reduce variable scopes + - remove EXTERN declarations from function definitions + +2013-01-08 Gustaf Neumann + + - Update to latest TEA. + - Follow new naming convention for auto-tools (using configure.ac) + + - silence compiler warnings + +2012-12-12 Gustaf Neumann + + - replace Tcl_GlobalEval by Tcl_Eval, since Tcl_GlobalEval will be + removed in futures versions of Tcl + +2012-11-26 Stefan Sobernig + + - Checked built and test suite against Tcl 8.6rc2 + (core-8-6-0-rc) under MinGW32; removed temporary fix for bug + #3401422 + +2012-11-19 Gustaf Neumann + + - quote filename in content disposition + +2012-11-16 Gustaf Neumann + + - replace nx::configure option defaultPropertyCallProtection by + defaultAccessor + + - protect trf against leading dashes + +2012-11-15 Gustaf Neumann + + - deactivate tests in library file + +2012-11-14 Gustaf Neumann + + - add additional "convertto" when generating zip files from strings + +2012-10-30 Stefan Sobernig + + - The asciidoc-related configuration artifacts, especially for + Tcl/NSF-specific code highlighting, are now contained in the + source distribution and integrated with the respective make + targets. Besides a running asciidoc installation, there is + no further configuration need. Tested with asciidoc 8.6.8 + +2012-10-28 Stefan Sobernig + + - Extending test case to cover slotassign issue + - Adding a test and a temporary fix for the ::nsf::is issue in + setCheckedInstVar + +2012-10-13 Gustaf Neumann + + - Make sure to NS_EXPORT Ns_ModuleVersion for people using + still the old-style AolServer module. + +2012-10-04 Gustaf Neumann + + - make assumptions in code explicit + +2012-10-03 Gustaf Neumann + + nsf.c: + - handling of method names in error messages from nsfAPI.h. Make sure + that error message is generated with the actual method name. + +2012-10-02 Gustaf Neumann + + nx.tcl: + - property has now a boolean non-positional argument "-config" + /obj|cls/ property ?-accessor value? ?-config boolean? + ?-incremental? ?-class value? spec ?initblock? in symmetry with + "-accessor" (parameter option "noconfig" is still needed to + flag nsf for variables that should be initialized, which are + not configurable + - "/obj|cls/ info slot definitions" returns a full command + (containing flags and property|variable) + - extended regression test + +2012-09-30 Gustaf Neumann + + - remove debug output + + nsf.c: + - factored out ParameterMethodForwardDispatch() to call a + parameter method defined as a forwarder the same way from + "configure" and "cget" + - extended regression test + - improve comment + +2012-09-29 Gustaf Neumann + + - extended regression test + + - changed name "/obj|cls/ slot info definition" to "/obj|cls/ + slot info definition" since result is a set + - dropped parameter method "properties" + - dropped "/obj/ info properties" (since "properties" or "variables" + are returned") + + nx.tcl: + - change parameter name in "/cls/ info parameter ... ?pattern?" from + "name" to "pattern" + +2012-09-28 Gustaf Neumann + + - added functionality for "cget" to call parameter-methods (e.g. + "... cget -class"). The method cget calls either "/slot/ get + ..." (when slot=... is provided in the parameter spec) or it + assumes that the method without argument returns the value + - added "::nsf::object::property /obj/ volatile" to query whether + a object is volatile or not + - "/obj/ cget -volatile" returns now the volatile state of the + object + - factored out ParameterMethodDispatch() from OConfigureMethod() + - extended regression test + +2012-09-27 Gustaf Neumann + + - invalidation of per-object parameter cache + * on mixin changes and + * on deletion/adding of per-object slots + - deactivate PER_OBJECT_PARAMETER_CACHING per default (flipping + this parameter makes regression test more than 20 faster). + - extended regression test + + - NsfObjInfoObjectparameterMethod(): return not only the first + matching parameter, but the list of all matching ones. The + last optional argument was renamed from "name" to "pattern" + accordingly + + - rename invalidateobjectparameter -> + parameter:invalidate::classcache + - rename invalidateobjobjectparameter -> + parameter:invalidate::objectcache + - bring cmds into alphabetical order + +2012-09-26 Gustaf Neumann + + - first draft of per-object parameter caching (for per-object-mixins + and per-object properties). + + nsf.c: + - fix potential bad interaction between per-object mixins and per-class + caching of object-parameters + +2012-09-25 Gustaf Neumann + + - don't blindly register all object/class methods for XOTcl + + Property Reform Part 2: better handling of per-object properties + nsf.c: + - changed "/class/ __objectconfigure" to "/obj/ + __objectconfigure" to be able to handle per-object properties + on classes properly. + - renamed "info method parametersyntax" -> "info method syntax" + - renamed "/obj|cls/ info method parametersyntax" into "/obj|cls/ + info method syntax" + - replaced "::nsf::methods::class::info::objectparameter" by + "::nsf::methods::object::info::objectparameter" + - new command "::nsf::parameter::specs ?-configure? ?-noposargs? + slotobjs": convert provided slotobjs into a list of parameter + specs + - new command "::nsf::parameter::get list|name|syntax + parameterspec": convert parameter spec into syntax form, or + retrieve pieces of information from it (can be extended in the + future) + - added more or less generic list handling functions + TclObjListFreeList(), TclObjListNewElement() and + TclObjListAdd() used by "::nsf::parameter::specs" + - replaced "::nsf::method::property /obj/ -per-object /name/ + slotcontainer ?value?" by "::nsf::object::property /obj/ + slotcontainer ?value?" + - added "::nsf::object::property /obj/ hasperobjectslots ?value?" + + nx.tcl: + - new info methods + * "/obj/ info lookup parameter definitions" + * "/obj/ info lookup parameter names" + * "/obj/ info lookup parameter list" + * "/obj/ info lookup parameter syntax" + + - changed "/cls/ info parameter definition ?name?" into + "/cls/ info parameter definitions ?name?" since ir returns + a list. Still, "list" or "syntax" won't be plural + +2012-09-22 Gustaf Neumann + + - renamed timing variable from "time" to "ms" + - added timing statistics + +2012-09-21 Gustaf Neumann + + + - generalize handling for per-object-properties + - added additional file for regression test + +2012-09-19 Gustaf Neumann + + Property reform part 1: + - disallow protection modifiers for "properties" and + add new flag "-accessor" to "property" and "variable" + This changes definitions like + + Class create C { + :property {a a1} + :public property {b b1} + :protected property {c c1} + :private property {d d1} + } + + to + + Class create C { + :property {a a1} + :property -accessor public {b b1} + :property -accessor protected {c c1} + :property -accessor private {d d1} + } + + since "properties" are always public accessible over the + "configure" and "cget" interface, but the accessors methods + might not be public. The value of the accessor might be also + "none" (specifying explicitly that no accessor is wanted) or + "", which means: use the default. Same holds for "variable" + + - disallow parameter option "incremental" and change it to a + flag of the property or variable. The motivation for this is + due to the fact, that "incremental" is a property of the + accessor, and not of the value. + + old: + Class create C { + :property foo:int,incremental + :variable bar:int,incremental + } + new: + Class create C { + :property -incremental foo:int + :variable -incremental bar:int + } + + - disallow "public class property" and friends since these are + not needed + + - removed parameter property "noaccessor" + + - removed "nx::configure defaultPropertyCallProtection" and + method hook "__default_property_call_protection" + + - introduced "nx::configure defaultAccessor" and + method hook "__default_accessor" + + - for the time being, "defaultAccessor" is "public" for NX and + XOTcl, will be changed to "none" in NX + + - extended regression test (new file properties.test) + +2012-09-15 Gustaf Neumann + + nsf.c: + - fixed parmeter syntax for required nonpos args + - deactivate deletion of methods via nsf::object::delete during + shutdown to avoid missing slot forwarders called from destructors + + nx.tcl: + - remove debugging output + - renamed testlog file, remove it on "make clean" + + nsf.c: + - made argument of cget required + + nx.tcl: + - added Tk-style methods "configure" and "cget" + - added additional regression test set for cget and configure + + nsf.c: + - implemented cget as a configure-like method, dropped ensemble method + variant + + nx.tcl: + - simplified "/obj|cls/ delete method" due to resolving capabilities in + nsf::delete::method + - fixed regression test to run all test again correctly + + xotcl2.tcl: + - made destructor of Connection more robust such it does not depend on + accessor methods. + +2012-09-14 Gustaf Neumann + + nsf.c: + - extended nsf::method::delete to handle ensemble names + nx.tcl: + - added tk/incr-tcl style cget methods on class/object levels. + - improve copy handling with other child-types of the slot container + working + - make sure to ignore non-slot-type objects in slot introspection + - worked on regression test until "methods.test". others are missing, + but maybe reconsideration + +2012-09-13 Gustaf Neumann + + - updated 34 copyright notices + + nx.tcl: + - rename the following internally called methods (not for XOTcl). + alloc -> __alloc dealloc -> __dealloc objectparameter -> + __objectparameter recreate -> __recreate + - from these methods, only __objectparameter is defined per default, + the others are defined on demand + + changes to allow efficient tk/incr tcl compatible configure/cget + - refactored code to allow to parameterize handling of required + flag for parameters + - don't flag an error when configure is called on an + initialized object (logic: if the object is initialized, + configure must have been called before, and the required + action must have been already taken). + - rename nx::Object.configure to nx::Object.__configure to free method + name "configure" for an e.g. tk-like configure + +2012-09-10 Gustaf Neumann + + - finalize transition from old code + +2012-08-28 Gustaf Neumann + + - fix frame scoping for myvar/myproc + +2012-08-10 Gustaf Neumann + + - allow to change title of a scripted document + - make doc beautifier more robust for invalid lists + - use explicit return in tutorial example scripts + +2012-08-01 Gustaf Neumann + + - improve documentation + - use "nsf::relation $cl superclass" instead of "$cl configure + -superclass" + - minor documentation updates + + nx::test: + - added summary at the end of "make test" via log file + - updated .gitignore + +2012-07-31 Gustaf Neumann + + nx.tcl: + - set multiplicity for mixins and filters by default from 1..n + to 0..n to avoid error messages, when e.g. empty mixin lists + are configured. Setting empty mixin-lists is strictly + speaking not necessary, but this eases the code in cases the + lists are sometimes empty. + + - handle cyclical superclass/class dependencies during object + system finalize + - extend regression test + +2012-07-18 Gustaf Neumann + + nsf.c: + - ignore in internal calls to "dealloc" protection settings + - handle cyclical class dependencies during object system finalize + - extend regression test + +2012-07-18 Stefan Sobernig + + - library/nx/nx.tcl: Following the code review, implemented a + first scheme for handling traces in setCheckedInstVar. This + gives us consistent behavior for defaults and traces + (valuechangedcmd) across classes and objects. + + - tests/parameters.test: Adjusted the relevant tests + + - Pending: setCheckedInstVar currently uses ::nsf::is to + validate the value (e.g., default value) to be set. However, + it might get passed parameter options which do not fit the + NSF_DISALLOWED_ARG_VALUECHECKED filter. + +2012-07-17 Gustaf Neumann + + - define method "proc" of ::xotcl::Attribute in terms of + ::xotcl::Object proc + + - make sure to have gcc branch hints in generated code + + - honor default type in "info slot names" + +2012-07-17 ssoberni + + - Addressed a number of issues in the NX slot infrastructure + (which revealed themselves when running Mark's + BusinessActivities implementation in XOTcl2 mode): + + - generic/nsf.c: Initcmd blocks (as set for registering per-class + slot traces) were subjected to argument checks causing + unexpected behavior (e.g., attempts of unboxing initcmds as Tcl + lists or of checking initcmds against value types). This was + fixed by exempting NSF_ARG_INITCMD params from argument + checking in ArgumentCheck() explicitly. + + - library/nx/nx.tcl: For per-class parameters, the use of + valuechangedcmd effectively overruled the default value + specified (simply because the generated initcmd holding the + trace statements took the place of the default value). While + for defaultcmd and for valuecmd the parallel use of default is + forbidden, the valuechangedcmd semantics allow for specifying a + default, in principle. This was fixed by providing a + default-setting statement in the initcmd. + - tests/parameters.test: Added tests to cover the above (and + beyond). + + - library/xotcl/library/xotcl2.tcl: Extended the backwards + compatibility of the hybrid XOTcl2/NX slots infrastructure to + the XOTcl 1 interface: This includes support for inline -proc + statements and instvar. This compatibility level corresponds to the + slot interface as documented (by examples) in the XOTcl + language ref and the manual. + + - library/xotcl/tests/slottest.xotcl: Added tests for the above compatibility + enhancements. + +2012-07-16 Gustaf Neumann + + - allow instance property inheritance for traits + +2012-07-11 Gustaf Neumann + + - Don't advertise to use "configure" method for calling + class/superclass in documentation sice we have better + ways. + +2012-06-27 ssoberni + + - Replaced erroneous check using the object-specific rather than + the class-specific options in the query mode of ::nsf::relation + with class-filter. This prevented [::nsf::relation /cls/ + class-filter] from returning any filter info. As a consequence, + the incremental interface of the filter slot failed (e.g., + [/cls/ filter add aFilterProc] effectively reset the + class-filter cmd list instead of adding to it). Thx are due to + Markus Moldaschl for reporting the issue. + - Aligning class-filter and object-filter behavior on errors + during filter additions to the state-preserving behavior of + object-mixin and class-mixin. + - Adding basic tests on object-filter/class-filter (::nsf::relation, + filter slot interface) and specific ones to cover the above issues. + +2012-06-25 Gustaf Neumann + + - added a SlotContainerCmdResolver() to avoid interaction of slot + names with names of callable tcl commands. Without the + SlotContainerCmdResolver() the call to "list" in a property + named "list" leads to a call to the container object + ::Test2::slot::list instead to the intended ::list. The + implementation is not perfect, since it ignores the namespace + path inside the slot container. + - added regression test. + - adding gcc helper files to ignore list + - cosmetical documentation changes + +2012-06-01 Gustaf Neumann + + nsfShadow.c + - bump MethodEpoch when a tcl ::rename command happens on a nsf + method (which might be cached in a Tcl_Obj) This fixes a crash + reported by Arthur Schreiber nsf.c: + - make NsfInstanceMethodEpochIncr() and + NsfObjectMethodEpochIncr() accessible from all files using + nsfInt.h + - remove experimental code (backslash escaping for "," in parameter + option parse + +2012-05-22 Gustaf Neumann + + - remove dependency of generated stub file from nsfInt.h + - fix compilation when dtrace is activated (missing parenthesis, many + thanks to Victor Guerra for noticing) + - document private properties in tutorial and migration guide + - improve wording in documenting + - extend regression test + +2012-05-22 Stefan Sobernig + + - configure, configure.in: Under win, the CLEANFILES missed a + pattern for object files + + - nsfInt.h: Based on the BUILD_nsf convention, the internal + header introduced a TCL_STORAGE_CLASS macro placing the + dllimport attribute (under Win/MinGW builts). As a consequence, + shared and stub builds ended up with function declarations + annotated with dllimport (which for these cases is either + unnecessary or even breaks builds because the dllexport + counterpart is missing, obviously). As nsf.h includes a sane + DLLIMPORT/DLLEXPORT handling (copied over from tcl.h), I simply + removed the special macro handling from nsfInt.h. + + - NsfProcStub(): Use the EXTERN macro rather than extern directly + +2012-05-21 Gustaf Neumann + + - added documentation for "/obj/ info name" to migration guide + and .nxd file + - adding more comments to examples in migration guide + - added design study ruby-mixins.tcl to example-docs and regression test + - minor polishing + +2012-05-17 Gustaf Neumann + + - change "#!/bin/env" into "#!/usr/bin/env" + +2012-05-14 Gustaf Neumann + + - increase backward compatibility for ::xotcl::Attribute by defining + the public methods "set", "exists" and "istype" + +2012-05-14 ssoberni + + - apps/utils/nxdoc: fix shebang path to env ... + + - generic/nsf.c, ObjectDispatch(): Re-arranged the handling of + fully-qualified method dispatches with the selectors resolving + to existing objects and, in particular, nested + (namespace-qualified) objects. Prior to that, dispatches such + as "::C ::parent::child" were not covered appropriately: + ::parent was reported as valid regObj and so the dispatcher + continued to dispatch to the cmd "::parent::child" in the + self-context ::parent::child ... with unwanted side-effects + (e.g., XOTcl's unknown handling was bypassed). + + - tests/methods.test: Added basic tests on the (current) handling for + such ::* dispatches and a specific test set on the intended XOTcl + behavior. + +2012-05-13 Gustaf Neumann + + - start error messages with a lower case word for consistency and to + follow closer to Tcl's conventions + - added "private property foo" + - extended regression test + - allow parens in property names (array syntax) + - added "/obj/ info name" (as alternative to "namespace tail [self]") + - use newer style of tcl-obj interface instead of sprintf + +2012-05-11 Gustaf Neumann + + - implement escaping for comma in value of parameter options: + escaping in values can be achieved via duplicating the comma. + - extend regression test + +2012-05-04 ssoberni + + - library/xotcl/library/xotcl2.tcl: Provided a virtual slot + "multivalued" to establish backward compatibility with XOTcl1; + also, allow old-style class creation based on unknown for + ::xotcl::Attribute + - library/xotcl/tests/slottest.xotcl: Added some tests on backward + compatibility for XOTcl slots + +2012-04-20 Gustaf Neumann + + - explorative implementation of object method dispatches with + KEEP_CALLER_SELF and no NSF_PER_OBJECT_DISPATCH + - extend regression test + +2012-04-16 Gustaf Neumann + + nsf.c: + - refactor ObjectCmdMethodDispatch() for clarity + - prepare work on object method dispatches with KEEP_CALLER_SELF and no + NSF_PER_OBJECT_DISPATCH + - remove debug line + +2012-04-11 Gustaf Neumann + + - fix off-by-one error + - add regression test for keepcallerself with and without + perobjectdispatch + - fix typo + +2012-04-10 Gustaf Neumann + + - serializer: + * pertain perobjectdispatch and keepcallerself in serializer + * extend regression test + + nsf.c: + - generalize stack monitor by handling growing and shrinking + stacks + - refactor into function CheckCStack() + + - serializer: + + * make [::Serializer deepSerialize -ignoreVarsRE "" $o] + behave like [::Serializer deepSerialize $o], since + learn@wu depends on that, and a value for ignoreVarsRE of + empty looks more like an omitted value than a regular + expression, that should match everything. + * extended regression test + + - extended regression test + +2012-04-05 Gustaf Neumann + + - added compile macro NSF_STACKCHECK to provide stack + monitoring/debugging (especially useful for multi threaded + programs, where stack is more limited) + - make ::nsf::log more robust for aolserver/NaviServer, since ::ns_log + is not always around when an output is needed + - don't hide call to make.tcl + +2012-03-09 Gustaf Neumann + + - protect serial generation for parameters via mutex + - fix compilation when compiled without threads (many thanks for + r.zaumseil for noting this). + +2012-03-05 Gustaf Neumann + + - tcl86.test: better implementation of method "each", cleanup and + extension of enumerator tests + +2012-02-29 Gustaf Neumann + + - extended regression tests for yield + - implemented "next" for ruby-like enumerators (each needs still more + work) + +2012-02-27 Gustaf Neumann + + - pass property name to slot "initialize" method to conform with + the interface to "assign", "get" ... (all these receive the + property name as well) + - allow slot "initialize" method to be protected (handled similarly to + "init") + +2012-02-24 Gustaf Neumann + + nsf.c: + - added object parameter option "slotinitialize" + - renamed object parameter option "invokesetter" -> "slotassign" + - call slot.assign instead of setter of object + - removed restriction on nosetter/invokesetter: nosetter can be + used in connection with slotassign + - added regression test for slot.initialize + +2012-02-22 Gustaf Neumann + + - Fixed a bad interaction between Tcl's apply (pushing lambda + frames) and the variable resolvers. The variable resolver was + not able to resolve variables, while the command resolver was + still working correctly. + - Extended regression test + + - Improve wording in instructions + - Improve comments + - Documented dependencies between configure flags and feature + activation cpp macros + +2012-02-17 Gustaf Neumann + + + - improve error message to indicate, that nsf refuses to overwrite + (redefine) some cmds + - don't allow method to overwrite child object + - extended regression test + - documented new feature as incompatibility with XOTcl 1 + +2012-02-16 Gustaf Neumann + + - don't allow object creation to overwrite non-object cmds (e.g. procs) + - improve debug line + +2012-02-16 ssoberni + + - library/lib/nxdoc-xowiki.tcl: Finished and polished the xowiki + backend for nxdoc. Some tests regarding relative paths and the + tree-view generation are pending ... + - library/lib/nxdoc-xowiki.tcl: Use the built-in base64 facility + if running under Tcl 8.6 + - Due to re-introducing nested-object-as-method semantics + lately, nxdoc started stumbling over name conflicts between + nested entity hierarchies (i.e., the entity object + representing "/cls/ class info class" ...) and equally-named + introspection calls on such entities (e.g., a "info class" + call). I made these calls more robust my using -system + dispatches; which is fine as long as we do not have + sth. like "/obj/ info eval". Generally speaking, the risk of + such naming conflicts discredits the use of object nesting + in nxdoc; should eventually be revised. Or, as work-around: + Using a filter on Entity instances to protect/redirect + critical calls. + + - tests/serialize.test: Added some basic regression tests, in + particular to challenge the filter options provided by + Serializer->deepSerialize() and Serializer->all(). + - Included a test for commit 595e6a2. + + - Along the line, two minor issues where fixed: 1) Set + Serializer->ignore() to public, otherwise the various + external message sends to this method would fail; 2) + Object-serialize() did not distinguish between serializing a + per-object or per-class container properly; as a + consequence, per-object containers were not restored at + all. Add a test covering this. + + - library/serialize/serializer.tcl: Due to the split between + serializer and object system serializer, the ignore settings + (passed as object variables, i.e., ignoreVarRE) got + lost. This is fixed now ... + +2012-02-16 Gustaf Neumann + + - treating incompatible forwarding to slot vs. slot option + noaccessor + - extended regression test + + + - use Tcl's EXTERN macro instead of "extern" + +2012-02-04 Gustaf Neumann + + + update release procedure + +2012-02-03 Gustaf Neumann + + - mv next-tutorial (source, images) into own subdirectory + doc/next-tutorial/ + - Bump version number of head to 2.0b4 + - improve wording in documentation + Fisheye: Tag 5bdfdb70f7570bda409acd24efbdc7e73b908c6b refers to a dead (removed) revision in file `ChangeLog-2.0b5-2.0.0'. Fisheye: No comparison available. Pass `N' to diff? Index: ChangeLog-2.0b5-2.0.0.log =================================================================== diff -u --- ChangeLog-2.0b5-2.0.0.log (revision 0) +++ ChangeLog-2.0b5-2.0.0.log (revision 5bdfdb70f7570bda409acd24efbdc7e73b908c6b) @@ -0,0 +1,1720 @@ +2014-10-28 Gustaf Neumann + - Don't complain at final ObjectDeletion about object refcounts unless + we are in development mode + - adding .3 man pages to ease installation + - adding .1 man pages to ease installation + +2014-10-28 ssoberni + + - Effectively remove getstubs from makefile.vc + - Apply stubs* resolution without getstubs to makefile.vc + +2014-10-27 Gustaf Neumann + + - use newest versions, re-generated stub files + - adjust genstubs target to subdir logic + - handle nsfUtil.c from version-specific subdirectory + - binor polishing + +2014-10-27 ssoberni + + - NsfDStringPrintf(): Fix vargs processing under VC 12 + +2014-10-27 Gustaf Neumann + + - get rid of getstubs + - provide actual pkgIndex files + - keep an internal list of Tcl_Objs of type mixinrefs for classes used + as mixins. This list is used for avoiding stale entries in cases the + mixin class is destroyed. + - remove redundant and different prototype + +2014-10-27 ssoberni + + - Bump version numbers in nx.tcl and xotcl2.tcl; adjust license statements + - Rearrange 'make getstubs' slightly, so that we do not require the stub + files present in generic/* for the build machinery to work properly + - Done revising license statements in generic/* + +2014-10-27 Gustaf Neumann + + - fix a heisenbug probably showing sometimes up due to more aggressive + Tcl_Obj sharing in newer versions of tcl 8.6 + +2014-10-27 ssoberni + + - Correct and unify licensing statements in header files + - Fix copyright statements in stubs* files + - Fix copyright dates + +2014-10-26 ssoberni + + - Silence instructions, do not install xowish.in/ xotclsh.in + - Bump version number in win build files + - Trigger generation of pgk index scripts + - Add EXTERN to calm VC12, add missing C files from makefile.vc + +2014-10-25 ssoberni + + - Use correct slashing + - Render file paths in a platform-independent manner + - Make sure genstub.tcl is called in makefile.vc + - Update nmakehlp (required for VC 12+) + +2014-10-24 Gustaf Neumann + + - set the right version number to 2.0.0 + - Make dtplite configurable in Makefile, e.g. make + "DTPLITE=/usr/local/ns/bin/tclsh8.5 /usr/local/ns/bin/dtplite" man + - regenerate documentation + - bump version number to 2.0 (also in .man files) + - add Changelog for 2.0 release + - updated for mongo-c-driver 1.0.2 and MongoDB 2.6.5 + - minor changes were necessary: MongogDB does not allow to delete a + capped collection, one has to use drop + - white-space changes + - move variable declaration to the front + +2014-10-23 ssoberni + + - Fixing listings in shell-wrapper manpages + - Fix a typo reported by lintian + - Fix two more wordings lintian complained about + - Revise manpages; add copyright notes + +2014-10-22 Gustaf Neumann + + - reduce number of unused symbols + - fix a possible double refcount increment for argument converter (e.g. + for normalizing input values). This could lead to small memory leaks. + +2014-10-22 ssoberni + + - Continue man corrections + - Work on corrections for Object.man & friends, based on Thorsten's + proof-reading + - Remove an nxdoc artifact + - Remove unneeded make variables + - Revive nsfConfig.sh: The paths expanded during a configure run were + broken, partly due to substituting obsolete variables + +2014-10-21 ssoberni + + - Use revised interpreter directive throughout + +2014-10-21 Gustaf Neumann + + - fix final refcounting bug: it was possible that classes contained in + Tcl_Objs of type mixinreg were not freed, although their + reference-counter became 0; now all test cases free all tcl_objs and + referenced data structures allocated from nsf + +2014-10-21 ssoberni + + - First solution to provide a multi-step resolution of a Tcl interpreter + in our shell wrappers. Uses some bash scripting to walk a list of + candidates: 1) interp in build directory, 2) interp in install + directory, 3) tcl interp in PATH. Where appropriate (cases 2 & 3), + restricts search to a specific tinterp version. By relying on a generic + shebang line (/bin/sh) we do not run into package-dependency + restrictions on Debian. So a win-win? + +2014-10-21 Gustaf Neumann + + - fix (probably quite old) memory leak when parameter passing fails to + reclaim temporary Tcl_Objs + - fix memory leak with virtual parameters (resolved via args) with + ref-counting + +2014-10-21 ssoberni + + - Adding man pages for shell wrappers + - Adjust file extension for nroff files to reflect manpage section + +2014-10-20 ssoberni + + - Fix the remaining shebangs + - Fix shebang lines + - Remove any nxdoc artifacts from repo, to ease Debian packaging (incl. + binary js is not accepted by lintian + +2014-10-20 Gustaf Neumann + + - fix execution with --enable-memcount=yes: second argument of + NsfMemCountAlloc() and NsfMemCountFree() may be empty + - don't put macro arguments between parens when these are used for + concatenation + - remove // comments + +2014-10-19 Gustaf Neumann + + build system: + - don't call genstubs from configure, since Debian does not seem to + have genstubs.tcl installed. Now, we pre-generate the stub files for + tcl8.5 and tcl8.6 and copy the "right" version depending on the + configured version. + - avoid old-style prototypes + +2014-10-15 ssoberni + + - Done with basic princexml integration, improve Makefile integration + - Provide first stylesheet based on HTML markup by doctools HTML backend + - Integrating manpages into build setup + +2014-10-14 ssoberni + + - Improve wording + - Add a draft section on self-references + - Improve wording in overview diagram of Class doc item + - Working on overview diagram for Class doc item + - Add to the overview diagram + - Adding overview diagram to Object doc item + - Cleanup namespace export statement + - Reflect plural reform in all doc items + +2014-10-10 ssoberni + + - Doc item on nx::configure + - Doc item on nx::current + - Doc item for nx::next + +2014-10-10 Gustaf Neumann + + - minor cleanup of "//"-comments + +2014-10-07 ssoberni + + - Add some documentation on 'info info' + - Make 'info info' behaving as expected again + +2014-10-06 ssoberni + + - Minuscule refactoring, have DispatchUnknownMethod() reset the interp + unknown-state directly, rather than its clients. + +2014-10-06 Gustaf Neumann + + nsf.c: + - make types for bit operations unsigned (mostly flags) + +2014-10-05 Gustaf Neumann + + nx.tcl: + - simplify the info ensembles on nx::Object or nx::Class + significantly, by making use if ensemble-next. + - delete "info unknown", since this is not called. + - extend regression test + + nsf.c: + - implement a new approach to error reporting in ensembles: instead of + trying to find the "right" place to report the best "error", compute + the longest valid ensemble prefix from all the stack frames. + +2014-09-29 Gustaf Neumann + + - make compilation clean again + - improve safety of macro arguments + +2014-09-29 ssoberni + + - Adding a test showing the yet to solve unknown-handling issue in info + ensembles + +2014-09-28 ssoberni + + - Work-in-progress on sanitizing unknown handling in ensembles + +2014-09-28 Gustaf Neumann + + - remove useless distinction from the past + - revise sanity check for tcl _objs in 8.6 once one: length field might + be garbage + - add alternative test for sanity checking of tcl_objs: when bytes not + NULL, length must be 0 or higher + +2014-09-27 Gustaf Neumann + + nsf.c: + - remove redundant definition + - reduce variable scope + - make sure to follow nonnull assumptions + - improve cppcheck flags + + nsf.h + - In Tcl 8.6.1 it might be that a Tcl_Obj has length > 0 but bytes == + NULL. We have to relax out tcl_obj-sanity test for this case to avoid + false-positives from assertions() + +2014-09-22 Gustaf Neumann + + - documentation update to reflect recent changes + +2014-09-17 Gustaf Neumann + + documentation: + - add current args to migration guide + - fix cut&paste error: replace "current currentclass" by "current + calledclass" + + nsf.c: + - remove redundant null check for object and add assertion + - remove duplicate entry for returns_nonnull + - serializer: keep parameter properties in xotcl parameter lists + +2014-08-08 ssoberni + + - Revise Object documentation, align with output from quant.tcl helper + - Reflect recent parameter syntax change in corresponding test + - Revise Class documentation, align with output from quant.tcl helper + - Provide corrections for some syntax strings + +2014-07-09 Gustaf Neumann + + - no need to "set nodashalnum for int types" + - extended regression test + +2014-06-23 Gustaf Neumann + + nsf.c: + - provide error messages for ambiguous abbreviations + - extend regression test (now 5460 tests) + +2014-06-23 ssoberni + + Revised life-cycle section further + +2014-06-23 Gustaf Neumann + + nsf.c: + - dropped unused object::info::is + - renamed ::nsf::methods::class::info::filtermethods -> + ::nsf::methods::class::info::filters + ::nsf::methods::object::info::filtermethods -> + ::nsf::methods::object::info::filters + ::nsf::methods::class::info::mixinclasses -> + ::nsf::methods::class::info::mixins + ::nsf::methods::object::info::mixinclasses -> + ::nsf::methods::object::info::mixins + +2014-06-23 ssoberni + + - Change overview illustration on object life cycle in Class.man + - Adjust for changes in plural reform + +2014-06-22 Gustaf Neumann + + nx.tcl: pluralism reform part 3 + - introduced simple plural form "mixins" and "filters" for + introspection + - moved differentiated interface into slot methods. the + slot methods "get" stay symmetrically to "set", but + additional methods "classes" or "methods" are used like + "guard" to obtain partial results of the mixin and filter + specs + - changed info methods /cls/ info mixin classes -> /cls/ + info mixins /cls/ info filter methods -> /cls/ info + filters /obj/ info object mixin classes -> /obj/ info + object mixins /obj/ info object filter methods -> /obj/ + info object filters + - dropped /cls/ info mixin guard /cls/ info filter guard + /obj/ info object mixin guard /obj/ info object filter + guard + - added /cls/ mixin classes /cls/ filter methods /obj/ object filter + methods /obj/ object mixin classes + +2014-06-21 Gustaf Neumann + + nx.tcl: + - make all __* system methods in nx redefine-protected + - let "nsf::configure objectsystem" return handles and protections as + well + +2014-06-20 Gustaf Neumann + + nx.tcl: pluralism reform part 2 + - changed methods /cls/ info subclass -> /cls/ info + subclasses /cls/ info superclass -> /cls/ info + superclasses /cls/ mixin ... -> /cls/ mixins /cls/ filter + ... -> /cls/ filters /cls/ object mixin ... -> /cls/ + object mixins /cls/ object filter ... -> /cls/ object + filters + - changed configure parameters /cls/ configure -mixin -> + /cls/ configure -mixins /cls/ configure -filter -> /cls/ + configure -filters /obj/ configure -object-mixin -> /obj/ + configure -object-mixins /obj/ configure -object-filter + -> /obj/ configure -object-filters + - added handling for calling relation slot with unknown sub method + +2014-06-20 ssoberni + + - Revising lifecycle section; adding TODOs + - Restructuring __* doc fragments to an life-cycle section + +2014-06-19 Gustaf Neumann + + nsf.c: + - allow abbreviated nonpos args + - change name of relation slot "superclass" to "superclasses". (part of + a planned change to use plural for setvalued parameters, "info + superclasses" and similar changes for mixins/filters will probably + follow) + +2014-06-18 Gustaf Neumann + + nsf.c: + - define means to protect "undefined" internally-directly + called methods __alloc and __dealloc in nx. This is + achieved mostly via a an additional value in a method + declaration in ::nsf::objectsystem::create. Example: + -class.dealloc {__dealloc ::nsf::methods::class::dealloc + 1} + - extend regression test + +2014-06-18 ssoberni + + - Adding missing doc fragments on __* methods for Object and Class + +2014-06-17 Gustaf Neumann + + nsf.c: + - relax the meaning of noleadingdash to allow negative + numbers + - rename noleadingdash to e.g. nodashalnum + +2014-06-16 Gustaf Neumann + + - extend regression test + - update parse context + - remove debugging output + - improve argument name + +2014-06-15 Gustaf Neumann + + - extended regression test + - cleanup, reduce verbosity + - minor cleanup + - allow to configure verbosity in test sets + + genttclAPI.tcl: + - added option "-flags", which can be used for every + parameter. example: .... -flags NSF_ARG_NOLEADINGDASH .... + - experimental: use NSF_ARG_NOLEADINGDASH for pattern "info subclass" + to improve error messages. + + nsf.c: + - checked, that all CallDirectly() cases, where method is + dispatched (no direct call) are covered by the regression + tests + - avoid double memcpy() in dispatch recreate by using + ObjectDispatch() rather than CallMethod() + - removed memcpy() in call-directy for "create" + - some more cleanup + +2014-06-14 Gustaf Neumann + + nsf.c: parameter passing reform + - don't pass full argument list for filtering methods calle + further methods from C (such as new/create/... ) to allow + processing of e.g. "--" in "new" to separate arguments to + "new" cleanly from arguments passed to "create". Now we + can use e.g. "C new -- -childof 123" in case class C has + a property "childof". + - extend c-generator to accept option "-objv0" to pass the + original "objv[0]" to the called command. Since we had + previously "allargs", we have to pass the objv[0] now + differently + - more thorough checking ISOBJ(someObj) macro for asserts + (use "assert(ISOBJ(someObj))" instead of just + "assert(someObj)") + - extend regression test + +2014-06-13 Gustaf Neumann + + - fix parse context initialization + +2014-06-12 Gustaf Neumann + + - collecting arguments + +2014-06-11 Gustaf Neumann + + - fix shutdown comparison + - don't invalidate class-level param caches during shutdown + - add assertions for class colorings + +2014-06-11 ssoberni + + - Clarify usage of 'current methodpath' in defaultmethod of ensembles + - Editing TODO + - Add doc fragment on new + - Adding missing info sub-method docs for Class, document -dependent flag, + and method create + +2014-06-11 Gustaf Neumann + + - simplify test + - use 3-argument version of NsfMethodNamePath() + +2014-06-11 ssoberni + + - Add basic test for unexpected-#-args error in ensembles + - Adding to the state of the method-path introspection reform; + introducing CallStackGetFrame() which can also be used to implement + CallStackGetTopFrame + +2014-06-10 Gustaf Neumann + + nsf.c: + - fix name paths in error messages triggered from ArgumentParse() + - move NsfMethodNamePath() out of NsfUnexpectedArgumentError() and + NsfUnexpectedNonposArgumentError() + - no need to call NsfMethodNamePath in NsfArgumentError() + - move NsfMethodNamePath() out of NsfUnexpectedArgumentError() and + NsfUnexpectedNonposArgumentError() + - move NsfMethodNamePath() out of NsfObjWrongArgs() + - added option "-dependent" to "info subclass" + - extended regression test + +2014-06-10 ssoberni + + - Working on info sub-methods for Class + +2014-06-09 Gustaf Neumann + + - white-space change + + nsf.c + - base MixinInvalidateObjOrders() on DependentSubClasses() + and avoid the need of using a separate hash table for + class-mixin handling. The new implementation is several + times faster and improves the speed of the functions + CleanupDestroyClass(), SuperclassAdd() and + NsfRelationClassMixinsSet(). Adding a class-mixin to + ::xotcl::Object in OpenACS is more than 4x faster. + - remove obsolete function MixinResetOrderForInstances() + - rename ResetOrderOfClassesUsedAsMixins() to + ResetOrderOfObjectsUsingThisClassAsObjectMixin() + - used consistently DependentSubClasses() instead of + TransitiveSubClasses() for invalidations. + - extend regression test + +2014-06-08 Gustaf Neumann + + - fix a few more cases, where required accessor method "get" was missing + - omit warnings, when value of "expected" looks like a non-positional + parameter + +2014-06-07 Gustaf Neumann + + nsf.c: + - improve performance of MixinInvalidateObjOrders() by + about 30% by recompiling the list of the dependent classes + over and over again, since MixinInvalidateObjOrders() + iterates over the full list already. + - Document NsfRelationClassMixinsSet() and add nonnull declarations and + the usual assertions() + +2014-06-06 Gustaf Neumann + + - added experimental code feature CYCLIC_MIXIN_ERROR + +2014-06-05 Gustaf Neumann + + nsf.c: + - new function DependentSubClasses() to determine all + classes that inherit from a given class. The result + extend TransitiveSubClasses() by including class mixin + relationships. + - simplify NsfParameterCacheClassInvalidateCmd() by using the new + function DependentSubClasses(). With the new implementation, + NsfParameterCacheClassInvalidateCmd() is as efficient as before without + to MostGeneralSuperclass optimization (but being complete now) when + working on the root classes (an more efficient on subclasses). + +2014-06-04 Gustaf Neumann + + - fixed error message for forward ... onerror and method paths. The + command "C object mixin" returns now "::C object mixin + add|clear|delete|get|guard|set" and not "::C mixin + add|clear|delete|get|guard|set" as before. + +2014-06-03 Gustaf Neumann + + - add ".add" file for mongodb interface + - use cget interface + - rename nsf::parameter:invalidate::classcache -> + nsf::parameter::cache::classinvalidate + nsf::parameter:invalidate::objectcache -> + nsf::parameter::cache::objectinvalidate + reasons: (a) remove single colon inside the name, + (b) put verb to the end + + - use functions IsRootClass(), IsRootMetaClass() and + IsBaseClass() to access object/class properties + - add gcc attribute "pure" + + nsf.c: + - cleanup of NsfParameterInvalidateClassCacheCmd(): performance + improvements. After the fixing of indirect mixin validation, + performance of invalidation went up by a factor of 5. At least, in some + important cases (invalidation of rootclasses like nx::Object / + xotcl::Object), we are again on the same level as before (actually + slightly faster). + +2014-06-02 Gustaf Neumann + + - reduce variable scopes + - fix error message + - add target for cppcheck with same arguments as for compilation + +2014-06-02 ssoberni + + - Removing traces of nxdoc + +2014-06-01 ssoberni + + - Fixing an example script for changes in getter/setter reform + +2014-06-01 Gustaf Neumann + + - updated migration guide and tutorial to reflect recent changes + - minor cleanup + - improve spelling + - update of TODO and regression test + - adapt mixinof.test to the additional information + - transform mixinof.test to newer style regression test with automated + object deletion + - add test file nsf-cmd.test + - ignore generated .txt files + + nx.tcl: + - removed /cls/ info configure parameters /cls/ info configure /cls/ + info syntax Use e.g. "/cls/ info lookup parameters create" instead + +2014-06-01 Gustaf Neumann + + - nsf.c: + - Let "/cls/ info mixinof -closure" return as well implicit mixin + classes to make it easier to determine class dependencies. + Example: + nx::Class create M0 + nx::Class create M1 -superclass M0 + nx::Class create M2 -superclass M1 + nx::Class create C + nx::Class create D -superclass C + C mixin add M2 + # M2 is mixed into C, and implicitly into D + # + # Since M2 is a subclass of M1, classes C and D depend as well + # on M1 and M0, as seen in the heritage: + ? {C info heritage} ":M2 ::M1 ::M0 ::nx::Object" + ? {D info heritage} ":M2 ::M1 ::M0 ::C ::nx::Object" + # previously, only "M2 info mixinof -closure" showed the + # mixin relations, even with "-closure", while M1 and M0 did not. + ? {M2 info mixinof -closure} "::C ::D" + # now these show the same relations (in this example). + ? {M1 info mixinof -closure} "::C ::D" + ? {M0 info mixinof -closure} "::C ::D" + +2014-06-01 Gustaf Neumann + + - handle ensembles in info nx::help + - harden code + + mongodb: + - upgrade to the newly released version 0.96 of the c-driver + - replace deprecated function mongoc_collection_delete by + mongoc_collection_remove + - tested with MongoDB v2.6.1 + +2014-05-31 Gustaf Neumann + + - provide a minimal nx::help + - provide contextObj when required argument is missing + + nsf.c: + - added options to filter output from ::nsf::cmd::info + parameter options (args, syntax, parameter) + - deleted: + - "/obj/ info lookup configure parameters ?pattern?" + - "/obj/ info lookup configure syntax" + - added: + - "/obj/ info lookup parameters /methodName/ ?pattern?" + - "/obj/ info lookup syntax /methodName/ ?pattern?" This + covers as well + - "/obj/ info lookup parameters configure|create|new|... + ?pattern?" + + - extend regression test + - remove dead code + - white-space change + - improve error message + + nsf.c, gentclAPI.tcl: + - new argument types "virtualobjectargs" and + "virtualclassargs" for context-specific argument + resolutions: when a context object is provided, arguments + of type "virtualobjectargs" are determined based on the + slots applicable for the object (like "... lookup ..."), + arguments of type "virtualclassargs" are resolved against + a class. These types are used as follows: /obj/ configure + /virtualobjectargs/ /cls/ create /name/ + /virtualclassargs/ /cls/ recreate /name/ + /virtualclassargs/ /cls/ new ?-childof /obj/? + /virtualclassargs/ This new feature allows us to provide + better error messages and to make much of the "... info + ... configure parameter ..." infrastructure much less + important. + - For "virtualclassargs" we need the functionality to + obtain from the C-Code based on a class the configure + parameters applicable to objects of this class. + - add argument "-context ..." to "cmd::info" to pass the + context object (so far the only place where the + context-object is used) + - object system configuration parameters changes: new: + -class.configureparameter new: -object.configureparameter removed: + -class.objectparameter + +2014-05-30 Gustaf Neumann + + nsf.c + - renamed parameter::get -> parameter::info + - renamed method::get -> cmd::info + + gentclAPI.tcl: + - handle duplicated domains by folding these to a single definition + + nsf.c: + - added command nsf::method::get. + Rationale: provide a central place to obtain information + about all kind of method handles, which might be + - scripted and c-based methods + - nsf::procs + - plain tcl procs + - cmds (with and without parameter definitions) + - make results of ListMethod() robust against missing + information (e.g. plain tcl cmds, missing object registrations, + etc.) + - factor out common code for ListMethod call sites + for per-object methods, instance methods and procs/cmds + to ListMethodResolve() + - return errors from failing converter registrations + - extend regression test (new test set nsf-method.test) + +2014-05-30 ssoberni + + - Done with first version of Class.man + +2014-05-29 Gustaf Neumann + + - also drop class level "info configure" + + nx.tcl + - drop short form "/obj/ info configure" for now + - make output of "/obj/ info lookup configure syntax" equivalent to + "/obj/ info configure" + - updated TODOs + - updated documentation + - simplify slot parameter settings for object-mixins and object-filter + lightly by omitting redundant method name + - minor cleanup + +2014-05-29 ssoberni + + - Some polishing of Object.man + - Done with 'info method *' ensemble + - Working on 'info object *' ensemble + +2014-05-28 Gustaf Neumann + + - make error-checks as unlikely to succeed + - we must replace ::get command with ::set commands for reestablishing + relationships + - return class of desired object in nsf::parameter::get when provided + + nsf.c: + - extend nsf::parameter::get to obtained more detailed + information for objects/classes/metaclasses/baseclasses + and specified types + - extend regression test + +2014-05-28 ssoberni + + - Add doc fragment about 'info variable *' + +2014-05-28 Gustaf Neumann + + nx.tcl + - switch from "/obj/ info parameter" -> "nsf::parameter::get" to reduce + potential semantic confusion of info options. "info parameter" was + not object/class specific at all, but is just a syntax extractor + + nsf.c + - force again literal "-guard" in a "mixinreg" type to + avoid potential confusions + - Base nsfRelationSet for mixins on cmds rather than + TclObjs to avoid confusions and duplication of guard + detection logic + - Add interp to NsfMixinregGet() and NsfFilterregGet() to + be able to return error messages + - return more error message from mixinreg converter + - provide at least minimal support for "funny class names" + (i.e. containing spaces) + - FinalObjectDeletion: don't enforce namespace = 1 for + cases with weird namespace deletion order + - extended regression test + +2014-05-28 ssoberni + + - Amend doc of filter|mixin clear, re-instate -guard in filter|mixin set + - Adding doc for the two new lookup sub-methods + +2014-05-27 Gustaf Neumann + + - added methods "info lookup filters ?-guards? ?/pattern/?" + and "info lookup methods *-guards? ?/pattern/?" + - extended regression test + - have "filter|mixin clear" return the list of former|removed + filters|mixins. + - disallow arguments for "... info configure" + +2014-05-27 ssoberni + + - Complete info lookup doc + - Adjust filter|mixin method for recent changes; working on info ensemble + doc + +2014-05-27 Gustaf Neumann + + - improve handling of space in object names + + nsfObj.c: + - allow to omit "-guard" within arguments to flag + definition of a filter/mixin guard + - extended regression test + + - name parameter option "slotset" instead of "slotassign" + - use "mixin|filter clear" instead of "mixin|filter unset" + +2014-05-26 Gustaf Neumann + + nsf.c: + - fixed unary argument passing notation for "-nocomplain" of nsf::var + and for 42 other options of other commands + + nx.tcl: + - added flag -nocomplain to "/obj/ /prop/ unset ?-nocomplain?" + - renamed nsf::relation to nsf::relation::set and added + nsf::relation::get in accordance with nsf::var::get + + nsf.c: + - added nsf::var::get and "::nx::var get" to provide selector based + interface for variable reading (used in slot-method get of + nx::VariableSlot) + - cleanup of nx.tcl and TODO + +2014-05-26 ssoberni + + - Updated doc fragments to reflect recent changes + +2014-05-26 Gustaf Neumann + + nsf.c: + - finish implementation of NsfForwardPrintError() + - use NsfForwardPrintError() in ForwardArg() for all error messages + + traits: + - define simple setter methods "requiredMethods" and + "requiredVariables" to avoid to "set" these explicitly + - fix compilation for OpenSolaris (e.g. OmniOS) + +2014-05-25 Gustaf Neumann + + - fix compilation for OpenSolaris (e.g. OmniOS) + +2014-05-23 Gustaf Neumann + + - cleaned up relation slot mixin variants + + nx.tcl: + - reworked error message generation of slot-forwarder (list all + available slot methods with prefix value=) + + xotcl2: + - use xotcl::RelationSlot instead of nx::Relationslot in xotcl2 + (we can more value=assign here). + - fix load paths for sub-libs (e.g. mongodb) in regression test + + nx.tcl: + - add slot method value=unset to nx::RelationSlot and + nx::VariableSlot + - extended regression test + - added likely/unlikely to result == TCL_OK etc. + + xotcl2: + - use value=set instead of value=assign + - simplify "-parameter" implementation + - add setters for "name", "domain", and "default" to xotcl::Attribute + for backward compatibility + + mongodb: + - by directing calls to the setter, it is now more complex + to determine the true calling object for an converter, + since the set operation might be routed though the slot + object. It would be nice to have framework support for + this. + - fix 2 error messages + - provide shorter tracebacks by using "return -code error ..." rather + than "error ..." + + nsf.c: + - fix one more subtle case of an error being swallowed: for xotcl, the + constructor returns the list of residual arguments. In case there was + an error, it was possible that the returned residual arguments + overwrote the error message in the interp result + +2014-05-23 ssoberni + + - Adjust variable doc for recent changes + - Extending mixin/filter doc to cover guards + - Adding filter doc fragment + - Adjust mixin doc for recent changes + - Adjusting property doc to reflect recent changes + +2014-05-22 Gustaf Neumann + + - don't delete system slot ::xotcl::Attribute on cleanup + + nx.tcl, xotcl2.tcl: + - use value=* as names for internally called and + forwarder-called accessor methods + - disallow "assign" for nx::variableSlots + + nsf.c: + - rename default slot methods add/get to value=add/value=get + - provide an error message, when referring to a non-existing slot object + +2014-05-21 Gustaf Neumann + + nx.tcl: + - use set/get/add as slot methods for + get/configure/incremental operations + - demangle slots for nx/xotcl2 further + + xotcl2: + - use assign/get/add as slot methods for get/configure/incremental + operations + - use object system configuration for -slot.get and -slot.set + - allow configuration of internally called "slot.get" and "slot.assign" + methods via objectsystem::create + +2014-05-20 Gustaf Neumann + + - enforce usage of "get" for all slots in nx + - TODO: check, what in detail "parameter" in xtocl2 inherit from + nx::variableslot (e.g. needsForwarder?) + - enforce using "set" for filter/object-filter in slot operations (same + as for mixins) + + nx.tcl: + - remove setter methods from BootstrapVariableSlots + - reducing interface of BootstrapVariableSlots by setting methods + protected + +2014-05-18 Gustaf Neumann + + - put test cases for all kind of mix setter / getter together in one + test case + - reduce verbosity + + nx.tcl: + - add "set" as a method name for relation slots + - implemented relation slot "mixin" and "object-mixin" via + "slotassign" to disallow "/obj/ mixin /value/" and "/obj/ + object mixin /value/" to use instead "/obj/ mixin set + /value/" and "/obj/ object mixin set /value/" while + keeping "configure" and "cget" working. This has the + advantage that "/obj/ mixin set" does not try to replace + the mixin chain by "set" + - adapted regression test + - TODO: check, if we need the explicit "slotassign"? isn't + the presence of the slotObj sufficient? maybe + "-forwardToSlot" in relationSlots? + - TODO: demangle "slotassign" in "ObjectParameterSlot + protected method getParameterOptions" and check + interactions + - TODO: to the same as -mixin and -object-mixin to -filter + and -object-filter + - TODO: clean up relation slot mixin variants + - TODO: do we really like the fact that we have to write + now "B mixin set M2" instead of "B mixin M2"? + - TODO: should we disallow "B mixin" and enforce instead of + "B mixin get" ? + - TODO: we could as well allow "B mixin clear" instead of + "B mixin set {}" + - TODO: allow "set" for variable slots as well. Do we need "assign"? + + nsf.c: + - allow parameter option "method=" for slotassign as well. + rationale: this allows to use the parameter + "forwardername" to specify a different forwarder target + method (e.g. in case of object-mixins). The method is + used both in "configure" and "cget". + - allow method name to consist of max tow words in relation slots (e.g. + "-methodname {mixin set}"} + +2014-05-17 Gustaf Neumann + + - extend bagel example slightly + - finalize dropping of setter methods for nx + - show info line for every test case + +2014-05-16 Gustaf Neumann + + - add flag "-onerror" to nsf::forward::method to handle + errors during dispatch of a forwarder (not all error + messages of forwarder are already transformed) + - added log-level Info which prints always, e.g. for + "-verbose" flag of forwarder + - drop setter-rule from properties (use always forwarder) + + - drop "/obj/ /prop/" and "/obj/ /prop/ /value/" in favor of + "/obj/ /prop/ get" and "/obj/ /prop/ assign /value/" + to achieve better orthogonality with e.g. incremental properties + +2014-05-14 Gustaf Neumann + + - replace empty-named arrays by dicts + +2014-05-13 Gustaf Neumann + + - fix change of semantics when default multiplicity (1..1) is combined + with lower bound preserving incremental (results in 1..n instead of + 0..n previously) + +2014-05-12 Gustaf Neumann + + - make sure that nsfDtrace.h has a newer timestamp than nsfDtrace.d + - preserve lower bound of multiplicity when incremental is + added + - extend regression test + - added more test cases for multiplicity and incremental + + nx.tcl: + - Define method "value" as a slot forwarder to allow for + calling value-less slot methods like e.g. "get" despite + of the arity-based forward dispatcher. + - extend regression test + +2014-05-12 ssoberni + + - Adding doc fragment on mixin method + +2014-05-12 Gustaf Neumann + + - remove over-eager nonnull declaration + - remove done entries from TODO + +2014-05-11 Gustaf Neumann + + - add fixes for tcl 8.6 + - finish non-null handling for tcl 8.5 + - continuing with nonnull assertions, various small cleanups + +2014-05-10 Gustaf Neumann + + - complete nonnull assertion cleanup to 80% of nsf.c + - complete nonnull assertion cleanup to 33% of nsf.c + - improve source code documentation + - simplify SuperclassAdd() + - improve code documentation + - complete nonnull assertion cleanup to 50% of nsf.c + - simplify FilterInvalidateObjOrders() and + FilterRemoveDependentFilterCmds() + - complete nonnull assertion cleanup to 33% of nsf.c + +2014-05-09 ssoberni + + - Add argument to last discussion item + - Add another incremental TODO + - Adding discussion items + +2014-05-09 Gustaf Neumann + + - finishing checking of first 25% of of nonnull assertions in nsf.c + - added still more nonnull assertions + +2014-05-09 ssoberni + + - Drafted a variable doc fragment, and revised the property's one to make + the (subtle) difference clear + +2014-05-09 Gustaf Neumann + + - added shortcut for MixinSearchProc when mixinOrder is NULL + - work on nonnull + +2014-05-08 Gustaf Neumann + + - let the c-code generator produce as well nonnull assertions + - commenting item + - made nsf::is using the "-strict" option when tcl's "string is" is + called. + +2014-05-08 ssoberni + + - Adding incremental doc to property doc fragment + +2014-05-08 Gustaf Neumann + + - complete nonnull+assert adding in .c-files other than nsf.c + +2014-05-08 ssoberni + + - Adding todo on multiplicities + +2014-05-08 Gustaf Neumann + + - add asserts to nsfError.c + - fixed all over-eager nonnull cases for optimizing with gcc and clang + (works up to -O3 except gcc 4.9.0) + +2014-05-07 Gustaf Neumann + + - added nonnull for args of type Tcl_Command and ClientData + - add asserts for nonnull + +2014-05-07 ssoberni + + - Starting documenting info ensemble + +2014-05-06 Gustaf Neumann + + - provide nonnull statements for all functions in nsf.c + - some more code cleanup + - complete asserts due to nonnull + +2014-05-05 Gustaf Neumann + + - update more copyright notices + - update copyright notices + - update copyright notice + + nsf.c: + - simplify few inner code pieces based on assertions + - add several more assertions based on nonnull specifications. + - use nx rather than xotcl2 terminology in nsf::method::forward + +2014-05-04 Gustaf Neumann + + - renamed "-methodprefix" to "-prefix" in nx, since the prefix can be + applied as well applied to a cmd. + +2014-05-04 ssoberni + + - Adding doc fragment about require method + +2014-05-03 ssoberni + + - Adding a todo + - nsf.c, NsfForwardMethod(): Make sure that a 2nd argument + is available for prepending the methodprefix. Earlier, + NSF crashed in case of a missing 2nd arg. + - Added some basic tests on -methodprefix. + +2014-05-03 Gustaf Neumann + + - use nonnull variable attributes for prototypes (nsf.h, nsfInt.h, + nsf.c) + + nsf.c: + - de-spaghetti precedence computations for multiple + inheritance and improve documentation + - get rid of // comments + - stubsPtr can't be NULL there + +2014-05-02 Gustaf Neumann + + - remove false alarm + - deactivated "-onerror", since its semantics are expressible via + try/catch, and there are no regression tests for xotcl and nx, and we + could not find any script that uses this + +2014-05-01 ssoberni + + - Adjusting forward doc, adding TODO + - forward.test: Adding some tests + +2014-05-01 Gustaf Neumann + + - use in forwarders "-frame object" instead of "-objframe" in nx for + consistency with other calls (e.g. dispatch). Other values for + "-frame" are not allowed. (btw, XOTcl has "-objscope") + - move "checkalways for forwarders and aliases" to RFEs and comment it + + forwarders: + - use for output of forward ... -verbose NsfLog(...NSF_LOG_NOTICE...) + instead of fprintf() to make it redirect-able + - RFE "provide %method" as keyword like %proc" was already + implemented. Dropping %proc would break XOTcl2 + compatibility. + - adding a test case + +2014-04-30 ssoberni + + - Continue working on forward doc, adding some tests + - Adding some todos + - Working on Object.man, in particular forward + - library/nx/nx.tcl: Pulling out method contracts (pre- and + postconditions) from NX for the time being. Corresponding tests have + been commented out or, if applicable, turned into XOTcl2-specific tests. + +2014-04-30 Gustaf Neumann + + - finalize autoconf quoting + +2014-04-29 Gustaf Neumann + + - fix configure.ac quoting + - stick closer to TEA conventions (keep tclconfig-sh in + tclconfig directory) + - remove obsolete version of install-sh, copy manifested + version to mongodb library + - fix more configure quoting + +2014-04-18 ssoberni + + - Adding doc fragment on 'method' + +2014-04-14 ssoberni + + - doc/Object.man: Adding documentation on alias (doc/alias.man.inc) and + delete (doc/delete.man.inc) + +2014-04-14 Gustaf Neumann + + small introspection reform: + - Introspection for commands and arguments did not work for + cmds defined in sub-packages (such as mongodb). We keep + now this information in hash tables and maintain a slim + interface for this. + - fix generation of pkgIndex.tcl for mongodb + +2014-04-08 ssoberni + + - Some more refactoring + - Refactor the include file slightly, so that Object/Class-specific + parameters etc. of a shared method documentation can be provided in the + respective Object.man/Class.man files + - Continue working in man pages, introducing a first shared section using + [include] and [vset] + +2014-04-06 Gustaf Neumann + + - tested with MongoDB v2.4.10 and J mongodb-c-driver 0.94.1 + - moving .m4 files to subdirectory as recommended + - update generated configure files + - replace obsolete autoconf macros + - replace obsolete autoconf macros + - update to must recent build files (tcl.m4 and install-sh) from tcl + source repository + +2014-04-05 Gustaf Neumann + + build-process: + - replace make.tcl by the much simpler mkIndex.tcl: + * Does not use pkg_mkIndex + * Does not load binary files (problem for cross compiling) + * Requires package provide with constant in one line. + +2014-04-03 Gustaf Neumann + + - reduce variable scope + - remove redundant NULL tests + - improve safety mof macro ObjStr() + +2014-03-31 Gustaf Neumann + + - improve code documentation + - add some more tests to the regression test suite + +2014-03-29 ssoberni + + - generic/nsf.c: Avoiding excessive allocation/deallocation of + temporary hash tables when invalidating per-class objparam caches in + NsfParameterInvalidateClassCacheCmd(). + +2014-03-29 Gustaf Neumann + + - extend regression test + +2014-03-29 ssoberni + + - generic/nsf.c: Use GetAllClassMixinsOf() instead of + TransitiveSubClasses() when invalidating per-class caches. Added two + tests. + +2014-03-28 Gustaf Neumann + + nsf.c: + - remove obsolete code + - invalidate parameter caches of subclasses on + NsfParameterInvalidateClassCacheCmd unless during + shutdown. Otherwise some classes might not become aware + of properties added later to superclasses. + - extended regression test + +2014-03-25 ssoberni + + - Adding to Object.man: cget, configure, move, copy, ... + +2014-03-23 Gustaf Neumann + + nx-mongo: + - added command "::mongo::status /mongoConn/" + - extended regression test + +2014-03-22 Gustaf Neumann + + nsf.c: + - fix case, where NsfDStringPrintf() failed (when print + llength including \0 was 1 byte longer than print buffer) + - make sure, that the list kept for the cached parameter is just built + from unshared objects; otherwise Tcl append will abort + + nx.tcl: + - new package "nx::volatile" + - don't define configure parameter "-volatile" per default; + use "package req nx::volatile" instead + - don't define per method "volatile" per default; + use "::nsf::method::require ::nx::Object volatile" instead + - get rid of -volatile in nx.tcl and serializer + - update/extend regression test + + nsf.c: + - fix case, where NsfDStringPrintf() failed (when print llength + including \0 was 1 byte longer than print buffer) + - added mongo::cursor::aggregate + +2014-03-21 Gustaf Neumann + + - added mongo::collection::stats + - extended regression test + +2014-03-19 Gustaf Neumann + + nx-mongo: + - fixed surprising compiler message "alignment of array + elements is greater than element size" when using e.g. + "bson_iter_t i[1]" + - some c-code cleanup + - tested with mongodb-c-driver 0.92.3 + +2014-03-17 ssoberni + + - Started working on an authoritative man page for nx::Object, still + cleaning up and still tweaking the doctools markup + +2014-03-15 Gustaf Neumann + + - mongodb's c-driver changed version number from 0.93.0 to 0.92.1; + followed the change in README + +2014-03-14 Gustaf Neumann + + - tested with mongodb-c-driver 0.93.0 + +2014-03-12 Gustaf Neumann + + - since mongoc_gridfs_get_files is supported since today by the + mongo-c-driver, we do not need it private implementation any more. + all dependencies on private header files are removed by now. + +2014-03-09 Gustaf Neumann + + - adjust to newest version of mongo-c-driver + - remove one dependency for private header file + +2014-03-07 Gustaf Neumann + + - move close of the pseudo comment for syntax highlighter out of quoted + block + +2014-03-04 Gustaf Neumann + + xotcl2: + - prevent strange error messages, when "abstract" is called with quotes + in the argument list. + +2014-03-02 Gustaf Neumann + + - represent BSON_TYPE_REGEX as pairs (regexp + options) in + the Tcl representation to preserve regular expression + options + - update to newest version of mongo-c-driver and libbson from Github + + nx-mongo: + - optional support for mongodb connection pools (compile + time macro USE_CLIENT_POOL controls this, per default, + this is on) + - allow to pass "-metadata" to gridfile::create to ease + metadata attachment to grid-files + - some convenience improvements in nx-mongo.tcl (ability to + ignore attributes in "bson encode", ability to unset + attributes in gridfs, ...) + - bump version numbers of nsfmongo to 0.3 and nx-monogo to 0.5 + +2014-02-26 Gustaf Neumann + + nsf.c: + - let [current methodpath] return full path (similar to + -path option in "info methods" + - handle collateral damage in regression test due to changed result of + "current methodpath" + - add traits.test to the regression tests + + nx::traits: + - handle ensemble methods correctly (use full method path + for resolution) + - add new regression tests for traits + + nsf.c: + - fix small memory leak in multiple inheritance code. + - all regression tests rerun cleanly with --enable-memcount=yes + +2014-02-25 Gustaf Neumann + + - raise an error, when an ensemble methods redefined a plain method + - add incr/decr refcount for callInfoObj in unknown handling + - deactivated suspicious assert() in NsfMethodNamePath() + + nsf.c: + - change name of enumeratorConverterEntry to + Nsf_EnumeratorConverterEntry, move it with NSF_ARG_* + flags to tcl.h to make it available in derived modules + using the converter + - Added editor hints for a more uniform appearance + + - change configure flags from --with-mongodb to --with-mongoc=... and + --with-bson + + nx-monogo: + - Updated the mongo-c-driver and libbson to the actual tip + version from Github (this is a significant change, since + 10gen essentially changed the officially supported + c-driver of MongoDB) + - mongo-c-driver was more or less new-implementation, since + structure and names changed in the mongo-c-driver + substantially, several functions were added, several + were dropped. The new interface supports now e.g. mongo + URIs, and should be faster (by using collection objects + instead of connection handles) + - Although the low-level nsf interface changed + significantly, the high level (nx level) interface + remained unaffected. + - Configure has now --with-mongoc=... and --with-bson + instead of --with-mongodb + - New commands: mongo::collection::open /mongoConn/ + /dbName/ /collectionName/ mongo::collection::close + /collection/ mongo::gridfs::store_string /content/ /name/ + /contentType/ + - Make use of the new collection handle mongo::count + /mongoConn/ /ns/ ... -> mongo::collection::count + /collection/ ... mongo::index /mongoConn/ /ns/ ... -> + mongo::collection::index /collection/ ... mongo::insert + /mongoConn/ /ns/ ... -> mongo::collection::insert + /collection/ ... mongo::query /mongoConn/ /ns/ ... -> + mongo::collection::query /collection/ ... mongo::remove + /mongoConn/ /ns/ ... -> mongo::collection::delete + /collection/ ... mongo::update /mongoConn/ /ns/ ... -> + mongo::collection::update /collection/ ... + mongo::cursor::find /mongoConn/ /ns/ ... -> + mongo::cursor::find /collection/ ... + - nsf::mongo::connect receives now a mongoc_uri + https://github.com/mongodb/mongo-c-driver/blob/master/doc/mongoc_uri.txt + - The gridfs interface allows now to store multiple + revisions of a file + - The gridfs interface allows now upload files from a string + - The gridfs interface allows to refer to files by other + attributes than just the filename (e.g. the mongo id). + - Modified/new grid-file functions mongo::gridfile::create + ?-source file|string? /gridfs/ /value/ /name/ + /contentType/ mongo::gridfile::delete /gridfs/ /query/ + mongo::gridfile::open /gridfs/ /query/ + - Updated README + - Updated regression test + - Added editor hints for a more uniform appearance + +2014-02-20 ssoberni + + - nx.tcl: Throw error exceptions using "return -code error", to exclude + the unevaluated error cmd statement from the trace message + - At two or three locations, we used to compute the method path using + different helpers (CallStackMethodPath, NsfMethodNamePath) etc. I + tried to unify this by revising NsfMethodNamePath to accomodate the + different uses. + - Besides, for required-argument checks, I included the method path + (for ensemble invocations) into the error messages. + +2014-02-17 Gustaf Neumann + + - improve performance of mongo->tcl conversion by using predefined + global strings + + nx-mongo: + - updated documentation (switch back to mongo-c-driver, but + comment usage of tagged version v0.8.1) + - added support for rep types (allow for mappings between + certain instance variables such as arrays or dicts to + customizable representations in MongoDB) + - added nx-serialize to test cases (simple state + persistance for nx objects) + - added nx-rep to test cases (rep types for "array" and "dict") + - provide datarootdir to get rid of warning during configure + +2014-02-14 Gustaf Neumann + + - fix bug in interaction between up-level method from tcl procs + + -nsf.c: + - fix bug in interaction between uplevel method and + interceptor transparency + - extend regression test + +2014-02-07 Gustaf Neumann + + - in case of multiple inheritance, make sure that all supporting + classes haver already a precedence order defined + +2014-02-04 Gustaf Neumann + + - implement simple persistent handle management based on per-thread + objects + - reduce verbosity for FreeUnsetTraceVariable + - return TCL_OK, even when FreeUnsetTraceVariable() fails (warning + stays) + - improve worrying in comments + - fix stub provisioning for Tcl 8.6.* + - change macro name from XOTCL to NSF + +2014-01-26 Gustaf Neumann + + nx: + - allow copy of objects with required arguments + - use ::nsf::object::alloc in "copy" method + - don't depend on method "trace", use directdispatch instead + - remove method "-noinit" (nsf::object::alloc makes it + obsolete) + - extend regression test + - restore traces after object-serialize + + nsf.c: + - when ::nsf::object::alloc is passed an empty name (2nd argument), + behave like "new" method + +2014-01-25 Gustaf Neumann + + - don't rely on the existence of a "trace" method + + nsf.c: + - new command ::nsf::object::alloc /class/ /obj/ ?/script/? alloc an + object and execute script in the context. Can be used to regenerate + an object in a old state. + serializer: + - fixed loading of objects with required data in the blueprint + (many thanks for david hopfmueller for reporting this) + - make use of nsf::object::alloc (1 command instead of 1 create + 2 + evals) + - these changes improved loading time of blueprint by about 25% + for OpenACS+xowiki + +2014-01-21 Gustaf Neumann + + - make test for retrieving parsed parameters more safe + +2014-01-08 Gustaf Neumann + + - update hint at end of build for NaviServer + - strip trailing spaces + - silence cppcheck + +2014-01-07 Gustaf Neumann + + mongodb: + - add flag "-puts" to method "show" of nx::mongo::Class to + turnoff output to stdout + - handle empty find operations for "find first" + - added method pretty_variables to output available + variables of a class in a similar style as in the + definition + - added low-level method "close" to nx::mongo + +2014-01-01 Gustaf Neumann + + - Tcl's "package present" raises an error if the package is not present + +2013-12-26 Gustaf Neumann + + - add more assertions + - ensure computation of requires orders for recursive merges + - make test more robust + - strip trailing spaces + - get rid of potentially uninitialized variables + - make compilation more clean + - add assertion for validity checking of precedence lists + - improve error message + - remove trailing space + +2013-12-23 ssoberni + + - Fixing a mini-typo in nsf.c: unlinkely -> unlikely + +2013-12-23 Gustaf Neumann + + - made linearization monotonic (for multiple inheritance) + via single-inheritance linearization merging while + preserving overall linearization rules + - added flag NSF_LINEARIZER_TRACE + - extended regression test + - upgrade to mongo-c-driver to 0.8.1 + - added new flag "-ttl" to mongo::index + - there seems to be now a different mongo-c-driver to be the + preferred one, the old one is renamed to + mongo-c-driver-legacy + - link against nsf-stublib + - bump version number to 0.2 + - don't try to load nx when building pkgindex for a binary package (.so + or dylib) + + generic/nsfPointer.c: + - add reference counter to avoid double-inits and double-frees in case + the table of converters is used from multiple interpreters + +2013-12-22 Gustaf Neumann + + - change base stub table from XOTcl to NSF. + - improve wording of error messages. + - add parameter parser and converter to stub tables + - make converter usable from c-based packages compiled with subs + activated + +2013-11-12 Gustaf Neumann + + xotcl2: + - fixed "... info defaults ..." and "... info instdefaults + ..." emulation in XOTcl 2 + - fixed error message + - extended regression test + - bumped revision of nsf/xotcl/nx to 2.0b6 + +2013-10-22 Gustaf Neumann + + - nsf: added switch "-checkalways" to nsf::method::create + - nx: added switch "checkalways" to "method" and "object + method" + - extended regression test + +2013-10-19 Gustaf Neumann + + - minor cleanup: + * reduce variable scope + * remove uncalled static function + + - added flag -checkalways to nsf::proc and nsf::asm::proc (for the + latter just a placeholder for now). If the flag is used, it will cause + argument testing independently from the "configure checkarguments" + setting. To force argument checking always is useful e.g. for checking + external values (e.g. in a web server) + +2013-09-15 Gustaf Neumann + + - fix object method serializeExportedMethod: targetName might have been + uninitialized + +2013-08-27 ssoberni + + - Explored assertion support from an NX perspective, by reviewing the + current implementation against Eiffel's RAC; along the way, I made + ::nsf::current more robust when being used in assertions + +2013-08-08 Gustaf Neumann + + - don't call postcondition, when the command/invariant have returned + already an error + + nsf.c + - fixed a bug where turning on assertions could swallow + result-codes + - extended regression test + - fix potential crash when preconditions are empty + - fix typo + +2013-08-03 Gustaf Neumann + + - added sample script doc/example-scripts/tk-geo.tcl + - minor cleanup of configure script + - bump version number of mongo support to 0.2 + +2013-08-01 Gustaf Neumann + + mongodb: + - integrated configuration of mongodb into toplevel + configfile option: + --with-mongodb=MONGO_INCLUDE_DIR,MONGO_LIB_DIR + - added regression test files for mongodb support (low level + (tcl-only) and high level (nx based oo support)) + - integrated mongodb-testfiles with "make test" + - reduced verbosity of nx-mongo.tcl (added verbosity variable) + +2013-07-31 Gustaf Neumann + + - added example scripts rosetta-sudoku.{tcl,html} and tk-ludo.{tcl,html} + + mongodb: + - don't call NsfLog() in Nsfmongo_Exit, since interp-data might be + already cleaned up + - improve robustness + - added flag for verbosity + +2013-07-30 Gustaf Neumann + + mongodb: + - updated to most recent version of c-driver (0.7.1) + - adapted to nx 2.0b5 (use everywhere cget interface) + - tested with mongodb 2.4.5 + + - updated locomotive example to use nx::callback + +2013-07-16 Gustaf Neumann + + - updated TODO + +2013-07-15 Gustaf Neumann + + - prepare for providing nx as a tcl module (.tm file). this is just a + preparation, since for testing, one cannot set up a path that prefers + a local copy over a global installed one (the global tcl-site is + preferred over the one specified in e.g. TCL8_5_TM_PATH) + +2013-07-08 Gustaf Neumann + + - explore the usage of dict instead of anonymous array + + nsf.c: + - dont't use the default of a invocation parameter in + "configure" when the object is already initialized. The + default is in general only used when the parameter is not + specified. We do not want e.g. superclass to be reset to + ::nx::Object, when configure is called on a class without + arguments. + - extended regression test + +2013-07-02 Gustaf Neumann + + - remove debug statement + +2013-06-24 Gustaf Neumann + + - keep this single pkgIndex.tcl + - keep packages versions from 2.0 and 1.0 disjoint + Fisheye: Tag 5bdfdb70f7570bda409acd24efbdc7e73b908c6b refers to a dead (removed) revision in file `doc/Announce2.0'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/Announce2.0.0 =================================================================== diff -u --- doc/Announce2.0.0 (revision 0) +++ doc/Announce2.0.0 (revision 5bdfdb70f7570bda409acd24efbdc7e73b908c6b) @@ -0,0 +1,140 @@ +Dear Community, + +Since releasing the Next Scripting Framework (NSF) 2.0b5, we have +received more feedback from early adopters. Many thanks for the +helpful and the constructive comments! + +Since the release of 2.0b5, there have been more than 450 commits to +our code repository. The implementation is very stable and has been +used for more than two years in production of our large-scale, +multi-threaded web environment inside NaviServer. Most of the changes +happened in NX and, therefore, on the NSF scripting level, without the +need to modify the NSF C layer. The implementation of XOTcl 2 has +changed very little. The Next Scripting Framework was tested with Tcl +8.5.17 and Tcl 8.6.2 on Linux, Mac OS X, and in Windows enviroments +(MinGW, VC12). + +Below are the most notable differences in NSF/NX 2.0 final relative to +2.0b5: + +a) Pluralism reform: + + Use plural names for structural features of objects and classes, + whenever potentially multiple elements are provided or + returned. This rule applies now consistently throughout NX. Here are + examples from the introspection interface: + + /cls/ info superclasses + /cls/ info subclasses + /cls/ info mixins + /obj/ info object mixins + /cls/ info filters + /obj/ info object filters + + Similarly, there the plural is used for configure options, e.g.: + + nx:create create Foo -superclasses {C D} + + Note that abbreviations are allowed as well: + + nx:create create Foo -superclass {C D} + +b) Dispatch by arity is gone in NX. + + XOTcl and earlier versions of NX supported a dispatch-by-arity + mechanism for relation slots: + + o mixin; # arity 1: get value + o mixin M1; # arity 2: set value + o mixin add M1; # arity 3: use arg 2 for slot methods + + The problem with this approach is that it is not straight forward + to provide meaningful error messages. In addition, one might be + irritated about the result of e.g. "o mixin add" (leaving out a + class to be added). In the final release, we removed the entailed + complexity by relying on a fixed arity of 3 (last form above) for + the default slot methods: + + add, clear, delete, get, guard, set + +c) Support for querying computed parameters of methods. + + Earlier versions of NX had several methods to query the parameters + for configuring objects of different classes. The configure + parameters are determined by the inheritance order in the class + hierarchy and are relevant during object creation (e.g. + methods "create" or "new"). + + Now, these configure parameter can be queried using the standard + parameter introspection interface for e.g. "new", "create", or + "configure", such as in: + + nx::Object info lookup parameters create + + The above command call returns the parameters which can be provided + to an "nx::Object create ..." invocation. Furthermore, these + computed parameters are returned in error messages. + +d) Support abbreviations of non-positional parameter names (for plain + methods, nsf::proc, or "... configure..."). + + To avoid surprises, especially for computed argument lists, the + minimal number of optional trailing characters is set to 4. + +e) Updated MongoDB interface: + + The interface was extended in various ways and is now based on + mongo-c-driver 1.0.2 and was tested with MongoDB 2.6.5. The driver + can be used nicely with e.g. Naviserver by using the c-driver + supported connection pool. + +f) API changes: + + nx::Object info lookup parameters create + /cls/ mixins ... + /obj/ object mixins ... + /cls/ filters ... + /obj/ object filters ... + + Simplified info methods for interceptors: + + /cls/ info mixin classes -> /cls/ info mixins + /cls/ info filter methods -> /cls/ info filters + /obj/ info object mixin classes -> /obj/ info object mixins + + Dropped methods: + + /cls/ info mixin guard + /obj/ info object mixin guard + /cls/ info filter guard + /obj/ info object filter guard + + Instead, use the "-guards" option of "... info ?object? mixins|filters ...". + + Added methods: + + /cls/ mixins classes + /cls/ filters methods + /obj/ object filters methods + /obj/ object mixins classes + +g) Added API documentation: + + Using tcllib's doctools markup and dtplite, we now provide manpages + for: + nx::Object + nx::Class + nx::current + nx::next + nx::configure + +The Next Scripting Framework 2.0.0 (containing NX and XOTcl 2.0.0) can +be obtained from https://next-scripting.org/ + +The detailed ChangeLog can be downloaded from +https://next-scripting.org/xowiki/download/file/ChangeLog-2.0b5-2.0.0 + +Best regards +- Gustaf Neumann +- Stefan Sobernig +