From: email@example.com (Larry W. Virden)
Subject: comp.lang.tcl Frequently Asked Questions (June 17, 2005) (1/6)
Summary: A regular posting of the comp.lang.tcl Frequently Asked Questions
(FAQ) and their answers. This is the first of six parts.
This part introduces Tcl and Tk and discusses documentation, etc.
Keywords: tcl, extended tcl, tk, expect, resources, history, help
Reply-To: firstname.lastname@example.org (Larry W. Virden)
X-Disclaimer: Approval for *.answers is based on form, not content.
Archive-name: tcl-faq/part1 Posting-Frequency: at least once a quarter Last-modified: March, 2010 Version: 8.224 URL: http://www.purl.org/NET/Tcl-FAQ/part1.html Comp-lang-tcl-archive-name: tcl-faq.part01 For more information concerning Tcl (see "part2"), (see "part3"), (see "part4"), (see "part5"), or (see "part6"). Also (see "bibliography/part1"). Index of questions: I. Origin of comp.lang.tcl, the FAQ information, and to whom do I contact for more information about the FAQ? II. What is Tcl? Tk? Extended Tcl? What is Tcl not? III. Do these packages run on my machine? A. Unix B. MacOS C. INTEL DOS-like systems D. VMS E. AmigaDOS F. NeXT G. Other IV. Other than C, What languages can talk to tcl/tk? A. Shell B. C++ C. Modula-3 D. Eiffel E. Ada F. Perl G. Prolog H. Other V. What training material is available? A. Books B. Training courses, etc. C. Time-related seminars, conferences, workshops. VI. Where do I report problems, bugs, or enhancements about Tcl - or - what is comp.lang.tcl? End of FAQ Index ---------------------------------------------------------------------- ------------------------------
From: FAQ General information
Subject: -I- Origin of comp.lang.tcl, the FAQ information, and
to whom do I contact for more information about the FAQ? What is comp.lang.tcl? First, let me assure you what it is not. news:comp.lang.tcl (and news:comp.lang.tcl.announce now) are NOT bulletin boards. They are not, innately, mailing lists. Some users may experience the messages in those formats, but these communities of users are what is known as USENET newsgroups. While Dr. John Ousterhout http://home.pacbell.net/ouster/ was the creator of the original, unmoderated news:comp.lang.tcl, in the current incarnation, clt (as it is often referenced) has no moderator, no owner, no authority to whom one can appeal when one feels slighted, offended, libeled, etc. On the other hand, there are a group of moderators associated with news:comp.lang.tcl.announce, whose job it is to ensure that the postings there remain 'on charter'. What kinds of topics are appropriate for news:comp.lang.tcl? Good question. The original charter stated: It will be an unmoderated forum for the discussion of the Tcl programming language and tools that include it, such as Expect and the Tk toolkit for X-Windows (sic). Thus, discussing Tcl, extensions and tools that use Tcl, products and design ideas, all can be on topic. The "Welcome to comp.lang.tcl" message http://www.purl.org/NET/Tcl-Welcome lays out other useful suggestions. The majority of readers of news:comp.lang.tcl are access the postings in English, and seem to prefer plain text postings formatted to 78 or less characters per line, as opposed to HTML, Postscript, MIME base64, Macintosh special character sets, etc.. They also prefer to have postings which specify a working email address in the From or Reply-To header (or at least in the body of the msg somewhere). While alternatives to that are certainly possible, you decrease the chance of getting a timely relevant answer by choosing alternatives to these. These rules are not unique to clt, but are the typical USENET netiquette that posters are asked to respect. As an alternative to this, there are the French news:fr.comp.lang.tcl, German news:de.comp.lang.tcl, and Japanese news:fj.lang.tcl equivalents of news:comp.lang.tcl. Posting of source code is acceptable (and in fact encouraged if you are having problems) if reasonably sized (a few hundred lines). otherwise, you should investigate some other means of distributing code you wish to share - perhaps via http://www.sf.net/ or one of the other similar sites. Posting of binaries (or even HTML attachements) are in general is not looked upon kindly; use of NeoSoft or one of the many free web sites, etc. is a much better alternative. Advertising for books, jobs, software, etc. are acceptable if done with some forethought - frequent 'form letter' postings and announcements are likely to meet with some community resistance. One question that comes up fairly often concerning news:comp.lang.tcl is 'why isn't the newsgroup split?'. The newsgroup varies in traffic, but I have seen as many as 45 messages a day (counting current cross postings, etc.) Currently, many have come forward with ideas on how a split could be handled, but no concensus has been reached. Also, no moderators have stepped forward to take over moderation of a split group. During January, 1996, news:comp.lang.tcl.announce, a moderated group containing announcements of new software, doc, etc. relating to Tcl, was created. So as of right now, asking to split the newsgroup only adds to the existing traffic, without resolving any problems. Other newsgroup in which you might encounter Tcl discussion are news:alt.comp.tkdesk, where discussions about the Tk application TkDesk may take place, news:comp.unix.sco.programmer - where discussion about SCO's vtcl (a graphical interface extension based on the Motif library) can be found, news:comp.lang.perl.tk, which covers discussions about the Tk binding to Perl, and of course, discussions of specific ports of Tcl/Tk/other Tcl-based extensions and programs will frequently be found on the appropriate OS or hardware related newsgroups You can also find discussions regarding Tcl in many of the support newsgroups and mailing lists provided by vendors/authors who are using Tcl in their products. Two examples are the mailing lists for AOL's AOLserver and Tcl/Tk based Instant Messages client TiK (see "part2"), while Vignette has nntp://news.vignette.com/vignette.storyserver.misc and nntp://news.vignette.com/vignette.storyserver.template-lang. The information in this set of FAQs comes from several sources. The primary source of information is the group itself - I spend (much too much) time each month culling through what I feel are some of the best answers, gathering up new information on ports, etc. and adding it here. I also gather new application information and add it as best I can. The next most predominant source of information comes from the authors of the various software packages. Finally, a small amount comes from my personal experiences. You can find my general Tcl FAQs at http://www.purl.org/NET/Tcl-FAQ/ . The commercial use of Tcl FAQ is no longer being maintained. The last copy of it available for ftp can be found at ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/info/faq/tcl-commercial-faq-p1.gz, ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/info/faq/tcl-commercial-faq-p2.gz, ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/info/faq/tcl-commercial-faq-p3.gz. Commercial vendors who write products using Tcl and who would like some visibility in the community can contact the Tcl Core Team http://www.tcltk.com/ for ideas. The FAQ containing a series of Tcl-related questions and answers is managed by mailto:email@example.com (Joe Moss). See http://psg.com/%7Ejoem/tcl/faq.html or find it at ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/info/faq/tcl-faq-usage.gz. The FAQ containing Tk-related questions and answers is managed by <URL: mailto:jeff at hobbs.org > (Jeffrey Hobbs). You can find it at http://www.purl.org/net/hobbs/tcl/faqs/tk/. A bibliography of published material related to Tcl will be managed by mailto:firstname.lastname@example.org (Glenn Vanderburg). (See "bibliography/part1") or ftp it at ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/info/faq/tcl-faq-bib.gz. Cameron Laird mailto:email@example.com has made available his personal notes on mistakes frequently made by newcomers to Tcl at http://phaseit.net/claird/comp.lang.tcl/fmm.html and will update it as time permits. Cameron maintains one of the more unusual FAQ pages as well - the Unanswered Frequently-Asked Questions about Tcl page http://phaseit.net/claird/comp.lang.tcl/tcl-UFAQ.html. He has many other useful collections of information on Tcl and Tk. Look over the list by going to http://phaseit.net/claird/comp.lang.tcl/. FAQs are also available for the Windows port of Tcl http://www.pconline.com/%7Eerc/tclwin.htm, Macintosh port http://www.tcl.tk/mac/macFAQ.html, and perl/Tk news:comp.lang.perl.tk http://phaseit.net/claird/comp.lang.perl.tk/ptkFAQ.html. A renewal of the effort of converting the FAQs to Japanese has begun. You can find the ongoing updates (currently things are still old) at http://www.tohoku.iij.ad.jp/%7Etaguchi/tcl-tk/JpDocs/index-en.html. It is being built by Taguchi Takeshi mailto:firstname.lastname@example.org and Oota Toshiya mailto:email@example.com. A newsbot has been implemented by Andreas Kupries mailto:firstname.lastname@example.org which provides a news:comp.lang.tcl automated welcome, providing first time posters some introductory remarks and a set of pointers to the FAQs and other common resources. You can see the current version of the mailing by looking at http://www.purl.org/NET/Tcl-Welcome. A WWW form to submit entries to the Tcl/Tk software catalog is available at http://www.wwinfo.com/tcl/. This provides you an interface not only to submit new items, but to submit updates or to browse the catalog as needed. A sort of "Who's Who in the Tcl Community" directory has been created - see http://www.tcl.tk/resource/community/people/ for the current information. Be sure to submit your own information. If you have corrections, enhancements, modifications, clarifications, suggestions, ideas, new questions, new answers to questions which have never been asked, or something else that I have not covered above, contact me at mailto:email@example.com. ------------------------------
From: FAQ General information
Subject: -II- What is Tcl? Tk? Extended Tcl? What is Tcl not? o Highlights of Tcl based languages Tcl and Tk originated with Dr. John Ousterhout (OH'-stir-howt) while teaching at the University of California, Berkeley, California. A quip about the pronunciation of Dr. O's last name from news:comp.lang.tcl pundit mailto:firstname.lastname@example.org Jay Sekora:
> `It's pronounced Oh-stir-howt
> without a doubt!
> Not Oh-stir-hoot;
> he's not a brute.' A Brief History of Tcl-ing See http://www.tcl.tk/scripting/tclHistory.html for more details! Dr. Ousterhout got the idea for Tcl while on sabbatical leave at DEC's Western Research Laboratory in the fall of 1987. He started actually implementing it when he got back to Berkeley in the spring of 1988; by summer of that year it was in use in some internal applications, but there was no Tk. The first external releases of Tcl were in 1989. Tk implemention began in 1989, and the first release of Tk was in 1991. John joined Sun in their research group in 1994. During April/May, 1997, the Sun research group responsible for Tcl development were spun off into a Sun business group called SunScript. However, things changed again soon afterwards. http://phaseit.net/claird/comp.lang.tcl/SunScript_story is a copy of the message posted by John Ousterhout regarding the situation as it developed during the Summer of 1997. During August of 1997, a Tcl Consortium was formed. In December of 1999, the Tcl Consortium was disbanded due to lack of participation. During February, 1998, John Ousterhout left Sun to create Scriptics, a company dedicated to scripting tools, applications, and services. He stated at the time that core Tcl and Tk would remain free, with his team continuing work right now on Tcl/Tk. During May, 2000, Scriptics changed their name to Ajuba (a-'joo-ba) Solutions. The intent was to de-emphasis the scripting nature the company previous had and to emphasize the business to business nature towards which the company has moved. During June, 2000, John Ousterhout announced the formation of a Tcl Core Team - a group of 14 key Tcl developers who are to spearhead the coordination of current and future Tcl maintenance and enhancements. See http://www.tcltk.com/ for details. This team is NOT intended to be the ones doing all the coding and debugging of Tcl; instead, the community is urged to take part in the process. These fourteen will be the 'project leaders', contributing code when they can, ideas and direction, enthusiasm, and experienced help where needed. John Ousterhout continues as a member of the team, providing guidance and final arbitration if necessary. During October, 2000, Ajuba Solutions announced the intent to merge with Interwoven. The association betweem Tcl and a company run by its creator came to an end as John moves on to Interwoven. Interwoven did open up the source for TclPro and made the product free, as well as for a time provided resources to keep the Tcl Developer's Xchange going. Then, during late February, 2001, ActiveState announced the hiring of Jeff Hobbs and Andreas Kupries, and the intention to make ActiveTcl another of their stable of supported scripting languages. On April 23, 1998 the Association for Computing Machinery (ACM) http://www.acm.org/ awarded the 1997 Software System Award to John Ousterhout and Scriptics. This is awarded to an institution or individual(s) recognized for developing a software system that has had a lasting influence, reflected in contributions to concepts, in commercial acceptance, or both. The Software System Award carries a prize of $10,000. Financial support for the Software System Award is provided by IBM. See http://www.acm.org/awards/ssaward.html for the others who have won this award. In September of 1998, Scriptics announced the availability of TclPro, a suite of developer tools and the Tcl Consortium announced Tcl-Blast! - a CD-ROM containing Tcl and extension source code as well as binaries for a number of platforms. With the demise of the Tcl Consortium and Ajuba Solutions I don't know where one would go to find the (Tcl 8.0.5 based) Tcl-Blast! CD-ROM. Another bit of Tcl trivia has to do with sites where you find Tcl and user contributed software. In the beginning, John created the heavens and the earth... no, that's not right. In the beginning, the Tcl and later the Tk source were available on an ftp site at Berkeley. As user contributed software began to appear, some kind people at Purdue graciously volunteered some disk space. Later, when John left Berkeley for Sun, the core Tcl and Tk software (source code, etc.) moved from Berkeley to Sun. Then, when Purdue no longer had resources to support the archive, it moved to Alcatel. Eventually, that archive was moved to Neosoft's http://www.neosoft.com/tcl/ archive. Now that Neosoft has retired, the archive can be found at ftp://ftp.procplace.com/pub/tcl/. But what is Tcl? Tcl (current release version 8.5.8) stands for ``tool command language'' and is pronounced ``tickle.'' The home download site for the Tcl source code is http://www.tcl.tk/software/download.html. For brave souls, web access to the individual modules is provided via http://tcl.sf.net/ and its CVS respository, where the latest and greatest patches and improvements can be found. Tcl is actually two things: a language and a library. First, Tcl is a simple textual language, intended primarily for issuing commands to interactive programs such as text editors, debuggers, illustrators, and shells. It has a simple syntax and is also programmable, so Tcl users can write command procedures to provide more powerful commands than those in the built-in set. Second, Tcl is a library package that can be embedded in application programs. The Tcl library consists of a parser for the Tcl language, routines to implement the Tcl built-in commands, and procedures that allow each application to extend Tcl with additional commands specific to that application. The application program generates Tcl commands and passes them to the Tcl parser for execution. Commands may be generated by reading characters from an input source, or by associating command strings with elements of the application's user interface, such as menu entries, buttons, or keystrokes. When the Tcl library receives commands it parses them into component fields and executes built-in commands directly. For commands implemented by the application, Tcl calls back to the application to execute the commands. In many cases commands will invoke recursive invocations of the Tcl interpreter by passing in additional strings to execute (procedures, looping commands, and conditional commands all work in this way). An application program gains several advantages by using Tcl for its command language. First, Tcl provides a standard syntax: once users know Tcl, they will be able to issue commands easily to any Tcl-based application. Second, Tcl provides programmability. All a Tcl application needs to do is to implement a few application-specific low-level commands. Tcl provides many utility commands plus a general programming interface for building up complex command procedures. By using Tcl, applications need not re-implement these features. Third, extensions to Tcl, such as the Tk toolkit, provide mechanisms for communicating between applications by sending Tcl commands back and forth. The common Tcl language framework makes it easier for applications to communicate with one another. Note that Tcl was designed with the philosophy that one should actually use two or more languages when designing large software systems. One for manipulating complex internal data structures, or where performance is key, and another, such as Tcl, for writing smallish scripts that tie together the other pieces, providing hooks for the user to extend. For the Tcl script writer, ease of learning, ease of programming and ease of gluing are more important than performance or facilities for complex data structures and algorithms. Tcl was designed to make it easy to drop into a lower language when you come across tasks that make more sense at a lower level. In this way, the basic core functionality can remain small and one need only bring along pieces that one particular wants or needs. One answer to "What is Tcl?" can be found at http://www.tcl.tk/scripting/. For a white paper written by Dr. Ousterhout discussing scripting languages, and Tcl in particular, see http://www.tcl.tk/people/john.ousterhout/scripting.html. For a 1996 article in SunWorld on the state of Tcl, see http://www.sun.com/960710/cover/. Other SunWorld articles have followed. Many times users post to news:comp.lang.tcl asking about the changes from one release of Tcl to another. One resource of course comes with each source release of Tcl and Tk. A file named "changes" lists a change log of important changes. However, it has been pointed out that this file is not all inclusive. Another commonly referenced resource is http://www.tcl.tk/, which has various release notes available online. In terms of books covering the topic, the book by Brent Welch (see below) covers the topic over several chapters. Tk (current release version 8.5.8) is an extension to Tcl which provides the programmer with an interface to the X11 windowing system. Note that Tk has been successfully compiled under X11 R4, X11 R5, X11 R6, as well as Sun's NeWS/X11 environments. The home download site for this Tk release is http://www.tcl.tk/software/download.html. Many users will encounter Tcl and Tk via the ``wish'' command. Wish is a simple windowing shell which permits the user to write Tcl/Tk applications in a prototyping environment. Note that one frequently asked question is whether Tcl/Tk can handle Japanese, Chinese, Korean, .... language fonts. As of 8.1, Tcl/Tk supports UniCode. This makes it easier to provide various language support, assuming that the appropriate fonts are available and appropriate care is taken. John also has asked me to mention that information about what is new or changed in each release is now available on the WWW. John writes:
> there are now pages containing release notes. The best thing is just to
> refer people to my home page, which is:
> You might put a notice about this in the FAQ to help people who see
> the FAQ after we reorganize. A Tcl/Tk logo and a "Tcl-Powered" logo are now available from John. GIF images in several different sizes are available in the Tk source code distribution's ../library/images/ subdirectory. See the README file in the library/images subdirectory for more details. From time to time, there is concern about the future of Tcl. John has given me permission to include this quote:
>From: John Ousterhout <email@example.com >
>Date: Thu, 14 Jan 1999 14:00:40 -0800
>My move from Sun to Scriptics will not change the open source nature of
>Tcl and Tk. We will continue to develop new releases of both Tcl and
>Tk at Scriptics, and we'll release them freely in source form as has
>always been the case. The license terms will stay the same. You'll be
>able to use Tcl/Tk for anything you wish, including making changes,
>selling it, and redistributing it in whole or in part. Extended Tcl (tclX) (current release version 8.4.0) is an extended set of commands for Tcl developed by Karl Lehenbauer mailto:firstname.lastname@example.org and Mark Diekhans. The authors' home ftp site for Extended Tcl is ftp://ftp.procplace.com/pub/tcl/TclX/. Extended Tcl is oriented towards system programming tasks, with many additional interfaces to the Unix operating system as well as other useful utilities. Expect (current release version 5.43) was perhaps the first extension to Tcl written. Its purpose is to ease interaction with applications which normally interact directly with users at a terminal (such as ftp, telnet, etc.). The WWW site for Expect is http://expect.nist.gov/. Expect is oriented towards automating command seuqences commonly typed. One can use Expect with Tk to create graphical interfaces to these commands as well. Expect works with Tcl up through Tcl 8.x. Many other useful (and in some cases essential) extensions also exist. (See "part5") for details. o General information about Tcl and Tk by mailto:email@example.com (Glenn Vanderburg) Tcl (Tool command language) is a freely distributable simple, interpreted language designed to be used as a common extension and customization language for applications. It was designed and implemented by Dr. John Ousterhout in the hope that application designers could spend more of their time on applications and less on scripting languages, and in the hope that users could spend less time learning new scripting languages for each new application. Many useful applications, some of them sold commercially, use Tcl as their scripting language. Tcl is clean and regular, and relatively easy for non-hackers to learn. It is command-oriented, and commands added by applications and users exist on an equal footing with the built-in Tcl commands. Tcl has both simple variables and associative arrays (tables), and all values (including procedure bodies) are represented as strings. Simple customization scripts (such as preference initialization scripts) usually look much like novice users expect them to: a series of simple commands which set options. Tcl is implemented as a C library, which can be embedded in an application. The application can add its own commands to the interpreter (using a clean C interface). It is distributed under a license which allows use for any purpose with no royalties. The Tk toolkit is a Tcl extension (a group of new Tcl commands) which provides a Tcl interface to the X Window System. Tk is one of the easiest ways to build a graphical interface to an application, and due to the interpreted nature of Tcl, Tk-based interfaces tend to be much more customizable and dynamic than those built with one of the C- or C++-based toolkits. Tk implements the Motif look and feel. A number of interesting X applications are implemented entirely in Tk, with no new application-specific commands at all. Tk also provides a mechanism by which one application can send Tcl scripts to other Tk-based applications running on the same display, for easy cooperation between tools. Tcl and Tk are mature, and quite stable, but they are not static: Dr. Ousterhout [...] moved from Berkeley to Sun Microsystems, where his group [pursued] such projects as a commercial-quality Tk graphical interface designer, an on-the-fly Tcl compiler, and Macintosh and Microsoft Windows ports of Tk. John has stated that the copyright status and licensing provisions of Tcl and Tk will not change. ---- As to what Tcl is not - in the context of the discussion in news:comp.lang.tcl, it is not related directly to the Think C Library (TCL) available on the Mac. Confusingly enough, the language concerned with here is available on the Mac, and someone in fact may have used Think C to compile it there. Just one of those universal 'coincidences' that set the stage for Vogon interstellar highway construction crews. Also, Oracle has a product called Tk2Motif which has nothing to do with Tcl or Tk as we are referring to it. Another 'TCL' that is sometimes encountered has to do with the Pick operating system - again, that is different than the language being discussed. What are some of the most common complaints about Tcl? Well of course the primary complaint is that because it is interpreted and because the data is primarily treated as strings, that programs written in Tcl are slow. Tcl 8.x attempts to address this by doing some degree of compilation as well as permitted additional variable types. There are also complaints frequently about the fact that several of Tcl's behaviors are not intuitive - comments are commands rather than traditional comments, numbers beginning with 0 are octal, proper use of quoting mechanisms, etc. These are covered in the various FAQs. A common question is whether Tcl/Tk/etc. is Year 2000 (Y2K) compliant. The 'official' statement from the creator of the Tcl and Tk core can be found at http://www.tcl.tk/Y2K.html. A statement from one of the news:comp.lang.tcl readers who has done his own analysis can be found at http://www.cs.man.ac.uk/%7Efellowsd/tcl/tcly2k.html. Information about Y2k compliance of various Tcl based programs or extensions should come from their creators - if the web page for the program or extension doesn't address the issue, email the creator and ask if they would please add such a statement. See The Tcl Wear http://www.nyx.net/%7Etpoindex/tcl-wear/ web page for images of some of the Tcl related merchandise that has been seen during the past 5 years. ------------------------------
From: FAQ General information
Subject: -III- Do these packages run on my machine? A. Unix Tcl runs on Sun 3s, 4s, and later models running SunOS 4 and SunOS 5 (Solaris 1.x and 2.x), DECstations running Ultrix, DEC VAXen running Ultrix or BSD, DEC Alphas running OSF/1, 386s running SCO Unix, Xenix, Bell-Tech, all sorts of HPs running HP-UX (even HP Snakes running OSF/1 and HP-UX). Intel 86 systems running 386bsd, netbsd, freebsd, BSDI, Solaris 2.x and Linux have Tcl ported. In fact, Tcl/Tk even runs on the Agenda Vr3 Linux powered Personal Digital Assistant (PDA). Various CPUs running System V.4 report having ported Tcl. Tcl also appears to be running on Sequent Symmetry running Dynix as well as OSF/1. It also has been reported that Tcl runs fine on IBM RS6000 under AIX 3.x as well as IBM ES/9000 and AIX/ESA. A few problems getting Tcl running under Mt. Xinu Mach have been reported in the past. Tcl also has been ported to Encore 91's running UMAX V (an 88k based System V with BSD extension Unix), as well as to Apollos running BSD/SYSV. Tcl runs on a Cray running Unicos. Someone ported Tcl to a Sony NeWS machine running NEWS-OS 4.2. A Tcl port to a Convex 3220 and 3880 was also reported. Reports have been made of Tcl/Tk/BLT/itcl compiled on a Mac running the latest A/UX. A port to Tenon MachTen 2.1VM, running on a Mac II which was running MacOS System 7.1, has been reported. A port to a Mac running mkLinux has been reported. Tcl also runs on Supermax Motorola/MIPS based multiprocessors under SMOS. LynxOS 2.4.0 and 2.5.0 come with Tcl and expect (but not Tk). LynxOS 2.4.0 comes with Tcl 7.3. I've had a report of Tcl 7. (as well as Tk 4.) being built on LynxOS and Tru64 OS. Tk (being based on Tcl) generally requires X11R4 or better as the only additional software requirement. It runs on any of the above Unix systems with that base of software. It also runs on VMS and OSF/1. Note that SGI is shipping Tcl/Tk, TclMotif, expect, and some other custom extensions along with the OS starting with Irix 6.2. The desktop environment is called Indigo Magic. For information on Tcl/Tk/TclX availability (see "part4"). B. MacOS (See "part2") for details of a Macintosh Tcl Mailing list. From Tcl 7.5/Tk 4.1 on, the source code for Tcl and Tk should compile and run on a Macintosh from the original distribution. The following BOF report from MacWorldExpo 1999 mentions support of Tcl being added to MacOS X CR1 http://www.stepwise.com/SpecialCoverage/MacWorldExpo-99-SF/bof.html. Also (see "part4"), the Tcl programs/packages catalog, for the latest port locations and versions. C. INTEL DOS-like systems From Tcl 7.5 on, the source code for Tcl and Tk should compile and run on Windows machines from the original distribution. Steve Furr mailto:firstname.lastname@example.org reports getting Tcl ported to QNX without a lot of trouble. He mentions that QNX users who have the beta X should have gotten a CD-ROM update with Tcl and Tk on the CD. A port of Tcl 7.3, except for glob or command pipelines, to OS/2 2.x using C Set++ has been done by mailto:email@example.com (Bud Bach). Andreas Stuebinger mailto:firstname.lastname@example.org also has done an OS/2 port of Tcl (version unknown). Tcl 7.4 has been ported to OS/2 by Stefano Fornari mailto:email@example.com It is available at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/languages/. Illya Vaes mailto:firstname.lastname@example.org has ported Tk 4.1 and Tk 4.2 (the Win32 version) to OS/2 Presentation Manager. The ports use the the native PM/GPI calls and the EMX runtime and support OS/2 2.x. They can be downloaded from ftp://hobbes.nmsu.edu/pub/os2/dev/tcl/tk42os2x.zip (binaries 4.2), ftp://hobbes.nmsu.edu/pub/os2/dev/tcl/tk42os2s.zip (source 4.2). (and from Neosoft). It is reported that Ilya Zakharevich mailto:email@example.com is doing something similar, using the Developer's API extensions to directly support most of the Win32 API's under OS/2 Warp with DAX/DAPIE and Fixpack 17 installed and the Open32 manager. Contact them for more details on the progress being made. Versions of Tcl for Windows 3.x, Windows 95, Windows NT, OpenNT should all be available or buildable. Also (see "part4"), the Tcl programs/packages catalog, for the latest port locations. D. VMS A port of a variety of versions of Tcl/Tk to VMS have been done by Angel Li mailto:firstname.lastname@example.org. The files are at ftp://mango.rsmas.miami.edu/pub/VMS-tcl/ and were compressed with the Unix compress command. These were compiled on an Alpha running OpenVMS T6.1. A port of Tcl 6.3 onto VMS 5.5 was done by Wolfgang Kechel mailto:email@example.com and Till Imanuel Panzschke. Contact them directly for assistance. Gerald W. Lester mailto:firstname.lastname@example.org says the following should work. If you installed the POSIX package on VMS (its free), then you should be able to configure and make tcl. To access tcl you would have to do one of the following: 1) Use the POSIX shell, or 2) do a "psx tcl". Tcl scripts would not execute directly from DCL; to execute a script foo.tcl from DCL you would have to do "psx foo.tcl". DISCLAIMER: I have not built any version of tcl under VMS POSIX, these comments are based on other work I've done with VMS POSIX. ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/distrib/vms-sharable-binaries.tar.gz is a version of Tcl/Tk for VMS built as a sharable library. It includes a dynamic module loading command. Otherwise, it matches the src.honeywell.com version. Also (see "part4"), the Tcl programs/packages catalog, for the latest port locations. E. AmigaDOS Karl Lehbauer mailto:email@example.com has indicated that he started a port of Tcl 3.x to the Amiga. He has a working version, but is no longer working on it. His version uses the Amiga's shared libraries and implements the "send" command. He wrote a MIDI file loader and player as well. Contact him for further details. Ty Sarna mailto:firstname.lastname@example.org has ported Tcl 6.x to the Amiga. He says:
> I've ported 3.3 and several 6.x versions to the Amiga, and it can be
> done in under and hour if you leave out the "Unix" functionality.
> However, "Unix" functionality includes things like file I/O! Another Amiga user, mailto:email@example.com (Colas Nahaboo), mentioned that using Amiga gcc and the PD X server DaggeX and Xlibs that a port of Tk might be possible. mailto:firstname.lastname@example.org (Marco van der Heiden) has completed a port to the Amiga, and suggests Amiga developers contact him by email. mailto:email@example.com (Berndt Wulf) reports building Tcl and Tk on an Amiga system running NetBSD1.0b2, using the sources on the Walnut Creek Tcl/Tk CD-ROM. A version of Tcl is apparently available on Fish disk number 447. I do not have information concerning what version of Tcl this is. It is my understanding that the Fish disks are available on many of the Amiga Internet archive sites, one of which is ftp://ftp.cso.uiuc.edu/. Tcl 7.6 and Tk 4.2 can also be found on the Geek Gadgets CDROM (formerly known as ADE) and on any ADE/Geek Gadgets FTP server along with an X11 server and a complete development kit for unix apps. The main site is ftp://ftp.ninemoons.com/pub/geekgadgets/. This version of Tcl/Tk is not limited in any way (ie. everything should work as the Unix version) and Tcl/Tk 8.0+ should appear soon. Also (see "part4"), the Tcl programs/packages catalog, for the latest port locations. F. NeXT At one time, information about compiling Tcl and Tk were in the FAQs. This info appears to be gone now. Perhaps the configure information compiles out of the box. If not, please forward info to mailto:firstname.lastname@example.org and I can add pointers here to you. G. Other A port of Tcl 7 has been done to VxWorks. You can find it at ftp://ftp.atd.ucar.edu/pub/archive/vxworks/vx/ A diff file that appears to make Tcl 8.x compatible is in this ftp directory. Also Wind River Systems's Tornado development environment includes a tcl interface for VxWorks. A port to GEOS was attempted, but it was found to be difficult to run there (except perhaps under the desktop platform) due to resource limits and constraints. A port of Tcl/Tk and X11R6 to OS-9 has been reported to be done by mailto:email@example.com Kei Thomasen. A different port of Tcl/Tk to OS-9 was done by mailto:firstname.lastname@example.org Heinz-Juergen Oertel. A port of Tcl 8.0 has been done to BeOS, by Dave Mills mailto:email@example.com. See ftp://ftp.be.com/pub/contrib/lang/ for details. A port of Tcl 7.4 to Archimedes RISCOS 3.1 or later was performed by C.T.Stretch mailto:firstname.lastname@example.org. A port of Tcl/Tk 8.0.3 with the plus patch applied, as well as Expect 5.28, to OS/390 was reported by Ingo Struewing mailto:email@example.com in early 1999. A port of Tcl/Tk to Windows/CE has been mentioned as being in progress at times in the past, but no formal announcement has been made. A port of Tcl/Tk to LinuxCD was reported at least once. Two projects porting Tcl to PalmOS have been reported http://palmtcl.sf.net/ and http://palm-tcl.sf.net/. Also (see "part4"), the Tcl programs/packages catalog, for the latest port locations. ------------------------------
From: FAQ General information
Subject: -IV- Other than C, what languages can talk to tcl/tk? A. Shell There are a number of interfaces which are shell-like. The first is tclsh, which comes as a sample program implementing a Tcl interpreter as a part of the Tcl distribution. Another is wish, which is a shell-like interface that is a part of the Tk package. Many of the other extensions also build interpreters as well. The tclX extension is an example - it builds an interpreter called tcl as well as one called wishx. B. C++ There is a package called Objectify which can be used to assist one in turning C++ classes into Tcl object types. If you wish to use C++ with Tcl then you must have your main() in a source file that is compiled with a C++ compiler; this will ensure that the necessary C++ pre-main initialization code is executed. You can call tcl and tk routines (or other C code) routines from C++ provided that the function prototypes avoid C++ name mangling by using the C++ linkage specification : extern "C" ... prototype ... Fortunately, tcl.h and tk.h will provide these specifications when compiled with a C++ compiler and so you can just use them directly. You can construct your main using normal tcl and tk routines, or use tkMain.c and tkAppInit.c with minor modifications. Ken Yap's patch, obtainable from ftp://ftp.procplace.com/pub/tcl/alcatel/extensions/tk3.6forC++.patch.gz, is a patch that allows tk 3.6 main.c and other extension routines to be compiled with a C++ compiler. Thanks to Ken Yap mailto:firstname.lastname@example.org for this code. C++ functions and static class member functions can be used to create Tcl command using Tcl_CreateCommand in the normal way. Non-static member functions cannot be used so simply, Tcl would have to supply a "this" pointer. SWIG http://www.swig.org/ is another great resource for using C++ and Tcl. To quote the author:
> SWIG is a code development tool created to solve real problems and
> make C/C++ programming more enjoyable. Simply stated, SWIG
> allows you to integrate common scripting languages such as Tcl,
> Perl, Python, and Guile with programs containing collections of
> functions written in C or C++. By using an interpreted scripting
> language with a C program, you can do a number of cool things like:
> Build a powerful interface.
> Rapidly prototype new features.
> Interactively debug and test your code.
> Develop a graphical user interface.
> Build C/C++ modules for scripting language applications.
> Save lots of time--allowing you to work on the real problem.
> Impress your friends. One user notes:
> To contrast SWIG with Objectify - SWIG has you prepare a small interface
> file that specifies what functions are to be wrapped, rather than adding
> macros to your original header file. It also works with C, as well as
> C++. C. Modula-3 Norman Ramsey mailto:elan.uucp!nr says: A long time back, Eric Muller posted a Modula-3 interface to the C Tcl library. I wrote down a Modula-3/Tcl interface that used Modula-3 types rather than C types, and that used objects to build closures for commands. I wrote part of the implementation but never finished it. I have mailed copies to mailto:email@example.com, who asked the question, and I will post them if there seems to be general interest. Also, there is an interface between Tk and Modula-3 that is a part of the Modula-3 archives on ftp://gatekeeper.dec.com/, and Tcl-DP and Modula-3 have been merged. D. Eiffel mailto:firstname.lastname@example.org (Stephan Herrmann) says: ... [the tclish package provides] the marriage of two very different principles by means of combining two programming languages into a hybrid program architecture. There are three classes for the user - tcl interpretor, tk application, and tk window. See ftp://hepunx.rl.ac.uk/pub/eiffel/tclish for details. E. Ada mailto:email@example.com (Dennis Heimbigner) introduced an adatcl package which gives Ada programmers access to Tcl interpreters. (See "part4") for details of the package. F. Perl In the past, efforts by Dov Grobgeld mailto:firstname.lastname@example.org and Guenther Schreiner mailto:email@example.com were made to develop at least 2 Perl 4 to Tcl/Tk interfaces. More effort has occured in the Perl 5 environment, where an extension to allow Perl 5 to directly access the Tcl C API, as well as an extension to allow the ability to do Tk programming without a Tcl interpreter involved at all are available. These packages can be ftp'd from the Comprehensive Perl Archive Network (CPAN) - a series of ftp sites which keep the latest and greatest archives of Perl code in sync. See http://www.perl.com/perl/CPAN/CPAN.html for a pointer to CPAN, and follow the links to find the Tcl related Perl packages. G. Prolog The package ProTcl is an interface between Prolog and Tcl/Tk. It works best with ECLiPSe, but the foreign interface of SICStus and Quintus is also provided. The interface is dynamically loaded into a Prolog process and it gives access to Tcl commands and to handling Tk events. It is also possible to call Prolog from Tcl, handle Tk events in Prolog and to pass Prolog variables back to Tcl. See http://www.ecrc.de/eclipse/html/protcl.html for more details. H. Other A module for Python based on Tk is available - more details are available in news:comp.lang.python on this front. Tk bindings for the Dylan language are being shipped as a part of CMU's Mindy compiler for Dylan. The Sather language also has a set of classes to bind in Tk/Tcl. Duncan Sinclair mailto:firstname.lastname@example.org has details of a hack into wish.c some hooks for a Tk to any language system, and has been using it for communication with functional languages such as Haskell and Lazy ML. A paper, plus sample code, was available by ftp from ftp://ftp.dcs.gla.ac.uk/pub/glasgow-fp/authors/Duncan_Sinclair/. Unfortunately I've been unable to confirm this is still available. The InterLanguage Unification project is a system that promotes software interoperability via interfaces. It has the ability to allow Common Lisp, ANSI C, C++, Modula 3 to interact and plans to add Python, Tcl, and GNU Emacs-Lisp shortly. Of course the Wafe application environment is designed to make it easier to write GUI applications from within several languages using Tk as a basis. There are several interfaces to allow one to interface with SQL though some are specific to a database such as Oracle. There is an interpreter for Silicon Graphics machines for SGI's GL language. There is an interface to WOOL. The GNU language Guile not only has a Scheme backend, but a Tcl one as well. There are at least two interfaces to Tcl for Java. There is a Caml Light interface to Tcl/Tk. There is a commercial product which provides an interface between Objective C and Tcl. There is an interface between Oz and Tcl/Tk. There is a subset of Modula-3 with a Tk binding. There is at least one interface between Scheme and Tk. There is a binding in Gopher for Tcl/Tk. For Java, there is Jacl (a re-implementation of a good part of Tcl in Java classes) and TclBlend (a Tcl extension allowing a Tcl programmer to use Java classes as if they were Tcl commands). For more details on the above efforts, as well as other languages, see http://purl.org/tcl/wiki/TclAndOtherLanguages and (see also "part4"). ------------------------------
From: FAQ General information
From: FAQ General information
Subject: -VI- Where do I report problems, bugs, or enhancements There are two alternatives for reporting bugs and problems. The first is the Usenet news group news:comp.lang.tcl, an unmoderated Usenet newsgroup, created for the discussion of the Tcl programming language and tools that use some form of Tcl, such as the Tk toolkit for the X window system, Extended Tcl, and expect. Please note that postings of source code to news:comp.lang.tcl does not automatically get archived anywhere (for example in http://www.neosoft.com/tcl/ - the User Contributions archive site) - if you want your code to be available, you can take advantage of the http://www.neosoft.com/tcl interface and add it yourself. See elsewhere in the FAQs for more details on the user contributed source code archive site. The second alternative would be to report problems, suggestions, new ideas, etc. directly to the author. To find the email address of the authors of Tcl/Tk based programs and extensions, (see "part4") and (see "part5"). Note that this does NOT apply to Tcl / Tk themselves - John has asked that you use news:comp.lang.tcl for public communications. There is also http://www.sourceforge.net/projects/tcl/ for reporting problems, suggesting improvements, and so on. When you report bugs, be sure you mention what hardware and operating system you are using (e.g. Pentium 100 mhz running Linux version x.y.z), what version of Tcl/Tk you are using (e.g. Tcl/Tk 8.3.2), what extensions you have added (e.g. tclX, dash, plus, itcl, tix, and blt), and any local modifications you have made. Then, provide if possible either a small piece of code, or a URL (e.g. ftp://ftp.myhost.com/some/path/stuff.tcl ) to some code which demonstrates the problem. Either have the code explicitly mention "here's what I thought would happen", or in your description mention that. Also, if something used to work, mention which configuration you used. Most of all, be sure to provide an email address that is valid, and be sure to watch the Usenet newsgroups for responses, since seldom will private email be sent on a matter which likely is of public interest. On the other hand, if you DO get private email replies, remember to post a summary of what works to the group, so that future generations can benefit from your learning experience. If something in Tcl fails, don't just say "Tcl_Eval() fails" (or whatever function) but tell readers specifically what type of core dump occured, or what error codes were returned, what values were left in $errorCode and interp- >result, and so on. If you submit information about your platform, version of Tcl, and code which can easily duplicate the bug to http://www.sourceforge.net/projects/tcl/, it can be examined, verified, logged and possibly fixed in a future Tcl/Tk release. If you have devised a fix (commonly referred to as a patch) for any Tcl or Tk related software, be sure to notify the author of the software as well as news:comp.lang.tcl. To report patches to the core Tcl and Tk software, access http://www.sourceforge.net/projects/tcl/. If you have software from which you think someone might benefit (either a program, function, extension, or simple example), or you have a document, magazine or journal article, thesis, project, or even commercial advertisement, be sure to let the appropriate people know. There are FAQ maintainers for each of these areas as well as a news:comp.lang.tcl.announce newsgroup you can use. Source code postings of reasonable length (and reasonable has been pretty large) are acceptable, BUT postings are not automatically archived on the Neosoft ftp site. It is always worthwhile to submit your contributions directly to the ftp site so more members in the future can benefit from your experience. To make announcements to the news:comp.lang.tcl.announce newsgroup, send email with the details to mailto:email@example.com. Also, feel free to just point us to your own ftp site or WWW site if you have one which can be used. Don't feel compelled to keep everything on one site - but feel free to ftp contributions there if you wish. ------------------------------
End of comp.lang.tcl Frequently Asked Questions (1/5)