| |
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 |
|