'''Under which circumstances is bytecoding done? It is not as simple as "procs are bytecoded". This page informs about details and peculiarities, only seen from the view of the programmer who wants to know when a script is bytecoded and when not.''' -- [RJM] See also [Proc to bytecodes: when, how does it happen] ---- [proc] does bytecoding. However, any [eval] or [uplevel] prefixed scripts are not bytecoded. As a consequence, it is not recommended to start a proc body with an uplevel for the whole body if is intended to share all variables with the caller's scope. Instead it is better to explicitly share variables with subsequent ''[upvar] var var'' commands. Loops as [while] or [for] do not bytecompile outside of procs (an assumption at the top of "[Playing bytecode]". It is said here ([Many ways to eval]), that [interp] eval {} ... does bytecoding.