Clone
Stefan Sobernig <stefan.sobernig@wu.ac.at>
committed
on 19 Apr 19
Continued work in changelog and announcement (still WIP) [skip ci]
2.3 + 10 more
doc/Announce2.3.0 (+3 -3)
12 12 New Features
13 13
14 14 - NSF:
15 15
16 16   * Rename reform for nsf::procs: NSF procedures can now be safely renamed
17 17     (or deleted) using the [rename] command. This was only partially
18 18     supported before, and could also lead to crashes (when redefining
19 19     a renamed nsf::proc).
20 20
21 21    * New object property "autonamed": NSF objects having been created
22 22      using "new", rather than using "create", can now be tested for this
23 23      condition using the object property "autonamed":
24 24
25 25      % package req nx
26 26      % nsf::object::property [nx::Object new] autonamed
27 27      1
28 28      % nsf::object::property [nx::Object create o] autonamed
29 29      0
30 30
31 31      This is to avoid having to rely on pattern sniffing of the
32        command names. In addition, the propery is now set early enough,
  32      command names. In addition, the property is now set early enough,
33 33      right after allocating the NSF object, to test for the autonaming
34 34      condition from within the creation procedure (ttrace).
35 35     
36 36    * Extended object property "volatile": By setting or unsetting the
37 37      object property "volatile", a given NSF object can now be
38 38      rendered volatile or not (in addition to using the volatile
39 39      method on the object).
40 40
41 41    * Reform of uplevel and upvar: First, uplevel and upvar methods, as
42 42      well as [current callinglevel] and [self callinglevel] now
43 43      behave consistently (re frame skipping for mixin and filter
44 44      transparency). If there is no innermost enclosing proc frame,
45 45      the innermost non-proc (e.g., namespace) frame is selected
46 46      (rather than a "#0" as a default). Second, argument handling for
47 47      both uplevel (i.e., level sniffing in multi-arg case) and
48 48      upvar (e.g., made silent TCL_ERROR for invalid argument
49 49      arities explicit) have been fixed.
50 50
51 51 - NX:
52 52
 
66 66
67 67     This is mainly to provide for symmetry in the property and
68 68     variable API, which otherwise requires one to resort to low-level
69 69     tests for existence, e.g.:
70 70
71 71     if {[::c1 eval {info exists :a}]} ...
72 72
73 73     This breaks the property/ variable abstraction, because one cannot
74 74     move to a different value store other than object variables w/o
75 75     rewriting client code.
76 76
77 77   * Method combination for ensemble methods: Using [next] at the end
78 78     of chains of ensemble methods fired the unknown handler,
79 79     unintentionally. This was fixed.
80 80   * nx::zip rewrite: nx::zip now uses the built-in Tcl 8.6 encode and
81 81     decode facilties, if available, rather than requiring the Trf
82 82     package to be present.
83 83
84 84 - XOTcl:
85 85
86     * Improved compatibility of XOTcl2 with XOTcl1 behaviour
  86   * Improved compatibility of XOTcl2 with XOTcl1 behavior
87 87     for volatile objects (see "volatile reform" above).
88     * Improved compatibility of XOTcl2 with XOTcl1 behaviour for
  88   * Improved compatibility of XOTcl2 with XOTcl1 behavior for
89 89     uplevel/upvar from within methods (see "uplevel/ upvar reform"
90 90     above).
91 91
92 92 - nx::serializer:
93 93
94 94   * Improved backward compatibility: Preserve overriding accessor/
95 95     mutators methods (instprocs) for slots.
96 96
97 97 - MongoDB:
98 98
99 99   * Added JSON serializer: The "find all" and "bson" methods now
100 100     provide for JSON-formatted results, on request.
101 101
102 102     ::nx::mongo::Class "find all" -asJSON
103 103     ::nx::mongo::Object bson asJSON
104 104
105 105   accept the
106 106   -asJSON flag to return a JSON formatted string. This is to
107 107   facilitate implementing single-page JavaScript applications.
108 108