llm
Download
437 lines 21 KiBGroffModified 2026-09-28 raw
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
.\" Automatically generated by Pandoc 3.10.2
.\"
.TH "TOMO" "1" "August 16, 2026" ""
.SH NAME
tomo \- The programming language of tomorrow.
.SH SYNOPSIS
\f[B]tomo\f[R] [\f[I]global flags\f[R]] [\f[I]command\f[R]]
[\f[I]command flags\f[R]] [\f[I]args\&...\f[R]]
.TP
Run a program:
\f[B]tomo\f[R] [\f[B]run\f[R]] \f[I]program.tm\f[R] [\f[B]\-\-\f[R]
\f[I]args\&...\f[R]]
.TP
Build an executable:
\f[B]tomo\f[R] \f[B]build\f[R] [\f[B]\-o\f[R] \f[I]output\f[R]]
\f[I]program.tm\f[R]
.TP
Build a package:
\f[B]tomo\f[R] \f[B]package\f[R] [\f[B]\-o\f[R] \f[I]libname.a\f[R]]
[\f[I]dir\-or\-file\&...\f[R]]
.SH DESCRIPTION
Tomo is a programming language that is statically typed, compiled,
small, and garbage\-collected, with concise syntax and built\-in support
for high\-performance, low\-overhead datastructures.
It compiles by first outputting C code, which is then compiled using the
Zig toolchain bundled with the Tomo installation.
.PP
A Tomo installation is relocatable: the \f[B]tomo\f[R] binary lives at
\f[I]prefix\f[R]\f[B]/bin/tomo\(at\f[R]\f[I]version\f[R], and it locates
its libraries, headers, bundled toolchain, and man pages at startup
relative to its own path (the \f[I]prefix\f[R] is the grandparent
directory of the binary), so the whole tree can be moved or extracted
into any prefix without rebuilding.
The prefix is not fixed at build time; set \f[B]$TOMO_PATH\f[R] to
override the automatically determined location (see
\f[B]ENVIRONMENT\f[R]).
.PP
With no command, \f[B]tomo\f[R] \f[I]file.tm\f[R] runs the file (like
\f[B]tomo run\f[R]), and bare \f[B]tomo\f[R] opens a scratch file in
\f[B]$EDITOR\f[R] to edit and run (or compiles and runs a program piped
in on standard input).
.SH COMMANDS
Every command takes a \f[B]\-\-verbose\f[R]/\f[B]\-v\f[R] flag that
turns on all build logs (the compile steps, up\-to\-date
\(lqUnchanged\(rq notices, and the toolchain commands being run).
Commands that print build progress by default (\f[B]build\f[R],
\f[B]package\f[R], \f[B]install\f[R]) also take
\f[B]\-\-quiet\f[R]/\f[B]\-q\f[R] to silence it.
The run\-style commands (\f[B]tomo\f[R] \f[I]file.tm\f[R],
\f[B]run\f[R], \f[B]eval\f[R]) are silent by default: use \f[B]tomo run
\-v\f[R] \f[I]file.tm\f[R] to see the compiler\(cqs work.
.TP
\f[B]run\f[R] [\f[B]\-\-instrument\f[R]] [\f[B]\-\-debug\f[R]] \f[I]file.tm\f[R] [\f[B]\-\-\f[R] \f[I]args\&...\f[R]]
Compile and run the given program.
Anything after \f[B]\-\-\f[R] is passed to the program as its own
arguments.
The command name is optional: \f[B]tomo\f[R] \f[I]file.tm\f[R] does the
same thing.
With \f[B]\-\-instrument\f[R], the program is compiled with profiling
instrumentation and prints a breakdown of where its time went when it
exits (see \f[B]PROFILING\f[R]).
With \f[B]\-\-debug\f[R]/\f[B]\-d\f[R], it runs under a debugger that
stops on \f[B]breakpoint()\f[R] calls, runtime errors, and fatal signals
(see \f[B]DEBUGGING\f[R]).
.TP
\f[B]eval\f[R] \f[I]`expr'\f[R]
Evaluate a Tomo expression and print its result.
The argument may be several statements separated by newlines or
\f[B];\f[R] (for example \f[B]tomo eval \(aquse random; random.int(1,
100)\(aq\f[R]); every statement that evaluates to something prints what
it evaluated to, with syntax coloring when standard output is a
terminal.
The argument is ordinary Tomo source, so it can also declare variables
and functions and \f[B]use\f[R] other modules.
.PP
\f[B]build\f[R] [\f[B]\-o\f[R] \f[I]output\f[R]] [\f[B]\-\-install\f[R]]
[\f[B]\-\-prefix\f[R] \f[I]dir\f[R]] [\f[B]\-y\f[R]]
[\f[B]\-\-instrument\f[R]] [\f[B]\-\-debug\f[R]]
[\f[B]\-\-package\-sources\f[R] \f[I]dir\f[R]]
[\f[B]\-\-skip\-source\f[R]] \f[I]file.tm\f[R] : Compile the given
program to a standalone executable, placed as a sibling of the
\f[B].tm\f[R] file (or at \f[B]\-o\f[R] \f[I]output\f[R]).
With \f[B]\-\-package\-sources\f[R] \f[I]dir\f[R], pinned packages are
found by content digest in \f[I]dir\f[R] (a directory of package
sources, like the \f[B]packages/\f[R] directory of an extracted source
archive) instead of being downloaded; \f[B]run\f[R] and \f[B]test\f[R]
take the same flag.
With \f[B]\-\-skip\-source\f[R], the program\(cqs sources are not
embedded in the executable, which makes it smaller but means \f[B]tomo
source\f[R] cannot unpack it back into a buildable project.
With \f[B]\-\-instrument\f[R], the executable is compiled with profiling
instrumentation and prints a breakdown of where its time went when it
exits (see \f[B]PROFILING\f[R]).
With \f[B]\-\-debug\f[R]/\f[B]\-d\f[R], it is compiled so a debugger can
follow it (see \f[B]DEBUGGING\f[R]).
With \f[B]\-\-install\f[R], the executable and its generated manpage are
also copied into a prefix\(cqs \f[B]bin/\f[R] and \f[B]man/man1/\f[R],
the installation prefix by default, or \f[B]\-\-prefix\f[R]
\f[I]dir\f[R] to choose another.
Existing files at those destinations are overwritten only after
confirmation, or immediately with \f[B]\-\-yes\f[R]/\f[B]\-y\f[R]; a
warning is printed if the target \f[B]bin/\f[R] is not on your
\f[B]$PATH\f[R].
Remove installed programs again with \f[B]tomo uninstall\f[R]
\f[I]name\f[R].
.TP
\f[B]transpile\f[R] [\f[B]\-\-raw\f[R]] [\f[B]\-\-instrument\f[R]] [\f[B]\-\-debug\f[R]] \f[I]file.tm\f[R]
Transpile the given file to C and print the generated header and source
to standard output, each preceded by a \f[B]// file:\f[R] line.
The output is formatted with \f[B]clang\-format\f[R] and (when standard
output is a terminal) syntax\-highlighted with \f[B]bat\f[R], whichever
of the two is installed; \f[B]\-\-raw\f[R] prints the raw generated code
instead.
The generated \f[B].h\f[R]/\f[B].c\f[R] files are also written into the
file\(cqs \f[B].tomo/\f[R] directory.
.TP
\f[B]parse\f[R] \f[I]file.tm\&...\f[R]
Print the parse tree of the given files as S\-expressions.
.TP
\f[B]format\f[R] [\f[B]\-i\f[R]] \f[I]file.tm\&...\f[R]
Autoformat the given files and print them to standard output, or rewrite
them in place with \f[B]\-\-in\-place\f[R]/\f[B]\-i\f[R].
Also available as \f[B]fmt\f[R].
.TP
\f[B]package\f[R] [\f[B]\-o\f[R] \f[I]libname.a\f[R]] [\f[I]dir\-or\-file\&...\f[R]]
Build packages into static archives.
With no arguments, the current directory is built as a package: every
\f[B].tm\f[R] file not starting with an underscore (or dot or digit) is
compiled and archived into \f[B]package.a\f[R].
Directory arguments are each built the same way; \f[B].tm\f[R] file
arguments are compiled into a single archive.
\f[B]\-o\f[R] sets the archive path (single package only).
.TP
\f[B]uninstall\f[R] [\f[B]\-y\f[R]] [\f[I]name\-or\-path\&...\f[R]]
With one or more arguments, uninstall those installed programs.
Each argument is either a bare \f[I]name\f[R] (looked up in the
prefix\(cqs \f[B]bin/\f[R]) or a path to a binary.
A binary is removed only if it is a Tomo program (it carries Tomo\(cqs
embedded build info), and its Tomo\-generated manpage in
\f[B]man/man1/\f[R] is removed along with it.
Files Tomo did not create are left untouched, and a missing binary or
manpage is only a warning.
Install programs with \f[B]tomo build \-\-install\f[R].
.RS
With no arguments, uninstall this whole Tomo installation: remove this
version\(cqs files from the installation prefix, along with its
per\-user state, cross\-compilation target packs, and any bundled
toolchains no remaining installation shares.
If other Tomo versions remain in the same prefix, the \f[B]tomo\f[R] and
man page symlinks are repointed to the newest one; otherwise they are
removed too.
If no \f[B]tomo\f[R] remains anywhere on \f[B]$PATH\f[R] afterwards, the
cache (\f[B]\(ti/.cache/tomo\f[R]: package downloads and the bundled Zig
toolchain\(cqs compile cache) is also cleared.
Asks for confirmation unless \f[B]\-\-yes\f[R]/\f[B]\-y\f[R] is given.
.RE
.TP
\f[B]vendor\f[R] [\f[B]\-e\f[R]|\f[B]\-u\f[R]] \f[I]package\&...\f[R]
Copy the named packages\(cq digest\-verified source archives into the
current project\(cqs \f[B]vendor/\f[R] directory and update
\f[B]./packages.ini\f[R] to use the vendored copies as the primary
sources (keeping the digest pins and demoting the previous sources to
fallbacks).
With \f[B]\-\-editable\f[R]/\f[B]\-e\f[R], extract each package\(cqs
sources into \f[B]vendor/<name>/\f[R] and drop its digest pin, so the
vendored copy can be edited freely.
With \f[B]\-\-unvendor\f[R]/\f[B]\-u\f[R], undo vendoring: restore each
package\(cqs \f[B]./packages.ini\f[R] entry to its first non\-vendored
fallback source (or the compiler\(cqs default pin), re\-install the
package into the project\(cqs package store (re\-pinning the digest if
editable vendoring dropped it), and delete the vendored copy.
.TP
\f[B]version\f[R]
Print the compiler version and exit (with
\f[B]\-\-verbose\f[R]/\f[B]\-v\f[R]: plus the git revision).
.TP
\f[B]info\f[R] \f[I]binary\&...\f[R]
Print the build info embedded in the given compiled files (executables
or package archives).
.TP
\f[B]source\f[R] [\f[B]\-o\f[R] \f[I]dest\f[R]] \f[I]binary\&...\f[R]
List the contents of the source archive embedded in each of the given
compiled programs.
With \f[B]\-\-output\f[R]/\f[B]\-o\f[R] \f[I]dest\f[R], get the archive
out instead (one binary at a time): a \f[I]dest\f[R] ending in
\f[B].zip\f[R] is written as a zip file of the archive itself, and any
other \f[I]dest\f[R] is a directory to unpack into.
The extracted directory is a self\-contained project: \f[B]src/\f[R]
holds the program\(cqs sources, embedded files, and
relatively\-\f[B]use\f[R]d C files, \f[B]packages/\f[R] holds the
sources of every used package by content digest, \f[B]licenses/\f[R]
holds the license texts, and a generated \f[B]README.md\f[R] and
\f[B]Makefile\f[R] document and perform the rebuild (plain
\f[B]make\f[R], or \f[B]tomo build \-\-package\-sources ./packages\f[R]
on the entry file), with no network access needed.
Not every program carries an archive: \f[B]tomo build
\-\-skip\-source\f[R] leaves it out, and so do the executables \f[B]tomo
run\f[R] and \f[B]tomo eval\f[R] build, which are run once and
discarded.
.SH GLOBAL OPTIONS
Global options are valid anywhere on the command line, before or after
the command name.
Command\-specific flags (like \f[B]build\f[R]\(cqs \f[B]\-o\f[R]) are
only valid after their command.
.TP
\f[B]\-\-help\f[R], \f[B]\-h\f[R]
Print the usage (or a command\(cqs usage) and exit.
.TP
\f[B]\-\-optimization\f[R] \f[B]level\f[R], \f[B]\-O\f[R] \f[B]level\f[R]
Set the optimization level.
.TP
\f[B]\-\-force\-rebuild\f[R], \f[B]\-f\f[R]
Force rebuilding/recompiling.
.TP
\f[B]\-\-source\-mapping=\f[R], \f[B]\-m=\f[R] \f[B]<yes|no>\f[R]
Toggle whether source mapping should be enabled or disabled.
.TP
\f[B]\-\-target\f[R] \f[I]platform\f[R]
Cross\-compile for another platform instead of this machine\(cqs.
The target platform\(cqs libraries are installed on demand from its Tomo
distribution archive.
Cross\-compiled executables get the platform as a filename suffix
(e.g.\ \f[B]foo.aarch64\-macos\f[R]) and cannot be run or installed on
this machine.
Valid platforms are: \f[B]x86_64\-linux\f[R], \f[B]aarch64\-linux\f[R],
\f[B]riscv64\-linux\f[R], \f[B]powerpc64le\-linux\f[R],
\f[B]s390x\-linux\f[R], \f[B]x86_64\-macos\f[R],
\f[B]aarch64\-macos\f[R], \f[B]x86_64\-freebsd\f[R],
\f[B]aarch64\-freebsd\f[R], \f[B]x86_64\-netbsd\f[R],
\f[B]aarch64\-netbsd\f[R], \f[B]x86_64\-openbsd\f[R], and
\f[B]aarch64\-openbsd\f[R].
.TP
\f[B]\-\-install\-target\f[R]
When using \f[B]\-\-target\f[R], download and install the target
platform\(cqs libraries without asking for confirmation.
.SH PROFILING
A program compiled with \f[B]\-\-instrument\f[R] (\f[B]tomo build
\-\-instrument\f[R] \f[I]file.tm\f[R], or \f[B]tomo run
\-\-instrument\f[R] \f[I]file.tm\f[R]) times every function, conversion,
and lambda it defines, and prints a report to standard error when it
exits: for each function that ran, the number of calls, the time spent
inside it (with its callees\(cq time subtracted), the time spent in it
and everything it called, and the per\-call average, sorted by the first
of those.
The report is printed even when the program exits early, fails, or
crashes.
Instrumented calls cost around 13ns each (two reads of the CPU\(cqs
cycle counter), charged to the calling function, so
\f[B]\-\-instrument\f[R] is for finding where the time goes rather than
for measuring absolute speed.
.PP
Setting \f[B]FLAME_GRAPH\f[R] to a path additionally writes the call
tree there as an SVG flame graph: one box per frame, as wide as its
share of the run and stacked on the frame that called it, each carrying
its details in a hover tooltip.
.PP
The program\(cqs own arguments are left alone; the report is controlled
by \f[B]PROFILE\f[R], \f[B]PROFILE_FILE\f[R], and \f[B]FLAME_GRAPH\f[R]
(see \f[B]ENVIRONMENT\f[R]).
See also \f[I]docs/profiling.md\f[R].
.SH DEBUGGING
\f[B]tomo run \-\-debug\f[R] \f[I]file.tm\f[R] runs a program under
\f[B]gdb\f[R](1), with Tomo\(cqs debugger integration loaded into it.
The program starts immediately and runs as it normally would; it stops
when something stops it, whether a \f[B]breakpoint()\f[R] call in the
source, a runtime error, a fatal signal, or an interrupt, and leaves you
at a debugger prompt showing the Tomo function, the source around the
line it stopped on, and the Tomo variables in scope.
A program that finishes on its own leaves the debugger with its own exit
status, exactly as \f[B]tomo run\f[R] would have.
.PP
Because Tomo\(cqs generated C carries \f[B]#line\f[R] directives back to
the \f[B].tm\f[R] file, gdb\(cqs own commands work in Tomo\(cqs terms:
\f[B]break\f[R] \f[I]file.tm\f[R]\f[B]:\f[R]\f[I]line\f[R],
\f[B]step\f[R], \f[B]next\f[R], \f[B]finish\f[R], \f[B]continue\f[R],
\f[B]list\f[R], \f[B]watch\f[R], and conditional breakpoints all behave
as they would for a C program written in the \f[B].tm\f[R] file.
Function names are reported as Tomo names rather than the mangled C
symbols they compile to.
.PP
Commands are added on top of gdb\(cqs own: \f[B]tlocals\f[R] lists the
Tomo variables in scope, \f[B]p\f[R] \f[I]var\f[R] prints one of them,
and \f[B]tframe\f[R] re\-shows where the program is stopped.
\f[B]frame\f[R], \f[B]up\f[R], and \f[B]down\f[R] report the frame they
select the way a stop is reported: the Tomo name of the function, the
source around the line, and the variables in scope.
\f[B]backtrace\f[R] (and \f[B]bt\f[R]/\f[B]where\f[R]) is likewise
replaced by one that prints the stack in Tomo\(cqs terms,
\f[B]helper(label=\(dqwidgets\(dq, count=7)\f[R], with argument values
cut short; gdb\(cqs own backtrace remains available as \f[B]info
stack\f[R].
These print values with Tomo\(cqs own formatter, the same output
\f[B]say()\f[R] would produce with syntax coloring included, rather than
the C structures they compile to.
gdb\(cqs own \f[B]print\f[R] does the same for values whose C type
belongs to exactly one Tomo type.
.PP
A \f[B]Num\f[R] is exact, so it prints exactly as \f[B]32768/3\f[R],
\f[B]pi\f[R], or \f[B]1/2 + sqrt(5)/2\f[R], and the debugger shows a
rounded decimal beside it (\f[B]32768/3 \(rs[u2248]
10922.6666666667\f[R]) for the ones no decimal expresses.
\f[B]set tomo\-num\-digits\f[R] \f[I]n\f[R] sets how many fractional
digits that carries, and \f[B]0\f[R] turns it off.
.PP
A Tomo value is formatted whole and the variables in scope are printed
at every stop, so values are cut off to keep one large one from burying
the screen, using gdb\(cqs own \f[B]set print elements\f[R] as the
cutoff.
.PP
A Tomo variable \f[I]x\f[R] is \f[B]_$\f[R]\f[I]x\f[R] in the generated
C, so a bare Tomo name typed at gdb finds either nothing or some
unrelated C symbol of that name.
\f[B]p\f[R] (which replaces gdb\(cqs alias for \f[B]print\f[R]) rewrites
Tomo names to the C names they compile to; \f[B]print\f[R] and every
other command are untouched and still take C names (a watchpoint on
\f[I]x\f[R] is \f[B]watch _$\f[R]\f[I]x\f[R]), and anything \f[B]p\f[R]
does not recognize is passed to \f[B]print\f[R] unchanged, so format
letters and value history behave as they always did.
.PP
\f[B]\-\-debug\f[R] makes two changes to how the program is compiled.
It defaults to \f[B]\-O0\f[R] (an explicit \f[B]\-O\f[R] still wins) so
that the program a debugger sees is the one that was written, and it
emits, beside every variable, the type information Tomo\(cqs formatter
needs to print that variable, which is the only way a debugger can show
what is inside a list, table, or optional, since those do not record
their contents in their C type.
.PP
\f[B]breakpoint()\f[R] is a built\-in that stops the program where it is
called.
Only a program compiled with \f[B]\-\-debug\f[R] contains it at all:
without that flag it compiles to nothing, so leaving one in the source
costs a release build nothing.
.PP
Runtime errors stop in the debugger too.
\f[B]tomo run \-\-debug\f[R] sets \f[B]TOMO_CORE_DUMP\f[R], which makes
\f[B]fail()\f[R], a failed assertion, or an out\-of\-range access raise
\f[B]SIGABRT\f[R] after printing its usual report, instead of exiting,
so the failing frame and its variables are still there to look at.
\f[B]SIGSEGV\f[R], \f[B]SIGFPE\f[R], \f[B]SIGILL\f[R], \f[B]SIGBUS\f[R],
and \f[B]SIGSYS\f[R] stop the same way; an interrupt (\f[B]SIGINT\f[R])
stops the program without killing it, so \f[B]continue\f[R] resumes.
.PP
\f[B]\-\-debug\f[R] is also available on \f[B]build\f[R],
\f[B]transpile\f[R], and \f[B]test\f[R].
A program built with it can be started under the debugger by hand by
loading
\f[I]prefix\f[R]\f[B]/lib/tomo\(at\f[R]\f[I]version\f[R]\f[B]/tomo\-gdb.py\f[R]
with \f[B]gdb \-x\f[R].
See also \f[I]docs/debugging.md\f[R].
.SH ENVIRONMENT
.TP
\f[B]TOMO_PATH\f[R]
The installation prefix Tomo compiles and links against (its
\f[B]lib/\f[R], \f[B]include/\f[R], \f[B]libexec/\f[R], and
\f[B]man/\f[R] trees) and installs into.
By default this is determined at runtime from the location of the
running \f[B]tomo\f[R] binary (the grandparent of the resolved
executable path), so an installation is relocatable.
Set \f[B]TOMO_PATH\f[R] to override it, for example to point at a tree
in an unusual location or one whose \f[B]tomo\f[R] binary has been
copied away from its sibling directories.
.TP
\f[B]TOMO_DIST_URL\f[R]
Base URL for downloading distribution archives (used by
\f[B]\-\-target\f[R] and \f[B]\-\-install\-target\f[R] to fetch a target
platform\(cqs libraries).
Defaults to \f[I]https://tomo.bruce\-hill.com/dist\f[R].
.TP
\f[B]EDITOR\f[R]
The editor bare \f[B]tomo\f[R] opens the scratch file in.
Defaults to \f[B]vim\f[R].
.TP
\f[B]NO_COLOR\f[R], \f[B]COLOR\f[R]
Set \f[B]NO_COLOR\f[R] to any non\-empty value to disable colored
output.
Set \f[B]COLOR\f[R] to \f[B]1\f[R] to force it on; otherwise color is
used only when standard output is a terminal.
.TP
\f[B]TOMO_STACKTRACE\f[R], \f[B]TOMO_PLAIN_ERRORS\f[R], \f[B]TOMO_CORE_DUMP\f[R]
Diagnostics for compiler and runtime errors: \f[B]TOMO_STACKTRACE\f[R]
prints a stack trace on errors, \f[B]TOMO_PLAIN_ERRORS\f[R] disables the
fancy source\-quoting error formatting, and setting
\f[B]TOMO_CORE_DUMP\f[R] to a truthy value makes a fatal error abort
(dumping core) instead of exiting cleanly.
.TP
\f[B]TOMO_TEST_FILTER\f[R], \f[B]TOMO_TEST_TIMEOUT\f[R], \f[B]TOMO_TEST_VERBOSE\f[R]
Control \f[B]tomo test\f[R] runs: only run tests whose label contains
\f[B]TOMO_TEST_FILTER\f[R], cap each test at \f[B]TOMO_TEST_TIMEOUT\f[R]
seconds, and print verbose output when \f[B]TOMO_TEST_VERBOSE\f[R] is
set.
.TP
\f[B]PROFILE\f[R], \f[B]PROFILE_FILE\f[R], \f[B]FLAME_GRAPH\f[R]
Control the profile report of a program compiled with
\f[B]\-\-instrument\f[R] (see \f[B]PROFILING\f[R]).
Setting \f[B]PROFILE\f[R] to \f[B]0\f[R] (or
\f[B]no\f[R]/\f[B]false\f[R]) makes the program collect nothing and
print nothing, so an instrumented binary can also be run as a normal
one.
\f[B]PROFILE_FILE\f[R] writes the table to that path instead of standard
error (\f[B]\-\f[R] means standard output).
\f[B]FLAME_GRAPH\f[R] writes an SVG flame graph to that path as well as
the table.
All three are read by the compiled program, not by \f[B]tomo\f[R].
.TP
\f[B]TOMO_DEBUGGER\f[R]
The debugger \f[B]tomo run \-\-debug\f[R] launches.
Defaults to \f[B]gdb\f[R], found on \f[B]$PATH\f[R]; set this to use a
different gdb build or a gdb\-compatible debugger (see
\f[B]DEBUGGING\f[R]).
.TP
\f[B]ZIG_GLOBAL_CACHE_DIR\f[R]
Where the bundled Zig toolchain keeps its global compile cache.
If unset, Tomo points it at its own cache directory (under
\f[B]$XDG_CACHE_HOME/tomo\f[R]) rather than Zig\(cqs default, so it
never mingles with a separately\-run Zig\(cqs cache; an explicit value
is respected.
.SH FILES
.TP
\f[I]prefix\f[R]\f[B]/bin/tomo\(at\f[R]\f[I]version\f[R]
The compiler binary, with a \f[B]bin/tomo\f[R] symlink to the newest
coresident version.
Programs installed with \f[B]tomo build \-\-install\f[R] also land in
\f[I]prefix\f[R]\f[B]/bin/\f[R].
.TP
\f[I]prefix\f[R]\f[B]/lib/tomo\(at\f[R]\f[I]version\f[R]\f[B]/\f[R], \f[I]prefix\f[R]\f[B]/include/tomo\(at\f[R]\f[I]version\f[R]\f[B]/\f[R]
The Tomo standard library archive and headers this version links
against.
.TP
\f[I]prefix\f[R]\f[B]/lib/tomo\(at\f[R]\f[I]version\f[R]\f[B]/tomo\-gdb.py\f[R]
Tomo\(cqs debugger integration, loaded into \f[B]gdb\f[R] by \f[B]tomo
run \-\-debug\f[R] (see \f[B]DEBUGGING\f[R]).
.TP
\f[I]prefix\f[R]\f[B]/man/man1/\f[R]
Man pages, including those installed for programs built with \f[B]tomo
build \-\-install\f[R].
.SH AUTHORS
Bruce Hill (\f[I]bruce\(atbruce\-hill.com\f[R]).