[include changes31181.inc]
[include changes3118.inc]
[include changes3117.inc]
[include changes3116.inc]
[include changes3115.inc]
[include changes3114.inc]
[include changes3113.inc]
[include changes3112.inc]
[include changes3111.inc]
[include changes3110.inc]
[include changes319.inc]
[include changes318.inc]
[include changes317.inc]
[include changes316.inc]
[include changes315.inc]
[include changes314.inc]
[include changes313.inc]
[include changes312.inc]
[include changes311.inc]

[section {Changes for version 3.1}]
[list_begin enumerated]

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Added a new higher-level package [package critcl::iassoc].

[para] This package simplifies the creation of code associating data
with an interpreter via Tcl's [fun Tcl_(Get|Set)AssocData()] APIs. The
user can concentrate on his data while all the necessary boilerplate
C code to support this is generated by the package.

[para] This package uses several of the new features which were added
to the core [package critcl] package, see below.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Added the higher-level package [package critcl::class].

[para] This package simplifies the creation of C level objects with
class and instance commands. The user can write a class definition
with class- and instance-variables and -methods similar to a TclOO
class, with all the necessary boilerplate C code to support this
generated by the package.

[para] This package uses several of the new features which were added
to the core [package critcl] package, see below.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Extended the API for handling TEApot metadata. Added the
command [cmd critcl::meta?] to query the stored information. Main use
currently envisioned is retrieval of the current package's name by
utility commands, for use in constructed names. This particular
information is always available due to the static scan of the package
file on execution of the first critcl command.

[para] The new packages [package critcl::iassoc] and
[package critcl::class] (see above) are users of this command.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Extended the API with a command, [cmd critcl::name2c], exposing
the process of converting a Tcl name into base name, namespace, and C
namespace. This enables higher-level code generators to generate the same
type of C identifiers as [package critcl] itself.

[para] The new package [package critcl::class] (see above) is a user
of this command.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Extended the API with a command, [cmd critcl::source],
executing critcl commands found in a separate file in the context of
the current file. This enables easier management of larger bodies of
code as it allows the user to split such up into easier to digest
smaller chunks without causing the generation of multiple packages.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Related to the previous item, extended the API with commands to
divert collection of generated C code into memory. This makes it
easier to use the commands for embedded C code in higher-level code
generators.

[para] See the section [sectref {Advanced: Diversions}] for details of
the provided commands.

[para] The new package [package critcl::class] (see above) is a user
of these facilities.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Extended the API with commands helping developers with the
generation of proper C [term #line] directives. This allows
higher-level code generators to generate and insert their own
directives, ensuring that compile errors in their code are properly
attributed.

[para] See the section [sectref {Advanced: Location management}] for
details of the provided commands.

[para] The new packages [package critcl::iassoc] and
[package critcl::class] (see above) are users of these facilities.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[enum] Extended the API with commands giving users the ability to
define custom argument and result types for [cmd ::critcl::cproc].

[para] See the section [sectref {Advanced: Extending cproc}] for
details of the provided commands.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[list_end]
