View · Search · Index
No registered users in community xowiki
in last 10 minutes

[Xotcl] Announcement: Next Scripting Framework 2.0.0 available

From: Gustaf Neumann <neumann_at_wu.ac.at>
Date: Thu, 01 Jan 2015 19:36:00 +0100

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