1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//! tclrs — Tcl as a fusevm frontend.
//!
//! Pipeline: `parser` turns a script into `parser::Script` → the compiler
//! (phase 2) lowers each command to a `fusevm::Chunk` → fusevm executes it and
//! calls back into the host for Tcl-specific operations. Execution and codegen
//! live in fusevm; there is no bespoke VM or JIT here.
//!
//! Tcl's value model needs no object heap on top of fusevm's: strings, integers
//! and floats map onto `Value` directly, and a value keeps its numeric
//! representation until something demands its string form. That deferral is the
//! point — the reference interpreter re-derives string representations inside
//! hot loops.
//!
//! Execution reaches for fusevm's higher tiers, not just its interpreter: every
//! VM this crate builds has the three-tier Cranelift JIT armed
//! ([`runtime::install_hooks`]), [`aot`] compiles a script to a native object
//! and links it into a standalone binary, and [`tiers`] reports which of those
//! tiers a given script's bytecode actually reaches.
/// `after`, `update` and `vwait` — the event loop a Tk script lives inside.
/// `encoding` — transcoding, and the tables it is done with.
/// `info` — what the interpreter knows about itself.
/// `scan` — `format` read backwards.
/// `uplevel`, `upvar`, `variable` and `apply` — reaching another scope.
/// `subst` — the substitution rules applied to a value.
/// The `.enc` tables, generated. See `scripts/gen_encoding_tables.py`.
/// Hosting the real Tk toolkit. Behind the `tk` feature; see `src/tk/mod.rs`.
pub use ;
pub use ;