[include 31181.inc]
[include 3118.inc]
[include 3117.inc]
[include 3116.inc]
[include 3115.inc]
[include 3114.inc]
[include 3113.inc]
[include 3112.inc]
[include 3111.inc]
[include 3110.inc]
[include 319.inc]
[include 318.inc]
[include 317.inc]
[include 316.inc]
[include 315.inc]
[include 314.inc]
[include 313.inc]
[include 312.inc]
[include 311.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 {CriTcl cproc Type Reference}] for
details of the provided commands.

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