1
[section {Changes for version 3.1}]
2
[list_begin enumerated]
4
[comment {- - -- --- ----- -------- ------------- ---------------------}]
5
[enum] Added a new higher-level package [package critcl::iassoc].
7
[para] This package simplifies the creation of code associating data
8
with an interpreter via Tcl's [fun Tcl_(Get|Set)AssocData()] APIs. The
9
user can concentrate on his data while all the necessary boilerplate
10
C code to support this is generated by the package.
12
[para] This package uses several of the new features which were added
13
to the core [package critcl] package, see below.
15
[comment {- - -- --- ----- -------- ------------- ---------------------}]
16
[enum] Added the higher-level package [package critcl::class].
18
[para] This package simplifies the creation of C level objects with
19
class and instance commands. The user can write a class definition
20
with class- and instance-variables and -methods similar to a TclOO
21
class, with all the necessary boilerplate C code to support this
22
generated by the package.
24
[para] This package uses several of the new features which were added
25
to the core [package critcl] package, see below.
27
[comment {- - -- --- ----- -------- ------------- ---------------------}]
28
[enum] Extended the API for handling TEApot metadata. Added the
29
command [cmd critcl::meta?] to query the stored information. Main use
30
currently envisioned is retrieval of the current package's name by
31
utility commands, for use in constructed names. This particular
32
information is always available due to the static scan of the package
33
file on execution of the first critcl command.
35
[para] The new packages [package critcl::iassoc] and
36
[package critcl::class] (see above) are users of this command.
38
[comment {- - -- --- ----- -------- ------------- ---------------------}]
39
[enum] Extended the API with a command, [cmd critcl::name2c], exposing
40
the process of converting a Tcl name into base name, namespace, and C
41
namespace. This enables higher-level code generators to generate the same
42
type of C identifiers as [package critcl] itself.
44
[para] The new package [package critcl::class] (see above) is a user
47
[comment {- - -- --- ----- -------- ------------- ---------------------}]
48
[enum] Extended the API with a command, [cmd critcl::source],
49
executing critcl commands found in a separate file in the context of
50
the current file. This enables easier management of larger bodies of
51
code as it allows the user to split such up into easier to digest
52
smaller chunks without causing the generation of multiple packages.
54
[comment {- - -- --- ----- -------- ------------- ---------------------}]
55
[enum] Related to the previous item, extended the API with commands to
56
divert collection of generated C code into memory. This makes it
57
easier to use the commands for embedded C code in higher-level code
60
[para] See the section [sectref {Advanced: Diversions}] for details of
61
the provided commands.
63
[para] The new package [package critcl::class] (see above) is a user
66
[comment {- - -- --- ----- -------- ------------- ---------------------}]
67
[enum] Extended the API with commands helping developers with the
68
generation of proper C [term #line] directives. This allows
69
higher-level code generators to generate and insert their own
70
directives, ensuring that compile errors in their code are properly
73
[para] See the section [sectref {Advanced: Location management}] for
74
details of the provided commands.
76
[para] The new packages [package critcl::iassoc] and
77
[package critcl::class] (see above) are users of these facilities.
79
[comment {- - -- --- ----- -------- ------------- ---------------------}]
80
[enum] Extended the API with commands giving users the ability to
81
define custom argument and result types for [cmd ::critcl::cproc].
83
[para] See the section [sectref {Advanced: Extending cproc}] for
84
details of the provided commands.
86
[comment {- - -- --- ----- -------- ------------- ---------------------}]
89
[include changes311.inc]
90
[include changes312.inc]
91
[include changes313.inc]
92
[include changes314.inc]
93
[include changes315.inc]
94
[include changes316.inc]
95
[include changes317.inc]
96
[include changes318.inc]
97
[include changes319.inc]