Version 6 of Building Tcl extensions

Updated 2001-10-20 13:28:08

Purpose: Discuss what it takes for a softare author to create a Tcl extension that can be used by others.


  • See the Tcl Core Team team's example extension ftp://ftp.scriptics.com/pub/tcl/examples/tea/
  • Read the TEA Tcl Extension Architecture document [L1 ]
  • Determine whether the extension can and will be cross platform
  • Is this relevant to your extension?
  • Are you interested in supporting cross platform?
  • What needs to be done?
  • Decide whether you want a script library extension versus compiled (or mixed) library extension.
  • If script only, what are the core issues to consider?
  • Portable code - see the Tcl Developer's Xchange [L2 ] style guide
  • What installation aids do you provide? Options include:
  • Nothing - let the user figure it out
  • Text describing what to do
  • Tcl script to assist in configuration / installation
  • configure / makefile to assist in configuration
  • What documentation do you supply? Options include:
  • None - let the users read the source *
  • Plain text - everyone has an editor these days
  • HTML - everyone has a browser these days
  • *roff man pages - it's what everyone considers
  • XML - it's the coming thing
  • Other formats (TeX, texinfo, PostScript, PDF, WinHelp, etc.)
  • What format is used for MacOS?
  • What additional issues can be considered?
  • If compiled language only, what are the core issues to consider?
  • Which compiler?
  • ANSI C only?
  • Portable C?
  • ANSI C++ ?
  • Portable C++ ?
  • Other (FORTRAN, Ada, ...)?
  • Be certain to use Tcl functions when available, to gain as much cross platform help as possible
  • Be certain to use Tcl's compat library when your platform(s) functions are broken
  • Provide your own compat library functions when you need to replace the functions on a particular plaforms
  • Propose new Tcl cross platform library functions when you need something that isn't already in Tcl. See TIP for this process.
  • Tools for writing extensions: SWIG, mktclapp [L3 ]
  • the so-called RTFS system

LV: What is RTFS?

MS: RTF source, I guess.

LV: Appears to be some sort of DOS compatibility file system.


Building Tcl DLL's for Windows