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, macOS, and in Windows environments (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