Deutsch   English   Franšais   Italiano  
<87a9x5tctu.fsf@bluepeak.andreas.kupries.org>

View for Bookmarking (what is this?)
Look up another Usenet article
   

Path: ...!news.glorb.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!post01.iad.highwinds-media.com!newsfe06.iad.POSTED!not-for-mail
Newsgroups: comp.lang.tcl
Subject: [ANN] critcl 3.1
References: <871uj7e6at.fsf@bluepeak.andreas.kupries.org>
From: Andreas Kupries <akupries@shaw.ca>
Message-ID: <87a9x5tctu.fsf@bluepeak.andreas.kupries.org>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)
Cancel-Lock: sha1:A0L7bw+9Uk9JMe06QOe9Nk5Inx0=
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Lines: 111
NNTP-Posting-Host: 174.6.2.120
X-Complaints-To: internet.abuse@sjrb.ca
X-Trace: 1346814490 174.6.2.120 (Wed, 05 Sep 2012 03:08:10 UTC)
NNTP-Posting-Date: Wed, 05 Sep 2012 03:08:10 UTC
Date: Tue, 04 Sep 2012 19:37:01 -0700
X-Received-Bytes: 5390


Critcl Version 3.1 has been released a few minutes ago.

Critcl is found at github, at

	http://jcw.github.com/critcl/

Version 3.1 is a feature release providing the following extensions
over the capabilities of the 3.0.x line:

    [1] Added a new higher-level package *critcl::iassoc*.

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

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

    [2] Added the higher-level package *critcl::class*.

        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.

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

    [3] Extended the API for handling TEApot metadata. Added the
        command 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.

        The new packages *critcl::iassoc* and *critcl::class* (see
        above) are users of this command.

    [4] Extended the API with a command, critcl::name2c, exposing the
        process of converting a Tcl name into base name, namespace,
        and C namespace. This enables higherl-level code generators to
        generate the same type of C identifiers as *critcl* itself.

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

    [5] Extended the API with a command, 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.

    [6] 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.

        See the section -> Advanced: Diversions for details of the
        provided commands.

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

    [7] Extended the API with commands helping developers with the
        generation of proper C _#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.

        See the section -> Advanced: Location management for details
        of the provided commands.

        The new packages *critcl::iassoc* and *critcl::class* (see
        above) are users of these facilities.

    [8] Extended the API with commands giving users the ability to
        define custom argument and result types for ::critcl::cproc.

        See the section -> Advanced: Extending cproc for details of
        the provided commands.


The examples coming with the critcl sources were extended and modified
to demos the new features above, mainly "critcl::class" and
"critcl::iassoc".

For a really _big_ example of the use of "critcl::class", custom #line
generation, custom types for cproc, i.e. pretty much everything in
v3.1-to-be, please see

	https://chiselapp.com/user/andreas_kupries/repository/KineTcl/index

Note that actually building this big example will require a few
external dependencies like OpenNI, NITE, etc. And a Kinect, of
course. Details regarding getting and building it can be found in
KineTcl's dev guide.

-- 
So long,
	Andreas Kupries <akupries@shaw.ca>
			<http://www.purl.org/NET/akupries/>
	Developer @	<http://www.activestate.com/>

http://www.tcl.tk/community/tcl2012/ - Tcl'2012, Nov 12-16, Chicago, IL, USA.
-------------------------------------------------------------------------------