First understand the difference between [embedding vs. extending]. If you decide that embedding is the approach you want, this page is meant to record advice about best practices. In this example we will create a shell program that embeds Tcl and an extension by the name ''foo''. This type of program is sometimes known as a [big wish]. A Tcl interpreter (literally, a ''Tcl_Interp*'') gets extended by a Tcl extension by being passed to one of two initialization routines provided by the extension library. For the ''foo'' extension, the names of these initialization routines are ''Foo_Init'' and ''Foo_SafeInit''. Normal, or ''trusted'' interpreters are passed to the ''Foo_Init'' routine, while safe interpreters are passed to the ''Foo_SafeInit'' routine. Since we have chosen embedding in this example, we will directly call the ''Foo_Init'' routine on the master interpreter of our [big wish] (foosh?) that contains foo. Here is a sketch of what the C code for out [big wish] program should look like: #include