Critcl 3.1.13 released

Published

Welcome to the C Runtime In Tcl (CriTcl for short) version 3.1.13.

This is a system to build C extension packages for Tcl on the fly, from C code embedded within Tcl scripts, for all who wish to make their code go faster.

See

Changes for version 3.1.13

  1. Merged PR #43. Fixed bug loading adjunct Tcl sources.

  2. Fixes in documentation and generated code of package critcl::enum. Bumped to version 1.0.1.

  3. Fixes in documentation of package critcl::bitmap.

  4. New package critcl::emap. In essence a variant or cross of critcl::bitmap with behaviour like critcl::enum.

  5. Merged PR #49. Fixed documentation typo.

  6. Merged PR #46. Fixed documentation typo.

  7. Merged PR #47. Fixes to test results to match the accumulated code changes. Also made portable across Tcl versions (varying error syntax).

  8. New predefined argument- and result-type wideint mapping to Tcl_WideInt.

  9. New predefined argument-type bytes mapping to tuple of byte-array data and length.

    Note: The existing type bytearray (and its aliases) was left untouched, to keep backward compatibility.

  10. Modified the internal interface between the Tcl shim and C function underneath critcl::cproc with respect to the handling of optional arguments. An optional argument X now induces the use of two C arguments, X and has_X. The new argument has_X is of boolean (int) type. It is set to true when X is set, and set to false when X has the default value. C code which cares about knowing if the argument is default or not is now able to check that quickly, without having to code the default value inside.

    Note: This change is visible in the output of the advanced commands argcnames, argcsignature, argvardecls, and argconversion.

  11. Fixed issue #50 and documented the availability of variable interp (type Tcl_Interp*) within critcl::cinit C code fragments.

    Note that while the old, undocumented name of the variable, ip, is still usable, it is deprecated. It will be fully removed in two releases, i.e. for release 3.1.15. The variable name was changed to be consistent with other code environments.

  12. Fixed issue #51. Disabled the generation of #line directives for critcl::config lines 0 coming from template files, or code generated with them before the final value of this setting was known.

  13. Fixed issue with handling of namespaced package names in critcl::iassoc. Equivalent to a bug in critcl::class fixed for critcl 3.1.1, critcl::class 1.0.1.

    Note: literals, enum, emap, and bitmap do not require a fix as they are all built on top of iassoc.

Changes for version 3.1.12

  1. Fixed issue 42. Clear ::errorInfo immediately after startup to prevent leakage of irrelevant (caught) errors into our script and confusing the usage code.

  2. Fixed issue 40. Keep the order of libraries, and allow duplicates. Both are things which are occasionally required for proper linking.

  3. Extended the utility package critcl::literals to declare a cproc result-type for a pool.

    Further fixed the generated header to handle multiple inclusion.

    Bumped version to 1.1.

  4. Fixed issue with utility package critcl::bitmap.

    Fixed the generated header to handle multiple inclusion.

    Bumped version to 1.0.1.

  5. Created new utility package critcl::enum for the quick and easy setup and use of mappings between C values and Tcl strings. Built on top of critcl::literals.

  6. Added examples demonstrating the use of the utility packages critcl::literals, critcl::bitmap, and critcl::enum

Happy Tcling.