Index: ChangeLog-2.0b3-2.0b5 =================================================================== diff -u --- ChangeLog-2.0b3-2.0b5 (revision 0) +++ ChangeLog-2.0b3-2.0b5 (revision 6c4dae3b34c88777250475425d089dc55decc788) @@ -0,0 +1,1500 @@ +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 serialzer + usable for copying (-map is too 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 potental crash for objects having a wrapperless alias defined + +2013-06-03 ssoberni + + + 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 trun 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 inifinite 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 nameclash 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" of + "all|application|baseclasses" to "all|application|system" for + consistencey 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 definitons + 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 paramter 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-24 Stefan Sobernig + + + Clear the TODOs + +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. + - changed "-methodtype" to simply "-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_DStringth 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 namings + +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; 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 + nmake templates. Tested using Visual Studio 12 (VC and nmake 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) + + + - bump version number to 2.0b5 + + + - 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 parametererization 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 + + + - improve wording in rosetta example + +2013-01-22 Gustaf Neumann + + + more 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 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 smae 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/ inif paramameter ... ?pattern?" from + "name" to "pattern" + +2012-09-28 Gustaf Neumann + + + - added functiality 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 volatial 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 + - decactivate 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 addtional file for regression test + +2012-09-19 Gustaf Neumann + + + updated todo + +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 explicitely + 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: + - implememted 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 recrate -> __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 beautifer 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 multiplicty 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 emtpy mixin-lists is strictly speaking not necessary, but this + eases the code in cases the lists are sometimes empty. + + + - handle cyclical superclassclass dependencies during object + system finalize + - extend regression test + +2012-07-18 Gustaf Neumann + + + nsf.c: + - ignore in internall 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 compat 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 compat + enhancements. + +2012-07-16 Gustaf Neumann + + + - allow instance property inheritance for traits + +2012-07-11 Gustaf Neumann + + + Don't recommend to use "configure" method for chaning class/superclass + +2012-06-27 ssoberni + + + - Replaced errorneous 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 behaviour on errors + during filter additions to the state-preserving behaviour 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 parthesis, 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 builts ended up with function declarations + annotated with dllimport (which for these cases is either + unnecessary or even breaks builts 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 + behaviour. + +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 "namspace 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 achived 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 funciton 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 + treeview 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 serialising 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 + +2012-02-01 Gustaf Neumann + + + Added README.release Added Annoice 2.0b3 Index: TODO =================================================================== diff -u -r925485d2ec3b626277037d5fd3154172cc989f7a -r6c4dae3b34c88777250475425d089dc55decc788 --- TODO (.../TODO) (revision 925485d2ec3b626277037d5fd3154172cc989f7a) +++ TODO (.../TODO) (revision 6c4dae3b34c88777250475425d089dc55decc788) @@ -4664,7 +4664,11 @@ ======================================================================== TODO: + - introspection (e.g. "syntax" for unregistered cmds/methods) + - quantify changes/regression tests (script on notebook) + - update copyright notices + Stefan: API-related items * the introspection interface uses "-type" for "class" or "instanceof", but the intercession interface refers to "-class", e.g. Index: doc/Announce2.0b5 =================================================================== diff -u --- doc/Announce2.0b5 (revision 0) +++ doc/Announce2.0b5 (revision 6c4dae3b34c88777250475425d089dc55decc788) @@ -0,0 +1,262 @@ +Dear Community, + +After the release of Next Scripting Framework 2.0b3, we received +several feedbacks from early adaptors (many thanks for the +helpful an constructive comments). This discussion made us to +revise some of the namings and conventions to achive better +comprehension and orthogonality. Most of the changes happend +on the scripting layer without the need to change the nsf C layer. + +In addition to the list of changes below, there are the following major +differences: + +a) NX 2.0b3 used the following conventions + to define methods for instances, object-specific + methods and class-object specific methods: + + /cls/ method foo {args} {...} + /obj/ method bar {args} {...} + /cls/ class method baz {args} {...} + + Introspecition was (in the same order) + + /cls/ info methods + /obj/ info methods + /cls/ class info methods + + The problem with this convention is that e.g. "info methods" + returns different things depending on wheter it is called + on a class or on an object, and breaks the contract with + the programmer. nx::Class is a specialization of the + most general class nx::Object, the same means should be + able to obtain e.g. object specific methods for classes and + ordinary objects. + + Thefore, we changed to the following more orthogonal + conventions to define methods for instances and + object-specific methods + + /cls/ method foo {args} {...} + /obj/ object method bar {args} {...} + + Introspecition: + + /cls/ info methods + /obj/ info object methods + + Note that we can now use the same mechanis to define + or query object specific methods on objects and classes. + The same applies for aliases, forwards, mixins, and filters. + + The new convention is a little more to burden for the + developer, but reduces the effort of a reader of a + program to understand, what exactly + $x method FOO {args} {...} + means. + + For conveniance (and migration) we provide two + packages "nx::plain-object-method" and + "nx::class-method" to use the follow the + old conventions (a verbose mode can report usages). + + +b) Parameterization: + + NX 2.0b3 followed the XOTcl conventions, that parameters + for configuring object creations are registering by default + same-named setter methods. This setter methods can shadow + potentially needed methods, which might lead to unexpected + behaviors for beginners. + + NX 2.0b5 switched to the Tk/itcl/... conventions to + support cget / configure. The accessor methods + (public, protected, private) can be optionally + automatically generated via flag "-accessor ..." + for properties and variables. + +c) Further orthogonalized introspection interface ("info"). + + In order to streamline the interface further, we followed the idea + to use "... info /plural word/" to obtain a set of handles, and then a + separate call to obtain the details. Therefore, we use now + + /cls/ info methods + /obj/ info object methods + + /cls/ info variables + /obj/ info object variables + + /cls/ info slots + /obj/ info object slots + + /cls/ info method parameters /methodName/ + /obj/ info object method parameters /methodName/ + + /cls/ info configure parameters + /obj/ info lookup configure parameters + + to return a list of handles (result list can be filtered + in each case via a patter) and use later a separate call + to obtain detail information + + /obj/ info method definition /methodHandle/ + /obj/ info variable definition /varHandle/ + /obj/ info parameter name /paramHandle/ + + These are just a few example. + In NX 2.0b3 we had e.g. "... info parameter definitions ..." + where it was for a beginner not clear, what parameters are + exactly meant, and in which case one can use a plural word + for detail information or not. Now, all detail definitions + are singualar words + + + +We are pleased to announce the availability of the Next Scripting Framework 2.0b3 +which can be obtained from http://next-scripting.org + +Best regards +- Gustaf Neumann +- Stefan Sobernig + +=============================================== + +Announcing NSF 2.0b5 +************************* + +Major changes relative to NSF 2.0b3 are (in addition of +the items (a), (b), and (c) above) are: + + * Additional Features: + + - serializer: + * added flag -objmap to Serializer method deepSerialize + to make serialzer to provide mapping only for + object names. This makes the serializer + usable for object/class copying (-map is too coarse) + * Serializer: "ignore" method made public + * Due to the split between serializer and object + system serializer, the "ignore" settings were lost + + - allow explicit unsetting of -per-object flag in 0-argument + "-flag=value" notation (all built-in cmds accepting this flag) + + - better compatibility with XOTcl 1.*: + + - added "/obj/ info name" (as alternative to + "namspace tail [self]") + + - test-suite: added summary with statistics + + - traits: added property/variable inheritance + + - 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) + + + * Improved Code Quality: + - some cleanup and code refactorings + - fixed functional bugs: + * copy did not copy aliases and ensemble methods + * automatic object destroy for half-baked objects + (when e.g. configure raises an exception) + * handling of required configure parameters + on later calls to "configure" + * fixed potential inifinite loop in pattern matching for + precedence lists + * handling of full-qualified name patterns + for private slots + * invalidation of per-object parameter cache + - on mixin changes and + - on deletion/adding of per-object slots + * handle cyclical superclassclass dependencies during object + system finalize + * 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. + * don't allow "method" to overwrite child objects + + - fixed potential crashes + * on object destroy, when the same wrapperless + aliases was registered on many objects + * when "nsf::my" is called with a single argument + outside an object context. + * avoid crash in case NsfParameterGetCmd() is passed + a plain value (without a parameter spec) + * fix potential crash in method caching when cmds + are renamed by tcl (many thanks to Arthur Schreiber + for reporting) + + + - build system: + * improved compatibility for windows compilations. + NX can now be compiled under windows with the + native window toolchain (and as well with MinGW) + (Many thanks to Stephan Adelsberger) + * Update to latest TEA. + * Follow new naming convention for auto-tools + (using configure.ac) + * fix compilation when dtrace is activated (missing + parthesis, many thanks to Victor Guerra for noticing) + * added compile macro NSF_STACKCHECK to provide stack + monitoring/debugging (especially useful for multi + threaded programs, where stack is more limited) + - fix compilation when compiled without threads + (many thanks for r.zaumseil for noting this). + + * Improved documentation + - fixed typos, improve wordings + - updated tutorial and migration guide + - use slashed in generated syntax to distinguish + between constants and placeholders + /obj/ info method definition /methodName/ + + + + - improved performance + * rewrite of alias handling (alias reform) + * improved branch prediction + * significant speedup for handling large numbers + of subclasses (subclass reform), avoid + repetitious computations + * significant speedup on mass-destroy (e.g. on thread exit) + - provide better protection for deletion/overwriting + of base classes + - fixed potential duplicates on diamond inheritance + - fixed unknown handling for "-local" and "-system" + dispatches + + + - follow Tcl convention on error messages + (start always with lower case) + - better handling of multiple errors in a single command. + - return GMT dates in Httpd as RFCs require + + + + * Extended regression tests + +MORE INFO + General and more detailed information about the + Next Scripting Framework and its components can be + found at http://next-scripting.org + + +