critcl(3tcl)

critcl3tcl

Introduction to critcl


    


    

Overview

Be welcome to the C Runtime In Tcl (short: CriTcl), a system for embedding and using C code from within Tcl [http://core.tcl-lang.org/tcl] scripts.

Adding C code to Tcl [http://core.tcl-lang.org/tcl]/Tk [http://core.tcl-lang.org/tk] has never been easier.

Improve performance by rewriting the performance bottlenecks in C.

Import the functionality of shared libraries into Tcl scripts.

History & motivation

CriTcl started life as an experiment by Jean-Claude Wippler and was a self-contained Tcl package to build C code into a Tcl/Tk extension on the fly. It was somewhat inspired by Brian Ingerson's Inline for Perl, but is considerably more lightweight.

It is for the last 5% to 10% when pure Tcl, which does go a long way, is not sufficient anymore. I.e. for

[1]

when the last bits of performance are needed,

[2]

access to 3rd party libraries,

[3]

hiding critical pieces of your library or application, and

[4]

simply needing features provided only by C.

Overview

To make the reader's topics of interest easy to find this documentation is roughly organized by Quadrants [https://documentation.divio.com/], i.e.

            | Study           | Work
----------- + --------------- + -----------------
Practical   | Tutorials       | How-To Guides
            | (Learning)      | (Problem solving)
----------- + --------------- + -----------------
Theoretical | Explanations    | References
            | (Understanding) | (Knowledge)

Note: At this point in time the documentation consists mainly of references, and a few how-to guides. Tutorials and Explanations are in need of expansion, this is planned.

Known users

•

AnKH [https://core.tcl-lang.org/akupries/ankh]

•

TclYAML [https://core.tcl.tk/akupries/tclyaml]

•

Linenoise [https://github.com/andreas-kupries/tcl-linenoise]

•

KineTcl [https://core.tcl.tk/akupries/kinetcl]

•

Inotify [https://chiselapp.com/user/andreas_kupries/repository/inotify]

•

TclMarpa [https://core.tcl.tk/akupries/marpa]

•

CRIMP [https://core.tcl.tk/akupries/crimp]

Tutorials - practical study - to learn

This section is currently empty.

Explanations - theoretical knowledge - to understand

This section is currently empty.

How-to guides - practical work - to solve problems

[1]

How To Get The CriTcl Sources.

[2]

How To Install CriTcl.

[3]

How To Use CriTcl - A light introduction through examples.

[4]

NEW: How To Adapt Critcl Packages for Tcl 9.

References - theoretical work - to gain knowlegde

[1]

The CriTcl License

[2]

CriTcl Releases & Changes

[3]

CriTcl Application Reference

[4]

CriTcl Package Reference

[5]

CriTcl cproc Type Reference

[6]

CriTcl - Utilities

[7]

CriTcl - C-level Utilities

[8]

CriTcl - C-level Callback Utilities

[9]

CriTcl - Wrap Support - String/Integer mapping

[10]

CriTcl - Wrap Support - Bitset en- and decoding

[11]

CriTcl - Wrap Support - Enum en- and decoding

[12]

CriTcl - Code Gen - Constant string pools

[13]

CriTcl - Code Gen - Tcl Interp Associations

[14]

CriTcl - Code Gen - C Classes

[15]

CriTcl Application Package Reference

[16]

Guide To The CriTcl Internals

Bugs, ideas, feedback

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report them at https://github.com/andreas-kupries/critcl/issues. Ideas for enhancements you may have for either package, application, and/or the documentation are also very welcome and should be reported at https://github.com/andreas-kupries/critcl/issues as well.

Keywords

C code, Embedded C Code, calling C code from Tcl, code generator, compile & run, compiler, dynamic code generation, dynamic compilation, generate package, linker, on demand compilation, on-the-fly compilation

Category

Glueing/Embedded C code

Authors

Jean Claude Wippler, Steve Landers, Andreas Kupries

From critcl 3.3.1+dfsg-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.