Index: doc/next-migration.html =================================================================== diff -u -r268f85047af3501fc9e1b7798b9f3ec51cac77f7 -r3df933477f01d26d32220be5a1c87bfc0c5b7685 --- doc/next-migration.html (.../next-migration.html) (revision 268f85047af3501fc9e1b7798b9f3ec51cac77f7) +++ doc/next-migration.html (.../next-migration.html) (revision 3df933477f01d26d32220be5a1c87bfc0c5b7685) @@ -553,12 +553,33 @@ migration guide from XOTcl 1 to NX, and presents potential incompatibilities beween XOTcl 1.and XOTcl 2

-
-
-
Todo
-

Here comes general text, maybe partly from slides/paper …. TODO: Maybe we -should not refer to ::nsf here, just to ::nx …

-
+

The Next Scripting Language (NX) is a successor of XOTcl 1 and is +based on 10 years of experience with XOTcl in projects containing +several hundert thousand lines of code. The overall goal is to +improve the maintainability and stability of large projects, where +many developers are involved.

+

The Next Scripting Language is based on the Next Scripting Framework +which was developed based on the notion of language oriented +programming. The Next Scripting Frameworks provides C-level support +for defining and hosting multiple object systems in a single Tcl +interpreter. The whole definition of NX is fully scripted +(e.g. defined in nx.tcl). The Next Scripting Framework is shipped +with three language definitions, containing NX and XOTcl 2. Most of +the existing XOTcl 1 programs can be used without modification in the +Next Scripting Framework. The Next Scripting Framework requires Tcl +8.5 or newer.

+

Although NX is fully scripted (as well as XOTcl 2), our benchmarks +show that scripts based on NX are often 2 or 4 times faster than the +counterparts in XOTcl 1. But speed was not the primary focus on the +Next Scripting Environment: The goal was primarily to find ways to +repackage the power of XOTcl in an easy to learn environment, highly +orthogonal environment, which is better suited for large projects, +trying to reduce maintenance costs.

+

We expect that many user will find it attractive to upgrade +from XOTcl 1 to XOTcl 2, and some other users will upgrade to NX. +This document focuses mainly on the differences between XOTcl 1 and +NX, but addresses as well potential incompatibilitied between XOTcl 1 +and XOTcl 2. For an introduction to NX, please consult the NX tutorial.

@@ -569,35 +590,37 @@
+
  • +

    +The naming of the methods in the The Next Scripting Language is much more + in line with the mainstream naming conventions in OO languages. +

    +
  • Below is a small, introductory example showing an implementation of a class Stack in NX and XOTcl. NX supports a block syntax, where the @@ -1843,15 +1872,35 @@

    3.4. Parameters

    -

    While XOTcl 1 had very limited forms of parameters, XOTcl 2 and nx +

    While XOTcl 1 had very limited forms of parameters, XOTcl 2 and NX provide a generalized and highly orthogonal parameter handling with -various kinds of value constraints. We devide the parameters into -Object Parameters (parameters used for initializing objects and -classes) and Method Parameters (parameters passed to -methods). Furthermore, XOTcl 2 and NX support return value checker -based on the same mechanisms.

    +various kinds of value constraints (also called value checker). We +divide the parameters into Object Parameters (parameters used for +initializing objects and classes, specified in XOTcl via the method +parameter) and Method Parameters (parameters passed to +methods). The Next Scripting Framework provide a unified, +C-implemented infrastructure to handle both, object and method +parameters.

    +

    Furthermore, the Next Scripting Framework provides

    +
    +

    based on the same mechanisms.

    3.4.1. Object Parameters

    +

    Object parameters are supported in XOTcl via the method +parameter. Since the term "parameter" is underspecified, NX uses the +term "attribute". To define multiple attributes in a short form, NX +provides the method attributes.

    # Object f1 has a == 0 and b == 1 + +
    +
    +

    In XOTcl the method parameter is a shortcut for creating multiple +slot objects. Slot objects can be as well created in XOTcl directly +via the method slots to provide a much richer set of +meta-data for every attribute.

    +

    To make the definition of attributes more orthogonal, NX uses the +method attribute which can be used as well on the class and on the +object level. When an attribute is created, NX does actually three +things:

    +
      +
    1. +

      +Create a slot object, which can be specified in more detail + using the init-block of the slot object +

      +
    2. +
    3. +

      +Create an object parameter definition for the initialization of the + object (usable via a non-positional parameter during object + creation), and +

      +
    4. +
    5. +

      +register an accessor function (setter), for wich the usual + protection levels (public or protected) can be used. +

      +
    6. +
    +
    + +++ + + + + + + +Class Foo -slots { + Attribute a + Attribute b -default 1 +} + +# Create instance of the class Foo +Foo f1 -a 0 + +# Object f1 has a == 0 and b == 1 + +# Create instance of the class Foo +Foo create f1 -a 0 + +# Object f1 has a == 0 and b == 1 +
    # Parameters only available at class level
    +Objectcreate o { + :attribute oa2 +} + +
    XOTcl Next Scripting Language
    -
    # Parameters only available at class level
    +
    # Object parameter specified via slots
     
    -Class C \
    -   -parameter {
    -    x
    -    {y 1}
    -}
    -
    # Define object attributes
    -# (parameters for initializing objects)
    +
    # Object parameter specified via attribute methods
    +# (allow method modifiers and scripted configuration)
     
    -Class create C {
    -  :attribute x
    -  :attribute {y 1}
    -  :class-object attribute oa1
    +Class create Foo {
    +   :attribute a
    +   :attribute {b 1}
     }
     
    -Object create o {
    -  :attribute oa2
    -}
    -
    -
    -
    Class create C \
    -   -attributes {
    -    x
    -    {y 1}
    -}
    @@ -1967,18 +2053,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    # Object parameter specified via slots
    -
    -Class Foo -slots {
    -   Attribute a
    -   Attribute b -default 1
    -}
    -
    -# Create instance of the class Foo
    -Foo f1 -a 0
    -
    -# Object f1 has a == 0 and b == 1
    -
    -
    # Object parameter specified via attribute methods
    -# (allow method modifieres and scripted configuration)
    +
    # Define object parameter at the class
    +# and object level
     
    -Class create Foo {
    -   :attribute a
    -   :attribute {b 1}
    +Class create C {
    +  :attribute x
    +  :attribute {y 1}
    +  :class-object attribute oa1
     }
     
    -# Create instance of the class Foo
    -Foo create f1 -a 0
    -
    -# Object f1 has a == 0 and b == 1
    @@ -2034,8 +2109,8 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    # Object parameter with scripted definition, defining an attribute
    -# specific type checker
    +
    # Object parameter with scripted definition (init-block),
    +# defining an attribute specific type checker
     
     Class create Person {
        :attribute sex {
    @@ -2050,7 +2125,33 @@
        }
     }
    +
    +

    XOTcl 1 did not support value constraints for object parameters (just +for non-positional arguments).

    +

    NX supports value constraints (value-checkers) for object and method +parameters in an orthogonal manner. NX provides a predefined set of +value checkers, which can be extended by the application developer.

    +

    In NX, the value checking is optional. This means that it is possible to +develop e.g. which a large amount of value-checking and deploy the +script with value checking turned off, if the script is highly +performance sensitive.

    +
    + +++ + + + + + + +
    # Value constraints for parameter not available
    + +
    XOTcl Next Scripting Language
    -
    # Predefined value constraints for parameter not available
    # Predefined value constraints:
     #    object, class, alnum, alpha, ascii, boolean, control,
    -#    digit, double, false, graph, integer, lower, print,
    -#    punct,  space, true, upper, wordchar, xdigit
    +#    digit, double, false, graph, integer, lower, parameter,
    +#    print, punct,  space, true, upper, wordchar, xdigit
     #
     # User defined value constraints are possible.
     # All parameter value checkers can be turned on and off.
     #
     # Define a boolean attribute and an integer attribute with a
    -# default
    +# default firstly via "attributes", then with multiple
    +# "attribute"  statements.
     
     Class create Foo -attributes {
        a:boolean
    @@ -2099,7 +2201,30 @@
        :attribute {b:integer 1}
     }
    +
    +

    In XOTcl all object parameters were optional. Required parameters have +to be passed to the constructor of the object.

    +

    NX allows to define optional and required object +attributes. Therefore, object parameters can be used as the single +mechanism to parameterize objects. The constructors do not require any +parameters.

    +
    + +++ + + + + + + @@ -2191,8 +2338,8 @@

    3.4.2. Method Parameters

    The method parameters specifications in XOTcl 1 were limited and -allowed only value constraints for non positional arguments. NX and -XOTcl 2 provide value constraints for all kind of method parameters. +allowed only value constraints for non positional arguments.

    +

    NX and XOTcl 2 provide value constraints for all kind of method parameters. While XOTcl 1 required non-positional arguments to be listed in front of positional arguments, this limitation is lifted in XOTcl 2.

    @@ -2273,13 +2420,13 @@ # trailing (or interleaved) non-positional parameters :public method m1 {a b -x:integer -y} {....} - # postional parameters with value constraints + # positional parameters with value constraints :public method m2 {a:integer b:boolean} {....} - # optional postional parameter (trailing) + # optional positional parameter (trailing) :public method set {varName value:optional} {....} - # parameter with multiplicty + # parameter with multiplicity :public method m3 {-objs:object,1..n c:class,0..1} {....} # In general, the same list of value constraints as for @@ -2294,12 +2441,12 @@
    -

    3.4.3. Return Value Checkers

    -

    Return value checker are a functionality that was not yet available in +

    3.4.3. Return Value Checking

    +

    Return value checking is a functionality that was not yet available in XOTcl 1. A return value checker assures that a method returns always a -parameter of a certain value. Return value checkers can be defined on -all forms of methods. Like for other value checkers, return -value checkers can be turned on and off.

    +value satisfying some value constraints. Return value checkers can be defined on +all forms of methods (scripted or C-implemented). Like for other value +checkers, return value checkers can be turned on and off.

    XOTcl Next Scripting Language
    Class create Foo {
       :attribute {ints:integer,0..n ""}
    -   :attribute objs:object,1..n
    -   :attribute obj:object,0..1
    +  :attribute objs:object,1..n
    +  :attribute obj:object,0..1
     }

    3.5. Interceptors

    +

    XOTcl and NX allow the definition of the same set of interceptors, +namely class- and object-level mixins and class- and object-level +filters. The primary difference in NX is the naming, since NX +abandons the prefix "inst" from the method names.

    +

    Therefore, in NX, if a mixin is registered on the class-level, it is +a per-class mixin, if the mixin is registered on the object level, +it is a object-level mixin. In both cases, the method mixin is used. +If a mixin is registered on the class object, one has to use the +modifier class-object (in the same way as e.g. for defining methods).

    3.5.1. Register Mixin Classes and Mixin Guards

    @@ -2561,8 +2717,21 @@

    3.6. Introspection

    +

    In general, introspection in NX became more orthogonal and less +dependent on the type of the method. In XOTcl it was e.g. necessary +that a developer had to know, whether a method is e.g. scripted or not +and has to use accordingly different sub-methods of info.

    +

    In NX, one can use e.g. always info method with a subcommand and the +framework tries to hide the differences as far as possible. So, one +can for example obtain with info method parameter the parameters of +scripted and C-implemented methods the same way. In addition, NX +provides means to query the type of a method.

    -

    3.6.1. List methods defined by objects

    +

    3.6.1. List methods defined by classes

    +

    While XOTcl uses different names for obtaining different kinds of +methods defined by a class, NX uses info methods in an orthogonal +manner. NX allows as well to use the call protection to filter the +returned methods.

    -
    /obj/ info commands ?pattern?
    +
    /cls/ info instcommands ?pattern?
    +
    /cls/ info methods ?pattern?
    +
    /cls/ info instparametercmd ?pattern?
    +
    /cls/ info methods -methodtype setter ?pattern?
    +
    /cls/ info instprocs ?pattern?
    +
    /cls/ info methods -methodtype scripted ?pattern?
    +
    /cls/ info methods -methodtype alias ?pattern?
    +
    /cls/ info methods -methodtype forwarder ?pattern?
    +
    /cls/ info methods -methodtype object ?pattern?
    +
    /cls/ info methods -callprotection public|protected ...
    -
    /obj/ info methods ?pattern?
    @@ -2609,7 +2778,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info parametercmd ?pattern?
    -
    /obj/ info methods -methodtype setter ?pattern?
    @@ -2631,7 +2800,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info procs ?pattern?
    -
    /obj/ info methods -methodtype scripted ?pattern?
    @@ -2663,7 +2832,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info methods -methodtype alias ?pattern?
    @@ -2685,7 +2854,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info methods -methodtype forwarder ?pattern?
    @@ -2707,7 +2876,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info methods -methodtype object ?pattern?
    @@ -2729,14 +2898,18 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info methods -callprotection public|protected ...
    -

    3.6.2. List methods defined by classes

    +

    3.6.2. List methods defined by objects

    +

    While XOTcl uses different names for obtaining different kinds of +methods defined by an object, NX uses info methods in an orthogonal +manner. NX allows as well to use the call protection to filter the +returned methods.

    -
    /cls/ info instcommands ?pattern?
    +
    /obj/ info commands ?pattern?
    +
    /obj/ info methods ?pattern?
    +
    /obj/ info parametercmd ?pattern?
    +
    /obj/ info methods -methodtype setter ?pattern?
    +
    /obj/ info procs ?pattern?
    +
    /obj/ info methods -methodtype scripted ?pattern?
    +
    /obj/ info methods -methodtype alias ?pattern?
    +
    /obj/ info methods -methodtype forwarder ?pattern?
    +
    /obj/ info methods -methodtype object ?pattern?
    +
    /obj/ info methods -callprotection public|protected ...
    -
    /cls/ info methods ?pattern?
    @@ -2783,7 +2956,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info instparametercmd ?pattern?
    -
    /cls/ info methods -methodtype setter ?pattern?
    @@ -2805,7 +2978,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info instprocs ?pattern?
    -
    /cls/ info methods -methodtype scripted ?pattern?
    @@ -2837,7 +3010,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info methods -methodtype alias ?pattern?
    @@ -2859,7 +3032,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info methods -methodtype forwarder ?pattern?
    @@ -2881,7 +3054,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info methods -methodtype object ?pattern?
    @@ -2903,14 +3076,17 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info methods -callprotection public|protected ...

    3.6.3. List class object specific methods

    +

    When class-object specific properties are queried, NX required to use +the modifier class-object (like for the definition of the methods). +In all other respects, this section is identical to the previous one.

    3.6.4. List callable methods

    +

    In order to obtain for an object the set of artefacts defined in the + class hierarchy, NX uses info lookup. One can either lookup methods + (via info lookup methods) or slots (via info lookup slots). The + plural term refers to a potential set of return values.

    3.6.5. List object/class where some method is defined

    +

    info lookup can be used as well to determine, where exactly an + artefact is located. One can obtain this way a method handle, where +a method or filter is defined.

    +

    The concept of a method-handle is new in NX. The method-handle +can be used to obtain more information about the method, such as +e.g. the definition of the method.

    3.6.6. List definition of scripted methods defined by classes

    +

    XOTcl contains a long list of info subcommands for different kinds of +methods and for obtaining more detailed information about these +methods.

    +

    In NX, this list of info subcommands is much shorter and more +orthogonal. For example info method definition can be used to obtain +with a single command the full definition of a scripted method, and +furthermore, it works as well the same way to obtain e.g. the +definition of a forwarder or an alias.

    +

    Another powerful introspection option in NX is info method +parametersyntax which obtains a representation of the parameters of a +method in the style of Tcl man pages (regardless of the kind of +method).

    +
    # n.a.
    + + + + +
    # not needed, part of "info method parameter"
    +
    /cls/ info method parametersyntax /methodName/
    +
    +
    /cls/ info method definition /methodName/
    +
    /cls/ info instbody /methodName/
    -
    /cls/ info instdefault /methodName/
    @@ -3439,14 +3659,16 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /cls/ info method definition /methodName/

    3.6.7. List definition of scripted object specific methods

    +

    While XOTcl uses different names for info options for objects and +classes (using the prefix "inst"), the names in NX are the same.

    -
    /obj/ info body /methodName/
    +
    # n.a.
    +
    /obj/ info method definition /methodName/
    +
    /obj/ info body /methodName/
    +
    /obj/ info method body /methodName/
    +
    /obj/ info args /methodName/
    +
    /obj/ info method args /methodName/
    +
    /obj/ info nonposargs /methodName/
    +
    /obj/ info default /methodName/
    +
    # not needed, part of "info method parameter"
    +
    /obj/ info method postcondition /methodName/
    +
    /obj/ info method parametersyntax /methodName/
    -
    /obj/ info method body /methodName/
    @@ -3493,7 +3715,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info args /methodName/
    -
    /obj/ info method args /methodName/
    @@ -3515,7 +3737,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info nonposargs /methodName/
    -
    /obj/ info method parameter /methodName/
    @@ -3537,7 +3759,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info default /methodName/
    -
    /obj/ info pre /methodName/
    -
    /obj/ info method precondition /methodName/
    @@ -3613,7 +3835,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info post /methodName/
    @@ -3635,15 +3857,20 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    /obj/ info method definition /methodName/
    -

    For definition of class object specific methods, use modifier class-object as shown in examples above.

    +

    For definition of class object specific methods, use the modifier +class-object as shown in examples above.

    3.6.8. List Filter or Mixins

    +

    In NX all introspection options for filters are grouped under info +filter and all introspection options for mixins are under info +mixin. Therefore, NX follows here the approach of using hierarchical +subcommands rather than using a flat namespace.

    3.6.9. List definition of methods defined by aliases, setters or forwarders

    +

    As mentioned earlier, +info method definition" can be used on every +kind of method.

    -

    3.6.10. List fully qualified name of method

    +

    3.6.10. List Method-Handles

    +

    NX supports method-handles to provide means to obtain further +information about a method or to change maybe some properties of a +method. When a method is created, the method creating method returns +the method handle to the created method.

    3.6.11. List type of a method

    +

    The method info method type is new in NX to obtain the type of the +specified method.

    3.6.12. List the scope of mixin classes

    +

    NX provides a richer set of introspection options to obtain +information, where mixins classes are mixed into.

    3.6.13. Check properties of object and classes

    +

    Similar as noted before, NX uses rather a hierarchical approach of +naming using multiple layers of subcommands).

    3.6.14. Call-stack Introspection

    +

    Call-stack introspection is very similar in NX and XOTcl. NX uses for +subcommand the term current instead of self, since self has a +strong connotation to the current object. The term proc is renamed +by method.

    -
    current
    +
    self
    -
    current object
    +
    current object
    +
    current class
    +
    current method
    +
    current currentclass
    +
    current callingobject
    +
    current callingmethod
    +
    current calledclass
    +
    current calledmethod
    +
    current isnextcall
    +currentnext +current filterreg +
    current callinglevel
    +
    current activelevel
    @@ -4444,7 +4687,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current class
    @@ -4466,7 +4709,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current method
    @@ -4488,7 +4731,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current currentclass
    @@ -4510,7 +4753,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current callingobject
    @@ -4532,7 +4775,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current callingmethod
    @@ -4554,7 +4797,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current calledclass
    @@ -4576,7 +4819,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current calledmethod
    @@ -4598,7 +4841,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current isnextcall
    @@ -4621,7 +4864,7 @@ .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;}
    # Returns method-handle
    -current next
    @@ -4644,7 +4887,7 @@ .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;}
    # Returns method-handle
    -current filterreg
    @@ -4666,7 +4909,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current callinglevel
    @@ -4688,7 +4931,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
    current activelevel
    @@ -4733,6 +4976,28 @@
    /obj/ require namespace
    + +
    +
    +
    # n.a.
    +
    +
    +
    /obj/ require method
    + @@ -4743,6 +5008,9 @@

    3.9. Assertions

    +

    In contrary to XOTcl, NX provides no pre-registered methods for +assertion handling. All assertion handling can e performed via the +Next Scripting primitive nsf::assertion.