What does it mean for a language to be called ā€œ[Tcl]ā€? It surely cannot just mean that it is built from [C] via libtcl; there must be something deeper than that. Well, the [Endecalogue]/[Dodekalogue] must have something to do with it of course, but is that all? I suspect not; you can't do anything without more than that. So on this page, [dkf%|%I]'m going to try to identify what additional things have to be there to make up something that we'd recognize as Tcl. In particular, I'm going to identify ā€œ''profile''sā€ that comprise a particular language core, related semantics and minimal associated set of commands; these profiles will build on top of each other of course. **Profile: 7** This profile approximates the language that was there in Tcl 7.* Rule set: [Endecalogue] Semantics: All values ''are'' strings of characters drawn from an unspecified (but assumed 8-bit extension to [ASCII]) character set. There is an undifferentiated space of (global) commands, indexed by name, and a second undifferentiated space of global variables. Commands: [set], [expr], [source], [if], [while], [for], [foreach], [append], [lappend], [lindex], [llength], [list], [eval], [proc], [global], [upvar], [uplevel], [return], [break], [continue], [error], [info] (but only [info exists] of the subcommands is necessary), [string] (minimal list of subcommands: [string compare], [string first], [string last], [string range], [string match]), [puts], [incr] **Profile: 7a** This profile is ''7'' plus array variables and the [array] command (particularly, [array get], [array names], [array set]). **Profile: 7+** Everything in ''7a'', but also with [after], [open], [close], [gets], [read], [fconfigure], [fileevent], [eof], [fblocked], [update] and [vwait]. (i.e., the event and core IO system). Also supporting [socket] is ''recommended'', but not required. Note that it is up to implementations to define the meaning of "filenames" used by [open]. **Profile: 8** This profile adds the following to ''7'': Semantics: All values ''are'' [Tcl_Obj] (or equivalent); conceptually read-only, but implementations may optimize. Characters are drawn from [UNICODE] character set (''TODO: Specify which version''). Commands and variables exist in a hierarchical collection of namespaces; `::` is the separator and the name of the root namespace. Commands: [namespace] **Profiles: 8a, 8+** These are the combined children of ''8'' and ''7a''/''7+'' respectively. <>Concept