\documentclass[]{article}
\usepackage{amsmath,graphicx,supertabular,hyperref,tabularx,ifthen}
\title{TIP \#16: Tcl Functional Areas for Maintainer Assignments}
\date{November 21, 2000}
\author{Don Porter, Daniel Steffen}
\urlstyle{sf}
\setlength{\parskip}{1ex}
\setlength{\parindent}{0pt}
\def\tipversion$#1${\texttt{\$#1\$}}
\def\tiplangle#1{\ensuremath{<}}
\def\tiprangle#1{\ensuremath{>}}
\def\tipbar#1{\ensuremath{|}}
\def\tipmail#1#2{\(\langle\){\small\expandafter\url{#1@#2}}\(\rangle\)}
\ifx\pdfoutput\undefined
\newcommand{\tipimage}[2]{\typeout{Make sure you download #1.eps}\ifthenelse{\lengthtest{0.8\textwidth>#2}\and\lengthtest{0pt<#2}}{\includegraphics{#1.eps}}{\includegraphics[width=0.8\textwidth]{#1.eps}}}
\newcommand{\tipxref}[1]{}
\newcommand{\tipxrefend}{}
\else
\newcommand{\tipimage}[2]{\typeout{Make sure you create #1.pdf}\ifthenelse{\lengthtest{0.8\textwidth>#2}\and\lengthtest{0pt<#2}}{\includegraphics{#1.pdf}}{\includegraphics[width=0.8\textwidth]{#1.pdf}}}
\pdfcatalog{/PageMode /UseOutlines}
\newcommand{\tipxref}[1]{\pdfannotlink attr {/C [0.5 0.5 1.0] /Border [0 0 1]} goto name {#1}}
\newcommand{\tipxrefend}{\pdfendlink}
\fi
\newenvironment{tipabstract}{\begin{abstract}}{\end{abstract}}
\begin{document}\maketitle
\begin{center}\begin{tabularx}{\linewidth}{|r@{: }X|}\hline
\textbf{TIP \#16}&\textbf{Tcl Functional Areas for Maintainer Assignments}\\\hline
Author&

Don Porter \tipmail{dgp}{users.sourceforge.net}
\par
Daniel Steffen \tipmail{das}{users.sourceforge.net}
\\
Created&Tuesday, \(\text{21}^{\text{st}}\) November 2000\\
Type&Process\\
State&Accepted\\
Vote&Done\\
Version&\tipversion$Revision: 1.48 $\\
Post History&\\
\hline\end{tabularx}\end{center}
\thispagestyle{empty}\pagestyle{empty}
\begin{tipabstract}

This document proposes a division of Tcl's source code into functional areas so that each area may be assigned to one or more maintainers.
\end{tipabstract}
\tableofcontents\setcounter{page}{0}\clearpage\pagestyle{plain}

\section{Background}

TCT procedures (see \cite{tip0}) call for each \textit{maintainer} to be responsible for a portion of Tcl's source code. Certain portions of Tcl's source code are naturally associated with certain other portions. (For example, the implementation of a command is intimately related to the documentation for that command.) Establishing a \textit{natural} division of Tcl's source code into units needing maintainers is a useful preliminary effort toward a public call for volunteer maintainers.

See \cite{tip24} for the mapping of these functional areas to maintainers.

\section{Rationale}

When someone reports a bug, or offers a patch, he will want to be able to determine what maintainers have oversight over his report. This implies that we seek a simple mapping from something he knows about his bug or patch to the set of maintainers.

For a patch, the submitter certainly knows what file(s) she is patching. For a bug report, the reporter is likely to know what command or C function he believes to be buggy. Fortunately, every C function or Tcl command (combined with the platform) can be associated with exactly one source code file, the file providing the definition of the C function, or the command procedure of the Tcl command. Thus, a mapping from source code file to maintainer is sufficient to complete the determination.

The source code file should not be the largest unit, however. Certain sets of files should each be gathered into a larger unit, all files in that unit with the same maintainer(s). Tcl's man pages already gather related routines and commands into one page of documentation. Using the modules implied by the man pages, and by the location of routines in particular source code files, a \textit{natural} division of Tcl into minimal maintainer units follows in the Proposal section below.

It may be that some of these minimal units can be joined together into still larger related units. That is not necessary, though. We can just have the same maintainer(s) assigned to all the related minimal units.

\section{Functional Areas}

Tcl shall be divided into the following functional units, each to be assigned one or more maintainers:

\subsection{Events}
\begin{enumerate}
\item{}
\textbf{Notifier} --- doc/CrtFileHdlr.3, doc/DoOneEvent.3, doc/Notifier.3, doc/Sleep.3, generic/tclNotify.c, macosx/tclMacOSXNotify.c, tests/notify.test, tests/unixNotfy.test, tests/winNotify.test, unix/tclUnixNotfy.c, unix/tclUnixEvent.c, win/tclWinNotify.c
\setcounter{enumi}{1}
\item{}
\textbf{Event Loops} --- doc/bgerror.n, doc/update.n, doc/vwait.n, doc/BackgdErr.3, doc/Exit.3, generic/tclEvent.c, tests/event.test
\setcounter{enumi}{2}
\item{}
\textbf{Timer Events} --- doc/after.n, doc/CrtTimerHdlr.3, doc/DoWhenIdle.3, generic/tclTimer.c, tests/timer.test
\setcounter{enumi}{3}
\item{}
\textbf{Asynchronous Events} --- doc/Async.3, generic/tclAsync.c, tests/async.test
\setcounter{enumi}{4}
\item{}
\textbf{Xt Based Notifier} --- unix/tclXtNotify.c, unix/tclXtTest.c
\setcounter{enumi}{5}
\item{}
\textbf{Time Measurement} --- compat/gettod.c, compat/strftime.c, doc/clock.n, generic/tclClock.c, generic/tclGetDate.y, library/tzdata/*, tests/clock.test, tests/winTime.test, tools/loadICU.tcl, tools/makeTestCases.tcl, tools/tclZIC.tcl, unix/tclUnixTime.c, win/tclWinTime.c
\end{enumerate}

\subsection{Variables}
\begin{enumerate}
\setcounter{enumi}{6}
\item{}
\textbf{Variable Commands and Interfaces} --- doc/append.n, doc/array.n, doc/global.n, doc/lappend.n, doc/lset.n, doc/set.n, doc/unset.n, doc/upvar.n, doc/variable.n, doc/SetVar.3, doc/UpVar.3, generic/tclVar.c, tests/append.test, tests/lset.test, tests/set.test, tests/set-old.test, tests/upvar.test, tests/var.test
\setcounter{enumi}{7}
\item{}
\textbf{Environment Variables} --- doc/Environment.3, generic/tclEnv.c, tests/env.test
\setcounter{enumi}{8}
\item{}
\textbf{Linked C Variables} --- doc/LinkVar.3, generic/tclLink.c, tests/link.test
\end{enumerate}

\subsection{Objects}
\begin{enumerate}
\setcounter{enumi}{9}
\item{}
\textbf{Object System and Fundamental Object Types} --- doc/Backslash.3, doc/BoolObj.3, doc/Concat.3, doc/DoubleObj.3, doc/DString.3, doc/Encoding.3, doc/FindExec.3, doc/Hash.3, doc/IntObj.3, doc/Object.3, doc/ObjectType.3, doc/PrintDbl.3, doc/SplitList.3, doc/StringObj.3, doc/StrMatch.3, generic/tclEncoding.c, generic/tclHash.c, generic/tclObj.c, generic/tclStringObj.c, generic/tclUtil.c, library/encoding/*.enc, tools/encoding/*, tests/dstring.test, tests/encoding.test, tests/stringObj.test, tests/obj.test, tests/util.test
\setcounter{enumi}{10}
\item{}
\textbf{Conversions From String} --- doc/GetInt.3, generic/tclGet.c, tests/get.test
\setcounter{enumi}{11}
\item{}
\textbf{bytearray Object Type} --- doc/binary.n, doc/ByteArrObj.3, generic/tclBinary.c, tests/binary.test
\setcounter{enumi}{12}
\item{}
\textbf{index Object Type} --- doc/GetIndex.3, doc/WrongNumArgs.3, generic/tclIndexObj.c, tests/indexObj.test
\setcounter{enumi}{13}
\item{}
\textbf{list Object Type} --- doc/ListObj.3, generic/tclListObj.c, tests/listObj.test
\setcounter{enumi}{14}
\item{}
\textbf{dict Object Type} --- doc/DictObj.3, doc/dict.n, generic/tclDictObj.c, tests/dict.test
\end{enumerate}

\subsection{Fundamental Built-in Commands}
\begin{enumerate}
\setcounter{enumi}{15}
\item{}
\textbf{A --- H} --- doc/break.n, doc/case.n, doc/catch.n, doc/cd.n, doc/concat.n, doc/continue.n, doc/encoding.n, doc/error.n, doc/eval.n, doc/exit.n, doc/expr.n, doc/file.n, doc/for.n, doc/foreach.n, doc/format.n, generic/tclCmdAH.c, tests/cmdAH.test tests/case.test, tests/concat.test, tests/error.test, tests/eval.test, tests/foreach.test, tests/format.test, tests/for-old.test
\setcounter{enumi}{16}
\item{}
\textbf{I --- L} --- doc/if.n, doc/incr.n, doc/info.n, doc/join.n, doc/lindex.n, doc/linsert.n, doc/list.n, doc/llength.n, doc/lrange.n, doc/lreplace.n, doc/lsearch.n, doc/lsort.n, generic/tclCmdIL.c, tests/cmdIL.test, tests/if-old.test, tests/incr-old.test, tests/info.test, tests/join.test, tests/lindex.test, tests/linsert.test, tests/list.test, tests/llength.test, tests/lrange.test, tests/lreplace.test, tests/lsearch.test
\setcounter{enumi}{17}
\item{}
\textbf{M --- Z} --- doc/pwd.n, doc/regexp.n, doc/regsub.n, doc/rename.n, doc/return.n, doc/split.n, doc/string.n, doc/subst.n, doc/switch.n, doc/throw.n, doc/time.n, doc/try.n, doc/while.n, generic/tclCmdMZ.c, tests/cmdMZ.test tests/pwd.test, tests/rename.test, tests/split.test, tests/string.test, tests/subst.test, tests/switch.test, tests/while-old.test
\setcounter{enumi}{18}
\item{}
\textbf{[history]} --- doc/history.n, doc/RecEvalObj.3, doc/RecordEval.3, generic/tclHistory.c, library/history.tcl, tests/history.test
\setcounter{enumi}{19}
\item{}
\textbf{[interp]} --- doc/interp.n, doc/CrtSlave.3, doc/Limit.3, generic/tclInterp.c, tests/interp.test
\setcounter{enumi}{20}
\item{}
\textbf{[namespace]} --- doc/Namespace.3, doc/namespace.n, generic/tclEnsemble.c, generic/tclNamesp.c, generic/tclResolve.c, tests/namespace.test, tests/namespace-old.test
\setcounter{enumi}{21}
\item{}
\textbf{[proc]} --- doc/proc.n, doc/uplevel.n, generic/tclProc.c, generic/tclTestProcBodyObj.c, tests/proc.test, tests/proc-old.test, tests/uplevel.test
\setcounter{enumi}{22}
\item{}
\textbf{[scan]} --- doc/scan.n, generic/tclScan.c, tests/scan.test
\end{enumerate}

\subsection{Channels}
\begin{enumerate}
\setcounter{enumi}{23}
\item{}
\textbf{Channel Commands} --- doc/close.n, doc/eof.n, doc/exec.n, doc/fblocked.n, doc/fconfigure.n, doc/fcopy.n, doc/flush.n, doc/gets.n, doc/open.n, doc/puts.n, doc/read.n, doc/seek.n, doc/socket.n, doc/tell.n, generic/tclIOCmd.c, tests/exec.test, tests/ioCmd.test, tests/remote.tcl, tests/socket.test
\setcounter{enumi}{24}
\item{}
\textbf{Channel System} --- doc/chan.n, doc/fileevent.n, doc/ChnlStack.3, doc/CrtChnlHdlr.3, doc/CrtCloseHdlr.3, doc/CrtChannel.3, doc/DetachPids.3, doc/GetStdChan.3, doc/OpenFileChnl.3, doc/StdChannels.3 generic/tclIO.c, generic/tclIO.h, generic/tclPipe.c, tests/chan.test, tests/chanio.test, tests/io.test
\setcounter{enumi}{25}
\item{}
\textbf{Channel Transformations} --- generic/tclIOGT.c, generic/tclIORTrans.c, tests/iogt.test, tests/ioTrans.test
\setcounter{enumi}{26}
\item{}
\textbf{Built-in Channel Types} --- compat/waitpid.c, doc/GetHostName.3, doc/GetOpnFl.3, doc/OpenTcp.3, doc/pid.n, generic/tclIOSock.c, generic/tclIORChan.c, tests/pid.test, tests/winConsole.test, tests/winPipe.test, unix/tclUnixChan.c, unix/tclUnixPipe.c, unix/tclUnixSock.c, win/cat.c, win/stub16.c, win/tclWinChan.c, win/tclWinConsole.c, win/tclWinPipe.c, win/tclWinSerial.c, win/tclWinSock.c
\end{enumerate}

\subsection{Packages}
\begin{enumerate}
\setcounter{enumi}{27}
\item{}
\textbf{dde Package} --- doc/dde.n, library/dde/pkgIndex.tcl, tests/winDde.test win/tclWinDde.c
\setcounter{enumi}{28}
\item{}
\textbf{http Package} --- doc/http.n, library/http1.0/http.tcl, library/http1.0/pkgIndex.tcl, library/http/http.tcl, library/http/pkgIndex.tcl, tests/http.test, tests/httpd, tests/httpold.test
\setcounter{enumi}{29}
\item{}
\textbf{msgcat Package} --- doc/msgcat.n, library/msgcat/msgcat.tcl, library/msgcat/pkgIndex.tcl, tests/msgcat.test
\setcounter{enumi}{30}
\item{}
\textbf{opt Package} --- library/opt/optparse.tcl, library/opt/pkgIndex.tcl, tests/opt.test
\setcounter{enumi}{31}
\item{}
\textbf{registry Package} --- doc/registry.n, library/reg/pkgIndex.tcl, win/tclWinReg.c, tests/registry.test
\setcounter{enumi}{32}
\item{}
\textbf{Safe Base} --- doc/safe.n, library/safe.tcl, tests/safe.test
\setcounter{enumi}{33}
\item{}
\textbf{tcltest Package} --- doc/tcltest.tcl, library/tcltest/tcltest.tcl, library/tcltest/pkgIndex.tcl, tests/tcltest.test
\setcounter{enumi}{34}
\item{}
\textbf{TclOO Package} (see \cite{tip257}) --- doc/Class.3, doc/Method.3, doc/class.n, doc/copy.n, doc/define.n, doc/my.n, doc/next.n, doc/object.n, doc/self.n, generic/tclOO.c, generic/tclOO.decls, generic/tclOO.h, generic/tclOOBasic.c, generic/tclOOCall.c, generic/tclOODefineCmds.c, generic/tclOOInfo.c, generic/tclOOInt.h, generic/tclOOMethod.c, tests/oo.test
\end{enumerate}

\subsection{File System}
\begin{enumerate}
\setcounter{enumi}{35}
\item{}
\textbf{Pathname Management} --- doc/filename.n, doc/glob.n, doc/FileSystem.3, doc/SplitPath.3, doc/Translate.3, generic/tclFileName.c, tests/fileName.test, tests/unixFile.test, tests/winFile.test, unix/tclUnixFile.c, win/tclWinFile.c
\setcounter{enumi}{36}
\item{}
\textbf{File System Access} --- doc/Access.3, doc/GetCwd.3, doc/SetErrno.3, doc/Signal.3, generic/tclFCmd.c, generic/tclIOUtil.c, generic/tclPathObj.c, generic/tclPosixStr.c, macosx/tclMacOSXFCmd.c, tests/fCmd.test, tests/ioUtil.test, tests/unixFCmd.test, tests/winFCmd.test, unix/tclUnixFCmd.c, win/tclWinError.c, win/tclWinFCmd.c
\end{enumerate}

\subsection{Initialization, Script Library, and Autoloader}
\begin{enumerate}
\setcounter{enumi}{37}
\item{}
doc/library.n, doc/tclvars.n, doc/unknown.n, doc/Init.3, doc/SourceRCFile.3, generic/tclInitScript.h, library/auto.tcl, library/init.tcl, library/parray.tcl, library/word.tcl, macosx/tclMacOSXBundle.c, tests/autoMkindex.tcl, tests/autoMkindex.test, tests/init.test, tests/platform.test, tests/security.test, tests/unixInit.test, tests/unknown.test, unix/tclUnixInit.c, win/tclWinInit.c
\end{enumerate}

\subsection{Package Support}
\begin{enumerate}
\setcounter{enumi}{38}
\item{}
\textbf{Package Management} --- doc/InitStubs.3, doc/package.n, doc/packagens.n, doc/pkgMkIndex.n, doc/PkgRequire.3, doc/tm.n, generic/tclPkg.c, generic/tclStubLib.c, library/package.tcl, library/tm.tcl, tests/package.test, tests/pkg.test, tests/pkgMkIndex.test, tests/pkg/*.tcl, tests/tm.test
\setcounter{enumi}{39}
\item{}
\textbf{Dynamic Loading} --- compat/dlfcn.h, doc/load.n, doc/StaticPkg.3, generic/tclLoad.c, generic/tclLoadNone.c, library/ldAout.tcl, tests/load.test, unix/dltest/*, unix/tclLoad*.c, win/tclWinLoad.c
\end{enumerate}

\subsection{Memory Management}
\begin{enumerate}
\setcounter{enumi}{40}
\item{}
\textbf{Allocation} --- doc/memory.n, doc/Alloc.3, doc/TCL\_MEM\_DEBUG.3, doc/DumpActiveMemory.3, generic/tclAlloc.c, generic/tclCkalloc.c, generic/tclThreadAlloc.c
\setcounter{enumi}{41}
\item{}
\textbf{Preservation} --- doc/Preserve.3, generic/tclPreserve.c
\end{enumerate}

\subsection{Regular Expressions}
\begin{enumerate}
\setcounter{enumi}{42}
\item{}
doc/re\_syntax.n, doc/RegExp.3, generic/regc\_color.c, generic/regc\_cvec.c, generic/regc\_lex.c, generic/regc\_locale.c, generic/regc\_nfa.c, generic/regcomp.c, generic/regcustom.h, generic/rege\_dfa.c, generic/regerror.c, generic/regerrs.h, generic/regex.h, generic/regexec.c, generic/regfree.c, generic/regfronts.c, generic/regguts.h, generic/tclRegexp.c, generic/tclRegexp.h, tests/reg.test, tests/regexp.test, tools/uniClass.tcl
\end{enumerate}

\subsection{UTF-8 String Management}
\begin{enumerate}
\setcounter{enumi}{43}
\item{}
doc/ToUpper.3, doc/UniCharIsAlpha.3, doc/Utf.3, generic/tclUtf.c, tools/uniParse.tcl, tests/utf.test, win/tclWin32Dll.c
\end{enumerate}

\subsection{Fundamentals}
\begin{enumerate}
\setcounter{enumi}{44}
\item{}
\textbf{Parsing and Evaluation} --- doc/AddErrInfo.3, doc/AllowExc.3, doc/AssocData.3, doc/CallDel.3, doc/CmdCmplt.3, doc/CrtCommand.3, doc/CrtObjCmd.3, doc/CrtInterp.3, doc/CrtMathFnc.3, doc/Eval.3, doc/ExprLong.3, doc/ExprLongObj.3, doc/GetVersion.3, doc/Interp.3, doc/NRE.3, doc/ParseCmd.3, doc/SaveResult.3, doc/SetRecLimit.3, doc/SetResult.3, doc/Tcl.n, generic/tclBasic.c, generic/tclParse.c, generic/tclParseExpr.c, generic/tclResult.c, tests/assocd.test, tests/basic.test, tests/cmdInfo.test, tests/dcall.test, tests/expr-old.test, tests/parse.test, tests/parseExpr.test, tests/parseOld.test, tests/result.test, tests/stack.test
\setcounter{enumi}{45}
\item{}
\textbf{Traces} --- doc/TraceVar.3, doc/TraceCmd.3, doc/trace.n, doc/CrtTrace.3, generic/tclTrace.c, tests/trace.test
\setcounter{enumi}{46}
\item{}
\textbf{Bytecode Compiler} --- compat/float.h, generic/tclAssembly.c, generic/tclCompCmds.c, generic/tclCompCmdsSZ.c, generic/tclCompExpr.c, generic/tclCompile.c, generic/tclCompile.h, generic/tclExecute.c, generic/tclLiteral.c, generic/tclMathOp.c, generic/tclOptimize.c, tests/appendComp.test, tests/compExpr-old.test, tests/compExpr.test, tests/compile.test, tests/execute.test, tests/expr.test, tests/for.test, tests/if.test, tests/incr.test, tests/lsetComp.test, tests/regexpComp.test, tests/stringComp.test, tests/while.test
\setcounter{enumi}{47}
\item{}
\textbf{Number Handling} (see \cite{tip237}) --- generic/tclStrToD.c, generic/tclTomMath.h, generic/tclTomMathInterface.c, generic/tommath.h, libtommath/*
\end{enumerate}

\subsection{Threads}
\begin{enumerate}
\setcounter{enumi}{48}
\item{}
doc/Thread.3, generic/tclThread.c, generic/tclThreadJoin.c, generic/tclThreadStorage.c, generic/tclThreadTest.c, tests/thread.test, unix/tclUnixThrd.c, unix/tclUnixThrd.h, win/tclWinThrd.c, win/tclWinThrd.h
\end{enumerate}

\subsection{Embedding Support}
\begin{enumerate}
\setcounter{enumi}{49}
\item{}
doc/AppInit.3, doc/Tcl\_Main.3, doc/Panic.3, doc/tclsh.1, generic/tclMain.c, generic/tclPanic.c, tests/main.test, unix/tclAppInit.c, win/tclAppInit.c
\end{enumerate}

\subsection{Release Engineering}
\begin{enumerate}
\setcounter{enumi}{50}
\item{}
\textbf{Release Notes} --- README, changes, license.terms, */license.terms, compat/README, generic/README, macosx/README, tests/README, tests/pkg/license.terms, tools/README, unix/README, win/README
\setcounter{enumi}{51}
\item{}
\textbf{Portability Support} --- compat/dirent.h, compat/dirent2.h, compat/limits.h, compat/fixstrtod.c, compat/memcmp.c, compat/opendir.c, compat/stdlib.h, compat/string.h, compat/strncasecmp.c, compat/strstr.c, compat/strtod.c, compat/strtol.c, compat/strtoul.c, compat/tclErrno.h, compat/tmpnam.c, compat/unistd.h, generic/tclMath.h, generic/tclPort.h, unix/tclMtherr.c, unix/tclUnixPort.h, unix/tclUnixCompat.c, win/tclWinMtherr.c, win/tclWinPort.h
\setcounter{enumi}{52}
\item{}
\textbf{Configuration and Build Tools} --- djgpp/Makefile, macosx/Makefile, macosx/Tcl.pbproj/project.pbxproj, tests/all.tcl, tools/configure.in, tools/eolFix.tcl, tools/genStubs.tcl, tools/index.tcl, tools/Makefile.in, tools/man2help.tcl, tools/man2help2.tcl, tools/man2tcl.c, tools/mkdepend.tcl, tools/tcl.hpj.in, tools/tcl.wse.in, tools/tclSplash.bmp, tools/tcltk-man2html.tcl, tools/white.bmp, unix/Makefile.in, unix/aclocal.m4, unix/configure.in, unix/install-sh, unix/ldAix, unix/mkLinks, unix/mkLinks.tcl, unix/tcl.m4, unix/tcl.spec, unix/tclConfig.sh.in, win/Makefile.in, win/aclocal.m4, win/buildall.vc.bat, win/coffbase.txt, win/configure.in, win/makefile.vc, win/makefile.bc, win/mkd.bat, win/rmd.bat, win/rules.vc, win/tcl.dsp, win/tcl.dsw, win/tcl.hpj.in, win/tcl.m4, win/tcl.rc, win/tclConfig.sh.in, win/tclsh.ico, win/tclsh.rc
\setcounter{enumi}{53}
\item{}
\textbf{Configuration Reporting} (see \cite{tip59}) --- doc/RegConfig.3, generic/tclConfig.c, generic/tclPkgConfig.c, tests/config.test, win/tclWinPkgConfig.c
\setcounter{enumi}{54}
\item{}
\textbf{Other Tools} --- tools/checkLibraryDoc.tcl, tools/findBadExternals.tcl, tools/genWinImage.tcl, tools/man2html.tcl, tools/man2html1.tcl, tools/man2html2.tcl, tools/regexpTestLib.tcl
\setcounter{enumi}{55}
\item{}
\textbf{LibTomMath} --- libtommath/*
\setcounter{enumi}{56}
\item{}
\textbf{zlib} (see \cite{tip234}) --- doc/zlib.n, doc/TclZlib.3, generic/tclZlib.c, tests/zlib.c
\end{enumerate}

\section{Shared Files}

The following files are shared by all of Tcl. Any maintainer may modify them as necessary to complete changes they are making to their portion of Tcl. Some of the following files define Tcl's API and should be changed only in accordance with TCT approval.
\begin{itemize}
\item{}
ChangeLog, ChangeLog.*, doc/man.macros, generic/tcl.decls, generic/tcl.h, generic/tclInt.decls, generic/tclInt.h, generic/tclTest.c, generic/tclTestObj.c, tests/misc.test, unix/tclUnixTest.c, win/tclWinInt.h, win/tclWinTest.c
\end{itemize}

\section{Generated Files}

The following files are generated, so they don't need maintainers.
\begin{itemize}
\item{}
generic/tclDate.c, generic/tclUniData.c, generic/tclDecls.h, generic/tclIntDecls.h, generic/tclIntPlatDecls.h, generic/tclOODecls.h, generic/tclOOIntDecls.h, generic/tclOOStubInit.c, generic/tclOOStubLib.c, generic/tclPlatDecls.h, generic/tclStubInit.c, generic/tommath.h, library/tclIndex, unix/configure, win/configure
\end{itemize}

\section{Copyright}

This document has been placed in the public domain.

\section{Colophon}

\textit{TIP AutoGenerator --- written by Donal K. Fellows}
\begin{thebibliography}{TIP \#6}
\addcontentsline{toc}{section}{References}
\bibitem[TIP \#0]{tip0}
John Ousterhout,
\emph{Tcl Core Team Basic Rules},
on-line at \url{http://purl.org/tcl/tip/0.html}
\bibitem[TIP \#24]{tip24}
Don Porter,
Donal K. Fellows,
Kevin B. Kenny,
Jeff Hobbs,
Pavel Goran,
Daniel A. Steffen,
miguel sofer,
\emph{Tcl Maintainer Assignments},
on-line at \url{http://purl.org/tcl/tip/24.html}
\bibitem[TIP \#59]{tip59}
Andreas Kupries,
\emph{Embed Build Information in Tcl Binary Library},
on-line at \url{http://purl.org/tcl/tip/59.html}
\bibitem[TIP \#234]{tip234}
Pascal Scheffers,
\emph{Add Support For Zlib Compression},
on-line at \url{http://purl.org/tcl/tip/234.html}
\bibitem[TIP \#237]{tip237}
Kevin B. Kenny,
Don Porter,
\emph{Arbitrary-Precision Integers for Tcl},
on-line at \url{http://purl.org/tcl/tip/237.html}
\bibitem[TIP \#257]{tip257}
Donal K. Fellows,
Will Duquette,
Steve Landers,
Jeff Hobbs,
Kevin Kenny,
Miguel Sofer,
Richard Suchenwirth,
Larry W. Virden,
\emph{Object Orientation for Tcl},
on-line at \url{http://purl.org/tcl/tip/257.html}
\end{thebibliography}
\end{document}
