---
name: "critcl"
section: "3tcl"
platform: "linux"
package: "critcl"
version: "3.3.1+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/critcl/3tcl"
---

# critcl(3tcl)

Introduction To CriTcl

```

```

## NAME

critcl - Introduction To CriTcl

## DESCRIPTION

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*

## AUTHORS

Jean Claude Wippler, Steve Landers, Andreas Kupries

## 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

## COPYRIGHT

```
Copyright (c) Jean-Claude Wippler
Copyright (c) Steve Landers
Copyright (c) 2011-2024 Andreas Kupries
```
