Go Back   Rhinocerus > Newsgroup > Newsgroup comp.lang.* 1 > Newsgroup comp.lang.tcl

Reply
 
Thread Tools Display Modes
  #1 (permalink)  
Old 08-16-2012, 05:48 AM
Andreas Kupries
Guest
 
Posts: n/a
Default [ANN] critcl 3.1 RC0


Hi all.

Having worked on critcl version 3.1 for some time now I believe that
the code is ready to be shown around as at least a release candidate.

For those people willing to test things out before I make an actual
release, some information:

Critcl is found at github, at

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

The work on version 3.1 resides in the branch "dev31". It will find
its way into branch "master" only when the release proper is made.

It is planned to be mainly 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_k.../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.



(*) Has somebody a better name for this one ?

--
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.
-------------------------------------------------------------------------------
Reply With Quote
Alt Today
Advertising
 
and become member of Rhinocerus
Standard Sponsored Links

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off




All times are GMT. The time now is 02:53 PM.


Copyright ©2009

LinkBacks Enabled by vBSEO 3.3.0 RC2 © 2009, Crawlability, Inc.